diff --git a/.gitignore b/.gitignore
index 420a673ed..bae09dc2d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -85,7 +85,7 @@ celerybeat-schedule
*.sage.py
# virtualenv
-.venv
+.venv*
venv/
ENV/
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index b0121d12c..81f554598 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -93,6 +93,33 @@ The tests are run concurrently, and the default number of workers is 8. You can
While tox is the recommended way to run the test suite, pytest can also be invoked directly from the root of the repository. This requires packages in tests/requirements.txt to be installed first.
+#### Keeping logs on test success
+
+There's an internal setting `debugpy_log_passed` that if set to true will not erase the logs after a successful test run. Just search for this in the code and remove the code that deletes the logs on success.
+
+#### Adding logging
+
+Using `pydevd_log.debug` you can add logging just about anywhere in the pydevd code. However this code won't be called if CYTHON support is enabled without recreating the Cython output. To temporarily disable CYTHON support, look for `CYTHON_SUPPORTED` and make sure it's set to False
+
+## Updating pydevd
+
+Pydevd (at src/debugpy/_vendored/pydevd) is a copy of https://github.com/fabioz/PyDev.Debugger. We do not use a git submodule but instead just copy the source.
+
+In order to update the source, you would:
+- Sync to the appropriate commit in a pydevd repo
+- Diff this against the src/debugpy/_vendored/pydevd folder, being careful to not remove the edits made in the debugpy version
+- Run our tests
+- Make any fixes to get the tests to pass (see logging on how to debug)
+
+You might need to regenerate the Cython modules after any changes. This can be done by:
+
+- Install Python latest (3.12 as of this writing)
+- pip install cython, django>=1.9, setuptools>=0.9, wheel>0.21, twine
+- On a windows machine:
+ - set FORCE_PYDEVD_VC_VARS=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars64.bat
+ - set PYDEVD_FORCE_BUILD_ALL=True
+ - in the pydevd folder: python .\build_tools\build.py
+
## Using modified debugpy in Visual Studio Code
To test integration between debugpy and Visual Studio Code, the latter can be directed to use a custom version of debugpy in lieu of the one bundled with the Python extension. This is done by specifying `"debugAdapterPath"` in `launch.json` - it must point at the root directory of the *package*, which is `src/debugpy` inside the repository:
diff --git a/src/debugpy/_vendored/pydevd/.gitignore b/src/debugpy/_vendored/pydevd/.gitignore
index b03eddaa3..e0fb37cf5 100644
--- a/src/debugpy/_vendored/pydevd/.gitignore
+++ b/src/debugpy/_vendored/pydevd/.gitignore
@@ -37,3 +37,4 @@ snippet.py
build/*
.pytest_cache
/.mypy_cache/
+.DS_Store
diff --git a/src/debugpy/_vendored/pydevd/LICENSE-APACHE b/src/debugpy/_vendored/pydevd/LICENSE-APACHE
deleted file mode 100644
index 2bb9ad240..000000000
--- a/src/debugpy/_vendored/pydevd/LICENSE-APACHE
+++ /dev/null
@@ -1,176 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
\ No newline at end of file
diff --git a/src/debugpy/_vendored/pydevd/README.md b/src/debugpy/_vendored/pydevd/README.md
index e0ae29341..a23156cf4 100644
--- a/src/debugpy/_vendored/pydevd/README.md
+++ b/src/debugpy/_vendored/pydevd/README.md
@@ -1,24 +1,72 @@
-PyDev.Debugger
-==============
+# PyDev.Debugger
+
+
+## New
+
+Latest `3.x` version: the PyDev debugger now supports `sys.monitoring` which enables
+really fast tracing on `Python 3.12` (so, if speed is an issue, make sure you upgrade).
+
+## Important
+
+https://github.com/fabioz/PyDev.Debugger is the main repository
+for `pydevd` and the latest versions can always be used directly in:
+
+- [PyDev for Eclipse](http://pydev.org): Enables the usage of `pydevd` in Eclipse (Open Source).
+
+- [Python Debugger (PyDev) for VSCode](https://marketplace.visualstudio.com/items?itemName=fabioz.vscode-pydev-python-debugger): Enables
+ the usage of `pydevd` in VSCode (note that while `pydevd` itself is open source, this extension is commercial
+ and helps in the development of the Open Source version. It has a free trial and can be used by acquiring a license for
+ `PyDev for VSCode` at: https://www.pydev.org/vscode/index.html).
+
+ Note that the `Python Debugger (PyDev) for VSCode` may be used as a standalane extension for debugging `Python` by
+ creating the proper configuration in a `launch.json` and launching it.
+
+ Alternatively, [PyDev for VSCode](https://marketplace.visualstudio.com/items?itemName=fabioz.vscode-pydev)
+ leverages it to offer additional features such as debugging of test cases.
+
+## History / Support
+
+The `PyDev Debugger` (`pydevd` for short) is a **Python debugger** which historically was created to
+work with `PyDev` (in Eclipse).
+
+Over the years (as it's open source -- EPL) it was adopted by other IDEs/companies
+(so, it was integrated into PyCharm and VSCode Python through `debugpy`, which also bundles `pydevd`).
+
+Note that although it was adopted by other IDEs (and over the years companies of other
+commercial IDEs did provide backing), by far most of the work was done without any
+external backing and the ongoing work on the project relies on community support.
+
+So, if you like using it, please consider becoming a backer of the project (this is
+done through the `PyDev` umbrella, so please see https://www.pydev.org/about.html
+for how to contribute to the project).
+
+
+## Source code / using
The sources for the PyDev.Debugger may be seen at:
https://github.com/fabioz/PyDev.Debugger
In general, the debugger backend should **NOT** be installed separately if you're using an IDE which already
-bundles it (such as PyDev, PyCharm or bundled through debugpy, which is the debug adapter used in
-VSCode Python and Visual Studio Python).
+bundles it (such as [PyDev for Eclipse](http://pydev.org), [Python Debugger (PyDev) for VSCode](https://marketplace.visualstudio.com/items?itemName=fabioz.vscode-pydev-python-debugger),
+PyCharm or the Microsoft Python VSCode Extension, which uses `debugpy`, which is another debug adapter bundling `pydevd` to be used in the Microsoft
+VSCode Python Extension and Visual Studio Python).
It is however available in PyPi so that it can be installed for doing remote debugging with `pip` -- so, when
debugging a process which runs in another machine, it's possible to `pip install pydevd` and in the code use
-`pydevd.settrace(host='10.1.1.1')` to connect the debugger backend to the debugger UI running in the IDE
+`pydevd.settrace(host="10.1.1.1")` (in PyDev) or `pydevd.settrace(host="10.1.1.1", protocol="dap")` (in PyDev for VSCode)
+to connect the debugger backend to the debugger UI running in the IDE
(whereas previously the sources had to be manually copied from the IDE installation).
-`pydevd` is compatible with Python 3.6 onwards.
+For instructions on how to `Remote Debug` with `PyDev`, see: https://www.pydev.org/manual_adv_remote_debugger.html
-For `Python 2` please keep using `pydevd 2.8.0`.
+For instructions on how to `Remote Debug` with `PyDev for VSCode`, see: https://marketplace.visualstudio.com/items?itemName=fabioz.vscode-pydev-python-debugger
+
+`pydevd` is compatible with Python 3.8 onwards and is tested both with CPython as well as PyPy.
-`pydevd` is tested both with CPython as well as PyPy.
+For `Python 3.3 to 3.7` please keep using `pydevd 2.10.0`.
+
+For `Python 2` please keep using `pydevd 2.8.0`.
Recent versions contain speedup modules using Cython, which are generated with a few changes in the regular files
to `cythonize` the files. To update and compile the cython sources (and generate some other auto-generated files),
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py
index aca108fa0..ad9347602 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py
@@ -1,7 +1,7 @@
-'''
+"""
License: Apache 2.0
Author: Yuli Fitterman
-'''
+"""
import types
from _pydevd_bundle.pydevd_constants import IS_JYTHON
@@ -9,7 +9,7 @@
try:
import inspect
except:
- import traceback;
+ import traceback
traceback.print_exc() # Ok, no inspect available (search will not work)
@@ -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
@@ -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)
@@ -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):
@@ -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)
@@ -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
@@ -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):
@@ -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)
@@ -129,7 +128,7 @@ 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):
@@ -137,9 +136,8 @@ def create_class_stub(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 = '''
@@ -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)
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py
index ed0db4ea7..69a2b23f5 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py
@@ -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
@@ -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()
@@ -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.
@@ -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:
@@ -148,7 +148,7 @@ def attr_matches(self, text):
def generate_completions(frame, act_tok):
- '''
+ """
:return list(tuple(method_name, docstring, parameters, completion_type))
method_name: str
@@ -156,7 +156,7 @@ def generate_completions(frame, act_tok):
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 []
@@ -189,21 +189,21 @@ def completions_to_xml(completions):
for comp in completions:
msg.append('_= \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("")
- 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)
@@ -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).
@@ -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
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py
index 28ae40351..4abdd4b63 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py
@@ -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)
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py
index 6264e3dbd..b0a21bfde 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py
@@ -2,40 +2,42 @@
def __getfilesystemencoding():
- '''
+ """
Note: there's a copy of this method in interpreterInfo.py
- '''
+ """
try:
ret = sys.getfilesystemencoding()
if not ret:
- raise RuntimeError('Unable to get encoding.')
+ raise RuntimeError("Unable to get encoding.")
return ret
except:
try:
- #Handle Jython
+ # Handle Jython
from java.lang import System # @UnresolvedImport
+
env = System.getProperty("os.name").lower()
- if env.find('win') != -1:
- return 'ISO-8859-1' #mbcs does not work on Jython, so, use a (hopefully) suitable replacement
- return 'utf-8'
+ if env.find("win") != -1:
+ return "ISO-8859-1" # mbcs does not work on Jython, so, use a (hopefully) suitable replacement
+ return "utf-8"
except:
pass
- #Only available from 2.3 onwards.
- if sys.platform == 'win32':
- return 'mbcs'
- return 'utf-8'
+ # Only available from 2.3 onwards.
+ if sys.platform == "win32":
+ return "mbcs"
+ return "utf-8"
+
def getfilesystemencoding():
try:
ret = __getfilesystemencoding()
- #Check if the encoding is actually there to be used!
- if hasattr('', 'encode'):
- ''.encode(ret)
- if hasattr('', 'decode'):
- ''.decode(ret)
+ # Check if the encoding is actually there to be used!
+ if hasattr("", "encode"):
+ "".encode(ret)
+ if hasattr("", "decode"):
+ "".decode(ret)
return ret
except:
- return 'utf-8'
+ return "utf-8"
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py
index 5548651e3..d8765ca9a 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py
@@ -1,11 +1,11 @@
-
-#=======================================================================================================================
+# =======================================================================================================================
# getopt code copied since gnu_getopt is not available on jython 2.1
-#=======================================================================================================================
+# =======================================================================================================================
class GetoptError(Exception):
- opt = ''
- msg = ''
- def __init__(self, msg, opt=''):
+ opt = ""
+ msg = ""
+
+ def __init__(self, msg, opt=""):
self.msg = msg
self.opt = opt
Exception.__init__(self, msg, opt)
@@ -30,25 +30,25 @@ def gnu_getopt(args, shortopts, longopts=[]):
opts = []
prog_args = []
- if type('') == type(longopts):
+ if type("") == type(longopts):
longopts = [longopts]
else:
longopts = list(longopts)
# Allow options after non-option arguments?
all_options_first = False
- if shortopts.startswith('+'):
+ if shortopts.startswith("+"):
shortopts = shortopts[1:]
all_options_first = True
while args:
- if args[0] == '--':
+ if args[0] == "--":
prog_args += args[1:]
break
- if args[0][:2] == '--':
+ if args[0][:2] == "--":
opts, args = do_longs(opts, args[0][2:], longopts, args[1:])
- elif args[0][:1] == '-':
+ elif args[0][:1] == "-":
opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:])
else:
if all_options_first:
@@ -60,71 +60,74 @@ def gnu_getopt(args, shortopts, longopts=[]):
return opts, prog_args
+
def do_longs(opts, opt, longopts, args):
try:
- i = opt.index('=')
+ i = opt.index("=")
except ValueError:
optarg = None
else:
- opt, optarg = opt[:i], opt[i + 1:]
+ opt, optarg = opt[:i], opt[i + 1 :]
has_arg, opt = long_has_args(opt, longopts)
if has_arg:
if optarg is None:
if not args:
- raise GetoptError('option --%s requires argument' % opt, opt)
+ raise GetoptError("option --%s requires argument" % opt, opt)
optarg, args = args[0], args[1:]
elif optarg:
- raise GetoptError('option --%s must not have an argument' % opt, opt)
- opts.append(('--' + opt, optarg or ''))
+ raise GetoptError("option --%s must not have an argument" % opt, opt)
+ opts.append(("--" + opt, optarg or ""))
return opts, args
+
# Return:
# has_arg?
# full option name
def long_has_args(opt, longopts):
possibilities = [o for o in longopts if o.startswith(opt)]
if not possibilities:
- raise GetoptError('option --%s not recognized' % opt, opt)
+ raise GetoptError("option --%s not recognized" % opt, opt)
# Is there an exact match?
if opt in possibilities:
return False, opt
- elif opt + '=' in possibilities:
+ elif opt + "=" in possibilities:
return True, opt
# No exact match, so better be unique.
if len(possibilities) > 1:
# XXX since possibilities contains all valid continuations, might be
# nice to work them into the error msg
- raise GetoptError('option --%s not a unique prefix' % opt, opt)
+ raise GetoptError("option --%s not a unique prefix" % opt, opt)
assert len(possibilities) == 1
unique_match = possibilities[0]
- has_arg = unique_match.endswith('=')
+ has_arg = unique_match.endswith("=")
if has_arg:
unique_match = unique_match[:-1]
return has_arg, unique_match
+
def do_shorts(opts, optstring, shortopts, args):
- while optstring != '':
+ while optstring != "":
opt, optstring = optstring[0], optstring[1:]
if short_has_arg(opt, shortopts):
- if optstring == '':
+ if optstring == "":
if not args:
- raise GetoptError('option -%s requires argument' % opt,
- opt)
+ raise GetoptError("option -%s requires argument" % opt, opt)
optstring, args = args[0], args[1:]
- optarg, optstring = optstring, ''
+ optarg, optstring = optstring, ""
else:
- optarg = ''
- opts.append(('-' + opt, optarg))
+ optarg = ""
+ opts.append(("-" + opt, optarg))
return opts, args
+
def short_has_arg(opt, shortopts):
for i in range(len(shortopts)):
- if opt == shortopts[i] != ':':
- return shortopts.startswith(':', i + 1)
- raise GetoptError('option -%s not recognized' % opt, opt)
+ if opt == shortopts[i] != ":":
+ return shortopts.startswith(":", i + 1)
+ raise GetoptError("option -%s not recognized" % opt, opt)
-#=======================================================================================================================
+# =======================================================================================================================
# End getopt code
-#=======================================================================================================================
+# =======================================================================================================================
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py
index 7f89c750d..b8f0abc1e 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py
@@ -14,28 +14,28 @@ def getargspec(*args, **kwargs):
# completion types.
-TYPE_IMPORT = '0'
-TYPE_CLASS = '1'
-TYPE_FUNCTION = '2'
-TYPE_ATTR = '3'
-TYPE_BUILTIN = '4'
-TYPE_PARAM = '5'
+TYPE_IMPORT = "0"
+TYPE_CLASS = "1"
+TYPE_FUNCTION = "2"
+TYPE_ATTR = "3"
+TYPE_BUILTIN = "4"
+TYPE_PARAM = "5"
def _imp(name, log=None):
try:
return __import__(name)
except:
- if '.' in name:
- sub = name[0:name.rfind('.')]
+ if "." in name:
+ sub = name[0 : name.rfind(".")]
if log is not None:
- log.add_content('Unable to import', name, 'trying with', sub)
+ log.add_content("Unable to import", name, "trying with", sub)
log.add_exception()
return _imp(sub, log)
else:
- s = 'Unable to import module: %s - sys.path: %s' % (str(name), sys.path)
+ s = "Unable to import module: %s - sys.path: %s" % (str(name), sys.path)
if log is not None:
log.add_content(s)
log.add_exception()
@@ -44,20 +44,21 @@ def _imp(name, log=None):
IS_IPY = False
-if sys.platform == 'cli':
+if sys.platform == "cli":
IS_IPY = True
_old_imp = _imp
def _imp(name, log=None):
# We must add a reference in clr for .Net
import clr # @UnresolvedImport
+
initial_name = name
- while '.' in name:
+ while "." in name:
try:
clr.AddReference(name)
break # If it worked, that's OK.
except:
- name = name[0:name.rfind('.')]
+ name = name[0 : name.rfind(".")]
else:
try:
clr.AddReference(name)
@@ -73,11 +74,11 @@ def get_file(mod):
f = inspect.getsourcefile(mod) or inspect.getfile(mod)
except:
try:
- f = getattr(mod, '__file__', None)
+ f = getattr(mod, "__file__", None)
except:
f = None
- if f and f.lower(f[-4:]) in ['.pyc', '.pyo']:
- filename = f[:-4] + '.py'
+ if f and f.lower(f[-4:]) in [".pyc", ".pyo"]:
+ filename = f[:-4] + ".py"
if os.path.exists(filename):
f = filename
@@ -89,12 +90,12 @@ def Find(name, log=None):
mod = _imp(name, log)
parent = mod
- foundAs = ''
+ foundAs = ""
if inspect.ismodule(mod):
f = get_file(mod)
- components = name.split('.')
+ components = name.split(".")
old_comp = None
for comp in components[1:]:
@@ -111,7 +112,7 @@ def Find(name, log=None):
f = get_file(mod)
else:
if len(foundAs) > 0:
- foundAs = foundAs + '.'
+ foundAs = foundAs + "."
foundAs = foundAs + comp
old_comp = comp
@@ -120,12 +121,11 @@ def Find(name, log=None):
def search_definition(data):
- '''@return file, line, col
- '''
+ """@return file, line, col"""
- data = data.replace('\n', '')
- if data.endswith('.'):
- data = data.rstrip('.')
+ data = data.replace("\n", "")
+ if data.endswith("."):
+ data = data.rstrip(".")
f, mod, parent, foundAs = Find(data)
try:
return do_find(f, mod), foundAs
@@ -134,9 +134,9 @@ def search_definition(data):
def generate_tip(data, log=None):
- data = data.replace('\n', '')
- if data.endswith('.'):
- data = data.rstrip('.')
+ data = data.replace("\n", "")
+ if data.endswith("."):
+ data = data.rstrip(".")
f, mod, parent, foundAs = Find(data, log)
# print_ >> open('temp.txt', 'w'), f
@@ -145,31 +145,31 @@ def generate_tip(data, log=None):
def check_char(c):
- if c == '-' or c == '.':
- return '_'
+ if c == "-" or c == ".":
+ return "_"
return c
_SENTINEL = object()
-def generate_imports_tip_for_module(obj_to_complete, dir_comps=None, getattr=getattr, filter=lambda name:True):
- '''
- @param obj_to_complete: the object from where we should get the completions
- @param dir_comps: if passed, we should not 'dir' the object and should just iterate those passed as kwonly_arg parameter
- @param getattr: the way to get kwonly_arg given object from the obj_to_complete (used for the completer)
- @param filter: kwonly_arg callable that receives the name and decides if it should be appended or not to the results
- @return: list of tuples, so that each tuple represents kwonly_arg completion with:
- name, doc, args, type (from the TYPE_* constants)
- '''
+def generate_imports_tip_for_module(obj_to_complete, dir_comps=None, getattr=getattr, filter=lambda name: True):
+ """
+ @param obj_to_complete: the object from where we should get the completions
+ @param dir_comps: if passed, we should not 'dir' the object and should just iterate those passed as kwonly_arg parameter
+ @param getattr: the way to get kwonly_arg given object from the obj_to_complete (used for the completer)
+ @param filter: kwonly_arg callable that receives the name and decides if it should be appended or not to the results
+ @return: list of tuples, so that each tuple represents kwonly_arg completion with:
+ name, doc, args, type (from the TYPE_* constants)
+ """
ret = []
if dir_comps is None:
dir_comps = dir_checked(obj_to_complete)
- if hasattr_checked(obj_to_complete, '__dict__'):
- dir_comps.append('__dict__')
- if hasattr_checked(obj_to_complete, '__class__'):
- dir_comps.append('__class__')
+ if hasattr_checked(obj_to_complete, "__dict__"):
+ dir_comps.append("__dict__")
+ if hasattr_checked(obj_to_complete, "__class__"):
+ dir_comps.append("__class__")
get_complete_info = True
@@ -182,31 +182,31 @@ def generate_imports_tip_for_module(obj_to_complete, dir_comps=None, getattr=get
dontGetDocsOn = (float, int, str, tuple, list, dict)
dontGetattrOn = (dict, list, set, tuple)
for d in dir_comps:
-
if d is None:
continue
if not filter(d):
continue
- args = ''
+ args = ""
try:
try:
if isinstance(obj_to_complete, dontGetattrOn):
- raise Exception('Since python 3.9, e.g. "dict[str]" will return'
- " a dict that's only supposed to take strings. "
- 'Interestingly, e.g. dict["val"] is also valid '
- 'and presumably represents a dict that only takes '
- 'keys that are "val". This breaks our check for '
- 'class attributes.')
+ raise Exception(
+ 'Since python 3.9, e.g. "dict[str]" will return'
+ " a dict that's only supposed to take strings. "
+ 'Interestingly, e.g. dict["val"] is also valid '
+ "and presumably represents a dict that only takes "
+ 'keys that are "val". This breaks our check for '
+ "class attributes."
+ )
obj = getattr(obj_to_complete.__class__, d)
except:
obj = getattr(obj_to_complete, d)
except: # just ignore and get it without additional info
- ret.append((d, '', args, TYPE_BUILTIN))
+ ret.append((d, "", args, TYPE_BUILTIN))
else:
-
if get_complete_info:
try:
retType = TYPE_BUILTIN
@@ -214,21 +214,20 @@ def generate_imports_tip_for_module(obj_to_complete, dir_comps=None, getattr=get
# check if we have to get docs
getDoc = True
for class_ in dontGetDocsOn:
-
if isinstance(obj, class_):
getDoc = False
break
- doc = ''
+ doc = ""
if getDoc:
# no need to get this info... too many constants are defined and
# makes things much slower (passing all that through sockets takes quite some time)
try:
doc = inspect.getdoc(obj)
if doc is None:
- doc = ''
+ doc = ""
except: # may happen on jython when checking java classes (so, just ignore it)
- doc = ''
+ doc = ""
if inspect.ismethod(obj) or inspect.isbuiltin(obj) or inspect.isfunction(obj) or inspect.isroutine(obj):
try:
@@ -239,14 +238,14 @@ def generate_imports_tip_for_module(obj_to_complete, dir_comps=None, getattr=get
for kwonly_arg in kwonly_args:
default = kwonly_defaults.get(kwonly_arg, _SENTINEL)
if default is not _SENTINEL:
- args.append('%s=%s' % (kwonly_arg, default))
+ args.append("%s=%s" % (kwonly_arg, default))
else:
args.append(str(kwonly_arg))
- args = '(%s)' % (', '.join(args))
+ args = "(%s)" % (", ".join(args))
except TypeError:
# ok, let's see if we can get the arguments from the doc
- args, doc = signature_from_docstring(doc, getattr(obj, '__name__', None))
+ args, doc = signature_from_docstring(doc, getattr(obj, "__name__", None))
retType = TYPE_FUNCTION
@@ -263,7 +262,7 @@ def generate_imports_tip_for_module(obj_to_complete, dir_comps=None, getattr=get
ret.append((d, doc, args, retType))
except: # just ignore and get it without aditional info
- ret.append((d, '', args, TYPE_BUILTIN))
+ ret.append((d, "", args, TYPE_BUILTIN))
else: # get_complete_info == False
if inspect.ismethod(obj) or inspect.isbuiltin(obj) or inspect.isfunction(obj) or inspect.isroutine(obj):
@@ -279,13 +278,13 @@ def generate_imports_tip_for_module(obj_to_complete, dir_comps=None, getattr=get
retType = TYPE_ATTR
# ok, no complete info, let's try to do this as fast and clean as possible
# so, no docs for this kind of information, only the signatures
- ret.append((d, '', str(args), retType))
+ ret.append((d, "", str(args), retType))
return ret
def signature_from_docstring(doc, obj_name):
- args = '()'
+ args = "()"
try:
found = False
if len(doc) > 0:
@@ -301,50 +300,50 @@ def signature_from_docstring(doc, obj_name):
# sort(self: list)
# sort(self: list, cmp: object)
if obj_name:
- name = obj_name + '('
+ name = obj_name + "("
# Fix issue where it was appearing sort(aa)sort(bb)sort(cc) in the same line.
lines = doc.splitlines()
if len(lines) == 1:
c = doc.count(name)
if c > 1:
- doc = ('\n' + name).join(doc.split(name))
+ doc = ("\n" + name).join(doc.split(name))
- major = ''
+ major = ""
for line in doc.splitlines():
- if line.startswith(name) and line.endswith(')'):
+ if line.startswith(name) and line.endswith(")"):
if len(line) > len(major):
major = line
if major:
- args = major[major.index('('):]
+ args = major[major.index("(") :]
found = True
if not found:
- i = doc.find('->')
+ i = doc.find("->")
if i < 0:
- i = doc.find('--')
+ i = doc.find("--")
if i < 0:
- i = doc.find('\n')
+ i = doc.find("\n")
if i < 0:
- i = doc.find('\r')
+ i = doc.find("\r")
if i > 0:
s = doc[0:i]
s = s.strip()
# let's see if we have a docstring in the first line
- if s[-1] == ')':
- start = s.find('(')
+ if s[-1] == ")":
+ start = s.find("(")
if start >= 0:
- end = s.find('[')
+ end = s.find("[")
if end <= 0:
- end = s.find(')')
+ end = s.find(")")
if end <= 0:
end = len(s)
args = s[start:end]
- if not args[-1] == ')':
- args = args + ')'
+ if not args[-1] == ")":
+ args = args + ")"
# now, get rid of unwanted chars
l = len(args) - 1
@@ -355,18 +354,18 @@ def signature_from_docstring(doc, obj_name):
else:
r.append(check_char(args[i]))
- args = ''.join(r)
+ args = "".join(r)
if IS_IPY:
- if args.startswith('(self:'):
- i = args.find(',')
+ if args.startswith("(self:"):
+ i = args.find(",")
if i >= 0:
- args = '(self' + args[i:]
+ args = "(self" + args[i:]
else:
- args = '(self)'
- i = args.find(')')
+ args = "(self)"
+ i = args.find(")")
if i > 0:
- args = args[:i + 1]
+ args = args[: i + 1]
except:
pass
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py
index a30c4d35e..d1265de83 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py
@@ -12,48 +12,49 @@
from org.python.core import PyClass # @UnresolvedImport
# completion types.
-TYPE_IMPORT = '0'
-TYPE_CLASS = '1'
-TYPE_FUNCTION = '2'
-TYPE_ATTR = '3'
-TYPE_BUILTIN = '4'
-TYPE_PARAM = '5'
+TYPE_IMPORT = "0"
+TYPE_CLASS = "1"
+TYPE_FUNCTION = "2"
+TYPE_ATTR = "3"
+TYPE_BUILTIN = "4"
+TYPE_PARAM = "5"
def _imp(name):
try:
return __import__(name)
except:
- if '.' in name:
- sub = name[0:name.rfind('.')]
+ if "." in name:
+ sub = name[0 : name.rfind(".")]
return _imp(sub)
else:
- s = 'Unable to import module: %s - sys.path: %s' % (str(name), sys.path)
+ s = "Unable to import module: %s - sys.path: %s" % (str(name), sys.path)
raise RuntimeError(s)
import java.util
-_java_rt_file = getattr(java.util, '__file__', None)
+
+_java_rt_file = getattr(java.util, "__file__", None)
def Find(name):
f = None
- if name.startswith('__builtin__'):
- if name == '__builtin__.str':
- name = 'org.python.core.PyString'
- elif name == '__builtin__.dict':
- name = 'org.python.core.PyDictionary'
+ if name.startswith("__builtin__"):
+ if name == "__builtin__.str":
+ name = "org.python.core.PyString"
+ elif name == "__builtin__.dict":
+ name = "org.python.core.PyDictionary"
mod = _imp(name)
parent = mod
- foundAs = ''
+ foundAs = ""
try:
- f = getattr(mod, '__file__', None)
+ f = getattr(mod, "__file__", None)
except:
f = None
- components = name.split('.')
+ components = name.split(".")
old_comp = None
for comp in components[1:]:
try:
@@ -65,98 +66,95 @@ def Find(name):
if old_comp != comp:
raise
- if hasattr(mod, '__file__'):
+ if hasattr(mod, "__file__"):
f = mod.__file__
else:
if len(foundAs) > 0:
- foundAs = foundAs + '.'
+ foundAs = foundAs + "."
foundAs = foundAs + comp
old_comp = comp
- if f is None and name.startswith('java.lang'):
+ if f is None and name.startswith("java.lang"):
# Hack: java.lang.__file__ is None on Jython 2.7 (whereas it pointed to rt.jar on Jython 2.5).
f = _java_rt_file
if f is not None:
- if f.endswith('.pyc'):
+ if f.endswith(".pyc"):
f = f[:-1]
- elif f.endswith('$py.class'):
- f = f[:-len('$py.class')] + '.py'
+ elif f.endswith("$py.class"):
+ f = f[: -len("$py.class")] + ".py"
return f, mod, parent, foundAs
def format_param_class_name(paramClassName):
- if paramClassName.startswith(''):
- paramClassName = paramClassName[len('"):
+ paramClassName = paramClassName[len("
- paramClassName = paramClassName.split('\'')[1]
+ paramClassName = paramClassName.split("'")[1]
except:
paramClassName = repr(paramTypesClass) # just in case something else happens... it will at least be visible
# if the parameter equals [C, it means it it a char array, so, let's change it
@@ -281,16 +280,15 @@ def getargs(func_code):
except Exception:
s = StringIO()
traceback.print_exc(file=s)
- return 1, [Info(str('ERROR'), doc=s.getvalue())]
+ return 1, [Info(str("ERROR"), doc=s.getvalue())]
return 0, None
def ismodule(mod):
# java modules... do we have other way to know that?
- if not hasattr(mod, 'getClass') and not hasattr(mod, '__class__') \
- and hasattr(mod, '__name__'):
- return 1
+ if not hasattr(mod, "getClass") and not hasattr(mod, "__class__") and hasattr(mod, "__name__"):
+ return 1
return isinstance(mod, core.PyModule)
@@ -299,9 +297,8 @@ def dir_obj(obj):
ret = []
found = java.util.HashMap()
original = obj
- if hasattr(obj, '__class__'):
+ if hasattr(obj, "__class__"):
if obj.__class__ == java.lang.Class:
-
# get info about superclasses
classes = []
classes.append(obj)
@@ -364,16 +361,15 @@ def dir_obj(obj):
def format_arg(arg):
- '''formats an argument to be shown
- '''
+ """formats an argument to be shown"""
s = str(arg)
- dot = s.rfind('.')
+ dot = s.rfind(".")
if dot >= 0:
- s = s[dot + 1:]
+ s = s[dot + 1 :]
- s = s.replace(';', '')
- s = s.replace('[]', 'Array')
+ s = s.replace(";", "")
+ s = s.replace("[]", "Array")
if len(s) > 0:
c = s[0].lower()
s = c + s[1:]
@@ -382,12 +378,11 @@ def format_arg(arg):
def search_definition(data):
- '''@return file, line, col
- '''
+ """@return file, line, col"""
- data = data.replace('\n', '')
- if data.endswith('.'):
- data = data.rstrip('.')
+ data = data.replace("\n", "")
+ if data.endswith("."):
+ data = data.rstrip(".")
f, mod, parent, foundAs = Find(data)
try:
return do_find(f, mod), foundAs
@@ -395,30 +390,29 @@ def search_definition(data):
return do_find(f, parent), foundAs
-def generate_imports_tip_for_module(obj_to_complete, dir_comps=None, getattr=getattr, filter=lambda name:True):
- '''
- @param obj_to_complete: the object from where we should get the completions
- @param dir_comps: if passed, we should not 'dir' the object and should just iterate those passed as a parameter
- @param getattr: the way to get a given object from the obj_to_complete (used for the completer)
- @param filter: a callable that receives the name and decides if it should be appended or not to the results
- @return: list of tuples, so that each tuple represents a completion with:
- name, doc, args, type (from the TYPE_* constants)
- '''
+def generate_imports_tip_for_module(obj_to_complete, dir_comps=None, getattr=getattr, filter=lambda name: True):
+ """
+ @param obj_to_complete: the object from where we should get the completions
+ @param dir_comps: if passed, we should not 'dir' the object and should just iterate those passed as a parameter
+ @param getattr: the way to get a given object from the obj_to_complete (used for the completer)
+ @param filter: a callable that receives the name and decides if it should be appended or not to the results
+ @return: list of tuples, so that each tuple represents a completion with:
+ name, doc, args, type (from the TYPE_* constants)
+ """
ret = []
if dir_comps is None:
dir_comps = dir_obj(obj_to_complete)
for d in dir_comps:
-
if d is None:
continue
if not filter(d):
continue
- args = ''
- doc = ''
+ args = ""
+ doc = ""
retType = TYPE_BUILTIN
try:
@@ -452,26 +446,25 @@ def generate_imports_tip_for_module(obj_to_complete, dir_comps=None, getattr=get
#
# whereas if we had added the jar to the classpath before, everything would be fine by now...
- ret.append((d, '', '', retType))
+ ret.append((d, "", "", retType))
# that's ok, private things cannot be gotten...
continue
else:
-
isMet = ismethod(obj)
if isMet[0] and isMet[1]:
info = isMet[1][0]
try:
args, vargs, kwargs = info.args, info.varargs, info.kwargs
doc = info.get_as_doc()
- r = ''
- for a in (args):
+ r = ""
+ for a in args:
if len(r) > 0:
- r += ', '
+ r += ", "
r += format_arg(a)
- args = '(%s)' % (r)
+ args = "(%s)" % (r)
except TypeError:
traceback.print_exc()
- args = '()'
+ args = "()"
retType = TYPE_FUNCTION
@@ -488,5 +481,5 @@ def generate_imports_tip_for_module(obj_to_complete, dir_comps=None, getattr=get
if __name__ == "__main__":
- sys.path.append(r'D:\dev_programs\eclipse_3\310\eclipse\plugins\org.junit_3.8.1\junit.jar')
- sys.stdout.write('%s\n' % Find('junit.framework.TestCase'))
+ sys.path.append(r"D:\dev_programs\eclipse_3\310\eclipse\plugins\org.junit_3.8.1\junit.jar")
+ sys.stdout.write("%s\n" % Find("junit.framework.TestCase"))
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py
index 7328d6213..5c9580fce 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py
@@ -4,12 +4,11 @@
class Log:
-
def __init__(self):
self._contents = []
def add_content(self, *content):
- self._contents.append(' '.join(content))
+ self._contents.append(" ".join(content))
def add_exception(self):
s = StringIO()
@@ -18,7 +17,7 @@ def add_exception(self):
self._contents.append(s.getvalue())
def get_contents(self):
- return '\n'.join(self._contents)
+ return "\n".join(self._contents)
def clear_log(self):
del self._contents[:]
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py
index bcf5f9b26..f1ba03766 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py
@@ -10,10 +10,10 @@ def find_in_pythonpath(module_name):
# this should be rare in general).
found_at = []
- parts = module_name.split('.') # split because we need to convert mod.name to mod/name
+ parts = module_name.split(".") # split because we need to convert mod.name to mod/name
for path in sys.path:
target = os.path.join(path, *parts)
- target_py = target + '.py'
+ target_py = target + ".py"
if os.path.isdir(target):
found_at.append(target)
if os.path.exists(target_py):
@@ -26,7 +26,6 @@ class DebuggerInitializationError(Exception):
class VerifyShadowedImport(object):
-
def __init__(self, import_name):
self.import_name = import_name
@@ -53,17 +52,19 @@ def __exit__(self, exc_type, exc_val, exc_tb):
raise DebuggerInitializationError(msg)
def _generate_shadowed_import_message(self, found_at):
- msg = '''It was not possible to initialize the debugger due to a module name conflict.
+ msg = """It was not possible to initialize the debugger due to a module name conflict.
i.e.: the module "%(import_name)s" could not be imported because it is shadowed by:
%(found_at)s
-Please rename this file/folder so that the original module from the standard library can be imported.''' % {
- 'import_name': self.import_name, 'found_at': found_at[0]}
+Please rename this file/folder so that the original module from the standard library can be imported.""" % {
+ "import_name": self.import_name,
+ "found_at": found_at[0],
+ }
return msg
def check(self, module, expected_attributes):
- msg = ''
+ msg = ""
for expected_attribute in expected_attributes:
try:
getattr(module, expected_attribute)
@@ -75,35 +76,58 @@ def check(self, module, expected_attributes):
raise DebuggerInitializationError(msg)
-with VerifyShadowedImport('threading') as verify_shadowed:
- import threading; verify_shadowed.check(threading, ['Thread', 'settrace', 'setprofile', 'Lock', 'RLock', 'current_thread'])
+with VerifyShadowedImport("threading") as verify_shadowed:
+ import threading
+
+ verify_shadowed.check(threading, ["Thread", "settrace", "setprofile", "Lock", "RLock", "current_thread"])
+ ThreadingEvent = threading.Event
+ ThreadingLock = threading.Lock
+ threading_current_thread = threading.current_thread
+
+with VerifyShadowedImport("time") as verify_shadowed:
+ import time
+
+ verify_shadowed.check(time, ["sleep", "time", "mktime"])
+
+with VerifyShadowedImport("socket") as verify_shadowed:
+ import socket
+
+ verify_shadowed.check(socket, ["socket", "gethostname", "getaddrinfo"])
+
+with VerifyShadowedImport("select") as verify_shadowed:
+ import select
+
+ verify_shadowed.check(select, ["select"])
+
+with VerifyShadowedImport("code") as verify_shadowed:
+ import code as _code
+
+ verify_shadowed.check(_code, ["compile_command", "InteractiveInterpreter"])
+
+with VerifyShadowedImport("_thread") as verify_shadowed:
+ import _thread as thread
-with VerifyShadowedImport('time') as verify_shadowed:
- import time; verify_shadowed.check(time, ['sleep', 'time', 'mktime'])
+ verify_shadowed.check(thread, ["start_new_thread", "start_new", "allocate_lock"])
-with VerifyShadowedImport('socket') as verify_shadowed:
- import socket; verify_shadowed.check(socket, ['socket', 'gethostname', 'getaddrinfo'])
+with VerifyShadowedImport("queue") as verify_shadowed:
+ import queue as _queue
-with VerifyShadowedImport('select') as verify_shadowed:
- import select; verify_shadowed.check(select, ['select'])
+ verify_shadowed.check(_queue, ["Queue", "LifoQueue", "Empty", "Full", "deque"])
-with VerifyShadowedImport('code') as verify_shadowed:
- import code as _code; verify_shadowed.check(_code, ['compile_command', 'InteractiveInterpreter'])
+with VerifyShadowedImport("xmlrpclib") as verify_shadowed:
+ import xmlrpc.client as xmlrpclib
-with VerifyShadowedImport('_thread') as verify_shadowed:
- import _thread as thread; verify_shadowed.check(thread, ['start_new_thread', 'start_new', 'allocate_lock'])
+ verify_shadowed.check(xmlrpclib, ["ServerProxy", "Marshaller", "Server"])
-with VerifyShadowedImport('queue') as verify_shadowed:
- import queue as _queue; verify_shadowed.check(_queue, ['Queue', 'LifoQueue', 'Empty', 'Full', 'deque'])
+with VerifyShadowedImport("xmlrpc.server") as verify_shadowed:
+ import xmlrpc.server as xmlrpcserver
-with VerifyShadowedImport('xmlrpclib') as verify_shadowed:
- import xmlrpc.client as xmlrpclib; verify_shadowed.check(xmlrpclib, ['ServerProxy', 'Marshaller', 'Server'])
+ verify_shadowed.check(xmlrpcserver, ["SimpleXMLRPCServer"])
-with VerifyShadowedImport('xmlrpc.server') as verify_shadowed:
- import xmlrpc.server as xmlrpcserver; verify_shadowed.check(xmlrpcserver, ['SimpleXMLRPCServer'])
+with VerifyShadowedImport("http.server") as verify_shadowed:
+ import http.server as BaseHTTPServer
-with VerifyShadowedImport('http.server') as verify_shadowed:
- import http.server as BaseHTTPServer; verify_shadowed.check(BaseHTTPServer, ['BaseHTTPRequestHandler'])
+ verify_shadowed.check(BaseHTTPServer, ["BaseHTTPRequestHandler"])
# If set, this is a version of the threading.enumerate that doesn't have the patching to remove the pydevd threads.
# Note: as it can't be set during execution, don't import the name (import the module and access it through its name).
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py
index f5067509f..23e7d4f54 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py
@@ -2,9 +2,7 @@
def patch_sys_module():
-
def patched_exc_info(fun):
-
def pydev_debugger_exc_info():
type, value, traceback = fun()
if type == ImportError:
@@ -22,7 +20,6 @@ def pydev_debugger_exc_info():
def patched_reload(orig_reload):
-
def pydev_debugger_reload(module):
orig_reload(module)
if module.__name__ == "sys":
@@ -40,13 +37,15 @@ def patch_reload():
builtins.reload = patched_reload(sys.builtin_orig_reload) # @UndefinedVariable
try:
import imp
+
sys.imp_orig_reload = imp.reload
imp.reload = patched_reload(sys.imp_orig_reload) # @UndefinedVariable
- except:
- pass
+ except ImportError:
+ pass # Ok, imp not available on Python 3.12.
else:
try:
import importlib
+
sys.importlib_orig_reload = importlib.reload # @UndefinedVariable
importlib.reload = patched_reload(sys.importlib_orig_reload) # @UndefinedVariable
except:
@@ -63,11 +62,16 @@ def cancel_patches_in_sys_module():
builtins.reload = sys.builtin_orig_reload
if hasattr(sys, "imp_orig_reload"):
- import imp
- imp.reload = sys.imp_orig_reload
+ try:
+ import imp
+
+ imp.reload = sys.imp_orig_reload
+ except ImportError:
+ pass # Ok, imp not available in Python 3.12.
if hasattr(sys, "importlib_orig_reload"):
import importlib
+
importlib.reload = sys.importlib_orig_reload
del builtins
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py
index d97e95d1f..25c0f6fdb 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py
@@ -4,6 +4,7 @@
def do_find(f, mod):
import linecache
+
if inspect.ismodule(mod):
return f, 0, 0
@@ -11,7 +12,7 @@ def do_find(f, mod):
if inspect.isclass(mod):
name = mod.__name__
- pat = re.compile(r'^\s*class\s*' + name + r'\b')
+ pat = re.compile(r"^\s*class\s*" + name + r"\b")
for i in range(len(lines)):
if pat.match(lines[i]):
return f, i, 0
@@ -34,14 +35,14 @@ def do_find(f, mod):
mod = mod.f_code
if inspect.iscode(mod):
- if not hasattr(mod, 'co_filename'):
+ if not hasattr(mod, "co_filename"):
return None, 0, 0
- if not hasattr(mod, 'co_firstlineno'):
+ if not hasattr(mod, "co_firstlineno"):
return mod.co_filename, 0, 0
lnum = mod.co_firstlineno
- pat = re.compile(r'^(\s*def\s)|(.*(? 0:
if pat.match(lines[lnum]):
break
@@ -49,4 +50,4 @@ def do_find(f, mod):
return f, lnum, 0
- raise RuntimeError('Do not know about: ' + f + ' ' + str(mod))
+ raise RuntimeError("Do not know about: " + f + " " + str(mod))
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py
index fe6ed4130..c661b40b1 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py
@@ -1,4 +1,4 @@
-'''
+"""
Sample usage to track changes in a thread.
import threading
@@ -36,11 +36,10 @@ def start_watching(): # Called from thread
Note: changes are only reported for files (added/modified/deleted), not directories.
-'''
-import threading
+"""
import sys
from os.path import basename
-from _pydev_bundle import pydev_log
+from _pydev_bundle import pydev_log, _pydev_saved_modules
from os import scandir
try:
@@ -50,11 +49,12 @@ def start_watching(): # Called from thread
class IntEnum(object):
pass
+
import time
-__author__ = 'Fabio Zadrozny'
-__email__ = 'fabiofz@gmail.com'
-__version__ = '0.1.5' # Version here and in setup.py
+__author__ = "Fabio Zadrozny"
+__email__ = "fabiofz@gmail.com"
+__version__ = "0.1.5" # Version here and in setup.py
class Change(IntEnum):
@@ -64,7 +64,6 @@ class Change(IntEnum):
class _SingleVisitInfo(object):
-
def __init__(self):
self.count = 0
self.visited_dirs = set()
@@ -73,18 +72,18 @@ def __init__(self):
class _PathWatcher(object):
- '''
+ """
Helper to watch a single path.
- '''
+ """
- def __init__(self, root_path, accept_directory, accept_file, single_visit_info, max_recursion_level, sleep_time=.0):
- '''
+ def __init__(self, root_path, accept_directory, accept_file, single_visit_info, max_recursion_level, sleep_time=0.0):
+ """
:type root_path: str
:type accept_directory: Callback[str, bool]
:type accept_file: Callback[str, bool]
:type max_recursion_level: int
:type sleep_time: float
- '''
+ """
self.accept_directory = accept_directory
self.accept_file = accept_file
self._max_recursion_level = max_recursion_level
@@ -95,7 +94,7 @@ def __init__(self, root_path, accept_directory, accept_file, single_visit_info,
# Watcher.target_time_for_single_scan.
self.sleep_time = sleep_time
- self.sleep_at_elapsed = 1. / 30.
+ self.sleep_at_elapsed = 1.0 / 30.0
# When created, do the initial snapshot right away!
old_file_to_mtime = {}
@@ -124,7 +123,7 @@ def _check_dir(self, dir_path, single_visit_info, append_change, old_file_to_mti
dir_path = dir_path.decode(sys.getfilesystemencoding())
except UnicodeDecodeError:
try:
- dir_path = dir_path.decode('utf-8')
+ dir_path = dir_path.decode("utf-8")
except UnicodeDecodeError:
return # Ignore if we can't deal with the path.
@@ -167,10 +166,9 @@ def _check(self, single_visit_info, append_change, old_file_to_mtime):
class Watcher(object):
-
# By default (if accept_directory is not specified), these will be the
# ignored directories.
- ignored_dirs = {u'.git', u'__pycache__', u'.idea', u'node_modules', u'.metadata'}
+ ignored_dirs = {".git", "__pycache__", ".idea", "node_modules", ".metadata"}
# By default (if accept_file is not specified), these will be the
# accepted files.
@@ -195,7 +193,7 @@ class Watcher(object):
max_recursion_level = 10
def __init__(self, accept_directory=None, accept_file=None):
- '''
+ """
:param Callable[str, bool] accept_directory:
Callable that returns whether a directory should be watched.
Note: if passed it'll override the `ignored_dirs`
@@ -203,15 +201,14 @@ def __init__(self, accept_directory=None, accept_file=None):
:param Callable[str, bool] accept_file:
Callable that returns whether a file should be watched.
Note: if passed it'll override the `accepted_file_extensions`.
- '''
+ """
self._path_watchers = set()
- self._disposed = threading.Event()
+ self._disposed = _pydev_saved_modules.ThreadingEvent()
if accept_directory is None:
accept_directory = lambda dir_path: basename(dir_path) not in self.ignored_dirs
if accept_file is None:
- accept_file = lambda path_name: \
- not self.accepted_file_extensions or path_name.endswith(self.accepted_file_extensions)
+ accept_file = lambda path_name: not self.accepted_file_extensions or path_name.endswith(self.accepted_file_extensions)
self.accept_file = accept_file
self.accept_directory = accept_directory
self._single_visit_info = _SingleVisitInfo()
@@ -253,14 +250,14 @@ def set_tracked_paths(self, paths):
# Sort by the path len so that the bigger paths come first (so,
# if there's any nesting we want the nested paths to be visited
# before the parent paths so that the max_recursion_level is correct).
- paths = sorted(set(paths), key=lambda path:-len(path))
+ paths = sorted(set(paths), key=lambda path: -len(path))
path_watchers = set()
self._single_visit_info = _SingleVisitInfo()
initial_time = time.time()
for path in paths:
- sleep_time = 0. # When collecting the first time, sleep_time should be 0!
+ sleep_time = 0.0 # When collecting the first time, sleep_time should be 0!
path_watcher = _PathWatcher(
path,
self.accept_directory,
@@ -272,22 +269,22 @@ def set_tracked_paths(self, paths):
path_watchers.add(path_watcher)
- actual_time = (time.time() - initial_time)
+ actual_time = time.time() - initial_time
- pydev_log.debug('Tracking the following paths for changes: %s', paths)
- pydev_log.debug('Time to track: %.2fs', actual_time)
- pydev_log.debug('Folders found: %s', len(self._single_visit_info.visited_dirs))
- pydev_log.debug('Files found: %s', len(self._single_visit_info.file_to_mtime))
+ pydev_log.debug("Tracking the following paths for changes: %s", paths)
+ pydev_log.debug("Time to track: %.2fs", actual_time)
+ pydev_log.debug("Folders found: %s", len(self._single_visit_info.visited_dirs))
+ pydev_log.debug("Files found: %s", len(self._single_visit_info.file_to_mtime))
self._path_watchers = path_watchers
def iter_changes(self):
- '''
+ """
Continuously provides changes (until dispose() is called).
Changes provided are tuples with the Change enum and filesystem path.
:rtype: Iterable[Tuple[Change, str]]
- '''
+ """
while not self._disposed.is_set():
initial_time = time.time()
@@ -307,9 +304,9 @@ def iter_changes(self):
for change in changes:
yield change
- actual_time = (time.time() - initial_time)
+ actual_time = time.time() - initial_time
if self.print_poll_time:
- print('--- Total poll time: %.3fs' % actual_time)
+ print("--- Total poll time: %.3fs" % actual_time)
if actual_time > 0:
if self.target_time_for_single_scan <= 0.0:
@@ -322,8 +319,8 @@ def iter_changes(self):
# direction).
# (to prevent from cases where the user puts the machine on sleep and
# values become too skewed).
- if perc > 2.:
- perc = 2.
+ if perc > 2.0:
+ perc = 2.0
elif perc < 0.5:
perc = 0.5
@@ -337,7 +334,7 @@ def iter_changes(self):
# (to prevent from cases where the user puts the machine on sleep and
# values become too skewed).
diff_sleep_time = new_sleep_time - path_watcher.sleep_time
- path_watcher.sleep_time += (diff_sleep_time / (3.0 * len(self._path_watchers)))
+ path_watcher.sleep_time += diff_sleep_time / (3.0 * len(self._path_watchers))
if actual_time > 0:
self._disposed.wait(actual_time)
@@ -348,6 +345,5 @@ def iter_changes(self):
# print('new sleep time: %s' % path_watcher.sleep_time)
diff = self.target_time_for_notification - actual_time
- if diff > 0.:
+ if diff > 0.0:
self._disposed.wait(diff)
-
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py
index 5c87ac82a..780ff5e4b 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py
@@ -2,11 +2,10 @@
import sys
import traceback
from _pydev_bundle.pydev_imports import xmlrpclib, _queue, Exec
-from _pydev_bundle._pydev_calltip_util import get_description
+from _pydev_bundle._pydev_calltip_util import get_description
from _pydevd_bundle import pydevd_vars
from _pydevd_bundle import pydevd_xml
-from _pydevd_bundle.pydevd_constants import (IS_JYTHON, NEXT_VALUE_SEPARATOR, get_global_debugger,
- silence_warnings_decorator)
+from _pydevd_bundle.pydevd_constants import IS_JYTHON, NEXT_VALUE_SEPARATOR, get_global_debugger, silence_warnings_decorator
from contextlib import contextmanager
from _pydev_bundle import pydev_log
from _pydevd_bundle.pydevd_utils import interrupt_main_thread
@@ -18,7 +17,6 @@
# BaseStdIn
# =======================================================================================================================
class BaseStdIn:
-
def __init__(self, original_stdin=sys.stdin, *args, **kwargs):
try:
self.encoding = sys.stdin.encoding
@@ -37,7 +35,7 @@ def readline(self, *args, **kwargs):
# sys.stderr.write('Cannot readline out of the console evaluation\n') -- don't show anything
# This could happen if the user had done input('enter number).<-- upon entering this, that message would appear,
# which is not something we want.
- return '\n'
+ return "\n"
def write(self, *args, **kwargs):
pass # not available StdIn (but it can be expected to be in the stream interface)
@@ -67,9 +65,9 @@ def __getattr__(self, item):
# StdIn
# =======================================================================================================================
class StdIn(BaseStdIn):
- '''
- Object to be added to stdin (to emulate it as non-blocking while the next line arrives)
- '''
+ """
+ Object to be added to stdin (to emulate it as non-blocking while the next line arrives)
+ """
def __init__(self, interpreter, host, client_port, original_stdin=sys.stdin):
BaseStdIn.__init__(self, original_stdin)
@@ -80,36 +78,36 @@ def __init__(self, interpreter, host, client_port, original_stdin=sys.stdin):
def readline(self, *args, **kwargs):
# Ok, callback into the client to get the new input
try:
- server = xmlrpclib.Server('http://%s:%s' % (self.host, self.client_port))
+ server = xmlrpclib.Server("http://%s:%s" % (self.host, self.client_port))
requested_input = server.RequestInput()
if not requested_input:
- return '\n' # Yes, a readline must return something (otherwise we can get an EOFError on the input() call).
+ return "\n" # Yes, a readline must return something (otherwise we can get an EOFError on the input() call).
else:
# readline should end with '\n' (not doing so makes IPython 5 remove the last *valid* character).
- requested_input += '\n'
+ requested_input += "\n"
return requested_input
except KeyboardInterrupt:
raise # Let KeyboardInterrupt go through -- #PyDev-816: Interrupting infinite loop in the Interactive Console
except:
- return '\n'
+ return "\n"
def close(self, *args, **kwargs):
pass # expected in StdIn
-#=======================================================================================================================
+# =======================================================================================================================
# DebugConsoleStdIn
-#=======================================================================================================================
+# =======================================================================================================================
class DebugConsoleStdIn(BaseStdIn):
- '''
- Object to be added to stdin (to emulate it as non-blocking while the next line arrives)
- '''
+ """
+ Object to be added to stdin (to emulate it as non-blocking while the next line arrives)
+ """
def __init__(self, py_db, original_stdin):
- '''
+ """
:param py_db:
If None, get_global_debugger() is used.
- '''
+ """
BaseStdIn.__init__(self, original_stdin)
self._py_db = py_db
self._in_notification = 0
@@ -150,7 +148,6 @@ def read(self, *args, **kwargs):
class CodeFragment:
-
def __init__(self, text, is_single_line=True):
self.text = text
self.is_single_line = is_single_line
@@ -165,7 +162,6 @@ def append(self, code_fragment):
# BaseInterpreterInterface
# =======================================================================================================================
class BaseInterpreterInterface:
-
def __init__(self, mainThread, connect_status_queue=None):
self.mainThread = mainThread
self.interruptable = False
@@ -177,17 +173,18 @@ def __init__(self, mainThread, connect_status_queue=None):
self.init_mpl_modules_for_patching()
def build_banner(self):
- return 'print({0})\n'.format(repr(self.get_greeting_msg()))
+ return "print({0})\n".format(repr(self.get_greeting_msg()))
def get_greeting_msg(self):
- return 'PyDev console: starting.\n'
+ return "PyDev console: starting.\n"
def init_mpl_modules_for_patching(self):
from pydev_ipython.matplotlibtools import activate_matplotlib, activate_pylab, activate_pyplot
+
self.mpl_modules_for_patching = {
"matplotlib": lambda: activate_matplotlib(self.enableGui),
"matplotlib.pyplot": activate_pyplot,
- "pylab": activate_pylab
+ "pylab": activate_pylab,
}
def need_more_for_code(self, source):
@@ -195,10 +192,10 @@ def need_more_for_code(self, source):
# Strangely even the IPython console is_complete said it was complete
# even with a continuation char at the end.
- if source.endswith('\\'):
+ if source.endswith("\\"):
return True
- if hasattr(self.interpreter, 'is_complete'):
+ if hasattr(self.interpreter, "is_complete"):
return not self.interpreter.is_complete(source)
try:
# At this point, it should always be single.
@@ -209,8 +206,8 @@ def need_more_for_code(self, source):
# (in a single line) don't work.
# Note that it won't give an error and code will be None (so, it'll
# use execMultipleLines in the next call in this case).
- symbol = 'single'
- code = self.interpreter.compile(source, '', symbol)
+ symbol = "single"
+ code = self.interpreter.compile(source, "", symbol)
except (OverflowError, SyntaxError, ValueError):
# Case 1
return False
@@ -243,13 +240,13 @@ def add_exec(self, code_fragment, debugger=None):
original_in = sys.stdin
try:
help = None
- if 'pydoc' in sys.modules:
- pydoc = sys.modules['pydoc'] # Don't import it if it still is not there.
+ if "pydoc" in sys.modules:
+ pydoc = sys.modules["pydoc"] # Don't import it if it still is not there.
- if hasattr(pydoc, 'help'):
+ if hasattr(pydoc, "help"):
# You never know how will the API be changed, so, let's code defensively here
help = pydoc.help
- if not hasattr(help, 'input'):
+ if not hasattr(help, "input"):
help = None
except:
# Just ignore any error here
@@ -270,18 +267,18 @@ def add_exec(self, code_fragment, debugger=None):
help = None
if not self._input_error_printed:
self._input_error_printed = True
- sys.stderr.write('\nError when trying to update pydoc.help.input\n')
- sys.stderr.write('(help() may not work -- please report this as a bug in the pydev bugtracker).\n\n')
+ sys.stderr.write("\nError when trying to update pydoc.help.input\n")
+ sys.stderr.write("(help() may not work -- please report this as a bug in the pydev bugtracker).\n\n")
traceback.print_exc()
try:
self.start_exec()
- if hasattr(self, 'debugger'):
+ if hasattr(self, "debugger"):
self.debugger.enable_tracing()
more = self.do_add_exec(code_fragment)
- if hasattr(self, 'debugger'):
+ if hasattr(self, "debugger"):
self.debugger.disable_tracing()
self.finish_exec(more)
@@ -307,19 +304,19 @@ def add_exec(self, code_fragment, debugger=None):
return more
def do_add_exec(self, codeFragment):
- '''
+ """
Subclasses should override.
@return: more (True if more input is needed to complete the statement and False if the statement is complete).
- '''
+ """
raise NotImplementedError()
def get_namespace(self):
- '''
+ """
Subclasses should override.
@return: dict with namespace.
- '''
+ """
raise NotImplementedError()
def __resolve_reference__(self, text):
@@ -328,7 +325,7 @@ def __resolve_reference__(self, text):
:type text: str
"""
obj = None
- if '.' not in text:
+ if "." not in text:
try:
obj = self.get_namespace()[text]
except KeyError:
@@ -336,22 +333,22 @@ def __resolve_reference__(self, text):
if obj is None:
try:
- obj = self.get_namespace()['__builtins__'][text]
+ obj = self.get_namespace()["__builtins__"][text]
except:
pass
if obj is None:
try:
- obj = getattr(self.get_namespace()['__builtins__'], text, None)
+ obj = getattr(self.get_namespace()["__builtins__"], text, None)
except:
pass
else:
try:
- last_dot = text.rindex('.')
+ last_dot = text.rindex(".")
parent_context = text[0:last_dot]
res = pydevd_vars.eval_in_context(parent_context, self.get_namespace(), self.get_namespace())
- obj = getattr(res, text[last_dot + 1:])
+ obj = getattr(res, text[last_dot + 1 :])
except:
pass
return obj
@@ -360,10 +357,10 @@ def getDescription(self, text):
try:
obj = self.__resolve_reference__(text)
if obj is None:
- return ''
+ return ""
return get_description(obj)
except:
- return ''
+ return ""
def do_exec_code(self, code, is_single_line):
try:
@@ -385,7 +382,7 @@ def execLine(self, line):
def execMultipleLines(self, lines):
if IS_JYTHON:
more = False
- for line in lines.split('\n'):
+ for line in lines.split("\n"):
more = self.do_exec_code(line, True)
return more
else:
@@ -411,8 +408,8 @@ def start_exec(self):
self.interruptable = True
def get_server(self):
- if getattr(self, 'host', None) is not None:
- return xmlrpclib.Server('http://%s:%s' % (self.host, self.client_port))
+ if getattr(self, "host", None) is not None:
+ return xmlrpclib.Server("http://%s:%s" % (self.host, self.client_port))
else:
return None
@@ -485,8 +482,8 @@ def loadFullValue(self, seq, scope_attrs):
var_objects = []
vars = scope_attrs.split(NEXT_VALUE_SEPARATOR)
for var_attrs in vars:
- if '\t' in var_attrs:
- name, attrs = var_attrs.split('\t', 1)
+ if "\t" in var_attrs:
+ name, attrs = var_attrs.split("\t", 1)
else:
name = var_attrs
@@ -499,38 +496,39 @@ def loadFullValue(self, seq, scope_attrs):
var_objects.append((var_object, name))
from _pydevd_bundle.pydevd_comm import GetValueAsyncThreadConsole
- py_db = getattr(self, 'debugger', None)
+
+ py_db = getattr(self, "debugger", None)
if py_db is None:
py_db = get_global_debugger()
if py_db is None:
from pydevd import PyDB
+
py_db = PyDB()
t = GetValueAsyncThreadConsole(py_db, self.get_server(), seq, var_objects)
t.start()
def changeVariable(self, attr, value):
-
def do_change_variable():
- Exec('%s=%s' % (attr, value), self.get_namespace(), self.get_namespace())
+ Exec("%s=%s" % (attr, value), self.get_namespace(), self.get_namespace())
# Important: it has to be really enabled in the main thread, so, schedule
# it to run in the main thread.
self.exec_queue.put(do_change_variable)
def connectToDebugger(self, debuggerPort, debugger_options=None):
- '''
+ """
Used to show console with variables connection.
Mainly, monkey-patches things in the debugger structure so that the debugger protocol works.
- '''
+ """
if debugger_options is None:
debugger_options = {}
env_key = "PYDEVD_EXTRA_ENVS"
if env_key in debugger_options:
- for (env_name, value) in debugger_options[env_key].items():
+ for env_name, value in debugger_options[env_key].items():
existing_value = os.environ.get(env_name, None)
if existing_value:
os.environ[env_name] = "%s%c%s" % (existing_value, os.path.pathsep, value)
@@ -549,10 +547,11 @@ def do_connect_to_debugger():
except:
# This happens on Jython embedded in host eclipse
traceback.print_exc()
- sys.stderr.write('pydevd is not available, cannot connect\n')
+ sys.stderr.write("pydevd is not available, cannot connect\n")
from _pydevd_bundle.pydevd_constants import set_thread_id
from _pydev_bundle import pydev_localhost
+
set_thread_id(threading.current_thread(), "console_main")
VIRTUAL_FRAME_ID = "1" # matches PyStackFrameConsole.java
@@ -571,22 +570,23 @@ def do_connect_to_debugger():
self.debugger.disable_tracing()
except:
traceback.print_exc()
- sys.stderr.write('Failed to connect to target debugger.\n')
+ sys.stderr.write("Failed to connect to target debugger.\n")
# Register to process commands when idle
self.debugrunning = False
try:
import pydevconsole
+
pydevconsole.set_debug_hook(self.debugger.process_internal_commands)
except:
traceback.print_exc()
- sys.stderr.write('Version of Python does not support debuggable Interactive Console.\n')
+ sys.stderr.write("Version of Python does not support debuggable Interactive Console.\n")
# Important: it has to be really enabled in the main thread, so, schedule
# it to run in the main thread.
self.exec_queue.put(do_connect_to_debugger)
- return ('connect complete',)
+ return ("connect complete",)
def handshake(self):
if self.connect_status_queue is not None:
@@ -601,21 +601,23 @@ def hello(self, input_str):
return ("Hello eclipse",)
def enableGui(self, guiname):
- ''' Enable the GUI specified in guiname (see inputhook for list).
- As with IPython, enabling multiple GUIs isn't an error, but
- only the last one's main loop runs and it may not work
- '''
+ """Enable the GUI specified in guiname (see inputhook for list).
+ As with IPython, enabling multiple GUIs isn't an error, but
+ only the last one's main loop runs and it may not work
+ """
def do_enable_gui():
from _pydev_bundle.pydev_versioncheck import versionok_for_gui
+
if versionok_for_gui():
try:
from pydev_ipython.inputhook import enable_gui
+
enable_gui(guiname)
except:
sys.stderr.write("Failed to enable GUI event loop integration for '%s'\n" % guiname)
traceback.print_exc()
- elif guiname not in ['none', '', None]:
+ elif guiname not in ["none", "", None]:
# Only print a warning if the guiname was going to do something
sys.stderr.write("PyDev console: Python version does not support GUI event loop integration for '%s'\n" % guiname)
# Return value does not matter, so return back what was sent
@@ -633,7 +635,7 @@ def get_ipython_hidden_vars_dict(self):
# FakeFrame
# =======================================================================================================================
class FakeFrame:
- '''
+ """
Used to show console with variables connection.
A class to be used as a mock of a frame.
- '''
+ """
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py
index 519d8d762..4dd91368c 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py
@@ -1,4 +1,3 @@
-
import sys
import traceback
from types import ModuleType
@@ -8,7 +7,6 @@
class ImportHookManager(ModuleType):
-
def __init__(self, name, system_import):
ModuleType.__init__(self, name)
self._system_import = system_import
@@ -35,6 +33,6 @@ def do_import(self, name, *args, **kwargs):
return module
-import_hook_manager = ImportHookManager(__name__ + '.import_hook', builtins.__import__)
+import_hook_manager = ImportHookManager(__name__ + ".import_hook", builtins.__import__)
builtins.__import__ = import_hook_manager.do_import
sys.modules[import_hook_manager.__name__] = import_hook_manager
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py
index edc242908..4ee2868c4 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py
@@ -10,4 +10,3 @@
from _pydevd_bundle.pydevd_exec2 import Exec
from urllib.parse import quote, quote_plus, unquote_plus # @UnresolvedImport
-
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py
index a1221f972..72b16791c 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py
@@ -9,13 +9,13 @@
from _pydev_bundle.pydev_ipython_console_011 import get_pydev_frontend
-#=======================================================================================================================
+# =======================================================================================================================
# InterpreterInterface
-#=======================================================================================================================
+# =======================================================================================================================
class InterpreterInterface(BaseInterpreterInterface):
- '''
- The methods in this class should be registered in the xml-rpc server.
- '''
+ """
+ The methods in this class should be registered in the xml-rpc server.
+ """
def __init__(self, host, client_port, main_thread, show_banner=True, connect_status_queue=None):
BaseInterpreterInterface.__init__(self, main_thread, connect_status_queue)
@@ -37,13 +37,13 @@ def get_greeting_msg(self):
def do_add_exec(self, code_fragment):
self.notify_about_magic()
- if code_fragment.text.rstrip().endswith('??'):
- print('IPython-->')
+ if code_fragment.text.rstrip().endswith("??"):
+ print("IPython-->")
try:
res = bool(self.interpreter.add_exec(code_fragment.text))
finally:
- if code_fragment.text.rstrip().endswith('??'):
- print('<--IPython')
+ if code_fragment.text.rstrip().endswith("??"):
+ print("<--IPython")
return res
@@ -75,23 +75,21 @@ def notify_about_magic(self):
def get_ipython_hidden_vars_dict(self):
try:
- if hasattr(self.interpreter, 'ipython') and hasattr(self.interpreter.ipython, 'user_ns_hidden'):
+ if hasattr(self.interpreter, "ipython") and hasattr(self.interpreter.ipython, "user_ns_hidden"):
user_ns_hidden = self.interpreter.ipython.user_ns_hidden
if isinstance(user_ns_hidden, dict):
# Since IPython 2 dict `user_ns_hidden` contains hidden variables and values
user_hidden_dict = user_ns_hidden.copy()
else:
# In IPython 1.x `user_ns_hidden` used to be a set with names of hidden variables
- user_hidden_dict = dict([(key, val) for key, val in self.interpreter.ipython.user_ns.items()
- if key in user_ns_hidden])
+ user_hidden_dict = dict([(key, val) for key, val in self.interpreter.ipython.user_ns.items() if key in user_ns_hidden])
# while `_`, `__` and `___` were not initialized, they are not presented in `user_ns_hidden`
- user_hidden_dict.setdefault('_', '')
- user_hidden_dict.setdefault('__', '')
- user_hidden_dict.setdefault('___', '')
+ user_hidden_dict.setdefault("_", "")
+ user_hidden_dict.setdefault("__", "")
+ user_hidden_dict.setdefault("___", "")
return user_hidden_dict
except:
# Getting IPython variables shouldn't break loading frame variables
traceback.print_exc()
-
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py
index eaf4738ba..dabf1f380 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py
@@ -27,6 +27,7 @@
from IPython.utils.strdispatch import StrDispatch
import IPython.core.release as IPythonRelease
from IPython.terminal.interactiveshell import TerminalInteractiveShell
+
try:
from traitlets import CBool, Unicode
except ImportError:
@@ -37,24 +38,23 @@
default_pydev_banner_parts = default_banner_parts
-default_pydev_banner = ''.join(default_pydev_banner_parts)
+default_pydev_banner = "".join(default_pydev_banner_parts)
def show_in_pager(self, strng, *args, **kwargs):
- """ Run a string through pager """
+ """Run a string through pager"""
# On PyDev we just output the string, there are scroll bars in the console
# to handle "paging". This is the same behaviour as when TERM==dump (see
# page.py)
# for compatibility with mime-bundle form:
if isinstance(strng, dict):
- strng = strng.get('text/plain', strng)
+ strng = strng.get("text/plain", strng)
print(strng)
def create_editor_hook(pydev_host, pydev_client_port):
-
def call_editor(filename, line=0, wait=True):
- """ Open an editor in PyDev """
+ """Open an editor in PyDev"""
if line is None:
line = 0
@@ -66,7 +66,7 @@ def call_editor(filename, line=0, wait=True):
# sys.__stderr__.write('Calling editor at: %s:%s\n' % (pydev_host, pydev_client_port))
# Tell PyDev to open the editor
- server = xmlrpclib.Server('http://%s:%s' % (pydev_host, pydev_client_port))
+ server = xmlrpclib.Server("http://%s:%s" % (pydev_host, pydev_client_port))
server.IPythonEditor(filename, str(line))
if wait:
@@ -76,10 +76,9 @@ def call_editor(filename, line=0, wait=True):
class PyDevIPCompleter(IPCompleter):
-
def __init__(self, *args, **kwargs):
- """ Create a Completer that reuses the advanced completion support of PyDev
- in addition to the completion support provided by IPython """
+ """Create a Completer that reuses the advanced completion support of PyDev
+ in addition to the completion support provided by IPython"""
IPCompleter.__init__(self, *args, **kwargs)
# Use PyDev for python matches, see getCompletions below
if self.python_matches in self.matchers:
@@ -88,10 +87,9 @@ def __init__(self, *args, **kwargs):
class PyDevIPCompleter6(IPCompleter):
-
def __init__(self, *args, **kwargs):
- """ Create a Completer that reuses the advanced completion support of PyDev
- in addition to the completion support provided by IPython """
+ """Create a Completer that reuses the advanced completion support of PyDev
+ in addition to the completion support provided by IPython"""
IPCompleter.__init__(self, *args, **kwargs)
@property
@@ -112,9 +110,7 @@ def matchers(self, value):
class PyDevTerminalInteractiveShell(TerminalInteractiveShell):
- banner1 = Unicode(default_pydev_banner, config=True,
- help="""The part of the banner to be printed before the profile"""
- )
+ banner1 = Unicode(default_pydev_banner, config=True, help="""The part of the banner to be printed before the profile""")
# TODO term_title: (can PyDev's title be changed???, see terminal.py for where to inject code, in particular set_term_title as used by %cd)
# for now, just disable term_title
@@ -145,18 +141,18 @@ class PyDevTerminalInteractiveShell(TerminalInteractiveShell):
# In the PyDev Console, GUI control is done via hookable XML-RPC server
@staticmethod
def enable_gui(gui=None, app=None):
- """Switch amongst GUI input hooks by name.
- """
+ """Switch amongst GUI input hooks by name."""
# Deferred import
from pydev_ipython.inputhook import enable_gui as real_enable_gui
+
try:
return real_enable_gui(gui, app)
except ValueError as e:
raise UsageError("%s" % e)
- #-------------------------------------------------------------------------
+ # -------------------------------------------------------------------------
# Things related to hooks
- #-------------------------------------------------------------------------
+ # -------------------------------------------------------------------------
def init_history(self):
# Disable history so that we don't have an additional thread for that
@@ -166,11 +162,11 @@ def init_history(self):
def init_hooks(self):
super(PyDevTerminalInteractiveShell, self).init_hooks()
- self.set_hook('show_in_pager', show_in_pager)
+ self.set_hook("show_in_pager", show_in_pager)
- #-------------------------------------------------------------------------
+ # -------------------------------------------------------------------------
# Things related to exceptions
- #-------------------------------------------------------------------------
+ # -------------------------------------------------------------------------
def showtraceback(self, exc_tuple=None, *args, **kwargs):
# IPython does a lot of clever stuff with Exceptions. However mostly
@@ -190,53 +186,50 @@ def showtraceback(self, exc_tuple=None, *args, **kwargs):
if tb is not None:
traceback.print_exception(etype, value, tb)
- #-------------------------------------------------------------------------
+ # -------------------------------------------------------------------------
# Things related to text completion
- #-------------------------------------------------------------------------
+ # -------------------------------------------------------------------------
# The way to construct an IPCompleter changed in most versions,
# so we have a custom, per version implementation of the construction
def _new_completer_100(self):
- completer = PyDevIPCompleter(shell=self,
- namespace=self.user_ns,
- global_namespace=self.user_global_ns,
- alias_table=self.alias_manager.alias_table,
- use_readline=self.has_readline,
- parent=self,
- )
+ completer = PyDevIPCompleter(
+ shell=self,
+ namespace=self.user_ns,
+ global_namespace=self.user_global_ns,
+ alias_table=self.alias_manager.alias_table,
+ use_readline=self.has_readline,
+ parent=self,
+ )
return completer
def _new_completer_234(self):
# correct for IPython versions 2.x, 3.x, 4.x
- completer = PyDevIPCompleter(shell=self,
- namespace=self.user_ns,
- global_namespace=self.user_global_ns,
- use_readline=self.has_readline,
- parent=self,
- )
+ completer = PyDevIPCompleter(
+ shell=self,
+ namespace=self.user_ns,
+ global_namespace=self.user_global_ns,
+ use_readline=self.has_readline,
+ parent=self,
+ )
return completer
def _new_completer_500(self):
- completer = PyDevIPCompleter(shell=self,
- namespace=self.user_ns,
- global_namespace=self.user_global_ns,
- use_readline=False,
- parent=self
- )
+ completer = PyDevIPCompleter(
+ shell=self, namespace=self.user_ns, global_namespace=self.user_global_ns, use_readline=False, parent=self
+ )
return completer
def _new_completer_600(self):
- completer = PyDevIPCompleter6(shell=self,
- namespace=self.user_ns,
- global_namespace=self.user_global_ns,
- use_readline=False,
- parent=self
- )
+ completer = PyDevIPCompleter6(
+ shell=self, namespace=self.user_ns, global_namespace=self.user_global_ns, use_readline=False, parent=self
+ )
return completer
def add_completer_hooks(self):
from IPython.core.completerlib import module_completer, magic_run_completer, cd_completer
+
try:
from IPython.core.completerlib import reset_completer
except ImportError:
@@ -245,16 +238,16 @@ def add_completer_hooks(self):
self.configurables.append(self.Completer)
# Add custom completers to the basic ones built into IPCompleter
- sdisp = self.strdispatchers.get('complete_command', StrDispatch())
- self.strdispatchers['complete_command'] = sdisp
+ sdisp = self.strdispatchers.get("complete_command", StrDispatch())
+ self.strdispatchers["complete_command"] = sdisp
self.Completer.custom_completers = sdisp
- self.set_hook('complete_command', module_completer, str_key='import')
- self.set_hook('complete_command', module_completer, str_key='from')
- self.set_hook('complete_command', magic_run_completer, str_key='%run')
- self.set_hook('complete_command', cd_completer, str_key='%cd')
+ self.set_hook("complete_command", module_completer, str_key="import")
+ self.set_hook("complete_command", module_completer, str_key="from")
+ self.set_hook("complete_command", magic_run_completer, str_key="%run")
+ self.set_hook("complete_command", cd_completer, str_key="%cd")
if reset_completer:
- self.set_hook('complete_command', reset_completer, str_key='%reset')
+ self.set_hook("complete_command", reset_completer, str_key="%reset")
def init_completer(self):
"""Initialize the completion machinery.
@@ -277,7 +270,7 @@ def init_completer(self):
elif IPythonRelease._version_major >= 1:
self.Completer = self._new_completer_100()
- if hasattr(self.Completer, 'use_jedi'):
+ if hasattr(self.Completer, "use_jedi"):
self.Completer.use_jedi = False
self.add_completer_hooks()
@@ -289,20 +282,20 @@ def init_completer(self):
if self.has_readline:
self.set_readline_completer()
- #-------------------------------------------------------------------------
+ # -------------------------------------------------------------------------
# Things related to aliases
- #-------------------------------------------------------------------------
+ # -------------------------------------------------------------------------
def init_alias(self):
# InteractiveShell defines alias's we want, but TerminalInteractiveShell defines
# ones we don't. So don't use super and instead go right to InteractiveShell
InteractiveShell.init_alias(self)
- #-------------------------------------------------------------------------
+ # -------------------------------------------------------------------------
# Things related to exiting
- #-------------------------------------------------------------------------
+ # -------------------------------------------------------------------------
def ask_exit(self):
- """ Ask the shell to exit. Can be overiden and used as a callback. """
+ """Ask the shell to exit. Can be overiden and used as a callback."""
# TODO PyDev's console does not have support from the Python side to exit
# the console. If user forces the exit (with sys.exit()) then the console
# simply reports errors. e.g.:
@@ -323,11 +316,11 @@ def ask_exit(self):
# >>>
#
super(PyDevTerminalInteractiveShell, self).ask_exit()
- print('To exit the PyDev Console, terminate the console within IDE.')
+ print("To exit the PyDev Console, terminate the console within IDE.")
- #-------------------------------------------------------------------------
+ # -------------------------------------------------------------------------
# Things related to magics
- #-------------------------------------------------------------------------
+ # -------------------------------------------------------------------------
def init_magics(self):
super(PyDevTerminalInteractiveShell, self).init_magics()
@@ -337,16 +330,15 @@ def init_magics(self):
InteractiveShellABC.register(PyDevTerminalInteractiveShell) # @UndefinedVariable
-#=======================================================================================================================
+# =======================================================================================================================
# _PyDevFrontEnd
-#=======================================================================================================================
+# =======================================================================================================================
class _PyDevFrontEnd:
-
version = release.__version__
def __init__(self):
# Create and initialize our IPython instance.
- if hasattr(PyDevTerminalInteractiveShell, '_instance') and PyDevTerminalInteractiveShell._instance is not None:
+ if hasattr(PyDevTerminalInteractiveShell, "_instance") and PyDevTerminalInteractiveShell._instance is not None:
self.ipython = PyDevTerminalInteractiveShell._instance
else:
self.ipython = PyDevTerminalInteractiveShell.instance()
@@ -368,7 +360,7 @@ def update(self, globals, locals):
self.ipython.user_global_ns.update(globals)
self.ipython.user_ns = locals
- if hasattr(self.ipython, 'history_manager') and hasattr(self.ipython.history_manager, 'save_thread'):
+ if hasattr(self.ipython, "history_manager") and hasattr(self.ipython.history_manager, "save_thread"):
self.ipython.history_manager.save_thread.pydev_do_not_trace = True # don't trace ipython history saving thread
def complete(self, string):
@@ -384,7 +376,7 @@ def complete(self, string):
def is_complete(self, string):
# Based on IPython 0.10.1
- if string in ('', '\n'):
+ if string in ("", "\n"):
# Prefiltering, eg through ipython0, may return an empty
# string although some operations have been accomplished. We
# thus want to consider an empty string as a complete
@@ -396,15 +388,11 @@ def is_complete(self, string):
# complete (except if '\' was used).
# This should probably be done in a different place (like
# maybe 'prefilter_input' method? For now, this works.
- clean_string = string.rstrip('\n')
- if not clean_string.endswith('\\'):
- clean_string += '\n\n'
-
- is_complete = codeop.compile_command(
- clean_string,
- "",
- "exec"
- )
+ clean_string = string.rstrip("\n")
+ if not clean_string.endswith("\\"):
+ clean_string += "\n\n"
+
+ is_complete = codeop.compile_command(clean_string, "", "exec")
except Exception:
# XXX: Hack: return True so that the
# code gets executed and the error captured.
@@ -416,18 +404,18 @@ def getCompletions(self, text, act_tok):
# IPython only gives context free list of completions, while PyDev
# gives detailed information about completions.
try:
- TYPE_IPYTHON = '11'
- TYPE_IPYTHON_MAGIC = '12'
+ TYPE_IPYTHON = "11"
+ TYPE_IPYTHON_MAGIC = "12"
_line, ipython_completions = self.complete(text)
from _pydev_bundle._pydev_completer import Completer
+
completer = Completer(self.get_namespace(), None)
ret = completer.complete(act_tok)
append = ret.append
ip = self.ipython
pydev_completions = set([f[0] for f in ret])
for ipython_completion in ipython_completions:
-
# PyCharm was not expecting completions with '%'...
# Could be fixed in the backend, but it's probably better
# fixing it at PyCharm.
@@ -437,17 +425,19 @@ def getCompletions(self, text, act_tok):
if ipython_completion not in pydev_completions:
pydev_completions.add(ipython_completion)
inf = ip.object_inspect(ipython_completion)
- if inf['type_name'] == 'Magic function':
+ if inf["type_name"] == "Magic function":
pydev_type = TYPE_IPYTHON_MAGIC
else:
pydev_type = TYPE_IPYTHON
- pydev_doc = inf['docstring']
+ pydev_doc = inf["docstring"]
if pydev_doc is None:
- pydev_doc = ''
- append((ipython_completion, pydev_doc, '', pydev_type))
+ pydev_doc = ""
+ append((ipython_completion, pydev_doc, "", pydev_type))
return ret
except:
- import traceback;traceback.print_exc()
+ import traceback
+
+ traceback.print_exc()
return []
def get_namespace(self):
@@ -460,7 +450,7 @@ def add_exec(self, line):
if self._curr_exec_lines:
self._curr_exec_lines.append(line)
- buf = '\n'.join(self._curr_exec_lines)
+ buf = "\n".join(self._curr_exec_lines)
if self.is_complete(buf):
self._curr_exec_line += 1
@@ -470,7 +460,6 @@ def add_exec(self, line):
return True # needs more
else:
-
if not self.is_complete(line):
# Did not execute
self._curr_exec_lines.append(line)
@@ -488,7 +477,7 @@ def is_automagic(self):
return self.ipython.automagic
def get_greeting_msg(self):
- return 'PyDev console: using IPython %s\n' % self.version
+ return "PyDev console: using IPython %s\n" % self.version
class _PyDevFrontEndContainer:
@@ -506,11 +495,10 @@ def get_pydev_frontend(pydev_host, pydev_client_port):
# Back channel to PyDev to open editors (in the future other
# info may go back this way. This is the same channel that is
# used to get stdin, see StdIn in pydev_console_utils)
- _PyDevFrontEndContainer._instance.ipython.hooks['editor'] = create_editor_hook(pydev_host, pydev_client_port)
+ _PyDevFrontEndContainer._instance.ipython.hooks["editor"] = create_editor_hook(pydev_host, pydev_client_port)
# Note: setting the callback directly because setting it with set_hook would actually create a chain instead
# of ovewriting at each new call).
# _PyDevFrontEndContainer._instance.ipython.set_hook('editor', create_editor_hook(pydev_host, pydev_client_port))
return _PyDevFrontEndContainer._instance
-
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py
index d949ba256..c1902014e 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py
@@ -4,20 +4,20 @@
# circumstances).
# It is required to debug threads started by start_new_thread in Python 3.4
_temp = threading.Thread()
-if hasattr(_temp, '_is_stopped'): # Python 3.x has this
+if hasattr(_temp, "_is_stopped"): # Python 3.x has this
def is_thread_alive(t):
return not t._is_stopped
-elif hasattr(_temp, '_Thread__stopped'): # Python 2.x has this
+elif hasattr(_temp, "_Thread__stopped"): # Python 2.x has this
def is_thread_alive(t):
return not t._Thread__stopped
else:
-
# Jython wraps a native java thread and thus only obeys the public API.
def is_thread_alive(t):
return t.is_alive()
+
del _temp
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py
index 0d2838de5..d25809236 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py
@@ -1,20 +1,20 @@
from _pydev_bundle._pydev_saved_modules import socket
import sys
-IS_JYTHON = sys.platform.find('java') != -1
+IS_JYTHON = sys.platform.find("java") != -1
_cache = None
def get_localhost():
- '''
+ """
Should return 127.0.0.1 in ipv4 and ::1 in ipv6
localhost is not used because on windows vista/windows 7, there can be issues where the resolving doesn't work
properly and takes a lot of time (had this issue on the pyunit server).
Using the IP directly solves the problem.
- '''
+ """
# TODO: Needs better investigation!
global _cache
@@ -22,14 +22,14 @@ def get_localhost():
try:
for addr_info in socket.getaddrinfo("localhost", 80, 0, 0, socket.SOL_TCP):
config = addr_info[4]
- if config[0] == '127.0.0.1':
- _cache = '127.0.0.1'
+ if config[0] == "127.0.0.1":
+ _cache = "127.0.0.1"
return _cache
except:
# Ok, some versions of Python don't have getaddrinfo or SOL_TCP... Just consider it 127.0.0.1 in this case.
- _cache = '127.0.0.1'
+ _cache = "127.0.0.1"
else:
- _cache = 'localhost'
+ _cache = "localhost"
return _cache
@@ -42,6 +42,7 @@ def get_socket_names(n_sockets, close=False):
# Although the option which would be pure java *should* work for Jython, the socket being returned is still 0
# (i.e.: it doesn't give the local port bound, only the original port, which was 0).
from java.net import ServerSocket
+
sock = ServerSocket(0)
socket_name = get_localhost(), sock.getLocalPort()
else:
@@ -63,5 +64,5 @@ def get_socket_name(close=False):
return get_socket_names(1, close)[0]
-if __name__ == '__main__':
+if __name__ == "__main__":
print(get_socket_name())
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py
index 715519569..2fb0fc267 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py
@@ -1,5 +1,4 @@
-from _pydevd_bundle.pydevd_constants import DebugInfoHolder, SHOW_COMPILE_CYTHON_COMMAND_LINE, NULL, LOG_TIME, \
- ForkSafeLock
+from _pydevd_bundle.pydevd_constants import DebugInfoHolder, SHOW_COMPILE_CYTHON_COMMAND_LINE, NULL, LOG_TIME, ForkSafeLock
from contextlib import contextmanager
import traceback
import os
@@ -15,12 +14,12 @@ class _LoggingGlobals(object):
def initialize_debug_stream(reinitialize=False):
- '''
+ """
:param bool reinitialize:
Reinitialize is used to update the debug stream after a fork (thus, if it wasn't
initialized, we don't need to do anything, just wait for the first regular log call
to initialize).
- '''
+ """
if reinitialize:
if not _LoggingGlobals._debug_stream_initialized:
return
@@ -53,7 +52,7 @@ def initialize_debug_stream(reinitialize=False):
try:
target_file = DebugInfoHolder.PYDEVD_DEBUG_FILE
debug_file = _compute_filename_with_pid(target_file)
- _LoggingGlobals._debug_stream = open(debug_file, 'w')
+ _LoggingGlobals._debug_stream = open(debug_file, "w")
_LoggingGlobals._debug_stream_filename = debug_file
except Exception:
_LoggingGlobals._debug_stream = sys.stderr
@@ -73,10 +72,10 @@ def _compute_filename_with_pid(target_file, pid=None):
name, ext = os.path.splitext(basename)
if pid is None:
pid = os.getpid()
- return os.path.join(dirname, '%s.%s%s' % (name, pid, ext))
+ return os.path.join(dirname, "%s.%s%s" % (name, pid, ext))
-def log_to(log_file:str, log_level:int=3) -> None:
+def log_to(log_file: str, log_level: int = 3) -> None:
with _LoggingGlobals._initialize_lock:
# Can be set directly.
DebugInfoHolder.DEBUG_TRACE_LEVEL = log_level
@@ -107,9 +106,9 @@ def list_log_files(pydevd_debug_file):
@contextmanager
def log_context(trace_level, stream):
- '''
+ """
To be used to temporarily change the logging settings.
- '''
+ """
with _LoggingGlobals._initialize_lock:
original_trace_level = DebugInfoHolder.DEBUG_TRACE_LEVEL
original_debug_stream = _LoggingGlobals._debug_stream
@@ -132,6 +131,7 @@ def log_context(trace_level, stream):
import time
+
_last_log_time = time.time()
# Set to True to show pid in each logged message (usually the file has it, but sometimes it's handy).
@@ -139,14 +139,14 @@ def log_context(trace_level, stream):
def _pydevd_log(level, msg, *args):
- '''
+ """
Levels are:
0 most serious warnings/errors (always printed)
1 warnings/significant events
2 informational trace
3 verbose mode
- '''
+ """
if level <= DebugInfoHolder.DEBUG_TRACE_LEVEL:
# yes, we can have errors printing if the console of the program has been finished (and we're still trying to print something)
try:
@@ -154,19 +154,25 @@ def _pydevd_log(level, msg, *args):
if args:
msg = msg % args
except:
- msg = '%s - %s' % (msg, args)
+ msg = "%s - %s" % (msg, args)
if LOG_TIME:
global _last_log_time
new_log_time = time.time()
time_diff = new_log_time - _last_log_time
_last_log_time = new_log_time
- msg = '%.2fs - %s\n' % (time_diff, msg,)
+ msg = "%.2fs - %s\n" % (
+ time_diff,
+ msg,
+ )
else:
- msg = '%s\n' % (msg,)
+ msg = "%s\n" % (msg,)
if _LOG_PID:
- msg = '<%s> - %s\n' % (os.getpid(), msg,)
+ msg = "<%s> - %s\n" % (
+ os.getpid(),
+ msg,
+ )
try:
try:
@@ -175,14 +181,14 @@ def _pydevd_log(level, msg, *args):
except TypeError:
if isinstance(msg, bytes):
# Depending on the StringIO flavor, it may only accept unicode.
- msg = msg.decode('utf-8', 'replace')
+ msg = msg.decode("utf-8", "replace")
_LoggingGlobals._debug_stream.write(msg)
except UnicodeEncodeError:
# When writing to the stream it's possible that the string can't be represented
# in the encoding expected (in this case, convert it to the stream encoding
# or ascii if we can't find one suitable using a suitable replace).
- encoding = getattr(_LoggingGlobals._debug_stream, 'encoding', 'ascii')
- msg = msg.encode(encoding, 'backslashreplace')
+ encoding = getattr(_LoggingGlobals._debug_stream, "encoding", "ascii")
+ msg = msg.encode(encoding, "backslashreplace")
msg = msg.decode(encoding)
_LoggingGlobals._debug_stream.write(msg)
@@ -192,7 +198,7 @@ def _pydevd_log(level, msg, *args):
return True
-def _pydevd_log_exception(msg='', *args):
+def _pydevd_log_exception(msg="", *args):
if msg or args:
_pydevd_log(0, msg, *args)
try:
@@ -225,7 +231,7 @@ def critical(msg, *args):
_pydevd_log(0, msg, *args)
-def exception(msg='', *args):
+def exception(msg="", *args):
try:
_pydevd_log_exception(msg, *args)
except:
@@ -242,7 +248,7 @@ def error_once(msg, *args):
else:
message = str(msg)
except:
- message = '%s - %s' % (msg, args)
+ message = "%s - %s" % (msg, args)
if message not in _LoggingGlobals._warn_once_map:
_LoggingGlobals._warn_once_map[message] = True
@@ -256,7 +262,7 @@ def exception_once(msg, *args):
else:
message = str(msg)
except:
- message = '%s - %s' % (msg, args)
+ message = "%s - %s" % (msg, args)
if message not in _LoggingGlobals._warn_once_map:
_LoggingGlobals._warn_once_map[message] = True
@@ -271,6 +277,8 @@ def debug_once(msg, *args):
def show_compile_cython_command_line():
if SHOW_COMPILE_CYTHON_COMMAND_LINE:
dirname = os.path.dirname(os.path.dirname(__file__))
- error_once("warning: Debugger speedups using cython not found. Run '\"%s\" \"%s\" build_ext --inplace' to build.",
- sys.executable, os.path.join(dirname, 'setup_pydevd_cython.py'))
-
+ error_once(
+ 'warning: Debugger speedups using cython not found. Run \'"%s" "%s" build_ext --inplace\' to build.',
+ sys.executable,
+ os.path.join(dirname, "setup_pydevd_cython.py"),
+ )
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py
index d5fe01d2a..915891f41 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py
@@ -3,8 +3,16 @@
import re
import sys
from _pydev_bundle._pydev_saved_modules import threading
-from _pydevd_bundle.pydevd_constants import get_global_debugger, IS_WINDOWS, IS_JYTHON, get_current_thread_id, \
- sorted_dict_repr, set_global_debugger, DebugInfoHolder
+from _pydevd_bundle.pydevd_constants import (
+ get_global_debugger,
+ IS_WINDOWS,
+ IS_JYTHON,
+ get_current_thread_id,
+ sorted_dict_repr,
+ set_global_debugger,
+ DebugInfoHolder,
+ PYDEVD_USE_SYS_MONITORING,
+)
from _pydev_bundle import pydev_log
from contextlib import contextmanager
from _pydevd_bundle import pydevd_constants, pydevd_defaults
@@ -16,9 +24,9 @@
except ImportError:
Path = None
-#===============================================================================
+# ===============================================================================
# Things that are dependent on having the pydevd debugger
-#===============================================================================
+# ===============================================================================
pydev_src_dir = os.path.dirname(os.path.dirname(__file__))
@@ -35,7 +43,7 @@ def skip_subprocess_arg_patch():
def _get_apply_arg_patching():
- return getattr(_arg_patch, 'apply_arg_patching', True)
+ return getattr(_arg_patch, "apply_arg_patching", True)
def _get_setup_updated_with_protocol_and_ppid(setup, is_exec=False):
@@ -67,32 +75,31 @@ def _get_setup_updated_with_protocol_and_ppid(setup, is_exec=False):
setup[pydevd_constants.ARGUMENT_HTTP_PROTOCOL] = True
else:
- pydev_log.debug('Unexpected protocol: %s', protocol)
+ pydev_log.debug("Unexpected protocol: %s", protocol)
mode = pydevd_defaults.PydevdCustomization.DEBUG_MODE
if mode:
- setup['debug-mode'] = mode
+ setup["debug-mode"] = mode
preimport = pydevd_defaults.PydevdCustomization.PREIMPORT
if preimport:
- setup['preimport'] = preimport
+ setup["preimport"] = preimport
if DebugInfoHolder.PYDEVD_DEBUG_FILE:
- setup['log-file'] = DebugInfoHolder.PYDEVD_DEBUG_FILE
+ setup["log-file"] = DebugInfoHolder.PYDEVD_DEBUG_FILE
if DebugInfoHolder.DEBUG_TRACE_LEVEL:
- setup['log-level'] = DebugInfoHolder.DEBUG_TRACE_LEVEL
+ setup["log-level"] = DebugInfoHolder.DEBUG_TRACE_LEVEL
return setup
class _LastFutureImportFinder(ast.NodeVisitor):
-
def __init__(self):
self.last_future_import_found = None
def visit_ImportFrom(self, node):
- if node.module == '__future__':
+ if node.module == "__future__":
self.last_future_import_found = node
@@ -109,7 +116,7 @@ def _get_offset_from_line_col(code, line, col):
def _separate_future_imports(code):
- '''
+ """
:param code:
The code from where we want to get the __future__ imports (note that it's possible that
there's no such entry).
@@ -120,18 +127,18 @@ def _separate_future_imports(code):
If the future import is not available a return such as ('', code) is given, otherwise, the
future import will end with a ';' (so that it can be put right before the pydevd attach
code).
- '''
+ """
try:
- node = ast.parse(code, '', 'exec')
+ node = ast.parse(code, "", "exec")
visitor = _LastFutureImportFinder()
visitor.visit(node)
if visitor.last_future_import_found is None:
- return '', code
+ return "", code
node = visitor.last_future_import_found
offset = -1
- if hasattr(node, 'end_lineno') and hasattr(node, 'end_col_offset'):
+ if hasattr(node, "end_lineno") and hasattr(node, "end_col_offset"):
# Python 3.8 onwards has these (so, use when possible).
line, col = node.end_lineno, node.end_col_offset
offset = _get_offset_from_line_col(code, line - 1, col) # ast lines are 1-based, make it 0-based.
@@ -151,7 +158,7 @@ def _separate_future_imports(code):
if offset >= 0:
for i in range(offset, len(code)):
- if code[i] in (' ', '\t', ';', ')', '\n'):
+ if code[i] in (" ", "\t", ";", ")", "\n"):
offset += 1
else:
break
@@ -162,21 +169,21 @@ def _separate_future_imports(code):
# Now, put '\n' lines back into the code remainder (we had to search for
# `\n)`, but in case we just got the `\n`, it should be at the remainder,
# not at the future import.
- while future_import.endswith('\n'):
+ while future_import.endswith("\n"):
future_import = future_import[:-1]
- code_remainder = '\n' + code_remainder
+ code_remainder = "\n" + code_remainder
- if not future_import.endswith(';'):
- future_import += ';'
+ if not future_import.endswith(";"):
+ future_import += ";"
return future_import, code_remainder
# This shouldn't happen...
- pydev_log.info('Unable to find line %s in code:\n%r', line, code)
- return '', code
+ pydev_log.info("Unable to find line %s in code:\n%r", line, code)
+ return "", code
except:
- pydev_log.exception('Error getting from __future__ imports from: %r', code)
- return '', code
+ pydev_log.exception("Error getting from __future__ imports from: %r", code)
+ return "", code
def _get_python_c_args(host, port, code, args, setup):
@@ -185,36 +192,39 @@ def _get_python_c_args(host, port, code, args, setup):
# i.e.: We want to make the repr sorted so that it works in tests.
setup_repr = setup if setup is None else (sorted_dict_repr(setup))
- future_imports = ''
- if '__future__' in code:
+ future_imports = ""
+ if "__future__" in code:
# If the code has a __future__ import, we need to be able to strip the __future__
# imports from the code and add them to the start of our code snippet.
future_imports, code = _separate_future_imports(code)
- return ("%simport sys; sys.path.insert(0, r'%s'); import pydevd; pydevd.config(%r, %r); "
- "pydevd.settrace(host=%r, port=%s, suspend=False, trace_only_current_thread=False, patch_multiprocessing=True, access_token=%r, client_access_token=%r, __setup_holder__=%s); "
- "%s"
- ) % (
- future_imports,
- pydev_src_dir,
- pydevd_constants.get_protocol(),
- PydevdCustomization.DEBUG_MODE,
- host,
- port,
- setup.get('access-token'),
- setup.get('client-access-token'),
- setup_repr,
- code)
+ return (
+ "%simport sys; sys.path.insert(0, r'%s'); import pydevd; pydevd.config(%r, %r); "
+ "pydevd.settrace(host=%r, port=%s, suspend=False, trace_only_current_thread=False, patch_multiprocessing=True, access_token=%r, client_access_token=%r, __setup_holder__=%s); "
+ "%s"
+ ) % (
+ future_imports,
+ pydev_src_dir,
+ pydevd_constants.get_protocol(),
+ PydevdCustomization.DEBUG_MODE,
+ host,
+ port,
+ setup.get("access-token"),
+ setup.get("client-access-token"),
+ setup_repr,
+ code,
+ )
def _get_host_port():
import pydevd
+
host, port = pydevd.dispatch()
return host, port
def _is_managed_arg(arg):
- pydevd_py = _get_str_type_compatible(arg, 'pydevd.py')
+ pydevd_py = _get_str_type_compatible(arg, "pydevd.py")
if arg.endswith(pydevd_py):
return True
return False
@@ -225,22 +235,24 @@ def _on_forked_process(setup_tracing=True):
pydev_log.initialize_debug_stream(reinitialize=True)
if setup_tracing:
- pydev_log.debug('pydevd on forked process: %s', os.getpid())
+ pydev_log.debug("pydevd on forked process: %s", os.getpid())
import pydevd
+
pydevd.threadingCurrentThread().__pydevd_main_thread = True
pydevd.settrace_forked(setup_tracing=setup_tracing)
def _on_set_trace_for_new_thread(global_debugger):
if global_debugger is not None:
- global_debugger.enable_tracing()
+ if not PYDEVD_USE_SYS_MONITORING:
+ global_debugger.enable_tracing()
def _get_str_type_compatible(s, args):
- '''
+ """
This method converts `args` to byte/unicode based on the `s' type.
- '''
+ """
if isinstance(args, (list, tuple)):
ret = []
for arg in args:
@@ -248,30 +260,30 @@ def _get_str_type_compatible(s, args):
ret.append(arg)
else:
if isinstance(s, bytes):
- ret.append(arg.encode('utf-8'))
+ ret.append(arg.encode("utf-8"))
else:
- ret.append(arg.decode('utf-8'))
+ ret.append(arg.decode("utf-8"))
return ret
else:
if type(s) == type(args):
return args
else:
if isinstance(s, bytes):
- return args.encode('utf-8')
+ return args.encode("utf-8")
else:
- return args.decode('utf-8')
+ return args.decode("utf-8")
-#===============================================================================
+# ===============================================================================
# Things related to monkey-patching
-#===============================================================================
+# ===============================================================================
def is_python(path):
single_quote, double_quote = _get_str_type_compatible(path, ["'", '"'])
if path.endswith(single_quote) or path.endswith(double_quote):
- path = path[1:len(path) - 1]
+ path = path[1 : len(path) - 1]
filename = os.path.basename(path).lower()
- for name in _get_str_type_compatible(filename, ['python', 'jython', 'pypy']):
+ for name in _get_str_type_compatible(filename, ["python", "jython", "pypy"]):
if filename.find(name) != -1:
return True
@@ -342,8 +354,8 @@ def quote_arg_win32(arg):
#
# N backslashes in any other position remain as is.
- arg = re.sub(fix_type(r'(\\*)\"'), fix_type(r'\1\1\\"'), arg)
- arg = re.sub(fix_type(r'(\\*)$'), fix_type(r'\1\1'), arg)
+ arg = re.sub(fix_type(r"(\\*)\""), fix_type(r'\1\1\\"'), arg)
+ arg = re.sub(fix_type(r"(\\*)$"), fix_type(r"\1\1"), arg)
return fix_type('"') + arg + fix_type('"')
@@ -355,21 +367,21 @@ def quote_args(args):
def patch_args(args, is_exec=False):
- '''
+ """
:param list args:
Arguments to patch.
:param bool is_exec:
If it's an exec, the current process will be replaced (this means we have
to keep the same ppid).
- '''
+ """
try:
pydev_log.debug("Patching args: %s", args)
original_args = args
try:
unquoted_args = remove_quotes_from_args(args)
except InvalidTypeInArgsException as e:
- pydev_log.info('Unable to monkey-patch subprocess arguments because a type found in the args is invalid: %s', e)
+ pydev_log.info("Unable to monkey-patch subprocess arguments because a type found in the args is invalid: %s", e)
return original_args
# Internally we should reference original_args (if we want to return them) or unquoted_args
@@ -377,6 +389,7 @@ def patch_args(args, is_exec=False):
del args
from pydevd import SetupHolder
+
if not unquoted_args:
return original_args
@@ -386,11 +399,11 @@ def patch_args(args, is_exec=False):
# Note: we create a copy as string to help with analyzing the arguments, but
# the final list should have items from the unquoted_args as they were initially.
- args_as_str = _get_str_type_compatible('', unquoted_args)
+ args_as_str = _get_str_type_compatible("", unquoted_args)
params_with_value_in_separate_arg = (
- '--check-hash-based-pycs',
- '--jit' # pypy option
+ "--check-hash-based-pycs",
+ "--jit", # pypy option
)
# All short switches may be combined together. The ones below require a value and the
@@ -412,17 +425,17 @@ def patch_args(args, is_exec=False):
#
# python -O -Q old -v -c "import sys;print(sys)"
- params_with_combinable_arg = set(('W', 'X', 'Q', 'c', 'm'))
+ params_with_combinable_arg = set(("W", "X", "Q", "c", "m"))
module_name = None
- before_module_flag = ''
+ before_module_flag = ""
module_name_i_start = -1
module_name_i_end = -1
code = None
code_i = -1
code_i_end = -1
- code_flag = ''
+ code_flag = ""
filename = None
filename_i = -1
@@ -433,8 +446,8 @@ def patch_args(args, is_exec=False):
ignore_next = False
continue
- if arg_as_str.startswith('-'):
- if arg_as_str == '-':
+ if arg_as_str.startswith("-"):
+ if arg_as_str == "-":
# Contents will be read from the stdin. This is not currently handled.
pydev_log.debug('Unable to fix arguments to attach debugger on subprocess when reading from stdin ("python ... -").')
return original_args
@@ -446,40 +459,39 @@ def patch_args(args, is_exec=False):
break_out = False
for j, c in enumerate(arg_as_str):
-
# i.e.: Python supports -X faulthandler as well as -Xfaulthandler
# (in one case we have to ignore the next and in the other we don't
# have to ignore it).
if c in params_with_combinable_arg:
- remainder = arg_as_str[j + 1:]
+ remainder = arg_as_str[j + 1 :]
if not remainder:
ignore_next = True
- if c == 'm':
+ if c == "m":
# i.e.: Something as
# python -qm test
# python -m test
# python -qmtest
before_module_flag = arg_as_str[:j] # before_module_flag would then be "-q"
- if before_module_flag == '-':
- before_module_flag = ''
+ if before_module_flag == "-":
+ before_module_flag = ""
module_name_i_start = i
if not remainder:
module_name = unquoted_args[i + 1]
module_name_i_end = i + 1
else:
# i.e.: python -qmtest should provide 'test' as the module_name
- module_name = unquoted_args[i][j + 1:]
+ module_name = unquoted_args[i][j + 1 :]
module_name_i_end = module_name_i_start
break_out = True
break
- elif c == 'c':
+ elif c == "c":
# i.e.: Something as
# python -qc "import sys"
# python -c "import sys"
# python "-qcimport sys"
- code_flag = arg_as_str[:j + 1] # code_flag would then be "-qc"
+ code_flag = arg_as_str[: j + 1] # code_flag would then be "-qc"
if not remainder:
# arg_as_str is something as "-qc", "import sys"
@@ -513,13 +525,13 @@ def patch_args(args, is_exec=False):
filename_i = i
if _is_managed_arg(filename): # no need to add pydevd twice
- pydev_log.debug('Skipped monkey-patching as pydevd.py is in args already.')
+ pydev_log.debug("Skipped monkey-patching as pydevd.py is in args already.")
return original_args
break
else:
# We didn't find the filename (something is unexpected).
- pydev_log.debug('Unable to fix arguments to attach debugger on subprocess (filename not found).')
+ pydev_log.debug("Unable to fix arguments to attach debugger on subprocess (filename not found).")
return original_args
if code_i != -1:
@@ -536,13 +548,14 @@ def patch_args(args, is_exec=False):
first_non_vm_index = max(filename_i, module_name_i_start)
if first_non_vm_index == -1:
- pydev_log.debug('Unable to fix arguments to attach debugger on subprocess (could not resolve filename nor module name).')
+ pydev_log.debug("Unable to fix arguments to attach debugger on subprocess (could not resolve filename nor module name).")
return original_args
# Original args should be something as:
# ['X:\\pysrc\\pydevd.py', '--multiprocess', '--print-in-debugger-startup',
# '--vm_type', 'python', '--client', '127.0.0.1', '--port', '56352', '--file', 'x:\\snippet1.py']
from _pydevd_bundle.pydevd_command_line_handling import setup_to_argv
+
new_args = []
new_args.extend(unquoted_args[:first_non_vm_index])
if before_module_flag:
@@ -550,31 +563,32 @@ def patch_args(args, is_exec=False):
add_module_at = len(new_args) + 1
- new_args.extend(setup_to_argv(
- _get_setup_updated_with_protocol_and_ppid(SetupHolder.setup, is_exec=is_exec),
- skip_names=set(('module', 'cmd-line'))
- ))
- new_args.append('--file')
+ new_args.extend(
+ setup_to_argv(
+ _get_setup_updated_with_protocol_and_ppid(SetupHolder.setup, is_exec=is_exec), skip_names=set(("module", "cmd-line"))
+ )
+ )
+ new_args.append("--file")
if module_name is not None:
assert module_name_i_start != -1
assert module_name_i_end != -1
# Always after 'pydevd' (i.e.: pydevd "--module" --multiprocess ...)
- new_args.insert(add_module_at, '--module')
+ new_args.insert(add_module_at, "--module")
new_args.append(module_name)
- new_args.extend(unquoted_args[module_name_i_end + 1:])
+ new_args.extend(unquoted_args[module_name_i_end + 1 :])
elif filename is not None:
assert filename_i != -1
new_args.append(filename)
- new_args.extend(unquoted_args[filename_i + 1:])
+ new_args.extend(unquoted_args[filename_i + 1 :])
else:
- raise AssertionError('Internal error (unexpected condition)')
+ raise AssertionError("Internal error (unexpected condition)")
return quote_args(new_args)
except:
- pydev_log.exception('Error patching args (debugger not attached to subprocess).')
+ pydev_log.exception("Error patching args (debugger not attached to subprocess).")
return original_args
@@ -592,21 +606,21 @@ def str_to_args_windows(args):
state = DEFAULT
backslashes = 0
- buf = ''
+ buf = ""
args_len = len(args)
for i in range(args_len):
ch = args[i]
- if (ch == '\\'):
+ if ch == "\\":
backslashes += 1
continue
- elif (backslashes != 0):
+ elif backslashes != 0:
if ch == '"':
while backslashes >= 2:
backslashes -= 2
- buf += '\\'
- if (backslashes == 1):
- if (state == DEFAULT):
+ buf += "\\"
+ if backslashes == 1:
+ if state == DEFAULT:
state = ARG
buf += '"'
@@ -615,21 +629,21 @@ def str_to_args_windows(args):
# else fall through to switch
else:
# false alarm, treat passed backslashes literally...
- if (state == DEFAULT):
+ if state == DEFAULT:
state = ARG
while backslashes > 0:
backslashes -= 1
- buf += '\\'
+ buf += "\\"
# fall through to switch
- if ch in (' ', '\t'):
- if (state == DEFAULT):
+ if ch in (" ", "\t"):
+ if state == DEFAULT:
# skip
continue
- elif (state == ARG):
+ elif state == ARG:
state = DEFAULT
result.append(buf)
- buf = ''
+ buf = ""
continue
if state in (DEFAULT, ARG):
@@ -641,7 +655,7 @@ def str_to_args_windows(args):
elif state == IN_DOUBLE_QUOTE:
if ch == '"':
- if (i + 1 < args_len and args[i + 1] == '"'):
+ if i + 1 < args_len and args[i + 1] == '"':
# Undocumented feature in Windows:
# Two consecutive double quotes inside a double-quoted argument are interpreted as
# a single double quote.
@@ -653,7 +667,7 @@ def str_to_args_windows(args):
buf += ch
else:
- raise RuntimeError('Illegal condition')
+ raise RuntimeError("Illegal condition")
if len(buf) > 0 or state != DEFAULT:
result.append(buf)
@@ -666,14 +680,14 @@ def patch_arg_str_win(arg_str):
# Fix https://youtrack.jetbrains.com/issue/PY-9767 (args may be empty)
if not args or not is_python(args[0]):
return arg_str
- arg_str = ' '.join(patch_args(args))
+ arg_str = " ".join(patch_args(args))
pydev_log.debug("New args: %s", arg_str)
return arg_str
def monkey_patch_module(module, funcname, create_func):
if hasattr(module, funcname):
- original_name = 'original_' + funcname
+ original_name = "original_" + funcname
if not hasattr(module, original_name):
setattr(module, original_name, getattr(module, funcname))
setattr(module, funcname, create_func(original_name))
@@ -692,7 +706,6 @@ def warn_multiproc():
def create_warn_multiproc(original_name):
-
def new_warn_multiproc(*args, **kwargs):
import os
@@ -704,7 +717,6 @@ def new_warn_multiproc(*args, **kwargs):
def create_execl(original_name):
-
def new_execl(path, *args):
"""
os.execl(path, arg0, arg1, ...)
@@ -723,7 +735,6 @@ def new_execl(path, *args):
def create_execv(original_name):
-
def new_execv(path, args):
"""
os.execv(path, args)
@@ -757,7 +768,6 @@ def new_execve(path, args, env):
def create_spawnl(original_name):
-
def new_spawnl(mode, path, *args):
"""
os.spawnl(mode, path, arg0, arg1, ...)
@@ -773,7 +783,6 @@ def new_spawnl(mode, path, *args):
def create_spawnv(original_name):
-
def new_spawnv(mode, path, args):
"""
os.spawnv(mode, path, args)
@@ -826,6 +835,7 @@ def create_fork_exec(original_name):
def new_fork_exec(args, *other_args):
import _posixsubprocess # @UnresolvedImport
+
if _get_apply_arg_patching():
args = patch_args(args)
send_process_created_message()
@@ -843,6 +853,7 @@ def create_warn_fork_exec(original_name):
def new_warn_fork_exec(*args):
try:
import _posixsubprocess
+
warn_multiproc()
return getattr(_posixsubprocess, original_name)(*args)
except:
@@ -858,6 +869,7 @@ def create_subprocess_fork_exec(original_name):
def new_fork_exec(args, *other_args):
import subprocess
+
if _get_apply_arg_patching():
args = patch_args(args)
send_process_created_message()
@@ -875,6 +887,7 @@ def create_subprocess_warn_fork_exec(original_name):
def new_warn_fork_exec(*args):
try:
import subprocess
+
warn_multiproc()
return getattr(subprocess, original_name)(*args)
except:
@@ -920,7 +933,6 @@ def new_CreateProcess(*args):
def create_fork(original_name):
-
def new_fork():
# A simple fork will result in a new python process
is_new_python_process = True
@@ -930,12 +942,12 @@ def new_fork():
is_subprocess_fork = False
while frame is not None:
- if frame.f_code.co_name == '_execute_child' and 'subprocess' in frame.f_code.co_filename:
+ if frame.f_code.co_name == "_execute_child" and "subprocess" in frame.f_code.co_filename:
is_subprocess_fork = True
# If we're actually in subprocess.Popen creating a child, it may
# result in something which is not a Python process, (so, we
# don't want to connect with it in the forked version).
- executable = frame.f_locals.get('executable')
+ executable = frame.f_locals.get("executable")
if executable is not None:
is_new_python_process = False
if is_python(executable):
@@ -985,14 +997,14 @@ def patch_new_process_functions():
# os.execve(path, args, env)
# os.execvp(file, args)
# os.execvpe(file, args, env)
- monkey_patch_os('execl', create_execl)
- monkey_patch_os('execle', create_execl)
- monkey_patch_os('execlp', create_execl)
- monkey_patch_os('execlpe', create_execl)
- monkey_patch_os('execv', create_execv)
- monkey_patch_os('execve', create_execve)
- monkey_patch_os('execvp', create_execv)
- monkey_patch_os('execvpe', create_execve)
+ monkey_patch_os("execl", create_execl)
+ monkey_patch_os("execle", create_execl)
+ monkey_patch_os("execlp", create_execl)
+ monkey_patch_os("execlpe", create_execl)
+ monkey_patch_os("execv", create_execv)
+ monkey_patch_os("execve", create_execve)
+ monkey_patch_os("execvp", create_execv)
+ monkey_patch_os("execvpe", create_execve)
# os.spawnl(mode, path, ...)
# os.spawnle(mode, path, ..., env)
@@ -1003,28 +1015,30 @@ def patch_new_process_functions():
# os.spawnvp(mode, file, args)
# os.spawnvpe(mode, file, args, env)
- monkey_patch_os('spawnl', create_spawnl)
- monkey_patch_os('spawnle', create_spawnl)
- monkey_patch_os('spawnlp', create_spawnl)
- monkey_patch_os('spawnlpe', create_spawnl)
- monkey_patch_os('spawnv', create_spawnv)
- monkey_patch_os('spawnve', create_spawnve)
- monkey_patch_os('spawnvp', create_spawnv)
- monkey_patch_os('spawnvpe', create_spawnve)
- monkey_patch_os('posix_spawn', create_posix_spawn)
+ monkey_patch_os("spawnl", create_spawnl)
+ monkey_patch_os("spawnle", create_spawnl)
+ monkey_patch_os("spawnlp", create_spawnl)
+ monkey_patch_os("spawnlpe", create_spawnl)
+ monkey_patch_os("spawnv", create_spawnv)
+ monkey_patch_os("spawnve", create_spawnve)
+ monkey_patch_os("spawnvp", create_spawnv)
+ monkey_patch_os("spawnvpe", create_spawnve)
+ monkey_patch_os("posix_spawn", create_posix_spawn)
if not IS_JYTHON:
if not IS_WINDOWS:
- monkey_patch_os('fork', create_fork)
+ monkey_patch_os("fork", create_fork)
try:
import _posixsubprocess
- monkey_patch_module(_posixsubprocess, 'fork_exec', create_fork_exec)
+
+ monkey_patch_module(_posixsubprocess, "fork_exec", create_fork_exec)
except ImportError:
pass
try:
import subprocess
- monkey_patch_module(subprocess, '_fork_exec', create_subprocess_fork_exec)
+
+ monkey_patch_module(subprocess, "_fork_exec", create_subprocess_fork_exec)
except AttributeError:
pass
else:
@@ -1033,40 +1047,42 @@ def patch_new_process_functions():
import _subprocess
except ImportError:
import _winapi as _subprocess
- monkey_patch_module(_subprocess, 'CreateProcess', create_CreateProcess)
+ monkey_patch_module(_subprocess, "CreateProcess", create_CreateProcess)
def patch_new_process_functions_with_warning():
- monkey_patch_os('execl', create_warn_multiproc)
- monkey_patch_os('execle', create_warn_multiproc)
- monkey_patch_os('execlp', create_warn_multiproc)
- monkey_patch_os('execlpe', create_warn_multiproc)
- monkey_patch_os('execv', create_warn_multiproc)
- monkey_patch_os('execve', create_warn_multiproc)
- monkey_patch_os('execvp', create_warn_multiproc)
- monkey_patch_os('execvpe', create_warn_multiproc)
- monkey_patch_os('spawnl', create_warn_multiproc)
- monkey_patch_os('spawnle', create_warn_multiproc)
- monkey_patch_os('spawnlp', create_warn_multiproc)
- monkey_patch_os('spawnlpe', create_warn_multiproc)
- monkey_patch_os('spawnv', create_warn_multiproc)
- monkey_patch_os('spawnve', create_warn_multiproc)
- monkey_patch_os('spawnvp', create_warn_multiproc)
- monkey_patch_os('spawnvpe', create_warn_multiproc)
- monkey_patch_os('posix_spawn', create_warn_multiproc)
+ monkey_patch_os("execl", create_warn_multiproc)
+ monkey_patch_os("execle", create_warn_multiproc)
+ monkey_patch_os("execlp", create_warn_multiproc)
+ monkey_patch_os("execlpe", create_warn_multiproc)
+ monkey_patch_os("execv", create_warn_multiproc)
+ monkey_patch_os("execve", create_warn_multiproc)
+ monkey_patch_os("execvp", create_warn_multiproc)
+ monkey_patch_os("execvpe", create_warn_multiproc)
+ monkey_patch_os("spawnl", create_warn_multiproc)
+ monkey_patch_os("spawnle", create_warn_multiproc)
+ monkey_patch_os("spawnlp", create_warn_multiproc)
+ monkey_patch_os("spawnlpe", create_warn_multiproc)
+ monkey_patch_os("spawnv", create_warn_multiproc)
+ monkey_patch_os("spawnve", create_warn_multiproc)
+ monkey_patch_os("spawnvp", create_warn_multiproc)
+ monkey_patch_os("spawnvpe", create_warn_multiproc)
+ monkey_patch_os("posix_spawn", create_warn_multiproc)
if not IS_JYTHON:
if not IS_WINDOWS:
- monkey_patch_os('fork', create_warn_multiproc)
+ monkey_patch_os("fork", create_warn_multiproc)
try:
import _posixsubprocess
- monkey_patch_module(_posixsubprocess, 'fork_exec', create_warn_fork_exec)
+
+ monkey_patch_module(_posixsubprocess, "fork_exec", create_warn_fork_exec)
except ImportError:
pass
try:
import subprocess
- monkey_patch_module(subprocess, '_fork_exec', create_subprocess_warn_fork_exec)
+
+ monkey_patch_module(subprocess, "_fork_exec", create_subprocess_warn_fork_exec)
except AttributeError:
pass
@@ -1076,11 +1092,10 @@ def patch_new_process_functions_with_warning():
import _subprocess
except ImportError:
import _winapi as _subprocess
- monkey_patch_module(_subprocess, 'CreateProcess', create_CreateProcessWarnMultiproc)
+ monkey_patch_module(_subprocess, "CreateProcess", create_CreateProcessWarnMultiproc)
class _NewThreadStartupWithTrace:
-
def __init__(self, original_func, args, kwargs):
self.original_func = original_func
self.args = args
@@ -1097,20 +1112,21 @@ def __call__(self):
# the start_new_thread internal machinery and thread._bootstrap has not finished), so, the code below needs
# to make sure that we use the current thread bound to the original function and not use
# threading.current_thread() unless we're sure it's a dummy thread.
- t = getattr(self.original_func, '__self__', getattr(self.original_func, 'im_self', None))
+ t = getattr(self.original_func, "__self__", getattr(self.original_func, "im_self", None))
if not isinstance(t, threading.Thread):
# This is not a threading.Thread but a Dummy thread (so, get it as a dummy thread using
# currentThread).
t = threading.current_thread()
- if not getattr(t, 'is_pydev_daemon_thread', False):
+ if not getattr(t, "is_pydev_daemon_thread", False):
thread_id = get_current_thread_id(t)
py_db.notify_thread_created(thread_id, t)
_on_set_trace_for_new_thread(py_db)
- if getattr(py_db, 'thread_analyser', None) is not None:
+ if getattr(py_db, "thread_analyser", None) is not None:
try:
from _pydevd_bundle.pydevd_concurrency_analyser.pydevd_concurrency_logger import log_new_thread
+
log_new_thread(py_db, t)
except:
sys.stderr.write("Failed to detect new thread for visualization")
@@ -1128,7 +1144,6 @@ def __call__(self):
class _NewThreadStartupWithoutTrace:
-
def __init__(self, original_func, args, kwargs):
self.original_func = original_func
self.args = args
@@ -1158,10 +1173,9 @@ def _get_threading_modules_to_patch():
def patch_thread_module(thread_module):
-
- if getattr(thread_module, '_original_start_new_thread', None) is None:
+ if getattr(thread_module, "_original_start_new_thread", None) is None:
if thread_module is threading:
- if not hasattr(thread_module, '_start_new_thread'):
+ if not hasattr(thread_module, "_start_new_thread"):
return # Jython doesn't have it.
_original_start_new_thread = thread_module._original_start_new_thread = thread_module._start_new_thread
else:
@@ -1170,12 +1184,11 @@ def patch_thread_module(thread_module):
_original_start_new_thread = thread_module._original_start_new_thread
class ClassWithPydevStartNewThread:
-
def pydev_start_new_thread(self, function, args=(), kwargs={}):
- '''
+ """
We need to replace the original thread_module.start_new_thread with this function so that threads started
through it and not through the threading module are properly traced.
- '''
+ """
return _original_start_new_thread(_UseNewThreadStartup(function, args, kwargs), ())
# This is a hack for the situation where the thread_module.start_new_thread is declared inside a class, such as the one below
@@ -1224,17 +1237,17 @@ def undo_patch_thread_modules():
def disable_trace_thread_modules():
- '''
+ """
Can be used to temporarily stop tracing threads created with thread.start_new_thread.
- '''
+ """
global _UseNewThreadStartup
_UseNewThreadStartup = _NewThreadStartupWithoutTrace
def enable_trace_thread_modules():
- '''
+ """
Can be used to start tracing threads created with thread.start_new_thread again.
- '''
+ """
global _UseNewThreadStartup
_UseNewThreadStartup = _NewThreadStartupWithTrace
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py
index e348b842d..5864e3ca8 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py
@@ -7,6 +7,7 @@
def set_trace_in_qt():
from _pydevd_bundle.pydevd_comm import get_global_debugger
+
py_db = get_global_debugger()
if py_db is not None:
threading.current_thread() # Create the dummy thread for qt.
@@ -17,87 +18,94 @@ def set_trace_in_qt():
def patch_qt(qt_support_mode):
- '''
+ """
This method patches qt (PySide2, PySide, PyQt4, PyQt5) so that we have hooks to set the tracing for QThread.
- '''
+ """
if not qt_support_mode:
return
- if qt_support_mode is True or qt_support_mode == 'True':
+ if qt_support_mode is True or qt_support_mode == "True":
# do not break backward compatibility
- qt_support_mode = 'auto'
+ qt_support_mode = "auto"
- if qt_support_mode == 'auto':
- qt_support_mode = os.getenv('PYDEVD_PYQT_MODE', 'auto')
+ if qt_support_mode == "auto":
+ qt_support_mode = os.getenv("PYDEVD_PYQT_MODE", "auto")
# Avoid patching more than once
global _patched_qt
if _patched_qt:
return
- pydev_log.debug('Qt support mode: %s', qt_support_mode)
+ pydev_log.debug("Qt support mode: %s", qt_support_mode)
_patched_qt = True
- if qt_support_mode == 'auto':
-
+ if qt_support_mode == "auto":
patch_qt_on_import = None
try:
import PySide2 # @UnresolvedImport @UnusedImport
- qt_support_mode = 'pyside2'
+
+ qt_support_mode = "pyside2"
except:
try:
import Pyside # @UnresolvedImport @UnusedImport
- qt_support_mode = 'pyside'
+
+ qt_support_mode = "pyside"
except:
try:
import PyQt5 # @UnresolvedImport @UnusedImport
- qt_support_mode = 'pyqt5'
+
+ qt_support_mode = "pyqt5"
except:
try:
import PyQt4 # @UnresolvedImport @UnusedImport
- qt_support_mode = 'pyqt4'
+
+ qt_support_mode = "pyqt4"
except:
return
- if qt_support_mode == 'pyside2':
+ if qt_support_mode == "pyside2":
try:
import PySide2.QtCore # @UnresolvedImport
+
_internal_patch_qt(PySide2.QtCore, qt_support_mode)
except:
return
- elif qt_support_mode == 'pyside':
+ elif qt_support_mode == "pyside":
try:
import PySide.QtCore # @UnresolvedImport
+
_internal_patch_qt(PySide.QtCore, qt_support_mode)
except:
return
- elif qt_support_mode == 'pyqt5':
+ elif qt_support_mode == "pyqt5":
try:
import PyQt5.QtCore # @UnresolvedImport
+
_internal_patch_qt(PyQt5.QtCore)
except:
return
- elif qt_support_mode == 'pyqt4':
+ elif qt_support_mode == "pyqt4":
# Ok, we have an issue here:
# PyDev-452: Selecting PyQT API version using sip.setapi fails in debug mode
# http://pyqt.sourceforge.net/Docs/PyQt4/incompatible_apis.html
# Mostly, if the user uses a different API version (i.e.: v2 instead of v1),
# that has to be done before importing PyQt4 modules (PySide/PyQt5 don't have this issue
# as they only implements v2).
- patch_qt_on_import = 'PyQt4'
+ patch_qt_on_import = "PyQt4"
def get_qt_core_module():
import PyQt4.QtCore # @UnresolvedImport
+
return PyQt4.QtCore
_patch_import_to_patch_pyqt_on_import(patch_qt_on_import, get_qt_core_module)
else:
- raise ValueError('Unexpected qt support mode: %s' % (qt_support_mode,))
+ raise ValueError("Unexpected qt support mode: %s" % (qt_support_mode,))
def _patch_import_to_patch_pyqt_on_import(patch_qt_on_import, get_qt_core_module):
@@ -106,9 +114,9 @@ def _patch_import_to_patch_pyqt_on_import(patch_qt_on_import, get_qt_core_module
# So, our approach is to patch PyQt4 right before the user tries to import it (at which
# point he should've set the sip api version properly already anyways).
- pydev_log.debug('Setting up Qt post-import monkeypatch.')
+ pydev_log.debug("Setting up Qt post-import monkeypatch.")
- dotted = patch_qt_on_import + '.'
+ dotted = patch_qt_on_import + "."
original_import = __import__
from _pydev_bundle._pydev_sys_patch import patch_sys_module, patch_reload, cancel_patches_in_sys_module
@@ -128,15 +136,14 @@ def patched_import(name, *args, **kwargs):
builtins.__import__ = patched_import
-def _internal_patch_qt(QtCore, qt_support_mode='auto'):
- pydev_log.debug('Patching Qt: %s', QtCore)
+def _internal_patch_qt(QtCore, qt_support_mode="auto"):
+ pydev_log.debug("Patching Qt: %s", QtCore)
_original_thread_init = QtCore.QThread.__init__
_original_runnable_init = QtCore.QRunnable.__init__
_original_QThread = QtCore.QThread
class FuncWrapper:
-
def __init__(self, original):
self._original = original
@@ -145,7 +152,6 @@ def __call__(self, *args, **kwargs):
return self._original(*args, **kwargs)
class StartedSignalWrapper(QtCore.QObject): # Wrapper for the QThread.started signal
-
try:
_signal = QtCore.Signal() # @UndefinedVariable
except:
@@ -155,14 +161,14 @@ def __init__(self, thread, original_started):
QtCore.QObject.__init__(self)
self.thread = thread
self.original_started = original_started
- if qt_support_mode in ('pyside', 'pyside2'):
+ if qt_support_mode in ("pyside", "pyside2"):
self._signal = original_started
else:
self._signal.connect(self._on_call)
self.original_started.connect(self._signal)
def connect(self, func, *args, **kwargs):
- if qt_support_mode in ('pyside', 'pyside2'):
+ if qt_support_mode in ("pyside", "pyside2"):
return self._signal.connect(FuncWrapper(func), *args, **kwargs)
else:
return self._signal.connect(func, *args, **kwargs)
@@ -177,7 +183,6 @@ def _on_call(self, *args, **kwargs):
set_trace_in_qt()
class ThreadWrapper(QtCore.QThread): # Wrapper for QThread
-
def __init__(self, *args, **kwargs):
_original_thread_init(self, *args, **kwargs)
@@ -201,7 +206,6 @@ def _new_run(self):
return self._original_run()
class RunnableWrapper(QtCore.QRunnable): # Wrapper for QRunnable
-
def __init__(self, *args, **kwargs):
_original_runnable_init(self, *args, **kwargs)
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py
index d7581d207..ecf377e5e 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py
@@ -1,12 +1,13 @@
def overrides(method):
- '''
+ """
Meant to be used as
-
+
class B:
@overrides(A.m1)
def m1(self):
pass
- '''
+ """
+
def wrapper(func):
if func.__name__ != method.__name__:
msg = "Wrong @override: %r expected, but overwriting %r."
@@ -20,6 +21,7 @@ def wrapper(func):
return wrapper
+
def implements(method):
def wrapper(func):
if func.__name__ != method.__name__:
@@ -32,4 +34,4 @@ def wrapper(func):
return func
- return wrapper
\ No newline at end of file
+ return wrapper
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py
index 134ce4c5d..d83049132 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py
@@ -56,6 +56,7 @@ def __init__(self, namelist=None, pathlist=None):
try:
# ignore all files in org.python.pydev/pysrc
import pydev_pysrc, inspect
+
self.pathlist.append(os.path.dirname(pydev_pysrc.__file__))
except:
pass
@@ -66,7 +67,7 @@ def is_module_ignored(self, modname, modpath):
if modpath.startswith(path):
return True
else:
- return set(modname.split('.')) & set(self.namelist)
+ return set(modname.split(".")) & set(self.namelist)
def run(self, verbose=False):
"""
@@ -79,11 +80,11 @@ def run(self, verbose=False):
log = []
modules_copy = dict(sys.modules)
for modname, module in modules_copy.items():
- if modname == 'aaaaa':
+ if modname == "aaaaa":
print(modname, module)
print(self.previous_modules)
if modname not in self.previous_modules:
- modpath = getattr(module, '__file__', None)
+ modpath = getattr(module, "__file__", None)
if modpath is None:
# *module* is a C module that is statically linked into the
# interpreter. There is no way to know its path, so we
@@ -93,8 +94,7 @@ def run(self, verbose=False):
log.append(modname)
del sys.modules[modname]
if verbose and log:
- print("\x1b[4;33m%s\x1b[24m%s\x1b[0m" % ("UMD has deleted",
- ": " + ", ".join(log)))
+ print("\x1b[4;33m%s\x1b[24m%s\x1b[0m" % ("UMD has deleted", ": " + ", ".join(log)))
__umd__ = None
@@ -118,11 +118,12 @@ def _get_globals():
try:
# The import fails on IronPython
import __main__
+
namespace = __main__.__dict__
except:
namespace
- shell = namespace.get('__ipythonshell__')
- if shell is not None and hasattr(shell, 'user_ns'):
+ shell = namespace.get("__ipythonshell__")
+ if shell is not None and hasattr(shell, "user_ns"):
# IPython 0.12+ kernel
return shell.user_ns
else:
@@ -138,8 +139,8 @@ def runfile(filename, args=None, wdir=None, namespace=None):
wdir: working directory
"""
try:
- if hasattr(filename, 'decode'):
- filename = filename.decode('utf-8')
+ if hasattr(filename, "decode"):
+ filename = filename.decode("utf-8")
except (UnicodeError, TypeError):
pass
global __umd__
@@ -147,7 +148,7 @@ def runfile(filename, args=None, wdir=None, namespace=None):
if __umd__ is None:
namelist = os.environ.get("PYDEV_UMD_NAMELIST", None)
if namelist is not None:
- namelist = namelist.split(',')
+ namelist = namelist.split(",")
__umd__ = UserModuleDeleter(namelist=namelist)
else:
verbose = os.environ.get("PYDEV_UMD_VERBOSE", "").lower() == "true"
@@ -156,25 +157,25 @@ def runfile(filename, args=None, wdir=None, namespace=None):
raise TypeError("expected a character buffer object")
if namespace is None:
namespace = _get_globals()
- if '__file__' in namespace:
- old_file = namespace['__file__']
+ if "__file__" in namespace:
+ old_file = namespace["__file__"]
else:
old_file = None
- namespace['__file__'] = filename
+ namespace["__file__"] = filename
sys.argv = [filename]
if args is not None:
for arg in args.split():
sys.argv.append(arg)
if wdir is not None:
try:
- if hasattr(wdir, 'decode'):
- wdir = wdir.decode('utf-8')
+ if hasattr(wdir, "decode"):
+ wdir = wdir.decode("utf-8")
except (UnicodeError, TypeError):
pass
os.chdir(wdir)
execfile(filename, namespace)
- sys.argv = ['']
+ sys.argv = [""]
if old_file is None:
- del namespace['__file__']
+ del namespace["__file__"]
else:
- namespace['__file__'] = old_file
+ namespace["__file__"] = old_file
diff --git a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py
index 70bf765f4..fb7372d6f 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py
@@ -1,7 +1,8 @@
import sys
+
def versionok_for_gui():
- ''' Return True if running Python is suitable for GUI Event Integration and deeper IPython integration '''
+ """Return True if running Python is suitable for GUI Event Integration and deeper IPython integration"""
# We require Python 2.6+ ...
if sys.hexversion < 0x02060000:
return False
@@ -9,8 +10,7 @@ def versionok_for_gui():
if sys.hexversion >= 0x03000000 and sys.hexversion < 0x03020000:
return False
# Not supported under Jython nor IronPython
- if sys.platform.startswith("java") or sys.platform.startswith('cli'):
+ if sys.platform.startswith("java") or sys.platform.startswith("cli"):
return False
return True
-
diff --git a/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py b/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py
index 9c199e175..5d49d180b 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py
@@ -6,23 +6,23 @@
from _pydevd_bundle.pydevd_constants import * # @UnusedWildImport
import re
import time
+import json
-#=======================================================================================================================
+# =======================================================================================================================
# Configuration
-#=======================================================================================================================
+# =======================================================================================================================
class Configuration:
-
def __init__(
self,
- files_or_dirs='',
+ files_or_dirs="",
verbosity=2,
include_tests=None,
tests=None,
port=None,
files_to_tests=None,
jobs=1,
- split_jobs='tests',
+ split_jobs="tests",
coverage_output_dir=None,
coverage_include=None,
coverage_output_file=None,
@@ -30,7 +30,7 @@ def __init__(
exclude_tests=None,
include_files=None,
django=False,
- ):
+ ):
self.files_or_dirs = files_or_dirs
self.verbosity = verbosity
self.include_tests = include_tests
@@ -59,7 +59,7 @@ def __init__(
self.coverage_output_file = coverage_output_file
def __str__(self):
- return '''Configuration
+ return """Configuration
- files_or_dirs: %s
- verbosity: %s
- tests: %s
@@ -79,32 +79,28 @@ def __str__(self):
- coverage_output_file: %s
- django: %s
-''' % (
- self.files_or_dirs,
- self.verbosity,
- self.tests,
- self.port,
- self.files_to_tests,
- self.jobs,
- self.split_jobs,
-
- self.include_files,
- self.include_tests,
-
- self.exclude_files,
- self.exclude_tests,
-
- self.coverage_output_dir,
- self.coverage_include,
- self.coverage_output_file,
-
- self.django,
- )
-
-
-#=======================================================================================================================
+""" % (
+ self.files_or_dirs,
+ self.verbosity,
+ self.tests,
+ self.port,
+ self.files_to_tests,
+ self.jobs,
+ self.split_jobs,
+ self.include_files,
+ self.include_tests,
+ self.exclude_files,
+ self.exclude_tests,
+ self.coverage_output_dir,
+ self.coverage_include,
+ self.coverage_output_file,
+ self.django,
+ )
+
+
+# =======================================================================================================================
# parse_cmdline
-#=======================================================================================================================
+# =======================================================================================================================
def parse_cmdline(argv=None):
"""
Parses command line and returns test directories, verbosity, test filter and test suites
@@ -132,7 +128,7 @@ def parse_cmdline(argv=None):
tests = None
port = None
jobs = 1
- split_jobs = 'tests'
+ split_jobs = "tests"
files_to_tests = {}
coverage_output_dir = None
coverage_include = None
@@ -142,29 +138,25 @@ def parse_cmdline(argv=None):
django = False
from _pydev_bundle._pydev_getopt import gnu_getopt
+
optlist, dirs = gnu_getopt(
- argv[1:], "",
+ argv[1:],
+ "",
[
"verbosity=",
"tests=",
-
"port=",
"config_file=",
-
"jobs=",
"split_jobs=",
-
"include_tests=",
"include_files=",
-
"exclude_files=",
"exclude_tests=",
-
"coverage_output_dir=",
"coverage_include=",
-
- "django="
- ]
+ "django=",
+ ],
)
for opt, value in optlist:
@@ -179,37 +171,43 @@ def parse_cmdline(argv=None):
elif opt in ("-s", "--split_jobs"):
split_jobs = value
- if split_jobs not in ('module', 'tests'):
+ if split_jobs not in ("module", "tests"):
raise AssertionError('Expected split to be either "module" or "tests". Was :%s' % (split_jobs,))
- elif opt in ("-d", "--coverage_output_dir",):
+ elif opt in (
+ "-d",
+ "--coverage_output_dir",
+ ):
coverage_output_dir = value.strip()
- elif opt in ("-i", "--coverage_include",):
+ elif opt in (
+ "-i",
+ "--coverage_include",
+ ):
coverage_include = value.strip()
elif opt in ("-I", "--include_tests"):
- include_tests = value.split(',')
+ include_tests = value.split(",")
elif opt in ("-E", "--exclude_files"):
- exclude_files = value.split(',')
+ exclude_files = value.split(",")
elif opt in ("-F", "--include_files"):
- include_files = value.split(',')
+ include_files = value.split(",")
elif opt in ("-e", "--exclude_tests"):
- exclude_tests = value.split(',')
+ exclude_tests = value.split(",")
elif opt in ("-t", "--tests"):
- tests = value.split(',')
+ tests = value.split(",")
elif opt in ("--django",):
- django = value.strip() in ['true', 'True', '1']
+ django = value.strip() in ["true", "True", "1"]
elif opt in ("-c", "--config_file"):
config_file = value.strip()
if os.path.exists(config_file):
- f = open(config_file, 'r')
+ f = open(config_file, "r")
try:
config_file_contents = f.read()
finally:
@@ -220,7 +218,7 @@ def parse_cmdline(argv=None):
if config_file_contents:
for line in config_file_contents.splitlines():
- file_and_test = line.split('|')
+ file_and_test = line.split("|")
if len(file_and_test) == 2:
file, test = file_and_test
if file in files_to_tests:
@@ -229,16 +227,29 @@ def parse_cmdline(argv=None):
files_to_tests[file] = [test]
else:
- sys.stderr.write('Could not find config file: %s\n' % (config_file,))
+ sys.stderr.write("Could not find config file: %s\n" % (config_file,))
+
+ filter_tests_env_var = os.environ.get("PYDEV_RUNFILES_FILTER_TESTS", None)
+ if filter_tests_env_var:
+ loaded = json.loads(filter_tests_env_var)
+ include = loaded["include"]
+ for path, name in include:
+ existing = files_to_tests.get(path)
+ if not existing:
+ existing = files_to_tests[path] = []
+ existing.append(name)
+ # Note: at this point exclude or `*` is not handled.
+ # Clients need to do all the filtering on their side (could
+ # change to have `exclude` and support `*` entries).
if type([]) != type(dirs):
dirs = [dirs]
ret_dirs = []
for d in dirs:
- if '|' in d:
+ if "|" in d:
# paths may come from the ide separated by |
- ret_dirs.extend(d.split('|'))
+ ret_dirs.extend(d.split("|"))
else:
ret_dirs.append(d)
@@ -246,7 +257,7 @@ def parse_cmdline(argv=None):
if tests:
if verbosity > 4:
- sys.stdout.write('--tests provided. Ignoring --exclude_files, --exclude_tests and --include_files\n')
+ sys.stdout.write("--tests provided. Ignoring --exclude_files, --exclude_tests and --include_files\n")
exclude_files = exclude_tests = include_files = None
config = Configuration(
@@ -267,34 +278,30 @@ def parse_cmdline(argv=None):
)
if verbosity > 5:
- sys.stdout.write(str(config) + '\n')
+ sys.stdout.write(str(config) + "\n")
return config
-#=======================================================================================================================
+# =======================================================================================================================
# PydevTestRunner
-#=======================================================================================================================
+# =======================================================================================================================
class PydevTestRunner(object):
- """ finds and runs a file or directory of files as a unit test """
+ """finds and runs a file or directory of files as a unit test"""
__py_extensions = ["*.py", "*.pyw"]
__exclude_files = ["__init__.*"]
# Just to check that only this attributes will be written to this file
__slots__ = [
- 'verbosity', # Always used
-
- 'files_to_tests', # If this one is given, the ones below are not used
-
- 'files_or_dirs', # Files or directories received in the command line
- 'include_tests', # The filter used to collect the tests
- 'tests', # Strings with the tests to be run
-
- 'jobs', # Integer with the number of jobs that should be used to run the test cases
- 'split_jobs', # String with 'tests' or 'module' (how should the jobs be split)
-
- 'configuration',
- 'coverage',
+ "verbosity", # Always used
+ "files_to_tests", # If this one is given, the ones below are not used
+ "files_or_dirs", # Files or directories received in the command line
+ "include_tests", # The filter used to collect the tests
+ "tests", # Strings with the tests to be run
+ "jobs", # Integer with the number of jobs that should be used to run the test cases
+ "split_jobs", # String with 'tests' or 'module' (how should the jobs be split)
+ "configuration",
+ "coverage",
]
def __init__(self, configuration):
@@ -317,7 +324,7 @@ def __init__(self, configuration):
self.__adjust_path()
def __adjust_path(self):
- """ add the current file or directory to the python path """
+ """add the current file or directory to the python path"""
path_to_append = None
for n in range(len(self.files_or_dirs)):
dir_name = self.__unixify(self.files_or_dirs[n])
@@ -329,10 +336,10 @@ def __adjust_path(self):
path_to_append = os.path.dirname(dir_name)
else:
if not os.path.exists(dir_name):
- block_line = '*' * 120
- sys.stderr.write('\n%s\n* PyDev test runner error: %s does not exist.\n%s\n' % (block_line, dir_name, block_line))
+ block_line = "*" * 120
+ sys.stderr.write("\n%s\n* PyDev test runner error: %s does not exist.\n%s\n" % (block_line, dir_name, block_line))
return
- msg = ("unknown type. \n%s\nshould be file or a directory.\n" % (dir_name))
+ msg = "unknown type. \n%s\nshould be file or a directory.\n" % (dir_name)
raise RuntimeError(msg)
if path_to_append is not None:
# Add it as the last one (so, first things are resolved against the default dirs and
@@ -340,8 +347,8 @@ def __adjust_path(self):
sys.path.append(path_to_append)
def __is_valid_py_file(self, fname):
- """ tests that a particular file contains the proper file extension
- and is not in the list of files to exclude """
+ """tests that a particular file contains the proper file extension
+ and is not in the list of files to exclude"""
is_valid_fname = 0
for invalid_fname in self.__class__.__exclude_files:
is_valid_fname += int(not fnmatch.fnmatch(fname, invalid_fname))
@@ -351,16 +358,16 @@ def __is_valid_py_file(self, fname):
return is_valid_fname > 0 and if_valid_ext > 0
def __unixify(self, s):
- """ stupid windows. converts the backslash to forwardslash for consistency """
+ """stupid windows. converts the backslash to forwardslash for consistency"""
return os.path.normpath(s).replace(os.sep, "/")
def __importify(self, s, dir=False):
- """ turns directory separators into dots and removes the ".py*" extension
- so the string can be used as import statement """
+ """turns directory separators into dots and removes the ".py*" extension
+ so the string can be used as import statement"""
if not dir:
dirname, fname = os.path.split(s)
- if fname.count('.') > 1:
+ if fname.count(".") > 1:
# if there's a file named xxx.xx.py, it is not a valid module, so, let's not load it...
return
@@ -375,14 +382,14 @@ def __importify(self, s, dir=False):
return s.replace("\\", "/").replace("/", ".")
def __add_files(self, pyfiles, root, files):
- """ if files match, appends them to pyfiles. used by os.path.walk fcn """
+ """if files match, appends them to pyfiles. used by os.path.walk fcn"""
for fname in files:
if self.__is_valid_py_file(fname):
name_without_base_dir = self.__unixify(os.path.join(root, fname))
pyfiles.append(name_without_base_dir)
def find_import_files(self):
- """ return a list of files to import """
+ """return a list of files to import"""
if self.files_to_tests:
pyfiles = self.files_to_tests.keys()
else:
@@ -395,8 +402,8 @@ def find_import_files(self):
# they don't have __init__.py
exclude = {}
for d in dirs:
- for init in ['__init__.py', '__init__.pyo', '__init__.pyc', '__init__.pyw', '__init__$py.class']:
- if os.path.exists(os.path.join(root, d, init).replace('\\', '/')):
+ for init in ["__init__.py", "__init__.pyo", "__init__.pyc", "__init__.pyw", "__init__$py.class"]:
+ if os.path.exists(os.path.join(root, d, init).replace("\\", "/")):
break
else:
exclude[d] = 1
@@ -429,23 +436,25 @@ def find_import_files(self):
if not add:
if self.verbosity > 3:
- sys.stdout.write('Skipped file: %s (did not match any include_files pattern: %s)\n' % (f, self.configuration.include_files))
+ sys.stdout.write(
+ "Skipped file: %s (did not match any include_files pattern: %s)\n" % (f, self.configuration.include_files)
+ )
elif self.configuration.exclude_files:
for pat in self.configuration.exclude_files:
if fnmatch.fnmatchcase(basename, pat):
if self.verbosity > 3:
- sys.stdout.write('Skipped file: %s (matched exclude_files pattern: %s)\n' % (f, pat))
+ sys.stdout.write("Skipped file: %s (matched exclude_files pattern: %s)\n" % (f, pat))
elif self.verbosity > 2:
- sys.stdout.write('Skipped file: %s\n' % (f,))
+ sys.stdout.write("Skipped file: %s\n" % (f,))
add = False
break
if add:
if self.verbosity > 3:
- sys.stdout.write('Adding file: %s for test discovery.\n' % (f,))
+ sys.stdout.write("Adding file: %s for test discovery.\n" % (f,))
ret.append(f)
pyfiles = ret
@@ -453,29 +462,31 @@ def find_import_files(self):
return pyfiles
def __get_module_from_str(self, modname, print_exception, pyfile):
- """ Import the module in the given import path.
- * Returns the "final" module, so importing "coilib40.subject.visu"
- returns the "visu" module, not the "coilib40" as returned by __import__ """
+ """Import the module in the given import path.
+ * Returns the "final" module, so importing "coilib40.subject.visu"
+ returns the "visu" module, not the "coilib40" as returned by __import__"""
try:
mod = __import__(modname)
- for part in modname.split('.')[1:]:
+ for part in modname.split(".")[1:]:
mod = getattr(mod, part)
return mod
except:
if print_exception:
from _pydev_runfiles import pydev_runfiles_xml_rpc
from _pydevd_bundle import pydevd_io
- buf_err = pydevd_io.start_redirect(keep_original_redirection=True, std='stderr')
- buf_out = pydevd_io.start_redirect(keep_original_redirection=True, std='stdout')
+
+ buf_err = pydevd_io.start_redirect(keep_original_redirection=True, std="stderr")
+ buf_out = pydevd_io.start_redirect(keep_original_redirection=True, std="stdout")
try:
- import traceback;traceback.print_exc()
- sys.stderr.write('ERROR: Module: %s could not be imported (file: %s).\n' % (modname, pyfile))
+ import traceback
+
+ traceback.print_exc()
+ sys.stderr.write("ERROR: Module: %s could not be imported (file: %s).\n" % (modname, pyfile))
finally:
- pydevd_io.end_redirect('stderr')
- pydevd_io.end_redirect('stdout')
+ pydevd_io.end_redirect("stderr")
+ pydevd_io.end_redirect("stdout")
- pydev_runfiles_xml_rpc.notifyTest(
- 'error', buf_out.getvalue(), buf_err.getvalue(), pyfile, modname, 0)
+ pydev_runfiles_xml_rpc.notifyTest("error", buf_out.getvalue(), buf_err.getvalue(), pyfile, modname, 0)
return None
@@ -485,7 +496,7 @@ def remove_duplicates_keeping_order(self, seq):
return [x for x in seq if not (x in seen or seen_add(x))]
def find_modules_from_files(self, pyfiles):
- """ returns a list of modules given a list of files """
+ """returns a list of modules given a list of files"""
# let's make sure that the paths we want are in the pythonpath...
imports = [(s, self.__importify(s)) for s in pyfiles]
@@ -503,13 +514,13 @@ def find_modules_from_files(self, pyfiles):
choices = []
for s in system_paths:
if imp.startswith(s):
- add = imp[len(s) + 1:]
+ add = imp[len(s) + 1 :]
if add:
choices.append(add)
# sys.stdout.write(' ' + add + ' ')
if not choices:
- sys.stdout.write('PYTHONPATH not found for file: %s\n' % imp)
+ sys.stdout.write("PYTHONPATH not found for file: %s\n" % imp)
else:
for i, import_str in enumerate(choices):
print_exception = i == len(choices) - 1
@@ -520,9 +531,9 @@ def find_modules_from_files(self, pyfiles):
return ret
- #===================================================================================================================
+ # ===================================================================================================================
# GetTestCaseNames
- #===================================================================================================================
+ # ===================================================================================================================
class GetTestCaseNames:
"""Yes, we need a class for that (cannot use outer context on jython 2.1)"""
@@ -538,14 +549,14 @@ def __call__(self, testCaseClass):
if className in self.accepted_classes:
for attrname in dir(testCaseClass):
# If a class is chosen, we select all the 'test' methods'
- if attrname.startswith('test') and hasattr(getattr(testCaseClass, attrname), '__call__'):
+ if attrname.startswith("test") and hasattr(getattr(testCaseClass, attrname), "__call__"):
testFnNames.append(attrname)
else:
for attrname in dir(testCaseClass):
# If we have the class+method name, we must do a full check and have an exact match.
- if className + '.' + attrname in self.accepted_methods:
- if hasattr(getattr(testCaseClass, attrname), '__call__'):
+ if className + "." + attrname in self.accepted_methods:
+ if hasattr(getattr(testCaseClass, attrname), "__call__"):
testFnNames.append(attrname)
# sorted() is not available in jython 2.1
@@ -554,6 +565,7 @@ def __call__(self, testCaseClass):
def _decorate_test_suite(self, suite, pyfile, module_name):
import unittest
+
if isinstance(suite, unittest.TestSuite):
add = False
suite.__pydev_pyfile__ = pyfile
@@ -574,10 +586,11 @@ def _decorate_test_suite(self, suite, pyfile, module_name):
return False
def find_tests_from_modules(self, file_and_modules_and_module_name):
- """ returns the unittests given a list of modules """
+ """returns the unittests given a list of modules"""
# Use our own suite!
from _pydev_runfiles import pydev_runfiles_unittest
import unittest
+
unittest.TestLoader.suiteClass = pydev_runfiles_unittest.PydevTestSuite
loader = unittest.TestLoader()
@@ -602,7 +615,7 @@ def find_tests_from_modules(self, file_and_modules_and_module_name):
accepted_methods = {}
for t in self.tests:
- splitted = t.split('.')
+ splitted = t.split(".")
if len(splitted) == 1:
accepted_classes[t] = t
@@ -619,9 +632,10 @@ def find_tests_from_modules(self, file_and_modules_and_module_name):
return ret
def filter_tests(self, test_objs, internal_call=False):
- """ based on a filter name, only return those tests that have
- the test case names that match """
+ """based on a filter name, only return those tests that have
+ the test case names that match"""
import unittest
+
if not internal_call:
if not self.configuration.include_tests and not self.tests and not self.configuration.exclude_tests:
# No need to filter if we have nothing to filter!
@@ -629,17 +643,16 @@ def filter_tests(self, test_objs, internal_call=False):
if self.verbosity > 1:
if self.configuration.include_tests:
- sys.stdout.write('Tests to include: %s\n' % (self.configuration.include_tests,))
+ sys.stdout.write("Tests to include: %s\n" % (self.configuration.include_tests,))
if self.tests:
- sys.stdout.write('Tests to run: %s\n' % (self.tests,))
+ sys.stdout.write("Tests to run: %s\n" % (self.tests,))
if self.configuration.exclude_tests:
- sys.stdout.write('Tests to exclude: %s\n' % (self.configuration.exclude_tests,))
+ sys.stdout.write("Tests to exclude: %s\n" % (self.configuration.exclude_tests,))
test_suite = []
for test_obj in test_objs:
-
if isinstance(test_obj, unittest.TestSuite):
# Note: keep the suites as they are and just 'fix' the tests (so, don't use the iter_tests).
if test_obj._tests:
@@ -659,10 +672,10 @@ def filter_tests(self, test_objs, internal_call=False):
for pat in self.configuration.exclude_tests:
if fnmatch.fnmatchcase(testMethodName, pat):
if self.verbosity > 3:
- sys.stdout.write('Skipped test: %s (matched exclude_tests pattern: %s)\n' % (testMethodName, pat))
+ sys.stdout.write("Skipped test: %s (matched exclude_tests pattern: %s)\n" % (testMethodName, pat))
elif self.verbosity > 2:
- sys.stdout.write('Skipped test: %s\n' % (testMethodName,))
+ sys.stdout.write("Skipped test: %s\n" % (testMethodName,))
add = False
break
@@ -680,13 +693,19 @@ def filter_tests(self, test_objs, internal_call=False):
test_suite.append(test_obj)
else:
if self.verbosity > 3:
- sys.stdout.write('Skipped test: %s (did not match any include_tests pattern %s)\n' % (
- testMethodName, self.configuration.include_tests,))
+ sys.stdout.write(
+ "Skipped test: %s (did not match any include_tests pattern %s)\n"
+ % (
+ testMethodName,
+ self.configuration.include_tests,
+ )
+ )
return test_suite
def iter_tests(self, test_objs):
# Note: not using yield because of Jython 2.1.
import unittest
+
tests = []
for test_obj in test_objs:
if isinstance(test_obj, unittest.TestSuite):
@@ -712,7 +731,7 @@ def __match_tests(self, tests, test_case, test_method_name):
return 1
for t in tests:
- class_and_method = t.split('.')
+ class_and_method = t.split(".")
if len(class_and_method) == 1:
# only class name
if class_and_method[0] == test_case.__class__.__name__:
@@ -725,7 +744,7 @@ def __match_tests(self, tests, test_case, test_method_name):
return 0
def __match(self, filter_list, name):
- """ returns whether a test name matches the test filter """
+ """returns whether a test name matches the test filter"""
if filter_list is None:
return 1
for f in filter_list:
@@ -734,15 +753,21 @@ def __match(self, filter_list, name):
return 0
def run_tests(self, handle_coverage=True):
- """ runs all tests """
+ """runs all tests"""
sys.stdout.write("Finding files... ")
files = self.find_import_files()
if self.verbosity > 3:
- sys.stdout.write('%s ... done.\n' % (self.files_or_dirs))
+ sys.stdout.write("%s ... done.\n" % (self.files_or_dirs))
else:
- sys.stdout.write('done.\n')
+ sys.stdout.write("done.\n")
sys.stdout.write("Importing test modules ... ")
+ if self.configuration.django:
+ import django
+
+ if hasattr(django, "setup"):
+ django.setup()
+
if handle_coverage:
coverage_files, coverage = start_coverage_support(self.configuration)
@@ -753,8 +778,10 @@ def run_tests(self, handle_coverage=True):
all_tests = self.filter_tests(all_tests)
from _pydev_runfiles import pydev_runfiles_unittest
+
test_suite = pydev_runfiles_unittest.PydevTestSuite(all_tests)
from _pydev_runfiles import pydev_runfiles_xml_rpc
+
pydev_runfiles_xml_rpc.notifyTestsCollected(test_suite.countTestCases())
start_time = time.time()
@@ -768,12 +795,13 @@ def run_tests():
# (e.g.: 2 jobs were requested for running 1 test) -- in which case execute_tests_in_parallel will
# return False and won't run any tests.
executed_in_parallel = pydev_runfiles_parallel.execute_tests_in_parallel(
- all_tests, self.jobs, self.split_jobs, self.verbosity, coverage_files, self.configuration.coverage_include)
+ all_tests, self.jobs, self.split_jobs, self.verbosity, coverage_files, self.configuration.coverage_include
+ )
if not executed_in_parallel:
# If in coverage, we don't need to pass anything here (coverage is already enabled for this execution).
runner = pydev_runfiles_unittest.PydevTextTestRunner(stream=sys.stdout, descriptions=1, verbosity=self.verbosity)
- sys.stdout.write('\n')
+ sys.stdout.write("\n")
runner.run(test_suite)
if self.configuration.django:
@@ -785,7 +813,7 @@ def run_tests():
coverage.stop()
coverage.save()
- total_time = 'Finished in: %.2f secs.' % (time.time() - start_time,)
+ total_time = "Finished in: %.2f secs." % (time.time() - start_time,)
pydev_runfiles_xml_rpc.notifyTestRunFinished(total_time)
@@ -802,7 +830,6 @@ def get_django_test_suite_runner():
from django.test.runner import DiscoverRunner
class MyDjangoTestSuiteRunner(DiscoverRunner):
-
def __init__(self, on_run_suite):
django.setup()
DiscoverRunner.__init__(self)
@@ -824,15 +851,15 @@ def run_suite(self, *args, **kwargs):
except:
class DjangoTestSuiteRunner:
-
def __init__(self):
pass
def run_tests(self, *args, **kwargs):
- raise AssertionError("Unable to run suite with django.test.runner.DiscoverRunner nor django.test.simple.DjangoTestSuiteRunner because it couldn't be imported.")
+ raise AssertionError(
+ "Unable to run suite with django.test.runner.DiscoverRunner nor django.test.simple.DjangoTestSuiteRunner because it couldn't be imported."
+ )
class MyDjangoTestSuiteRunner(DjangoTestSuiteRunner):
-
def __init__(self, on_run_suite):
DjangoTestSuiteRunner.__init__(self)
self.on_run_suite = on_run_suite
@@ -850,8 +877,8 @@ def run_suite(self, *args, **kwargs):
return DJANGO_TEST_SUITE_RUNNER
-#=======================================================================================================================
+# =======================================================================================================================
# main
-#=======================================================================================================================
+# =======================================================================================================================
def main(configuration):
PydevTestRunner(configuration).run_tests()
diff --git a/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py b/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py
index a83592500..a088b4249 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py
@@ -3,74 +3,75 @@
from _pydevd_bundle.pydevd_constants import Null
-#=======================================================================================================================
+# =======================================================================================================================
# get_coverage_files
-#=======================================================================================================================
+# =======================================================================================================================
def get_coverage_files(coverage_output_dir, number_of_files):
base_dir = coverage_output_dir
ret = []
i = 0
while len(ret) < number_of_files:
while True:
- f = os.path.join(base_dir, '.coverage.%s' % i)
+ f = os.path.join(base_dir, ".coverage.%s" % i)
i += 1
if not os.path.exists(f):
ret.append(f)
- break #Break only inner for.
+ break # Break only inner for.
return ret
-#=======================================================================================================================
+# =======================================================================================================================
# start_coverage_support
-#=======================================================================================================================
+# =======================================================================================================================
def start_coverage_support(configuration):
return start_coverage_support_from_params(
- configuration.coverage_output_dir,
- configuration.coverage_output_file,
- configuration.jobs,
- configuration.coverage_include,
+ configuration.coverage_output_dir,
+ configuration.coverage_output_file,
+ configuration.jobs,
+ configuration.coverage_include,
)
-
-#=======================================================================================================================
+
+# =======================================================================================================================
# start_coverage_support_from_params
-#=======================================================================================================================
+# =======================================================================================================================
def start_coverage_support_from_params(coverage_output_dir, coverage_output_file, jobs, coverage_include):
coverage_files = []
coverage_instance = Null()
if coverage_output_dir or coverage_output_file:
try:
- import coverage #@UnresolvedImport
+ import coverage # @UnresolvedImport
except:
- sys.stderr.write('Error: coverage module could not be imported\n')
- sys.stderr.write('Please make sure that the coverage module (http://nedbatchelder.com/code/coverage/)\n')
- sys.stderr.write('is properly installed in your interpreter: %s\n' % (sys.executable,))
-
- import traceback;traceback.print_exc()
+ sys.stderr.write("Error: coverage module could not be imported\n")
+ sys.stderr.write("Please make sure that the coverage module (http://nedbatchelder.com/code/coverage/)\n")
+ sys.stderr.write("is properly installed in your interpreter: %s\n" % (sys.executable,))
+
+ import traceback
+
+ traceback.print_exc()
else:
if coverage_output_dir:
if not os.path.exists(coverage_output_dir):
- sys.stderr.write('Error: directory for coverage output (%s) does not exist.\n' % (coverage_output_dir,))
-
+ sys.stderr.write("Error: directory for coverage output (%s) does not exist.\n" % (coverage_output_dir,))
+
elif not os.path.isdir(coverage_output_dir):
- sys.stderr.write('Error: expected (%s) to be a directory.\n' % (coverage_output_dir,))
-
+ sys.stderr.write("Error: expected (%s) to be a directory.\n" % (coverage_output_dir,))
+
else:
n = jobs
if n <= 0:
n += 1
- n += 1 #Add 1 more for the current process (which will do the initial import).
+ n += 1 # Add 1 more for the current process (which will do the initial import).
coverage_files = get_coverage_files(coverage_output_dir, n)
- os.environ['COVERAGE_FILE'] = coverage_files.pop(0)
-
+ os.environ["COVERAGE_FILE"] = coverage_files.pop(0)
+
coverage_instance = coverage.coverage(source=[coverage_include])
coverage_instance.start()
-
+
elif coverage_output_file:
- #Client of parallel run.
- os.environ['COVERAGE_FILE'] = coverage_output_file
+ # Client of parallel run.
+ os.environ["COVERAGE_FILE"] = coverage_output_file
coverage_instance = coverage.coverage(source=[coverage_include])
coverage_instance.start()
-
- return coverage_files, coverage_instance
+ return coverage_files, coverage_instance
diff --git a/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py b/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py
index 20ea5b295..13a01b2ee 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py
@@ -9,11 +9,10 @@
import traceback
-#=======================================================================================================================
+# =======================================================================================================================
# PydevPlugin
-#=======================================================================================================================
+# =======================================================================================================================
class PydevPlugin(Plugin):
-
def __init__(self, configuration):
self.configuration = configuration
Plugin.__init__(self)
@@ -28,13 +27,13 @@ def finalize(self, result):
self.coverage.stop()
self.coverage.save()
- pydev_runfiles_xml_rpc.notifyTestRunFinished('Finished in: %.2f secs.' % (time.time() - self.start_time,))
+ pydev_runfiles_xml_rpc.notifyTestRunFinished("Finished in: %.2f secs." % (time.time() - self.start_time,))
- #===================================================================================================================
+ # ===================================================================================================================
# Methods below are not called with multiprocess (so, we monkey-patch MultiProcessTestRunner.consolidate
# so that they're called, but unfortunately we loose some info -- i.e.: the time for each test in this
# process).
- #===================================================================================================================
+ # ===================================================================================================================
class Sentinel(object):
pass
@@ -46,8 +45,8 @@ def _without_user_address(self, test):
user_address = self.Sentinel
user_class_address = self.Sentinel
try:
- if 'address' in user_test_instance.__dict__:
- user_address = user_test_instance.__dict__.pop('address')
+ if "address" in user_test_instance.__dict__:
+ user_address = user_test_instance.__dict__.pop("address")
except:
# Just ignore anything here.
pass
@@ -62,14 +61,14 @@ def _without_user_address(self, test):
yield
finally:
if user_address is not self.Sentinel:
- user_test_instance.__dict__['address'] = user_address
+ user_test_instance.__dict__["address"] = user_address
if user_class_address is not self.Sentinel:
user_test_instance.__class__.address = user_class_address
def _get_test_address(self, test):
try:
- if hasattr(test, 'address'):
+ if hasattr(test, "address"):
with self._without_user_address(test):
address = test.address()
@@ -86,30 +85,30 @@ def _get_test_address(self, test):
except TypeError:
# It may be an error at setup, in which case it's not really a test, but a Context object.
f = test.context.__file__
- if f.endswith('.pyc'):
+ if f.endswith(".pyc"):
f = f[:-1]
- elif f.endswith('$py.class'):
- f = f[:-len('$py.class')] + '.py'
- address = f, '?'
+ elif f.endswith("$py.class"):
+ f = f[: -len("$py.class")] + ".py"
+ address = f, "?"
except:
sys.stderr.write("PyDev: Internal pydev error getting test address. Please report at the pydev bug tracker\n")
traceback.print_exc()
sys.stderr.write("\n\n\n")
- address = '?', '?'
+ address = "?", "?"
return address
- def report_cond(self, cond, test, captured_output, error=''):
- '''
+ def report_cond(self, cond, test, captured_output, error=""):
+ """
@param cond: fail, error, ok
- '''
+ """
address = self._get_test_address(test)
error_contents = self.get_io_from_error(error)
try:
- time_str = '%.2f' % (time.time() - test._pydev_start_time)
+ time_str = "%.2f" % (time.time() - test._pydev_start_time)
except:
- time_str = '?'
+ time_str = "?"
pydev_runfiles_xml_rpc.notifyTest(cond, captured_output, error_contents, address[0], address[1], time_str)
@@ -132,13 +131,13 @@ def get_io_from_error(self, err):
return err
def get_captured_output(self, test):
- if hasattr(test, 'capturedOutput') and test.capturedOutput:
+ if hasattr(test, "capturedOutput") and test.capturedOutput:
return test.capturedOutput
- return ''
+ return ""
def addError(self, test, err):
self.report_cond(
- 'error',
+ "error",
test,
self.get_captured_output(test),
err,
@@ -146,7 +145,7 @@ def addError(self, test, err):
def addFailure(self, test, err):
self.report_cond(
- 'fail',
+ "fail",
test,
self.get_captured_output(test),
err,
@@ -154,10 +153,10 @@ def addFailure(self, test, err):
def addSuccess(self, test):
self.report_cond(
- 'ok',
+ "ok",
test,
self.get_captured_output(test),
- '',
+ "",
)
@@ -173,33 +172,33 @@ def start_pydev_nose_plugin_singleton(configuration):
original = MultiProcessTestRunner.consolidate
-#=======================================================================================================================
+# =======================================================================================================================
# new_consolidate
-#=======================================================================================================================
+# =======================================================================================================================
def new_consolidate(self, result, batch_result):
- '''
+ """
Used so that it can work with the multiprocess plugin.
Monkeypatched because nose seems a bit unsupported at this time (ideally
the plugin would have this support by default).
- '''
+ """
ret = original(self, result, batch_result)
parent_frame = sys._getframe().f_back
# addr is something as D:\pytesting1\src\mod1\hello.py:TestCase.testMet4
# so, convert it to what report_cond expects
- addr = parent_frame.f_locals['addr']
- i = addr.rindex(':')
- addr = [addr[:i], addr[i + 1:]]
+ addr = parent_frame.f_locals["addr"]
+ i = addr.rindex(":")
+ addr = [addr[:i], addr[i + 1 :]]
output, testsRun, failures, errors, errorClasses = batch_result
if failures or errors:
for failure in failures:
- PYDEV_NOSE_PLUGIN_SINGLETON.report_cond('fail', addr, output, failure)
+ PYDEV_NOSE_PLUGIN_SINGLETON.report_cond("fail", addr, output, failure)
for error in errors:
- PYDEV_NOSE_PLUGIN_SINGLETON.report_cond('error', addr, output, error)
+ PYDEV_NOSE_PLUGIN_SINGLETON.report_cond("error", addr, output, error)
else:
- PYDEV_NOSE_PLUGIN_SINGLETON.report_cond('ok', addr, output)
+ PYDEV_NOSE_PLUGIN_SINGLETON.report_cond("ok", addr, output)
return ret
diff --git a/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py b/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py
index b34c45e95..55a213420 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py
@@ -8,9 +8,9 @@
import sys
-#=======================================================================================================================
+# =======================================================================================================================
# flatten_test_suite
-#=======================================================================================================================
+# =======================================================================================================================
def flatten_test_suite(test_suite, ret):
if isinstance(test_suite, unittest.TestSuite):
for t in test_suite._tests:
@@ -20,11 +20,11 @@ def flatten_test_suite(test_suite, ret):
ret.append(test_suite)
-#=======================================================================================================================
+# =======================================================================================================================
# execute_tests_in_parallel
-#=======================================================================================================================
+# =======================================================================================================================
def execute_tests_in_parallel(tests, jobs, split, verbosity, coverage_files, coverage_include):
- '''
+ """
@param tests: list(PydevTestSuite)
A list with the suites to be run
@@ -44,9 +44,10 @@ def execute_tests_in_parallel(tests, jobs, split, verbosity, coverage_files, cov
run.
It may also return False if in debug mode (in which case, multi-processes are not accepted)
- '''
+ """
try:
from _pydevd_bundle.pydevd_comm import get_global_debugger
+
if get_global_debugger() is not None:
return False
except:
@@ -58,7 +59,7 @@ def execute_tests_in_parallel(tests, jobs, split, verbosity, coverage_files, cov
tests_queue = []
queue_elements = []
- if split == 'module':
+ if split == "module":
module_to_tests = {}
for test in tests:
lst = []
@@ -74,7 +75,7 @@ def execute_tests_in_parallel(tests, jobs, split, verbosity, coverage_files, cov
# Don't create jobs we will never use.
jobs = len(queue_elements)
- elif split == 'tests':
+ elif split == "tests":
for test in tests:
lst = []
flatten_test_suite(test, lst)
@@ -86,7 +87,7 @@ def execute_tests_in_parallel(tests, jobs, split, verbosity, coverage_files, cov
jobs = len(queue_elements)
else:
- raise AssertionError('Do not know how to handle: %s' % (split,))
+ raise AssertionError("Do not know how to handle: %s" % (split,))
for test_cases in queue_elements:
test_queue_elements = []
@@ -97,14 +98,14 @@ def execute_tests_in_parallel(tests, jobs, split, verbosity, coverage_files, cov
# Support for jython 2.1 (__testMethodName is pseudo-private in the test case)
test_name = test_case.__class__.__name__ + "." + test_case._TestCase__testMethodName
- test_queue_elements.append(test_case.__pydev_pyfile__ + '|' + test_name)
+ test_queue_elements.append(test_case.__pydev_pyfile__ + "|" + test_name)
tests_queue.append(test_queue_elements)
if jobs < 2:
return False
- sys.stdout.write('Running tests in parallel with: %s jobs.\n' % (jobs,))
+ sys.stdout.write("Running tests in parallel with: %s jobs.\n" % (jobs,))
queue = Queue.Queue()
for item in tests_queue:
@@ -134,7 +135,7 @@ def execute_tests_in_parallel(tests, jobs, split, verbosity, coverage_files, cov
# Wait for all the clients to exit.
if not client.finished:
client_alive = True
- time.sleep(.2)
+ time.sleep(0.2)
break
for provider in providers:
@@ -143,11 +144,10 @@ def execute_tests_in_parallel(tests, jobs, split, verbosity, coverage_files, cov
return True
-#=======================================================================================================================
+# =======================================================================================================================
# CommunicationThread
-#=======================================================================================================================
+# =======================================================================================================================
class CommunicationThread(threading.Thread):
-
def __init__(self, tests_queue):
threading.Thread.__init__(self)
self.daemon = True
@@ -166,12 +166,12 @@ def __init__(self, tests_queue):
self.server = server
def GetTestsToRun(self, job_id):
- '''
+ """
@param job_id:
@return: list(str)
Each entry is a string in the format: filename|Test.testName
- '''
+ """
try:
ret = self.queue.get(block=False)
return ret
@@ -195,13 +195,13 @@ def notifyTest(self, job_id, *args, **kwargs):
return True
def shutdown(self):
- if hasattr(self.server, 'shutdown'):
+ if hasattr(self.server, "shutdown"):
self.server.shutdown()
else:
self._shutdown = True
def run(self):
- if hasattr(self.server, 'shutdown'):
+ if hasattr(self.server, "shutdown"):
self.server.serve_forever()
else:
self._shutdown = False
@@ -209,11 +209,10 @@ def run(self):
self.server.handle_request()
-#=======================================================================================================================
+# =======================================================================================================================
# Client
-#=======================================================================================================================
+# =======================================================================================================================
class ClientThread(threading.Thread):
-
def __init__(self, job_id, port, verbosity, coverage_output_file=None, coverage_include=None):
threading.Thread.__init__(self)
self.daemon = True
@@ -252,6 +251,7 @@ def run(self):
args.append(self.coverage_include)
import subprocess
+
if False:
proc = subprocess.Popen(args, env=os.environ, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
@@ -264,4 +264,3 @@ def run(self):
finally:
self.finished = True
-
diff --git a/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py b/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py
index 3d81dd581..0132b06f5 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py
@@ -1,4 +1,5 @@
from _pydev_bundle.pydev_imports import xmlrpclib, _queue
+
Queue = _queue.Queue
import traceback
import sys
@@ -6,11 +7,10 @@
import threading
-#=======================================================================================================================
+# =======================================================================================================================
# ParallelNotification
-#=======================================================================================================================
+# =======================================================================================================================
class ParallelNotification(object):
-
def __init__(self, method, args, kwargs):
self.method = method
self.args = args
@@ -20,25 +20,21 @@ def to_tuple(self):
return self.method, self.args, self.kwargs
-#=======================================================================================================================
+# =======================================================================================================================
# KillServer
-#=======================================================================================================================
+# =======================================================================================================================
class KillServer(object):
pass
-
-#=======================================================================================================================
+# =======================================================================================================================
# ServerComm
-#=======================================================================================================================
+# =======================================================================================================================
class ServerComm(threading.Thread):
-
-
-
def __init__(self, job_id, server):
self.notifications_queue = Queue()
threading.Thread.__init__(self)
- self.setDaemon(False) #Wait for all the notifications to be passed before exiting!
+ self.setDaemon(False) # Wait for all the notifications to be passed before exiting!
assert job_id is not None
assert port is not None
self.job_id = job_id
@@ -46,7 +42,6 @@ def __init__(self, job_id, server):
self.finished = False
self.server = server
-
def run(self):
while True:
kill_found = False
@@ -60,19 +55,18 @@ def run(self):
try:
while True:
- command = self.notifications_queue.get(block=False) #No block to create a batch.
+ command = self.notifications_queue.get(block=False) # No block to create a batch.
if isinstance(command, KillServer):
kill_found = True
else:
assert isinstance(command, ParallelNotification)
commands.append(command.to_tuple())
except:
- pass #That's OK, we're getting it until it becomes empty so that we notify multiple at once.
-
+ pass # That's OK, we're getting it until it becomes empty so that we notify multiple at once.
if commands:
try:
- #Batch notification.
+ # Batch notification.
self.server.lock.acquire()
try:
self.server.notifyCommands(self.job_id, commands)
@@ -86,44 +80,36 @@ def run(self):
return
-
-#=======================================================================================================================
+# =======================================================================================================================
# ServerFacade
-#=======================================================================================================================
+# =======================================================================================================================
class ServerFacade(object):
-
-
def __init__(self, notifications_queue):
self.notifications_queue = notifications_queue
-
def notifyTestsCollected(self, *args, **kwargs):
- pass #This notification won't be passed
-
+ pass # This notification won't be passed
def notifyTestRunFinished(self, *args, **kwargs):
- pass #This notification won't be passed
-
+ pass # This notification won't be passed
def notifyStartTest(self, *args, **kwargs):
- self.notifications_queue.put_nowait(ParallelNotification('notifyStartTest', args, kwargs))
-
+ self.notifications_queue.put_nowait(ParallelNotification("notifyStartTest", args, kwargs))
def notifyTest(self, *args, **kwargs):
- self.notifications_queue.put_nowait(ParallelNotification('notifyTest', args, kwargs))
-
+ self.notifications_queue.put_nowait(ParallelNotification("notifyTest", args, kwargs))
-#=======================================================================================================================
+# =======================================================================================================================
# run_client
-#=======================================================================================================================
+# =======================================================================================================================
def run_client(job_id, port, verbosity, coverage_output_file, coverage_include):
job_id = int(job_id)
from _pydev_bundle import pydev_localhost
- server = xmlrpclib.Server('http://%s:%s' % (pydev_localhost.get_localhost(), port))
- server.lock = threading.Lock()
+ server = xmlrpclib.Server("http://%s:%s" % (pydev_localhost.get_localhost(), port))
+ server.lock = threading.Lock()
server_comm = ServerComm(job_id, server)
server_comm.start()
@@ -132,17 +118,18 @@ def run_client(job_id, port, verbosity, coverage_output_file, coverage_include):
server_facade = ServerFacade(server_comm.notifications_queue)
from _pydev_runfiles import pydev_runfiles
from _pydev_runfiles import pydev_runfiles_xml_rpc
+
pydev_runfiles_xml_rpc.set_server(server_facade)
- #Starts None and when the 1st test is gotten, it's started (because a server may be initiated and terminated
- #before receiving any test -- which would mean a different process got all the tests to run).
+ # Starts None and when the 1st test is gotten, it's started (because a server may be initiated and terminated
+ # before receiving any test -- which would mean a different process got all the tests to run).
coverage = None
try:
tests_to_run = [1]
while tests_to_run:
- #Investigate: is it dangerous to use the same xmlrpclib server from different threads?
- #It seems it should be, as it creates a new connection for each request...
+ # Investigate: is it dangerous to use the same xmlrpclib server from different threads?
+ # It seems it should be, as it creates a new connection for each request...
server.lock.acquire()
try:
tests_to_run = server.GetTestsToRun(job_id)
@@ -153,27 +140,24 @@ def run_client(job_id, port, verbosity, coverage_output_file, coverage_include):
break
if coverage is None:
- _coverage_files, coverage = start_coverage_support_from_params(
- None, coverage_output_file, 1, coverage_include)
-
+ _coverage_files, coverage = start_coverage_support_from_params(None, coverage_output_file, 1, coverage_include)
files_to_tests = {}
for test in tests_to_run:
- filename_and_test = test.split('|')
+ filename_and_test = test.split("|")
if len(filename_and_test) == 2:
files_to_tests.setdefault(filename_and_test[0], []).append(filename_and_test[1])
configuration = pydev_runfiles.Configuration(
- '',
+ "",
verbosity,
None,
None,
None,
files_to_tests,
- 1, #Always single job here
+ 1, # Always single job here
None,
-
- #The coverage is handled in this loop.
+ # The coverage is handled in this loop.
coverage_output_file=None,
coverage_include=None,
)
@@ -185,30 +169,26 @@ def run_client(job_id, port, verbosity, coverage_output_file, coverage_include):
coverage.stop()
coverage.save()
-
except:
traceback.print_exc()
server_comm.notifications_queue.put_nowait(KillServer())
-
-#=======================================================================================================================
+# =======================================================================================================================
# main
-#=======================================================================================================================
-if __name__ == '__main__':
- if len(sys.argv) -1 == 3:
+# =======================================================================================================================
+if __name__ == "__main__":
+ if len(sys.argv) - 1 == 3:
job_id, port, verbosity = sys.argv[1:]
coverage_output_file, coverage_include = None, None
- elif len(sys.argv) -1 == 5:
+ elif len(sys.argv) - 1 == 5:
job_id, port, verbosity, coverage_output_file, coverage_include = sys.argv[1:]
else:
- raise AssertionError('Could not find out how to handle the parameters: '+sys.argv[1:])
+ raise AssertionError("Could not find out how to handle the parameters: " + sys.argv[1:])
job_id = int(job_id)
port = int(port)
verbosity = int(verbosity)
run_client(job_id, port, verbosity, coverage_output_file, coverage_include)
-
-
diff --git a/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py b/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py
index 793097da7..acd99c3e6 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py
@@ -1,27 +1,28 @@
-from _pydev_runfiles import pydev_runfiles_xml_rpc
-import pickle
-import zlib
import base64
import os
-from pydevd_file_utils import canonical_normalized_path
-import pytest
+import pickle
import sys
import time
+import zlib
from pathlib import Path
-#=========================================================================
+import pytest
+from pydevd_file_utils import canonical_normalized_path
+
+from _pydev_runfiles import pydev_runfiles_xml_rpc
+
+# =========================================================================
# Load filters with tests we should skip
-#=========================================================================
+# =========================================================================
py_test_accept_filter = None
def _load_filters():
global py_test_accept_filter
if py_test_accept_filter is None:
- py_test_accept_filter = os.environ.get('PYDEV_PYTEST_SKIP')
+ py_test_accept_filter = os.environ.get("PYDEV_PYTEST_SKIP")
if py_test_accept_filter:
- py_test_accept_filter = pickle.loads(
- zlib.decompress(base64.b64decode(py_test_accept_filter)))
+ py_test_accept_filter = pickle.loads(zlib.decompress(base64.b64decode(py_test_accept_filter)))
# Newer versions of pytest resolve symlinks, so, we
# may need to filter with a resolved path too.
@@ -36,7 +37,7 @@ def _load_filters():
def is_in_xdist_node():
- main_pid = os.environ.get('PYDEV_MAIN_PID')
+ main_pid = os.environ.get("PYDEV_MAIN_PID")
if main_pid and main_pid != str(os.getpid()):
return True
return False
@@ -51,10 +52,11 @@ def connect_to_server_for_communication_to_xml_rpc_on_xdist():
return
connected = True
if is_in_xdist_node():
- port = os.environ.get('PYDEV_PYTEST_SERVER')
- if not port:
- sys.stderr.write(
- 'Error: no PYDEV_PYTEST_SERVER environment variable defined.\n')
+ port = os.environ.get("PYDEV_PYTEST_SERVER")
+ if port == "None":
+ pass
+ elif not port:
+ sys.stderr.write("Error: no PYDEV_PYTEST_SERVER environment variable defined.\n")
else:
pydev_runfiles_xml_rpc.initialize_server(int(port), daemon=True)
@@ -73,14 +75,15 @@ def start_redirect():
if State.buf_out is not None:
return
from _pydevd_bundle import pydevd_io
- State.buf_err = pydevd_io.start_redirect(keep_original_redirection=True, std='stderr')
- State.buf_out = pydevd_io.start_redirect(keep_original_redirection=True, std='stdout')
+
+ State.buf_err = pydevd_io.start_redirect(keep_original_redirection=True, std="stderr")
+ State.buf_out = pydevd_io.start_redirect(keep_original_redirection=True, std="stdout")
def get_curr_output():
buf_out = State.buf_out
buf_err = State.buf_err
- return buf_out.getvalue() if buf_out is not None else '', buf_err.getvalue() if buf_err is not None else ''
+ return buf_out.getvalue() if buf_out is not None else "", buf_err.getvalue() if buf_err is not None else ""
def pytest_unconfigure():
@@ -88,8 +91,7 @@ def pytest_unconfigure():
return
# Only report that it finished when on the main node (we don't want to report
# the finish on each separate node).
- pydev_runfiles_xml_rpc.notifyTestRunFinished(
- 'Finished in: %.2f secs.' % (time.time() - State.start_time,))
+ pydev_runfiles_xml_rpc.notifyTestRunFinished("Finished in: %.2f secs." % (time.time() - State.start_time,))
def pytest_collection_modifyitems(session, config, items):
@@ -112,7 +114,7 @@ def pytest_collection_modifyitems(session, config, items):
# print('Skip file: %s' % (f,))
continue # Skip the file
- i = name.find('[')
+ i = name.find("[")
name_without_parametrize = None
if i > 0:
name_without_parametrize = name[:i]
@@ -138,11 +140,11 @@ def pytest_collection_modifyitems(session, config, items):
break
if class_name is not None:
- if test == class_name + '.' + name:
+ if test == class_name + "." + name:
new_items.append(item)
break
- if name_without_parametrize is not None and test == class_name + '.' + name_without_parametrize:
+ if name_without_parametrize is not None and test == class_name + "." + name_without_parametrize:
new_items.append(item)
break
@@ -176,6 +178,7 @@ def _get_error_contents_from_report(report):
stringio = tw.stringio
except TypeError:
import io
+
stringio = io.StringIO()
tw = TerminalWriter(file=stringio)
tw.hasmarkup = False
@@ -185,13 +188,13 @@ def _get_error_contents_from_report(report):
if s:
return s
- return ''
+ return ""
def pytest_collectreport(report):
error_contents = _get_error_contents_from_report(report)
if error_contents:
- report_test('fail', '', '', '', error_contents, 0.0)
+ report_test("fail", "", "", "", error_contents, 0.0)
def append_strings(s1, s2):
@@ -200,10 +203,10 @@ def append_strings(s1, s2):
# Prefer str
if isinstance(s1, bytes):
- s1 = s1.decode('utf-8', 'replace')
+ s1 = s1.decode("utf-8", "replace")
if isinstance(s2, bytes):
- s2 = s2.decode('utf-8', 'replace')
+ s2 = s2.decode("utf-8", "replace")
return s1 + s2
@@ -217,70 +220,69 @@ def pytest_runtest_logreport(report):
report_when = report.when
report_outcome = report.outcome
- if hasattr(report, 'wasxfail'):
- if report_outcome != 'skipped':
- report_outcome = 'passed'
+ if hasattr(report, "wasxfail"):
+ if report_outcome != "skipped":
+ report_outcome = "passed"
- if report_outcome == 'passed':
+ if report_outcome == "passed":
# passed on setup/teardown: no need to report if in setup or teardown
# (only on the actual test if it passed).
- if report_when in ('setup', 'teardown'):
+ if report_when in ("setup", "teardown"):
return
- status = 'ok'
+ status = "ok"
- elif report_outcome == 'skipped':
- status = 'skip'
+ elif report_outcome == "skipped":
+ status = "skip"
else:
# It has only passed, skipped and failed (no error), so, let's consider
# error if not on call.
- if report_when in ('setup', 'teardown'):
- status = 'error'
+ if report_when in ("setup", "teardown"):
+ status = "error"
else:
# any error in the call (not in setup or teardown) is considered a
# regular failure.
- status = 'fail'
+ status = "fail"
# This will work if pytest is not capturing it, if it is, nothing will
# come from here...
- captured_output, error_contents = getattr(report, 'pydev_captured_output', ''), getattr(report, 'pydev_error_contents', '')
+ captured_output, error_contents = getattr(report, "pydev_captured_output", ""), getattr(report, "pydev_error_contents", "")
for type_section, value in report.sections:
if value:
- if type_section in ('err', 'stderr', 'Captured stderr call'):
+ if type_section in ("err", "stderr", "Captured stderr call"):
error_contents = append_strings(error_contents, value)
else:
captured_output = append_strings(error_contents, value)
- filename = getattr(report, 'pydev_fspath_strpath', '')
+ filename = getattr(report, "pydev_fspath_strpath", "")
test = report.location[2]
- if report_outcome != 'skipped':
+ if report_outcome != "skipped":
# On skipped, we'll have a traceback for the skip, which is not what we
# want.
exc = _get_error_contents_from_report(report)
if exc:
if error_contents:
- error_contents = append_strings(error_contents, '----------------------------- Exceptions -----------------------------\n')
+ error_contents = append_strings(error_contents, "----------------------------- Exceptions -----------------------------\n")
error_contents = append_strings(error_contents, exc)
report_test(status, filename, test, captured_output, error_contents, report_duration)
def report_test(status, filename, test, captured_output, error_contents, duration):
- '''
+ """
@param filename: 'D:\\src\\mod1\\hello.py'
@param test: 'TestCase.testMet1'
@param status: fail, error, ok
- '''
- time_str = '%.2f' % (duration,)
- pydev_runfiles_xml_rpc.notifyTest(
- status, captured_output, error_contents, filename, test, time_str)
+ """
+ time_str = "%.2f" % (duration,)
+ pydev_runfiles_xml_rpc.notifyTest(status, captured_output, error_contents, filename, test, time_str)
-if not hasattr(pytest, 'hookimpl'):
- raise AssertionError('Please upgrade pytest (the current version of pytest: %s is unsupported)' % (pytest.__version__,))
+if not hasattr(pytest, "hookimpl"):
+ raise AssertionError("Please upgrade pytest (the current version of pytest: %s is unsupported)" % (pytest.__version__,))
@pytest.hookimpl(hookwrapper=True)
@@ -293,9 +295,9 @@ def pytest_runtest_makereport(item, call):
@pytest.mark.tryfirst
def pytest_runtest_setup(item):
- '''
+ """
Note: with xdist will be on a secondary process.
- '''
+ """
# We have our own redirection: if xdist does its redirection, we'll have
# nothing in our contents (which is OK), but if it does, we'll get nothing
# from pytest but will get our own here.
diff --git a/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py b/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py
index fff1ef9c6..67f6a259a 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py
@@ -7,11 +7,10 @@
from io import StringIO
-#=======================================================================================================================
+# =======================================================================================================================
# PydevTextTestRunner
-#=======================================================================================================================
+# =======================================================================================================================
class PydevTextTestRunner(python_unittest.TextTestRunner):
-
def _makeResult(self):
return PydevTestResult(self.stream, self.descriptions, self.verbosity)
@@ -19,11 +18,10 @@ def _makeResult(self):
_PythonTextTestResult = python_unittest.TextTestRunner()._makeResult().__class__
-#=======================================================================================================================
+# =======================================================================================================================
# PydevTestResult
-#=======================================================================================================================
+# =======================================================================================================================
class PydevTestResult(_PythonTextTestResult):
-
def addSubTest(self, test, subtest, err):
"""Called at the end of a subtest.
'err' is None if the subtest ended successfully, otherwise it's a
@@ -33,11 +31,11 @@ def addSubTest(self, test, subtest, err):
if err is not None:
subdesc = subtest._subDescription()
error = (test, self._exc_info_to_string(err, test))
- self._reportErrors([error], [], '', '%s %s' % (self.get_test_name(test), subdesc))
+ self._reportErrors([error], [], "", "%s %s" % (self.get_test_name(test), subdesc))
def startTest(self, test):
_PythonTextTestResult.startTest(self, test)
- self.buf = pydevd_io.start_redirect(keep_original_redirection=True, std='both')
+ self.buf = pydevd_io.start_redirect(keep_original_redirection=True, std="both")
self.start_time = time.time()
self._current_errors_stack = []
self._current_failures_stack = []
@@ -48,8 +46,7 @@ def startTest(self, test):
# Support for jython 2.1 (__testMethodName is pseudo-private in the test case)
test_name = test.__class__.__name__ + "." + test._TestCase__testMethodName
- pydev_runfiles_xml_rpc.notifyStartTest(
- test.__pydev_pyfile__, test_name)
+ pydev_runfiles_xml_rpc.notifyStartTest(test.__pydev_pyfile__, test_name)
def get_test_name(self, test):
try:
@@ -61,40 +58,38 @@ def get_test_name(self, test):
test_name = test.__class__.__name__ + "." + test._TestCase__testMethodName
# Support for class/module exceptions (test is instance of _ErrorHolder)
except:
- test_name = test.description.split()[1][1:-1] + ' <' + test.description.split()[0] + '>'
+ test_name = test.description.split()[1][1:-1] + " <" + test.description.split()[0] + ">"
except:
traceback.print_exc()
- return ''
+ return ""
return test_name
def stopTest(self, test):
end_time = time.time()
- pydevd_io.end_redirect(std='both')
+ pydevd_io.end_redirect(std="both")
_PythonTextTestResult.stopTest(self, test)
captured_output = self.buf.getvalue()
del self.buf
- error_contents = ''
+ error_contents = ""
test_name = self.get_test_name(test)
- diff_time = '%.2f' % (end_time - self.start_time)
+ diff_time = "%.2f" % (end_time - self.start_time)
skipped = False
- outcome = getattr(test, '_outcome', None)
+ outcome = getattr(test, "_outcome", None)
if outcome is not None:
- skipped = bool(getattr(outcome, 'skipped', None))
+ skipped = bool(getattr(outcome, "skipped", None))
if skipped:
- pydev_runfiles_xml_rpc.notifyTest(
- 'skip', captured_output, error_contents, test.__pydev_pyfile__, test_name, diff_time)
+ pydev_runfiles_xml_rpc.notifyTest("skip", captured_output, error_contents, test.__pydev_pyfile__, test_name, diff_time)
elif not self._current_errors_stack and not self._current_failures_stack:
- pydev_runfiles_xml_rpc.notifyTest(
- 'ok', captured_output, error_contents, test.__pydev_pyfile__, test_name, diff_time)
+ pydev_runfiles_xml_rpc.notifyTest("ok", captured_output, error_contents, test.__pydev_pyfile__, test_name, diff_time)
else:
self._reportErrors(self._current_errors_stack, self._current_failures_stack, captured_output, test_name)
- def _reportErrors(self, errors, failures, captured_output, test_name, diff_time=''):
+ def _reportErrors(self, errors, failures, captured_output, test_name, diff_time=""):
error_contents = []
for test, s in errors + failures:
if type(s) == type((1,)): # If it's a tuple (for jython 2.1)
@@ -103,45 +98,41 @@ def _reportErrors(self, errors, failures, captured_output, test_name, diff_time=
s = sio.getvalue()
error_contents.append(s)
- sep = '\n' + self.separator1
+ sep = "\n" + self.separator1
error_contents = sep.join(error_contents)
if errors and not failures:
try:
- pydev_runfiles_xml_rpc.notifyTest(
- 'error', captured_output, error_contents, test.__pydev_pyfile__, test_name, diff_time)
+ pydev_runfiles_xml_rpc.notifyTest("error", captured_output, error_contents, test.__pydev_pyfile__, test_name, diff_time)
except:
file_start = error_contents.find('File "')
file_end = error_contents.find('", ', file_start)
if file_start != -1 and file_end != -1:
- file = error_contents[file_start + 6:file_end]
+ file = error_contents[file_start + 6 : file_end]
else:
- file = ''
- pydev_runfiles_xml_rpc.notifyTest(
- 'error', captured_output, error_contents, file, test_name, diff_time)
+ file = ""
+ pydev_runfiles_xml_rpc.notifyTest("error", captured_output, error_contents, file, test_name, diff_time)
elif failures and not errors:
- pydev_runfiles_xml_rpc.notifyTest(
- 'fail', captured_output, error_contents, test.__pydev_pyfile__, test_name, diff_time)
+ pydev_runfiles_xml_rpc.notifyTest("fail", captured_output, error_contents, test.__pydev_pyfile__, test_name, diff_time)
else: # Ok, we got both, errors and failures. Let's mark it as an error in the end.
- pydev_runfiles_xml_rpc.notifyTest(
- 'error', captured_output, error_contents, test.__pydev_pyfile__, test_name, diff_time)
+ pydev_runfiles_xml_rpc.notifyTest("error", captured_output, error_contents, test.__pydev_pyfile__, test_name, diff_time)
def addError(self, test, err):
_PythonTextTestResult.addError(self, test, err)
# Support for class/module exceptions (test is instance of _ErrorHolder)
- if not hasattr(self, '_current_errors_stack') or test.__class__.__name__ == '_ErrorHolder':
+ if not hasattr(self, "_current_errors_stack") or test.__class__.__name__ == "_ErrorHolder":
# Not in start...end, so, report error now (i.e.: django pre/post-setup)
- self._reportErrors([self.errors[-1]], [], '', self.get_test_name(test))
+ self._reportErrors([self.errors[-1]], [], "", self.get_test_name(test))
else:
self._current_errors_stack.append(self.errors[-1])
def addFailure(self, test, err):
_PythonTextTestResult.addFailure(self, test, err)
- if not hasattr(self, '_current_failures_stack'):
+ if not hasattr(self, "_current_failures_stack"):
# Not in start...end, so, report error now (i.e.: django pre/post-setup)
- self._reportErrors([], [self.failures[-1]], '', self.get_test_name(test))
+ self._reportErrors([], [self.failures[-1]], "", self.get_test_name(test))
else:
self._current_failures_stack.append(self.failures[-1])
diff --git a/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py b/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py
index b4d6b5c1a..1bcaedfc8 100644
--- a/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py
+++ b/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py
@@ -4,41 +4,40 @@
import warnings
from _pydev_bundle._pydev_filesystem_encoding import getfilesystemencoding
-from _pydev_bundle.pydev_imports import xmlrpclib, _queue
+from _pydev_bundle.pydev_imports import _queue, xmlrpclib
from _pydevd_bundle.pydevd_constants import Null
Queue = _queue.Queue
# This may happen in IronPython (in Python it shouldn't happen as there are
# 'fast' replacements that are used in xmlrpclib.py)
-warnings.filterwarnings(
- 'ignore', 'The xmllib module is obsolete.*', DeprecationWarning)
+warnings.filterwarnings("ignore", "The xmllib module is obsolete.*", DeprecationWarning)
file_system_encoding = getfilesystemencoding()
-#=======================================================================================================================
+# =======================================================================================================================
# _ServerHolder
-#=======================================================================================================================
+# =======================================================================================================================
class _ServerHolder:
- '''
+ """
Helper so that we don't have to use a global here.
- '''
+ """
+
SERVER = None
-#=======================================================================================================================
+# =======================================================================================================================
# set_server
-#=======================================================================================================================
+# =======================================================================================================================
def set_server(server):
_ServerHolder.SERVER = server
-#=======================================================================================================================
+# =======================================================================================================================
# ParallelNotification
-#=======================================================================================================================
+# =======================================================================================================================
class ParallelNotification(object):
-
def __init__(self, method, args):
self.method = method
self.args = args
@@ -47,49 +46,47 @@ def to_tuple(self):
return self.method, self.args
-#=======================================================================================================================
+# =======================================================================================================================
# KillServer
-#=======================================================================================================================
+# =======================================================================================================================
class KillServer(object):
pass
-#=======================================================================================================================
+# =======================================================================================================================
# ServerFacade
-#=======================================================================================================================
+# =======================================================================================================================
class ServerFacade(object):
-
def __init__(self, notifications_queue):
self.notifications_queue = notifications_queue
def notifyTestsCollected(self, *args):
- self.notifications_queue.put_nowait(ParallelNotification('notifyTestsCollected', args))
+ self.notifications_queue.put_nowait(ParallelNotification("notifyTestsCollected", args))
def notifyConnected(self, *args):
- self.notifications_queue.put_nowait(ParallelNotification('notifyConnected', args))
+ self.notifications_queue.put_nowait(ParallelNotification("notifyConnected", args))
def notifyTestRunFinished(self, *args):
- self.notifications_queue.put_nowait(ParallelNotification('notifyTestRunFinished', args))
+ self.notifications_queue.put_nowait(ParallelNotification("notifyTestRunFinished", args))
def notifyStartTest(self, *args):
- self.notifications_queue.put_nowait(ParallelNotification('notifyStartTest', args))
+ self.notifications_queue.put_nowait(ParallelNotification("notifyStartTest", args))
def notifyTest(self, *args):
new_args = []
for arg in args:
new_args.append(_encode_if_needed(arg))
args = tuple(new_args)
- self.notifications_queue.put_nowait(ParallelNotification('notifyTest', args))
+ self.notifications_queue.put_nowait(ParallelNotification("notifyTest", args))
-#=======================================================================================================================
+# =======================================================================================================================
# ServerComm
-#=======================================================================================================================
+# =======================================================================================================================
class ServerComm(threading.Thread):
-
def __init__(self, notifications_queue, port, daemon=False):
- threading.Thread.__init__(self)
- self.setDaemon(daemon) # If False, wait for all the notifications to be passed before exiting!
+ # If daemon is False, wait for all the notifications to be passed before exiting!
+ threading.Thread.__init__(self, daemon=daemon)
self.finished = False
self.notifications_queue = notifications_queue
@@ -111,8 +108,7 @@ def __init__(self, notifications_queue, port, daemon=False):
# ISO-8859-1 is good enough.
encoding = "ISO-8859-1"
- self.server = xmlrpclib.Server('http://%s:%s' % (pydev_localhost.get_localhost(), port),
- encoding=encoding)
+ self.server = xmlrpclib.Server("http://%s:%s" % (pydev_localhost.get_localhost(), port), encoding=encoding)
def run(self):
while True:
@@ -147,9 +143,9 @@ def run(self):
return
-#=======================================================================================================================
+# =======================================================================================================================
# initialize_server
-#=======================================================================================================================
+# =======================================================================================================================
def initialize_server(port, daemon=False):
if _ServerHolder.SERVER is None:
if port is not None:
@@ -163,36 +159,39 @@ def initialize_server(port, daemon=False):
_ServerHolder.SERVER_COMM = Null()
try:
- _ServerHolder.SERVER.notifyConnected()
+ if _ServerHolder.SERVER is not None:
+ _ServerHolder.SERVER.notifyConnected()
except:
traceback.print_exc()
-#=======================================================================================================================
+# =======================================================================================================================
# notifyTest
-#=======================================================================================================================
+# =======================================================================================================================
def notifyTestsCollected(tests_count):
assert tests_count is not None
try:
- _ServerHolder.SERVER.notifyTestsCollected(tests_count)
+ if _ServerHolder.SERVER is not None:
+ _ServerHolder.SERVER.notifyTestsCollected(tests_count)
except:
traceback.print_exc()
-#=======================================================================================================================
+# =======================================================================================================================
# notifyStartTest
-#=======================================================================================================================
+# =======================================================================================================================
def notifyStartTest(file, test):
- '''
+ """
@param file: the tests file (c:/temp/test.py)
@param test: the test ran (i.e.: TestCase.test1)
- '''
+ """
assert file is not None
if test is None:
- test = '' # Could happen if we have an import error importing module.
+ test = "" # Could happen if we have an import error importing module.
try:
- _ServerHolder.SERVER.notifyStartTest(file, test)
+ if _ServerHolder.SERVER is not None:
+ _ServerHolder.SERVER.notifyStartTest(file, test)
except:
traceback.print_exc()
@@ -200,35 +199,38 @@ def notifyStartTest(file, test):
def _encode_if_needed(obj):
# In the java side we expect strings to be ISO-8859-1 (org.python.pydev.debug.pyunit.PyUnitServer.initializeDispatches().new Dispatch() {...}.getAsStr(Object))
if isinstance(obj, str): # Unicode in py3
- return xmlrpclib.Binary(obj.encode('ISO-8859-1', 'xmlcharrefreplace'))
+ return xmlrpclib.Binary(obj.encode("ISO-8859-1", "xmlcharrefreplace"))
elif isinstance(obj, bytes):
try:
- return xmlrpclib.Binary(obj.decode(sys.stdin.encoding).encode('ISO-8859-1', 'xmlcharrefreplace'))
+ return xmlrpclib.Binary(obj.decode(sys.stdin.encoding, 'replace').encode("ISO-8859-1", "xmlcharrefreplace"))
except:
return xmlrpclib.Binary(obj) # bytes already
return obj
-#=======================================================================================================================
+# =======================================================================================================================
# notifyTest
-#=======================================================================================================================
+# =======================================================================================================================
def notifyTest(cond, captured_output, error_contents, file, test, time):
- '''
+ """
@param cond: ok, fail, error
@param captured_output: output captured from stdout
@param captured_output: output captured from stderr
@param file: the tests file (c:/temp/test.py)
@param test: the test ran (i.e.: TestCase.test1)
@param time: float with the number of seconds elapsed
- '''
+ """
+ if _ServerHolder.SERVER is None:
+ return
+
assert cond is not None
assert captured_output is not None
assert error_contents is not None
assert file is not None
if test is None:
- test = '' # Could happen if we have an import error importing module.
+ test = "" # Could happen if we have an import error importing module.
assert time is not None
try:
captured_output = _encode_if_needed(captured_output)
@@ -239,19 +241,20 @@ def notifyTest(cond, captured_output, error_contents, file, test, time):
traceback.print_exc()
-#=======================================================================================================================
+# =======================================================================================================================
# notifyTestRunFinished
-#=======================================================================================================================
+# =======================================================================================================================
def notifyTestRunFinished(total_time):
assert total_time is not None
try:
- _ServerHolder.SERVER.notifyTestRunFinished(total_time)
+ if _ServerHolder.SERVER is not None:
+ _ServerHolder.SERVER.notifyTestRunFinished(total_time)
except:
traceback.print_exc()
-#=======================================================================================================================
+# =======================================================================================================================
# force_server_kill
-#=======================================================================================================================
+# =======================================================================================================================
def force_server_kill():
_ServerHolder.SERVER_COMM.notifications_queue.put_nowait(KillServer())
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py
index b45fa5f9d..1081e2873 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py
@@ -1,20 +1,20 @@
-'''
+"""
Run this module to regenerate the `pydevd_schema.py` file.
Note that it'll generate it based on the current debugProtocol.json. Erase it and rerun
to download the latest version.
-'''
+"""
def is_variable_to_translate(cls_name, var_name):
- if var_name in ('variablesReference', 'frameId', 'threadId'):
+ if var_name in ("variablesReference", "frameId", "threadId"):
return True
- if cls_name == 'StackFrame' and var_name == 'id':
+ if cls_name == "StackFrame" and var_name == "id":
# It's frameId everywhere except on StackFrame.
return True
- if cls_name == 'Thread' and var_name == 'id':
+ if cls_name == "Thread" and var_name == "id":
# It's threadId everywhere except on Thread.
return True
@@ -22,7 +22,7 @@ def is_variable_to_translate(cls_name, var_name):
def _get_noqa_for_var(prop_name):
- return ' # noqa (assign to builtin)' if prop_name in ('type', 'format', 'id', 'hex', 'breakpoint', 'filter') else ''
+ return " # noqa (assign to builtin)" if prop_name in ("type", "format", "id", "hex", "breakpoint", "filter") else ""
class _OrderedSet(object):
@@ -63,14 +63,13 @@ def __len__(self):
def set_repr(self):
if len(self) == 0:
- return 'set()'
+ return "set()"
lst = [repr(x) for x in self]
- return 'set([' + ', '.join(lst) + '])'
+ return "set([" + ", ".join(lst) + "])"
class Ref(object):
-
def __init__(self, ref, ref_data):
self.ref = ref
self.ref_data = ref_data
@@ -83,15 +82,16 @@ def load_schema_data():
import os.path
import json
- json_file = os.path.join(os.path.dirname(__file__), 'debugProtocol.json')
+ json_file = os.path.join(os.path.dirname(__file__), "debugProtocol.json")
if not os.path.exists(json_file):
import requests
- req = requests.get('https://raw.githubusercontent.com/microsoft/debug-adapter-protocol/gh-pages/debugAdapterProtocol.json')
+
+ req = requests.get("https://raw.githubusercontent.com/microsoft/debug-adapter-protocol/gh-pages/debugAdapterProtocol.json")
assert req.status_code == 200
- with open(json_file, 'wb') as stream:
+ with open(json_file, "wb") as stream:
stream.write(req.content)
- with open(json_file, 'rb') as json_contents:
+ with open(json_file, "rb") as json_contents:
json_schema_data = json.loads(json_contents.read())
return json_schema_data
@@ -100,48 +100,48 @@ def load_custom_schema_data():
import os.path
import json
- json_file = os.path.join(os.path.dirname(__file__), 'debugProtocolCustom.json')
+ json_file = os.path.join(os.path.dirname(__file__), "debugProtocolCustom.json")
- with open(json_file, 'rb') as json_contents:
+ with open(json_file, "rb") as json_contents:
json_schema_data = json.loads(json_contents.read())
return json_schema_data
def create_classes_to_generate_structure(json_schema_data):
- definitions = json_schema_data['definitions']
+ definitions = json_schema_data["definitions"]
class_to_generatees = {}
for name, definition in definitions.items():
- all_of = definition.get('allOf')
- description = definition.get('description')
- is_enum = definition.get('type') == 'string' and 'enum' in definition
+ all_of = definition.get("allOf")
+ description = definition.get("description")
+ is_enum = definition.get("type") == "string" and "enum" in definition
enum_values = None
if is_enum:
- enum_values = definition['enum']
+ enum_values = definition["enum"]
properties = {}
- properties.update(definition.get('properties', {}))
- required = _OrderedSet(definition.get('required', _OrderedSet()))
+ properties.update(definition.get("properties", {}))
+ required = _OrderedSet(definition.get("required", _OrderedSet()))
base_definitions = []
if all_of is not None:
for definition in all_of:
- ref = definition.get('$ref')
+ ref = definition.get("$ref")
if ref is not None:
- assert ref.startswith('#/definitions/')
- ref = ref[len('#/definitions/'):]
+ assert ref.startswith("#/definitions/")
+ ref = ref[len("#/definitions/") :]
base_definitions.append(ref)
else:
if not description:
- description = definition.get('description')
- properties.update(definition.get('properties', {}))
- required.update(_OrderedSet(definition.get('required', _OrderedSet())))
+ description = definition.get("description")
+ properties.update(definition.get("properties", {}))
+ required.update(_OrderedSet(definition.get("required", _OrderedSet())))
if isinstance(description, (list, tuple)):
- description = '\n'.join(description)
+ description = "\n".join(description)
- if name == 'ModulesRequest': # Hack to accept modules request without arguments (ptvsd: 2050).
- required.discard('arguments')
+ if name == "ModulesRequest": # Hack to accept modules request without arguments (ptvsd: 2050).
+ required.discard("arguments")
class_to_generatees[name] = dict(
name=name,
properties=properties,
@@ -149,7 +149,7 @@ def create_classes_to_generate_structure(json_schema_data):
description=description,
required=required,
is_enum=is_enum,
- enum_values=enum_values
+ enum_values=enum_values,
)
return class_to_generatees
@@ -159,7 +159,7 @@ def collect_bases(curr_class, classes_to_generate, memo=None):
if memo is None:
memo = {}
- base_definitions = curr_class['base_definitions']
+ base_definitions = curr_class["base_definitions"]
for base_definition in base_definitions:
if base_definition not in memo:
ret.append(base_definition)
@@ -177,86 +177,87 @@ def fill_properties_and_required_from_base(classes_to_generate):
for base_definition in reversed(collect_bases(class_to_generate, classes_to_generate)):
# Note: go from base to current so that the initial order of the properties has that
# same order.
- dct.update(classes_to_generate[base_definition].get('properties', {}))
- s.update(classes_to_generate[base_definition].get('required', _OrderedSet()))
+ dct.update(classes_to_generate[base_definition].get("properties", {}))
+ s.update(classes_to_generate[base_definition].get("required", _OrderedSet()))
- dct.update(class_to_generate['properties'])
- class_to_generate['properties'] = dct
+ dct.update(class_to_generate["properties"])
+ class_to_generate["properties"] = dct
- s.update(class_to_generate['required'])
- class_to_generate['required'] = s
+ s.update(class_to_generate["required"])
+ class_to_generate["required"] = s
return class_to_generate
def update_class_to_generate_description(class_to_generate):
import textwrap
- description = class_to_generate['description']
+
+ description = class_to_generate["description"]
lines = []
for line in description.splitlines():
wrapped = textwrap.wrap(line.strip(), 100)
lines.extend(wrapped)
- lines.append('')
+ lines.append("")
- while lines and lines[-1] == '':
+ while lines and lines[-1] == "":
lines = lines[:-1]
- class_to_generate['description'] = ' ' + ('\n '.join(lines))
+ class_to_generate["description"] = " " + ("\n ".join(lines))
def update_class_to_generate_type(classes_to_generate, class_to_generate):
- properties = class_to_generate.get('properties')
+ properties = class_to_generate.get("properties")
for _prop_name, prop_val in properties.items():
- prop_type = prop_val.get('type', '')
+ prop_type = prop_val.get("type", "")
if not prop_type:
- prop_type = prop_val.pop('$ref', '')
+ prop_type = prop_val.pop("$ref", "")
if prop_type:
- assert prop_type.startswith('#/definitions/')
- prop_type = prop_type[len('#/definitions/'):]
- prop_val['type'] = Ref(prop_type, classes_to_generate[prop_type])
+ assert prop_type.startswith("#/definitions/")
+ prop_type = prop_type[len("#/definitions/") :]
+ prop_val["type"] = Ref(prop_type, classes_to_generate[prop_type])
def update_class_to_generate_register_dec(classes_to_generate, class_to_generate):
# Default
- class_to_generate['register_request'] = ''
- class_to_generate['register_dec'] = '@register'
+ class_to_generate["register_request"] = ""
+ class_to_generate["register_dec"] = "@register"
- properties = class_to_generate.get('properties')
- enum_type = properties.get('type', {}).get('enum')
+ properties = class_to_generate.get("properties")
+ enum_type = properties.get("type", {}).get("enum")
command = None
event = None
if enum_type and len(enum_type) == 1 and next(iter(enum_type)) in ("request", "response", "event"):
msg_type = next(iter(enum_type))
- if msg_type == 'response':
+ if msg_type == "response":
# The actual command is typed in the request
- response_name = class_to_generate['name']
- request_name = response_name[:-len('Response')] + 'Request'
+ response_name = class_to_generate["name"]
+ request_name = response_name[: -len("Response")] + "Request"
if request_name in classes_to_generate:
- command = classes_to_generate[request_name]['properties'].get('command')
+ command = classes_to_generate[request_name]["properties"].get("command")
else:
- if response_name == 'ErrorResponse':
- command = {'enum': ['error']}
+ if response_name == "ErrorResponse":
+ command = {"enum": ["error"]}
else:
- raise AssertionError('Unhandled: %s' % (response_name,))
+ raise AssertionError("Unhandled: %s" % (response_name,))
- elif msg_type == 'request':
- command = properties.get('command')
+ elif msg_type == "request":
+ command = properties.get("command")
- elif msg_type == 'event':
- command = properties.get('event')
+ elif msg_type == "event":
+ command = properties.get("event")
else:
- raise AssertionError('Unexpected condition.')
+ raise AssertionError("Unexpected condition.")
if command:
- enum = command.get('enum')
+ enum = command.get("enum")
if enum and len(enum) == 1:
- class_to_generate['register_request'] = '@register_%s(%r)\n' % (msg_type, enum[0])
+ class_to_generate["register_request"] = "@register_%s(%r)\n" % (msg_type, enum[0])
def extract_prop_name_and_prop(class_to_generate):
- properties = class_to_generate.get('properties')
- required = _OrderedSet(class_to_generate.get('required', _OrderedSet()))
+ properties = class_to_generate.get("properties")
+ required = _OrderedSet(class_to_generate.get("required", _OrderedSet()))
# Sort so that required come first
prop_name_and_prop = list(properties.items())
@@ -264,7 +265,7 @@ def extract_prop_name_and_prop(class_to_generate):
def compute_sort_key(x):
key = x[0]
if key in required:
- if key == 'seq':
+ if key == "seq":
return 0.5 # seq when required is after the other required keys (to have a default of -1).
return 0
return 1
@@ -275,98 +276,104 @@ def compute_sort_key(x):
def update_class_to_generate_to_json(class_to_generate):
- required = _OrderedSet(class_to_generate.get('required', _OrderedSet()))
+ required = _OrderedSet(class_to_generate.get("required", _OrderedSet()))
prop_name_and_prop = extract_prop_name_and_prop(class_to_generate)
- to_dict_body = ['def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)']
+ to_dict_body = ["def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)"]
translate_prop_names = []
for prop_name, prop in prop_name_and_prop:
- if is_variable_to_translate(class_to_generate['name'], prop_name):
+ if is_variable_to_translate(class_to_generate["name"], prop_name):
translate_prop_names.append(prop_name)
for prop_name, prop in prop_name_and_prop:
namespace = dict(prop_name=prop_name, noqa=_get_noqa_for_var(prop_name))
- to_dict_body.append(' %(prop_name)s = self.%(prop_name)s%(noqa)s' % namespace)
+ to_dict_body.append(" %(prop_name)s = self.%(prop_name)s%(noqa)s" % namespace)
- if prop.get('type') == 'array':
+ if prop.get("type") == "array":
to_dict_body.append(' if %(prop_name)s and hasattr(%(prop_name)s[0], "to_dict"):' % namespace)
- to_dict_body.append(' %(prop_name)s = [x.to_dict() for x in %(prop_name)s]' % namespace)
+ to_dict_body.append(" %(prop_name)s = [x.to_dict() for x in %(prop_name)s]" % namespace)
if translate_prop_names:
- to_dict_body.append(' if update_ids_to_dap:')
+ to_dict_body.append(" if update_ids_to_dap:")
for prop_name in translate_prop_names:
namespace = dict(prop_name=prop_name, noqa=_get_noqa_for_var(prop_name))
- to_dict_body.append(' if %(prop_name)s is not None:' % namespace)
- to_dict_body.append(' %(prop_name)s = self._translate_id_to_dap(%(prop_name)s)%(noqa)s' % namespace)
+ to_dict_body.append(" if %(prop_name)s is not None:" % namespace)
+ to_dict_body.append(" %(prop_name)s = self._translate_id_to_dap(%(prop_name)s)%(noqa)s" % namespace)
if not translate_prop_names:
update_dict_ids_from_dap_body = []
else:
- update_dict_ids_from_dap_body = ['', '', '@classmethod', 'def update_dict_ids_from_dap(cls, dct):']
+ update_dict_ids_from_dap_body = ["", "", "@classmethod", "def update_dict_ids_from_dap(cls, dct):"]
for prop_name in translate_prop_names:
namespace = dict(prop_name=prop_name)
- update_dict_ids_from_dap_body.append(' if %(prop_name)r in dct:' % namespace)
- update_dict_ids_from_dap_body.append(' dct[%(prop_name)r] = cls._translate_id_from_dap(dct[%(prop_name)r])' % namespace)
- update_dict_ids_from_dap_body.append(' return dct')
+ update_dict_ids_from_dap_body.append(" if %(prop_name)r in dct:" % namespace)
+ update_dict_ids_from_dap_body.append(" dct[%(prop_name)r] = cls._translate_id_from_dap(dct[%(prop_name)r])" % namespace)
+ update_dict_ids_from_dap_body.append(" return dct")
- class_to_generate['update_dict_ids_from_dap'] = _indent_lines('\n'.join(update_dict_ids_from_dap_body))
+ class_to_generate["update_dict_ids_from_dap"] = _indent_lines("\n".join(update_dict_ids_from_dap_body))
- to_dict_body.append(' dct = {')
+ to_dict_body.append(" dct = {")
first_not_required = False
for prop_name, prop in prop_name_and_prop:
- use_to_dict = prop['type'].__class__ == Ref and not prop['type'].ref_data.get('is_enum', False)
- is_array = prop['type'] == 'array'
- ref_array_cls_name = ''
+ use_to_dict = prop["type"].__class__ == Ref and not prop["type"].ref_data.get("is_enum", False)
+ is_array = prop["type"] == "array"
+ ref_array_cls_name = ""
if is_array:
- ref = prop['items'].get('$ref')
+ ref = prop["items"].get("$ref")
if ref is not None:
- ref_array_cls_name = ref.split('/')[-1]
+ ref_array_cls_name = ref.split("/")[-1]
namespace = dict(prop_name=prop_name, ref_array_cls_name=ref_array_cls_name)
if prop_name in required:
if use_to_dict:
- to_dict_body.append(' %(prop_name)r: %(prop_name)s.to_dict(update_ids_to_dap=update_ids_to_dap),' % namespace)
+ to_dict_body.append(" %(prop_name)r: %(prop_name)s.to_dict(update_ids_to_dap=update_ids_to_dap)," % namespace)
else:
if ref_array_cls_name:
- to_dict_body.append(' %(prop_name)r: [%(ref_array_cls_name)s.update_dict_ids_to_dap(o) for o in %(prop_name)s] if (update_ids_to_dap and %(prop_name)s) else %(prop_name)s,' % namespace)
+ to_dict_body.append(
+ " %(prop_name)r: [%(ref_array_cls_name)s.update_dict_ids_to_dap(o) for o in %(prop_name)s] if (update_ids_to_dap and %(prop_name)s) else %(prop_name)s,"
+ % namespace
+ )
else:
- to_dict_body.append(' %(prop_name)r: %(prop_name)s,' % namespace)
+ to_dict_body.append(" %(prop_name)r: %(prop_name)s," % namespace)
else:
if not first_not_required:
first_not_required = True
- to_dict_body.append(' }')
+ to_dict_body.append(" }")
- to_dict_body.append(' if %(prop_name)s is not None:' % namespace)
+ to_dict_body.append(" if %(prop_name)s is not None:" % namespace)
if use_to_dict:
- to_dict_body.append(' dct[%(prop_name)r] = %(prop_name)s.to_dict(update_ids_to_dap=update_ids_to_dap)' % namespace)
+ to_dict_body.append(" dct[%(prop_name)r] = %(prop_name)s.to_dict(update_ids_to_dap=update_ids_to_dap)" % namespace)
else:
if ref_array_cls_name:
- to_dict_body.append(' dct[%(prop_name)r] = [%(ref_array_cls_name)s.update_dict_ids_to_dap(o) for o in %(prop_name)s] if (update_ids_to_dap and %(prop_name)s) else %(prop_name)s' % namespace)
+ to_dict_body.append(
+ " dct[%(prop_name)r] = [%(ref_array_cls_name)s.update_dict_ids_to_dap(o) for o in %(prop_name)s] if (update_ids_to_dap and %(prop_name)s) else %(prop_name)s"
+ % namespace
+ )
else:
- to_dict_body.append(' dct[%(prop_name)r] = %(prop_name)s' % namespace)
+ to_dict_body.append(" dct[%(prop_name)r] = %(prop_name)s" % namespace)
if not first_not_required:
first_not_required = True
- to_dict_body.append(' }')
+ to_dict_body.append(" }")
- to_dict_body.append(' dct.update(self.kwargs)')
- to_dict_body.append(' return dct')
+ to_dict_body.append(" dct.update(self.kwargs)")
+ to_dict_body.append(" return dct")
- class_to_generate['to_dict'] = _indent_lines('\n'.join(to_dict_body))
+ class_to_generate["to_dict"] = _indent_lines("\n".join(to_dict_body))
if not translate_prop_names:
update_dict_ids_to_dap_body = []
else:
- update_dict_ids_to_dap_body = ['', '', '@classmethod', 'def update_dict_ids_to_dap(cls, dct):']
+ update_dict_ids_to_dap_body = ["", "", "@classmethod", "def update_dict_ids_to_dap(cls, dct):"]
for prop_name in translate_prop_names:
namespace = dict(prop_name=prop_name)
- update_dict_ids_to_dap_body.append(' if %(prop_name)r in dct:' % namespace)
- update_dict_ids_to_dap_body.append(' dct[%(prop_name)r] = cls._translate_id_to_dap(dct[%(prop_name)r])' % namespace)
- update_dict_ids_to_dap_body.append(' return dct')
+ update_dict_ids_to_dap_body.append(" if %(prop_name)r in dct:" % namespace)
+ update_dict_ids_to_dap_body.append(" dct[%(prop_name)r] = cls._translate_id_to_dap(dct[%(prop_name)r])" % namespace)
+ update_dict_ids_to_dap_body.append(" return dct")
- class_to_generate['update_dict_ids_to_dap'] = _indent_lines('\n'.join(update_dict_ids_to_dap_body))
+ class_to_generate["update_dict_ids_to_dap"] = _indent_lines("\n".join(update_dict_ids_to_dap_body))
def update_class_to_generate_init(class_to_generate):
@@ -374,82 +381,84 @@ def update_class_to_generate_init(class_to_generate):
init_body = []
docstring = []
- required = _OrderedSet(class_to_generate.get('required', _OrderedSet()))
+ required = _OrderedSet(class_to_generate.get("required", _OrderedSet()))
prop_name_and_prop = extract_prop_name_and_prop(class_to_generate)
translate_prop_names = []
for prop_name, prop in prop_name_and_prop:
- if is_variable_to_translate(class_to_generate['name'], prop_name):
+ if is_variable_to_translate(class_to_generate["name"], prop_name):
translate_prop_names.append(prop_name)
- enum = prop.get('enum')
+ enum = prop.get("enum")
if enum and len(enum) == 1:
- init_body.append(' self.%(prop_name)s = %(enum)r' % dict(prop_name=prop_name, enum=next(iter(enum))))
+ init_body.append(" self.%(prop_name)s = %(enum)r" % dict(prop_name=prop_name, enum=next(iter(enum))))
else:
if prop_name in required:
- if prop_name == 'seq':
- args.append(prop_name + '=-1')
+ if prop_name == "seq":
+ args.append(prop_name + "=-1")
else:
args.append(prop_name)
else:
- args.append(prop_name + '=None')
+ args.append(prop_name + "=None")
- if prop['type'].__class__ == Ref:
- ref = prop['type']
+ if prop["type"].__class__ == Ref:
+ ref = prop["type"]
ref_data = ref.ref_data
- if ref_data.get('is_enum', False):
- init_body.append(' if %s is not None:' % (prop_name,))
- init_body.append(' assert %s in %s.VALID_VALUES' % (prop_name, str(ref)))
- init_body.append(' self.%(prop_name)s = %(prop_name)s' % dict(
- prop_name=prop_name))
+ if ref_data.get("is_enum", False):
+ init_body.append(" if %s is not None:" % (prop_name,))
+ init_body.append(" assert %s in %s.VALID_VALUES" % (prop_name, str(ref)))
+ init_body.append(" self.%(prop_name)s = %(prop_name)s" % dict(prop_name=prop_name))
else:
- namespace = dict(
- prop_name=prop_name,
- ref_name=str(ref)
- )
- init_body.append(' if %(prop_name)s is None:' % namespace)
- init_body.append(' self.%(prop_name)s = %(ref_name)s()' % namespace)
- init_body.append(' else:')
- init_body.append(' self.%(prop_name)s = %(ref_name)s(update_ids_from_dap=update_ids_from_dap, **%(prop_name)s) if %(prop_name)s.__class__ != %(ref_name)s else %(prop_name)s' % namespace
+ namespace = dict(prop_name=prop_name, ref_name=str(ref))
+ init_body.append(" if %(prop_name)s is None:" % namespace)
+ init_body.append(" self.%(prop_name)s = %(ref_name)s()" % namespace)
+ init_body.append(" else:")
+ init_body.append(
+ " self.%(prop_name)s = %(ref_name)s(update_ids_from_dap=update_ids_from_dap, **%(prop_name)s) if %(prop_name)s.__class__ != %(ref_name)s else %(prop_name)s"
+ % namespace
)
else:
- init_body.append(' self.%(prop_name)s = %(prop_name)s' % dict(prop_name=prop_name))
+ init_body.append(" self.%(prop_name)s = %(prop_name)s" % dict(prop_name=prop_name))
- if prop['type'] == 'array':
- ref = prop['items'].get('$ref')
+ if prop["type"] == "array":
+ ref = prop["items"].get("$ref")
if ref is not None:
- ref_array_cls_name = ref.split('/')[-1]
- init_body.append(' if update_ids_from_dap and self.%(prop_name)s:' % dict(prop_name=prop_name))
- init_body.append(' for o in self.%(prop_name)s:' % dict(prop_name=prop_name))
- init_body.append(' %(ref_array_cls_name)s.update_dict_ids_from_dap(o)' % dict(ref_array_cls_name=ref_array_cls_name))
+ ref_array_cls_name = ref.split("/")[-1]
+ init_body.append(" if update_ids_from_dap and self.%(prop_name)s:" % dict(prop_name=prop_name))
+ init_body.append(" for o in self.%(prop_name)s:" % dict(prop_name=prop_name))
+ init_body.append(
+ " %(ref_array_cls_name)s.update_dict_ids_from_dap(o)" % dict(ref_array_cls_name=ref_array_cls_name)
+ )
- prop_type = prop['type']
- prop_description = prop.get('description', '')
+ prop_type = prop["type"]
+ prop_description = prop.get("description", "")
if isinstance(prop_description, (list, tuple)):
- prop_description = '\n '.join(prop_description)
+ prop_description = "\n ".join(prop_description)
- docstring.append(':param %(prop_type)s %(prop_name)s: %(prop_description)s' % dict(
- prop_type=prop_type, prop_name=prop_name, prop_description=prop_description))
+ docstring.append(
+ ":param %(prop_type)s %(prop_name)s: %(prop_description)s"
+ % dict(prop_type=prop_type, prop_name=prop_name, prop_description=prop_description)
+ )
if translate_prop_names:
- init_body.append(' if update_ids_from_dap:')
+ init_body.append(" if update_ids_from_dap:")
for prop_name in translate_prop_names:
- init_body.append(' self.%(prop_name)s = self._translate_id_from_dap(self.%(prop_name)s)' % dict(prop_name=prop_name))
+ init_body.append(" self.%(prop_name)s = self._translate_id_from_dap(self.%(prop_name)s)" % dict(prop_name=prop_name))
- docstring = _indent_lines('\n'.join(docstring))
- init_body = '\n'.join(init_body)
+ docstring = _indent_lines("\n".join(docstring))
+ init_body = "\n".join(init_body)
# Actually bundle the whole __init__ from the parts.
- args = ', '.join(args)
+ args = ", ".join(args)
if args:
- args = ', ' + args
+ args = ", " + args
# Note: added kwargs because some messages are expected to be extended by the user (so, we'll actually
# make all extendable so that we don't have to worry about which ones -- we loose a little on typing,
# but may be better than doing a allow list based on something only pointed out in the documentation).
- class_to_generate['init'] = '''def __init__(self%(args)s, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ class_to_generate["init"] = '''def __init__(self%(args)s, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
%(docstring)s
"""
@@ -457,7 +466,7 @@ def update_class_to_generate_init(class_to_generate):
self.kwargs = kwargs
''' % dict(args=args, init_body=init_body, docstring=docstring)
- class_to_generate['init'] = _indent_lines(class_to_generate['init'])
+ class_to_generate["init"] = _indent_lines(class_to_generate["init"])
def update_class_to_generate_props(class_to_generate):
@@ -466,48 +475,52 @@ def update_class_to_generate_props(class_to_generate):
def default(o):
if isinstance(o, Ref):
return o.ref
- raise AssertionError('Unhandled: %s' % (o,))
+ raise AssertionError("Unhandled: %s" % (o,))
- properties = class_to_generate['properties']
- class_to_generate['props'] = ' __props__ = %s' % _indent_lines(
- json.dumps(properties, indent=4, default=default)).strip()
+ properties = class_to_generate["properties"]
+ class_to_generate["props"] = (
+ " __props__ = %s" % _indent_lines(json.dumps(properties, indent=4, default=default).replace("true", "True")).strip()
+ )
def update_class_to_generate_refs(class_to_generate):
- properties = class_to_generate['properties']
- class_to_generate['refs'] = ' __refs__ = %s' % _OrderedSet(
- key for (key, val) in properties.items() if val['type'].__class__ == Ref).set_repr()
+ properties = class_to_generate["properties"]
+ class_to_generate["refs"] = (
+ " __refs__ = %s" % _OrderedSet(key for (key, val) in properties.items() if val["type"].__class__ == Ref).set_repr()
+ )
def update_class_to_generate_enums(class_to_generate):
- class_to_generate['enums'] = ''
- if class_to_generate.get('is_enum', False):
- enums = ''
- for enum in class_to_generate['enum_values']:
- enums += ' %s = %r\n' % (enum.upper(), enum)
- enums += '\n'
- enums += ' VALID_VALUES = %s\n\n' % _OrderedSet(class_to_generate['enum_values']).set_repr()
- class_to_generate['enums'] = enums
+ class_to_generate["enums"] = ""
+ if class_to_generate.get("is_enum", False):
+ enums = ""
+ for enum in class_to_generate["enum_values"]:
+ enums += " %s = %r\n" % (enum.upper(), enum)
+ enums += "\n"
+ enums += " VALID_VALUES = %s\n\n" % _OrderedSet(class_to_generate["enum_values"]).set_repr()
+ class_to_generate["enums"] = enums
def update_class_to_generate_objects(classes_to_generate, class_to_generate):
- properties = class_to_generate['properties']
+ properties = class_to_generate["properties"]
for key, val in properties.items():
- if 'type' not in val:
- val['type'] = 'TypeNA'
+ if "type" not in val:
+ val["type"] = "TypeNA"
continue
- if val['type'] == 'object':
+ if val["type"] == "object":
create_new = val.copy()
- create_new.update({
- 'name': '%s%s' % (class_to_generate['name'], key.title()),
- 'description': ' "%s" of %s' % (key, class_to_generate['name'])
- })
- if 'properties' not in create_new:
- create_new['properties'] = {}
-
- assert create_new['name'] not in classes_to_generate
- classes_to_generate[create_new['name']] = create_new
+ create_new.update(
+ {
+ "name": "%s%s" % (class_to_generate["name"], key.title()),
+ "description": ' "%s" of %s' % (key, class_to_generate["name"]),
+ }
+ )
+ if "properties" not in create_new:
+ create_new["properties"] = {}
+
+ assert create_new["name"] not in classes_to_generate
+ classes_to_generate[create_new["name"]] = create_new
update_class_to_generate_type(classes_to_generate, create_new)
update_class_to_generate_props(create_new)
@@ -515,8 +528,8 @@ def update_class_to_generate_objects(classes_to_generate, class_to_generate):
# Update nested object types
update_class_to_generate_objects(classes_to_generate, create_new)
- val['type'] = Ref(create_new['name'], classes_to_generate[create_new['name']])
- val.pop('properties', None)
+ val["type"] = Ref(create_new["name"], classes_to_generate[create_new["name"]])
+ val.pop("properties", None)
def gen_debugger_protocol():
@@ -524,7 +537,7 @@ def gen_debugger_protocol():
import sys
if sys.version_info[:2] < (3, 6):
- raise AssertionError('Must be run with Python 3.6 onwards (to keep dict order).')
+ raise AssertionError("Must be run with Python 3.6 onwards (to keep dict order).")
classes_to_generate = create_classes_to_generate_structure(load_schema_data())
classes_to_generate.update(create_classes_to_generate_structure(load_custom_schema_data()))
@@ -564,29 +577,28 @@ class %(name)s(BaseSchema):
'''
contents = []
- contents.append('# coding: utf-8')
- contents.append('# Automatically generated code.')
- contents.append('# Do not edit manually.')
- contents.append('# Generated by running: %s' % os.path.basename(__file__))
- contents.append('from .pydevd_base_schema import BaseSchema, register, register_request, register_response, register_event')
- contents.append('')
+ contents.append("# coding: utf-8")
+ contents.append("# Automatically generated code.")
+ contents.append("# Do not edit manually.")
+ contents.append("# Generated by running: %s" % os.path.basename(__file__))
+ contents.append("from .pydevd_base_schema import BaseSchema, register, register_request, register_response, register_event")
+ contents.append("")
for class_to_generate in classes_to_generate.values():
contents.append(class_template % class_to_generate)
parent_dir = os.path.dirname(__file__)
- schema = os.path.join(parent_dir, 'pydevd_schema.py')
- with open(schema, 'w', encoding='utf-8') as stream:
- stream.write('\n'.join(contents))
+ schema = os.path.join(parent_dir, "pydevd_schema.py")
+ with open(schema, "w", encoding="utf-8") as stream:
+ stream.write("\n".join(contents))
-def _indent_lines(lines, indent=' '):
+def _indent_lines(lines, indent=" "):
out_lines = []
for line in lines.splitlines(keepends=True):
out_lines.append(indent + line)
- return ''.join(out_lines)
-
+ return "".join(out_lines)
-if __name__ == '__main__':
+if __name__ == "__main__":
gen_debugger_protocol()
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json b/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json
index 8bbe94419..406edfcba 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json
@@ -14,7 +14,7 @@
"properties": {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request."
},
"type": {
"type": "string",
@@ -84,7 +84,7 @@
},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
+ "description": "Outcome of the request.\nIf true, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`)."
},
"command": {
"type": "string",
@@ -92,15 +92,16 @@
},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [ "cancelled" ],
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": [ "cancelled", "notStopped" ],
"enumDescriptions": [
- "request was cancelled."
+ "the request was cancelled.",
+ "the request may be retried once the adapter is in a 'stopped' state."
]
},
"body": {
"type": [ "array", "boolean", "integer", "null", "number" , "object", "string" ],
- "description": "Contains request result if success is true and optional error details if success is false."
+ "description": "Contains request result if success is true and error details if success is false."
}
},
"required": [ "type", "request_seq", "success", "command" ]
@@ -110,14 +111,14 @@
"ErrorResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "On error (whenever 'success' is false), the body can provide more details.",
+ "description": "On error (whenever `success` is false), the body can provide more details.",
"properties": {
"body": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Message",
- "description": "An optional, structured error message."
+ "description": "A structured error message."
}
}
}
@@ -129,7 +130,7 @@
"CancelRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "The 'cancel' request is used by the frontend in two situations:\n- to indicate that it is no longer interested in the result produced by a specific request issued earlier\n- to cancel a progress sequence. Clients should only call this request if the capability 'supportsCancelRequest' is true.\nThis request has a hint characteristic: a debug adapter can only be expected to make a 'best effort' in honouring this request but there are no guarantees.\nThe 'cancel' request may return an error if it could not cancel an operation but a frontend should refrain from presenting this error to end users.\nA frontend client should only call this request if the capability 'supportsCancelRequest' is true.\nThe request that got canceled still needs to send a response back. This can either be a normal result ('success' attribute true)\nor an error response ('success' attribute false and the 'message' set to 'cancelled').\nReturning partial results from a cancelled request is possible but please note that a frontend client has no generic way for detecting that a response is partial or not.\n The progress that got cancelled still needs to send a 'progressEnd' event back.\n A client should not assume that progress just got cancelled after sending the 'cancel' request.",
+ "description": "The `cancel` request is used by the client in two situations:\n- to indicate that it is no longer interested in the result produced by a specific request issued earlier\n- to cancel a progress sequence.\nClients should only call this request if the corresponding capability `supportsCancelRequest` is true.\nThis request has a hint characteristic: a debug adapter can only be expected to make a 'best effort' in honoring this request but there are no guarantees.\nThe `cancel` request may return an error if it could not cancel an operation but a client should refrain from presenting this error to end users.\nThe request that got cancelled still needs to send a response back. This can either be a normal result (`success` attribute true) or an error response (`success` attribute false and the `message` set to `cancelled`).\nReturning partial results from a cancelled request is possible but please note that a client has no generic way for detecting that a response is partial or not.\nThe progress that got cancelled still needs to send a `progressEnd` event back.\n A client should not assume that progress just got cancelled after sending the `cancel` request.",
"properties": {
"command": {
"type": "string",
@@ -144,22 +145,22 @@
},
"CancelArguments": {
"type": "object",
- "description": "Arguments for 'cancel' request.",
+ "description": "Arguments for `cancel` request.",
"properties": {
"requestId": {
"type": "integer",
- "description": "The ID (attribute 'seq') of the request to cancel. If missing no request is cancelled.\nBoth a 'requestId' and a 'progressId' can be specified in one request."
+ "description": "The ID (attribute `seq`) of the request to cancel. If missing no request is cancelled.\nBoth a `requestId` and a `progressId` can be specified in one request."
},
"progressId": {
"type": "string",
- "description": "The ID (attribute 'progressId') of the progress to cancel. If missing no progress is cancelled.\nBoth a 'requestId' and a 'progressId' can be specified in one request."
+ "description": "The ID (attribute `progressId`) of the progress to cancel. If missing no progress is cancelled.\nBoth a `requestId` and a `progressId` can be specified in one request."
}
}
},
"CancelResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'cancel' request. This is just an acknowledgement, so no body field is required."
+ "description": "Response to `cancel` request. This is just an acknowledgement, so no body field is required."
}]
},
@@ -167,7 +168,7 @@
"allOf": [ { "$ref": "#/definitions/Event" }, {
"type": "object",
"title": "Events",
- "description": "This event indicates that the debug adapter is ready to accept configuration requests (e.g. SetBreakpointsRequest, SetExceptionBreakpointsRequest).\nA debug adapter is expected to send this event when it is ready to accept configuration requests (but not before the 'initialize' request has finished).\nThe sequence of events/requests is as follows:\n- adapters sends 'initialized' event (after the 'initialize' request has returned)\n- frontend sends zero or more 'setBreakpoints' requests\n- frontend sends one 'setFunctionBreakpoints' request (if capability 'supportsFunctionBreakpoints' is true)\n- frontend sends a 'setExceptionBreakpoints' request if one or more 'exceptionBreakpointFilters' have been defined (or if 'supportsConfigurationDoneRequest' is not defined or false)\n- frontend sends other future configuration requests\n- frontend sends one 'configurationDone' request to indicate the end of the configuration.",
+ "description": "This event indicates that the debug adapter is ready to accept configuration requests (e.g. `setBreakpoints`, `setExceptionBreakpoints`).\nA debug adapter is expected to send this event when it is ready to accept configuration requests (but not before the `initialize` request has finished).\nThe sequence of events/requests is as follows:\n- adapters sends `initialized` event (after the `initialize` request has returned)\n- client sends zero or more `setBreakpoints` requests\n- client sends one `setFunctionBreakpoints` request (if corresponding capability `supportsFunctionBreakpoints` is true)\n- client sends a `setExceptionBreakpoints` request if one or more `exceptionBreakpointFilters` have been defined (or if `supportsConfigurationDoneRequest` is not true)\n- client sends other future configuration requests\n- client sends one `configurationDone` request to indicate the end of the configuration.",
"properties": {
"event": {
"type": "string",
@@ -181,7 +182,7 @@
"StoppedEvent": {
"allOf": [ { "$ref": "#/definitions/Event" }, {
"type": "object",
- "description": "The event indicates that the execution of the debuggee has stopped due to some condition.\nThis can be caused by a break point previously set, a stepping request has completed, by executing a debugger statement etc.",
+ "description": "The event indicates that the execution of the debuggee has stopped due to some condition.\nThis can be caused by a breakpoint previously set, a stepping request has completed, by executing a debugger statement etc.",
"properties": {
"event": {
"type": "string",
@@ -192,12 +193,12 @@
"properties": {
"reason": {
"type": "string",
- "description": "The reason for the event.\nFor backward compatibility this string is shown in the UI if the 'description' attribute is missing (but it must not be translated).",
+ "description": "The reason for the event.\nFor backward compatibility this string is shown in the UI if the `description` attribute is missing (but it must not be translated).",
"_enum": [ "step", "breakpoint", "exception", "pause", "entry", "goto", "function breakpoint", "data breakpoint", "instruction breakpoint" ]
},
"description": {
"type": "string",
- "description": "The full reason for the event, e.g. 'Paused on exception'. This string is shown in the UI as is and must be translated."
+ "description": "The full reason for the event, e.g. 'Paused on exception'. This string is shown in the UI as is and can be translated."
},
"threadId": {
"type": "integer",
@@ -205,22 +206,22 @@
},
"preserveFocusHint": {
"type": "boolean",
- "description": "A value of true hints to the frontend that this event should not change the focus."
+ "description": "A value of true hints to the client that this event should not change the focus."
},
"text": {
"type": "string",
- "description": "Additional information. E.g. if reason is 'exception', text contains the exception name. This string is shown in the UI."
+ "description": "Additional information. E.g. if reason is `exception`, text contains the exception name. This string is shown in the UI."
},
"allThreadsStopped": {
"type": "boolean",
- "description": "If 'allThreadsStopped' is true, a debug adapter can announce that all threads have stopped.\n- The client should use this information to enable that all threads can be expanded to access their stacktraces.\n- If the attribute is missing or false, only the thread with the given threadId can be expanded."
+ "description": "If `allThreadsStopped` is true, a debug adapter can announce that all threads have stopped.\n- The client should use this information to enable that all threads can be expanded to access their stacktraces.\n- If the attribute is missing or false, only the thread with the given `threadId` can be expanded."
},
"hitBreakpointIds": {
"type": "array",
"items": {
"type": "integer"
},
- "description": "Ids of the breakpoints that triggered the event. In most cases there will be only a single breakpoint but here are some examples for multiple breakpoints:\n- Different types of breakpoints map to the same location.\n- Multiple source breakpoints get collapsed to the same instruction by the compiler/runtime.\n- Multiple function breakpoints with different function names map to the same location."
+ "description": "Ids of the breakpoints that triggered the event. In most cases there is only a single breakpoint but here are some examples for multiple breakpoints:\n- Different types of breakpoints map to the same location.\n- Multiple source breakpoints get collapsed to the same instruction by the compiler/runtime.\n- Multiple function breakpoints with different function names map to the same location."
}
},
"required": [ "reason" ]
@@ -233,7 +234,7 @@
"ContinuedEvent": {
"allOf": [ { "$ref": "#/definitions/Event" }, {
"type": "object",
- "description": "The event indicates that the execution of the debuggee has continued.\nPlease note: a debug adapter is not expected to send this event in response to a request that implies that execution continues, e.g. 'launch' or 'continue'.\nIt is only necessary to send a 'continued' event if there was no previous request that implied this.",
+ "description": "The event indicates that the execution of the debuggee has continued.\nPlease note: a debug adapter is not expected to send this event in response to a request that implies that execution continues, e.g. `launch` or `continue`.\nIt is only necessary to send a `continued` event if there was no previous request that implied this.",
"properties": {
"event": {
"type": "string",
@@ -248,7 +249,7 @@
},
"allThreadsContinued": {
"type": "boolean",
- "description": "If 'allThreadsContinued' is true, a debug adapter can announce that all threads have continued."
+ "description": "If `allThreadsContinued` is true, a debug adapter can announce that all threads have continued."
}
},
"required": [ "threadId" ]
@@ -296,7 +297,7 @@
"properties": {
"restart": {
"type": [ "array", "boolean", "integer", "null", "number", "object", "string" ],
- "description": "A debug adapter may set 'restart' to true (or to an arbitrary object) to request that the front end restarts the session.\nThe value is not interpreted by the client and passed unmodified as an attribute '__restart' to the 'launch' and 'attach' requests."
+ "description": "A debug adapter may set `restart` to true (or to an arbitrary object) to request that the client restarts the session.\nThe value is not interpreted by the client and passed unmodified as an attribute `__restart` to the `launch` and `attach` requests."
}
}
}
@@ -348,11 +349,11 @@
"properties": {
"category": {
"type": "string",
- "description": "The output category. If not specified or if the category is not understand by the client, 'console' is assumed.",
+ "description": "The output category. If not specified or if the category is not understood by the client, `console` is assumed.",
"_enum": [ "console", "important", "stdout", "stderr", "telemetry" ],
"enumDescriptions": [
"Show the output in the client's default message UI, e.g. a 'debug console'. This category should only be used for informational output from the debugger (as opposed to the debuggee).",
- "A hint for the client to show the ouput in the client's UI for important and highly visible information, e.g. as a popup notification. This category should only be used for important messages from the debugger (as opposed to the debuggee). Since this category value is a hint, clients might ignore the hint and assume the 'console' category.",
+ "A hint for the client to show the output in the client's UI for important and highly visible information, e.g. as a popup notification. This category should only be used for important messages from the debugger (as opposed to the debuggee). Since this category value is a hint, clients might ignore the hint and assume the `console` category.",
"Show the output as normal program output from the debuggee.",
"Show the output as error program output from the debuggee.",
"Send the output to telemetry instead of showing it to the user."
@@ -367,30 +368,30 @@
"description": "Support for keeping an output log organized by grouping related messages.",
"enum": [ "start", "startCollapsed", "end" ],
"enumDescriptions": [
- "Start a new group in expanded mode. Subsequent output events are members of the group and should be shown indented.\nThe 'output' attribute becomes the name of the group and is not indented.",
- "Start a new group in collapsed mode. Subsequent output events are members of the group and should be shown indented (as soon as the group is expanded).\nThe 'output' attribute becomes the name of the group and is not indented.",
- "End the current group and decreases the indentation of subsequent output events.\nA non empty 'output' attribute is shown as the unindented end of the group."
+ "Start a new group in expanded mode. Subsequent output events are members of the group and should be shown indented.\nThe `output` attribute becomes the name of the group and is not indented.",
+ "Start a new group in collapsed mode. Subsequent output events are members of the group and should be shown indented (as soon as the group is expanded).\nThe `output` attribute becomes the name of the group and is not indented.",
+ "End the current group and decrease the indentation of subsequent output events.\nA non-empty `output` attribute is shown as the unindented end of the group."
]
},
"variablesReference": {
"type": "integer",
- "description": "If an attribute 'variablesReference' exists and its value is > 0, the output contains objects which can be retrieved by passing 'variablesReference' to the 'variables' request. The value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "If an attribute `variablesReference` exists and its value is > 0, the output contains objects which can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details."
},
"source": {
"$ref": "#/definitions/Source",
- "description": "An optional source location where the output was produced."
+ "description": "The source location where the output was produced."
},
"line": {
"type": "integer",
- "description": "An optional source location line where the output was produced."
+ "description": "The source location's line where the output was produced."
},
"column": {
"type": "integer",
- "description": "An optional source location column where the output was produced."
+ "description": "The position in `line` where the output was produced. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based."
},
"data": {
"type": [ "array", "boolean", "integer", "null", "number" , "object", "string" ],
- "description": "Optional data to report. For the 'telemetry' category the data will be sent to telemetry, for the other categories the data is shown in JSON format."
+ "description": "Additional data to report. For the `telemetry` category the data is sent to telemetry, for the other categories the data is shown in JSON format."
}
},
"required": ["output"]
@@ -419,7 +420,7 @@
},
"breakpoint": {
"$ref": "#/definitions/Breakpoint",
- "description": "The 'id' attribute is used to find the target breakpoint and the other attributes are used as the new values."
+ "description": "The `id` attribute is used to find the target breakpoint, the other attributes are used as the new values."
}
},
"required": [ "reason", "breakpoint" ]
@@ -448,7 +449,7 @@
},
"module": {
"$ref": "#/definitions/Module",
- "description": "The new, changed, or removed module. In case of 'removed' only the module id is used."
+ "description": "The new, changed, or removed module. In case of `removed` only the module id is used."
}
},
"required": [ "reason", "module" ]
@@ -507,7 +508,7 @@
},
"systemProcessId": {
"type": "integer",
- "description": "The system process id of the debugged process. This property will be missing for non-system processes."
+ "description": "The system process id of the debugged process. This property is missing for non-system processes."
},
"isLocalProcess": {
"type": "boolean",
@@ -539,7 +540,7 @@
"CapabilitiesEvent": {
"allOf": [ { "$ref": "#/definitions/Event" }, {
"type": "object",
- "description": "The event indicates that one or more capabilities have changed.\nSince the capabilities are dependent on the frontend and its UI, it might not be possible to change that at random times (or too late).\nConsequently this event has a hint characteristic: a frontend can only be expected to make a 'best effort' in honouring individual capabilities but there are no guarantees.\nOnly changed capabilities need to be included, all other capabilities keep their values.",
+ "description": "The event indicates that one or more capabilities have changed.\nSince the capabilities are dependent on the client and its UI, it might not be possible to change that at random times (or too late).\nConsequently this event has a hint characteristic: a client can only be expected to make a 'best effort' in honoring individual capabilities but there are no guarantees.\nOnly changed capabilities need to be included, all other capabilities keep their values.",
"properties": {
"event": {
"type": "string",
@@ -563,7 +564,7 @@
"ProgressStartEvent": {
"allOf": [ { "$ref": "#/definitions/Event" }, {
"type": "object",
- "description": "The event signals that a long running operation is about to start and\nprovides additional information for the client to set up a corresponding progress and cancellation UI.\nThe client is free to delay the showing of the UI in order to reduce flicker.\nThis event should only be sent if the client has passed the value true for the 'supportsProgressReporting' capability of the 'initialize' request.",
+ "description": "The event signals that a long running operation is about to start and provides additional information for the client to set up a corresponding progress and cancellation UI.\nThe client is free to delay the showing of the UI in order to reduce flicker.\nThis event should only be sent if the corresponding capability `supportsProgressReporting` is true.",
"properties": {
"event": {
"type": "string",
@@ -574,27 +575,27 @@
"properties": {
"progressId": {
"type": "string",
- "description": "An ID that must be used in subsequent 'progressUpdate' and 'progressEnd' events to make them refer to the same progress reporting.\nIDs must be unique within a debug session."
+ "description": "An ID that can be used in subsequent `progressUpdate` and `progressEnd` events to make them refer to the same progress reporting.\nIDs must be unique within a debug session."
},
"title": {
"type": "string",
- "description": "Mandatory (short) title of the progress reporting. Shown in the UI to describe the long running operation."
+ "description": "Short title of the progress reporting. Shown in the UI to describe the long running operation."
},
"requestId": {
"type": "integer",
- "description": "The request ID that this progress report is related to. If specified a debug adapter is expected to emit\nprogress events for the long running request until the request has been either completed or cancelled.\nIf the request ID is omitted, the progress report is assumed to be related to some general activity of the debug adapter."
+ "description": "The request ID that this progress report is related to. If specified a debug adapter is expected to emit progress events for the long running request until the request has been either completed or cancelled.\nIf the request ID is omitted, the progress report is assumed to be related to some general activity of the debug adapter."
},
"cancellable": {
"type": "boolean",
- "description": "If true, the request that reports progress may be canceled with a 'cancel' request.\nSo this property basically controls whether the client should use UX that supports cancellation.\nClients that don't support cancellation are allowed to ignore the setting."
+ "description": "If true, the request that reports progress may be cancelled with a `cancel` request.\nSo this property basically controls whether the client should use UX that supports cancellation.\nClients that don't support cancellation are allowed to ignore the setting."
},
"message": {
"type": "string",
- "description": "Optional, more detailed progress message."
+ "description": "More detailed progress message."
},
"percentage": {
"type": "number",
- "description": "Optional progress percentage to display (value range: 0 to 100). If omitted no percentage will be shown."
+ "description": "Progress percentage to display (value range: 0 to 100). If omitted no percentage is shown."
}
},
"required": [ "progressId", "title" ]
@@ -607,7 +608,7 @@
"ProgressUpdateEvent": {
"allOf": [ { "$ref": "#/definitions/Event" }, {
"type": "object",
- "description": "The event signals that the progress reporting needs to updated with a new message and/or percentage.\nThe client does not have to update the UI immediately, but the clients needs to keep track of the message and/or percentage values.\nThis event should only be sent if the client has passed the value true for the 'supportsProgressReporting' capability of the 'initialize' request.",
+ "description": "The event signals that the progress reporting needs to be updated with a new message and/or percentage.\nThe client does not have to update the UI immediately, but the clients needs to keep track of the message and/or percentage values.\nThis event should only be sent if the corresponding capability `supportsProgressReporting` is true.",
"properties": {
"event": {
"type": "string",
@@ -618,15 +619,15 @@
"properties": {
"progressId": {
"type": "string",
- "description": "The ID that was introduced in the initial 'progressStart' event."
+ "description": "The ID that was introduced in the initial `progressStart` event."
},
"message": {
"type": "string",
- "description": "Optional, more detailed progress message. If omitted, the previous message (if any) is used."
+ "description": "More detailed progress message. If omitted, the previous message (if any) is used."
},
"percentage": {
"type": "number",
- "description": "Optional progress percentage to display (value range: 0 to 100). If omitted no percentage will be shown."
+ "description": "Progress percentage to display (value range: 0 to 100). If omitted no percentage is shown."
}
},
"required": [ "progressId" ]
@@ -639,7 +640,7 @@
"ProgressEndEvent": {
"allOf": [ { "$ref": "#/definitions/Event" }, {
"type": "object",
- "description": "The event signals the end of the progress reporting with an optional final message.\nThis event should only be sent if the client has passed the value true for the 'supportsProgressReporting' capability of the 'initialize' request.",
+ "description": "The event signals the end of the progress reporting with a final message.\nThis event should only be sent if the corresponding capability `supportsProgressReporting` is true.",
"properties": {
"event": {
"type": "string",
@@ -650,11 +651,11 @@
"properties": {
"progressId": {
"type": "string",
- "description": "The ID that was introduced in the initial 'ProgressStartEvent'."
+ "description": "The ID that was introduced in the initial `ProgressStartEvent`."
},
"message": {
"type": "string",
- "description": "Optional, more detailed progress message. If omitted, the previous message (if any) is used."
+ "description": "More detailed progress message. If omitted, the previous message (if any) is used."
}
},
"required": [ "progressId" ]
@@ -667,7 +668,7 @@
"InvalidatedEvent": {
"allOf": [ { "$ref": "#/definitions/Event" }, {
"type": "object",
- "description": "This event signals that some state in the debug adapter has changed and requires that the client needs to re-render the data snapshot previously requested.\nDebug adapters do not have to emit this event for runtime changes like stopped or thread events because in that case the client refetches the new state anyway. But the event can be used for example to refresh the UI after rendering formatting has changed in the debug adapter.\nThis event should only be sent if the debug adapter has received a value true for the 'supportsInvalidatedEvent' capability of the 'initialize' request.",
+ "description": "This event signals that some state in the debug adapter has changed and requires that the client needs to re-render the data snapshot previously requested.\nDebug adapters do not have to emit this event for runtime changes like stopped or thread events because in that case the client refetches the new state anyway. But the event can be used for example to refresh the UI after rendering formatting has changed in the debug adapter.\nThis event should only be sent if the corresponding capability `supportsInvalidatedEvent` is true.",
"properties": {
"event": {
"type": "string",
@@ -678,7 +679,7 @@
"properties": {
"areas": {
"type": "array",
- "description": "Optional set of logical areas that got invalidated. This property has a hint characteristic: a client can only be expected to make a 'best effort' in honouring the areas but there are no guarantees. If this property is missing, empty, or if values are not understand the client should assume a single value 'all'.",
+ "description": "Set of logical areas that got invalidated. This property has a hint characteristic: a client can only be expected to make a 'best effort' in honoring the areas but there are no guarantees. If this property is missing, empty, or if values are not understood, the client should assume a single value `all`.",
"items": {
"$ref": "#/definitions/InvalidatedAreas"
}
@@ -689,7 +690,7 @@
},
"stackFrameId": {
"type": "integer",
- "description": "If specified, the client only needs to refetch data related to this stack frame (and the 'threadId' is ignored)."
+ "description": "If specified, the client only needs to refetch data related to this stack frame (and the `threadId` is ignored)."
}
}
}
@@ -701,7 +702,7 @@
"MemoryEvent": {
"allOf": [ { "$ref": "#/definitions/Event" }, {
"type": "object",
- "description": "This event indicates that some memory range has been updated. It should only be sent if the debug adapter has received a value true for the `supportsMemoryEvent` capability of the `initialize` request.\nClients typically react to the event by re-issuing a `readMemory` request if they show the memory identified by the `memoryReference` and if the updated memory range overlaps the displayed range. Clients should not make assumptions how individual memory references relate to each other, so they should not assume that they are part of a single continuous address range and might overlap.\nDebug adapters can use this event to indicate that the contents of a memory range has changed due to some other DAP request like `setVariable` or `setExpression`. Debug adapters are not expected to emit this event for each and every memory change of a running program, because that information is typically not available from debuggers and it would flood clients with too many events.",
+ "description": "This event indicates that some memory range has been updated. It should only be sent if the corresponding capability `supportsMemoryEvent` is true.\nClients typically react to the event by re-issuing a `readMemory` request if they show the memory identified by the `memoryReference` and if the updated memory range overlaps the displayed range. Clients should not make assumptions how individual memory references relate to each other, so they should not assume that they are part of a single continuous address range and might overlap.\nDebug adapters can use this event to indicate that the contents of a memory range has changed due to some other request like `setVariable` or `setExpression`. Debug adapters are not expected to emit this event for each and every memory change of a running program, because that information is typically not available from debuggers and it would flood clients with too many events.",
"properties": {
"event": {
"type": "string",
@@ -734,7 +735,7 @@
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
"title": "Reverse Requests",
- "description": "This optional request is sent from the debug adapter to the client to run a command in a terminal.\nThis is typically used to launch the debuggee in a terminal provided by the client.\nThis request should only be called if the client has passed the value true for the 'supportsRunInTerminalRequest' capability of the 'initialize' request.",
+ "description": "This request is sent from the debug adapter to the client to run a command in a terminal.\nThis is typically used to launch the debuggee in a terminal provided by the client.\nThis request should only be called if the corresponding client capability `supportsRunInTerminalRequest` is true.\nClient implementations of `runInTerminal` are free to run the command however they choose including issuing the command to a command line interpreter (aka 'shell'). Argument strings passed to the `runInTerminal` request must arrive verbatim in the command to be run. As a consequence, clients which use a shell are responsible for escaping any special shell characters in the argument strings to prevent them from being interpreted (and modified) by the shell.\nSome users may wish to take advantage of shell processing in the argument strings. For clients which implement `runInTerminal` using an intermediary shell, the `argsCanBeInterpretedByShell` property can be set to true. In this case the client is requested not to escape any special shell characters in the argument strings.",
"properties": {
"command": {
"type": "string",
@@ -749,16 +750,16 @@
},
"RunInTerminalRequestArguments": {
"type": "object",
- "description": "Arguments for 'runInTerminal' request.",
+ "description": "Arguments for `runInTerminal` request.",
"properties": {
"kind": {
"type": "string",
"enum": [ "integrated", "external" ],
- "description": "What kind of terminal to launch."
+ "description": "What kind of terminal to launch. Defaults to `integrated` if not specified."
},
"title": {
"type": "string",
- "description": "Optional title of the terminal."
+ "description": "Title of the terminal."
},
"cwd": {
"type": "string",
@@ -776,8 +777,12 @@
"description": "Environment key-value pairs that are added to or removed from the default environment.",
"additionalProperties": {
"type": [ "string", "null" ],
- "description": "Proper values must be strings. A value of 'null' removes the variable from the environment."
+ "description": "A string is a proper value for an environment variable. The value `null` removes the variable from the environment."
}
+ },
+ "argsCanBeInterpretedByShell": {
+ "type": "boolean",
+ "description": "This property should only be set if the corresponding capability `supportsArgsCanBeInterpretedByShell` is true. If the client uses an intermediary shell to launch the application, then the client must not attempt to escape characters with special meanings for the shell. The user is fully responsible for escaping as needed and that arguments using special characters may not be portable across shells."
}
},
"required": [ "args", "cwd" ]
@@ -785,7 +790,7 @@
"RunInTerminalResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'runInTerminal' request.",
+ "description": "Response to `runInTerminal` request.",
"properties": {
"body": {
"type": "object",
@@ -804,12 +809,72 @@
"required": [ "body" ]
}]
},
+ "StartDebuggingRequest": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/Request"
+ },
+ {
+ "type": "object",
+ "description": "This request is sent from the debug adapter to the client to start a new debug session of the same type as the caller.\nThis request should only be sent if the corresponding client capability `supportsStartDebuggingRequest` is true.\nA client implementation of `startDebugging` should start a new debug session (of the same type as the caller) in the same way that the caller's session was started. If the client supports hierarchical debug sessions, the newly created session can be treated as a child of the caller session.",
+ "properties": {
+ "command": {
+ "type": "string",
+ "enum": [
+ "startDebugging"
+ ]
+ },
+ "arguments": {
+ "$ref": "#/definitions/StartDebuggingRequestArguments"
+ }
+ },
+ "required": [
+ "command",
+ "arguments"
+ ]
+ }
+ ]
+ },
+ "StartDebuggingRequestArguments": {
+ "type": "object",
+ "description": "Arguments for `startDebugging` request.",
+ "properties": {
+ "configuration": {
+ "type": "object",
+ "additionalProperties": true,
+ "description": "Arguments passed to the new debug session. The arguments must only contain properties understood by the `launch` or `attach` requests of the debug adapter and they must not contain any client-specific properties (e.g. `type`) or client-specific features (e.g. substitutable 'variables')."
+ },
+ "request": {
+ "type": "string",
+ "enum": [
+ "launch",
+ "attach"
+ ],
+ "description": "Indicates whether the new debug session should be started with a `launch` or `attach` request."
+ }
+ },
+ "required": [
+ "configuration",
+ "request"
+ ]
+ },
+ "StartDebuggingResponse": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/Response"
+ },
+ {
+ "type": "object",
+ "description": "Response to `startDebugging` request. This is just an acknowledgement, so no body field is required."
+ }
+ ]
+ },
"InitializeRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
"title": "Requests",
- "description": "The 'initialize' request is sent as the first request from the client to the debug adapter\nin order to configure it with client capabilities and to retrieve capabilities from the debug adapter.\nUntil the debug adapter has responded to with an 'initialize' response, the client must not send any additional requests or events to the debug adapter.\nIn addition the debug adapter is not allowed to send any requests or events to the client until it has responded with an 'initialize' response.\nThe 'initialize' request may only be sent once.",
+ "description": "The `initialize` request is sent as the first request from the client to the debug adapter in order to configure it with client capabilities and to retrieve capabilities from the debug adapter.\nUntil the debug adapter has responded with an `initialize` response, the client must not send any additional requests or events to the debug adapter.\nIn addition the debug adapter is not allowed to send any requests or events to the client until it has responded with an `initialize` response.\nThe `initialize` request may only be sent once.",
"properties": {
"command": {
"type": "string",
@@ -824,15 +889,15 @@
},
"InitializeRequestArguments": {
"type": "object",
- "description": "Arguments for 'initialize' request.",
+ "description": "Arguments for `initialize` request.",
"properties": {
"clientID": {
"type": "string",
- "description": "The ID of the (frontend) client using this adapter."
+ "description": "The ID of the client using this adapter."
},
"clientName": {
"type": "string",
- "description": "The human readable name of the (frontend) client using this adapter."
+ "description": "The human-readable name of the client using this adapter."
},
"adapterID": {
"type": "string",
@@ -840,7 +905,7 @@
},
"locale": {
"type": "string",
- "description": "The ISO-639 locale of the (frontend) client using this adapter, e.g. en-US or de-CH."
+ "description": "The ISO-639 locale of the client using this adapter, e.g. en-US or de-CH."
},
"linesStartAt1": {
"type": "boolean",
@@ -853,11 +918,11 @@
"pathFormat": {
"type": "string",
"_enum": [ "path", "uri" ],
- "description": "Determines in what format paths are specified. The default is 'path', which is the native format."
+ "description": "Determines in what format paths are specified. The default is `path`, which is the native format."
},
"supportsVariableType": {
"type": "boolean",
- "description": "Client supports the optional type attribute for variables."
+ "description": "Client supports the `type` attribute for variables."
},
"supportsVariablePaging": {
"type": "boolean",
@@ -865,7 +930,7 @@
},
"supportsRunInTerminalRequest": {
"type": "boolean",
- "description": "Client supports the runInTerminal request."
+ "description": "Client supports the `runInTerminal` request."
},
"supportsMemoryReferences": {
"type": "boolean",
@@ -877,11 +942,19 @@
},
"supportsInvalidatedEvent": {
"type": "boolean",
- "description": "Client supports the invalidated event."
+ "description": "Client supports the `invalidated` event."
},
"supportsMemoryEvent": {
"type": "boolean",
- "description": "Client supports the memory event."
+ "description": "Client supports the `memory` event."
+ },
+ "supportsArgsCanBeInterpretedByShell": {
+ "type": "boolean",
+ "description": "Client supports the `argsCanBeInterpretedByShell` attribute on the `runInTerminal` request."
+ },
+ "supportsStartDebuggingRequest": {
+ "type": "boolean",
+ "description": "Client supports the `startDebugging` request."
}
},
"required": [ "adapterID" ]
@@ -889,7 +962,7 @@
"InitializeResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'initialize' request.",
+ "description": "Response to `initialize` request.",
"properties": {
"body": {
"$ref": "#/definitions/Capabilities",
@@ -902,7 +975,7 @@
"ConfigurationDoneRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "This optional request indicates that the client has finished initialization of the debug adapter.\nSo it is the last request in the sequence of configuration requests (which was started by the 'initialized' event).\nClients should only call this request if the capability 'supportsConfigurationDoneRequest' is true.",
+ "description": "This request indicates that the client has finished initialization of the debug adapter.\nSo it is the last request in the sequence of configuration requests (which was started by the `initialized` event).\nClients should only call this request if the corresponding capability `supportsConfigurationDoneRequest` is true.",
"properties": {
"command": {
"type": "string",
@@ -917,19 +990,19 @@
},
"ConfigurationDoneArguments": {
"type": "object",
- "description": "Arguments for 'configurationDone' request."
+ "description": "Arguments for `configurationDone` request."
},
"ConfigurationDoneResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'configurationDone' request. This is just an acknowledgement, so no body field is required."
+ "description": "Response to `configurationDone` request. This is just an acknowledgement, so no body field is required."
}]
},
"LaunchRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "This launch request is sent from the client to the debug adapter to start the debuggee with or without debugging (if 'noDebug' is true).\nSince launching is debugger/runtime specific, the arguments for this request are not part of this specification.",
+ "description": "This launch request is sent from the client to the debug adapter to start the debuggee with or without debugging (if `noDebug` is true).\nSince launching is debugger/runtime specific, the arguments for this request are not part of this specification.",
"properties": {
"command": {
"type": "string",
@@ -944,29 +1017,29 @@
},
"LaunchRequestArguments": {
"type": "object",
- "description": "Arguments for 'launch' request. Additional attributes are implementation specific.",
+ "description": "Arguments for `launch` request. Additional attributes are implementation specific.",
"properties": {
"noDebug": {
"type": "boolean",
- "description": "If noDebug is true the launch request should launch the program without enabling debugging."
+ "description": "If true, the launch request should launch the program without enabling debugging."
},
"__restart": {
"type": [ "array", "boolean", "integer", "null", "number", "object", "string" ],
- "description": "Optional data from the previous, restarted session.\nThe data is sent as the 'restart' attribute of the 'terminated' event.\nThe client should leave the data intact."
+ "description": "Arbitrary data from the previous, restarted session.\nThe data is sent as the `restart` attribute of the `terminated` event.\nThe client should leave the data intact."
}
}
},
"LaunchResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'launch' request. This is just an acknowledgement, so no body field is required."
+ "description": "Response to `launch` request. This is just an acknowledgement, so no body field is required."
}]
},
"AttachRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "The attach request is sent from the client to the debug adapter to attach to a debuggee that is already running.\nSince attaching is debugger/runtime specific, the arguments for this request are not part of this specification.",
+ "description": "The `attach` request is sent from the client to the debug adapter to attach to a debuggee that is already running.\nSince attaching is debugger/runtime specific, the arguments for this request are not part of this specification.",
"properties": {
"command": {
"type": "string",
@@ -981,25 +1054,25 @@
},
"AttachRequestArguments": {
"type": "object",
- "description": "Arguments for 'attach' request. Additional attributes are implementation specific.",
+ "description": "Arguments for `attach` request. Additional attributes are implementation specific.",
"properties": {
"__restart": {
"type": [ "array", "boolean", "integer", "null", "number", "object", "string" ],
- "description": "Optional data from the previous, restarted session.\nThe data is sent as the 'restart' attribute of the 'terminated' event.\nThe client should leave the data intact."
+ "description": "Arbitrary data from the previous, restarted session.\nThe data is sent as the `restart` attribute of the `terminated` event.\nThe client should leave the data intact."
}
}
},
"AttachResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'attach' request. This is just an acknowledgement, so no body field is required."
+ "description": "Response to `attach` request. This is just an acknowledgement, so no body field is required."
}]
},
"RestartRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "Restarts a debug session. Clients should only call this request if the capability 'supportsRestartRequest' is true.\nIf the capability is missing or has the value false, a typical client will emulate 'restart' by terminating the debug adapter first and then launching it anew.",
+ "description": "Restarts a debug session. Clients should only call this request if the corresponding capability `supportsRestartRequest` is true.\nIf the capability is missing or has the value false, a typical client emulates `restart` by terminating the debug adapter first and then launching it anew.",
"properties": {
"command": {
"type": "string",
@@ -1014,28 +1087,28 @@
},
"RestartArguments": {
"type": "object",
- "description": "Arguments for 'restart' request.",
+ "description": "Arguments for `restart` request.",
"properties": {
"arguments": {
"oneOf": [
{ "$ref": "#/definitions/LaunchRequestArguments" },
{ "$ref": "#/definitions/AttachRequestArguments" }
],
- "description": "The latest version of the 'launch' or 'attach' configuration."
+ "description": "The latest version of the `launch` or `attach` configuration."
}
}
},
"RestartResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'restart' request. This is just an acknowledgement, so no body field is required."
+ "description": "Response to `restart` request. This is just an acknowledgement, so no body field is required."
}]
},
"DisconnectRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "The 'disconnect' request is sent from the client to the debug adapter in order to stop debugging.\nIt asks the debug adapter to disconnect from the debuggee and to terminate the debug adapter.\nIf the debuggee has been started with the 'launch' request, the 'disconnect' request terminates the debuggee.\nIf the 'attach' request was used to connect to the debuggee, 'disconnect' does not terminate the debuggee.\nThis behavior can be controlled with the 'terminateDebuggee' argument (if supported by the debug adapter).",
+ "description": "The `disconnect` request asks the debug adapter to disconnect from the debuggee (thus ending the debug session) and then to shut down itself (the debug adapter).\nIn addition, the debug adapter must terminate the debuggee if it was started with the `launch` request. If an `attach` request was used to connect to the debuggee, then the debug adapter must not terminate the debuggee.\nThis implicit behavior of when to terminate the debuggee can be overridden with the `terminateDebuggee` argument (which is only supported by a debug adapter if the corresponding capability `supportTerminateDebuggee` is true).",
"properties": {
"command": {
"type": "string",
@@ -1050,33 +1123,33 @@
},
"DisconnectArguments": {
"type": "object",
- "description": "Arguments for 'disconnect' request.",
+ "description": "Arguments for `disconnect` request.",
"properties": {
"restart": {
"type": "boolean",
- "description": "A value of true indicates that this 'disconnect' request is part of a restart sequence."
+ "description": "A value of true indicates that this `disconnect` request is part of a restart sequence."
},
"terminateDebuggee": {
"type": "boolean",
- "description": "Indicates whether the debuggee should be terminated when the debugger is disconnected.\nIf unspecified, the debug adapter is free to do whatever it thinks is best.\nThe attribute is only honored by a debug adapter if the capability 'supportTerminateDebuggee' is true."
+ "description": "Indicates whether the debuggee should be terminated when the debugger is disconnected.\nIf unspecified, the debug adapter is free to do whatever it thinks is best.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportTerminateDebuggee` is true."
},
"suspendDebuggee": {
"type": "boolean",
- "description": "Indicates whether the debuggee should stay suspended when the debugger is disconnected.\nIf unspecified, the debuggee should resume execution.\nThe attribute is only honored by a debug adapter if the capability 'supportSuspendDebuggee' is true."
+ "description": "Indicates whether the debuggee should stay suspended when the debugger is disconnected.\nIf unspecified, the debuggee should resume execution.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportSuspendDebuggee` is true."
}
}
},
"DisconnectResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'disconnect' request. This is just an acknowledgement, so no body field is required."
+ "description": "Response to `disconnect` request. This is just an acknowledgement, so no body field is required."
}]
},
"TerminateRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "The 'terminate' request is sent from the client to the debug adapter in order to give the debuggee a chance for terminating itself.\nClients should only call this request if the capability 'supportsTerminateRequest' is true.",
+ "description": "The `terminate` request is sent from the client to the debug adapter in order to shut down the debuggee gracefully. Clients should only call this request if the capability `supportsTerminateRequest` is true.\nTypically a debug adapter implements `terminate` by sending a software signal which the debuggee intercepts in order to clean things up properly before terminating itself.\nPlease note that this request does not directly affect the state of the debug session: if the debuggee decides to veto the graceful shutdown for any reason by not terminating itself, then the debug session just continues.\nClients can surface the `terminate` request as an explicit command or they can integrate it into a two stage Stop command that first sends `terminate` to request a graceful shutdown, and if that fails uses `disconnect` for a forceful shutdown.",
"properties": {
"command": {
"type": "string",
@@ -1091,25 +1164,25 @@
},
"TerminateArguments": {
"type": "object",
- "description": "Arguments for 'terminate' request.",
+ "description": "Arguments for `terminate` request.",
"properties": {
"restart": {
"type": "boolean",
- "description": "A value of true indicates that this 'terminate' request is part of a restart sequence."
+ "description": "A value of true indicates that this `terminate` request is part of a restart sequence."
}
}
},
"TerminateResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'terminate' request. This is just an acknowledgement, so no body field is required."
+ "description": "Response to `terminate` request. This is just an acknowledgement, so no body field is required."
}]
},
"BreakpointLocationsRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "The 'breakpointLocations' request returns all possible locations for source breakpoints in a given range.\nClients should only call this request if the capability 'supportsBreakpointLocationsRequest' is true.",
+ "description": "The `breakpointLocations` request returns all possible locations for source breakpoints in a given range.\nClients should only call this request if the corresponding capability `supportsBreakpointLocationsRequest` is true.",
"properties": {
"command": {
"type": "string",
@@ -1125,11 +1198,11 @@
},
"BreakpointLocationsArguments": {
"type": "object",
- "description": "Arguments for 'breakpointLocations' request.",
+ "description": "Arguments for `breakpointLocations` request.",
"properties": {
"source": {
"$ref": "#/definitions/Source",
- "description": "The source location of the breakpoints; either 'source.path' or 'source.reference' must be specified."
+ "description": "The source location of the breakpoints; either `source.path` or `source.sourceReference` must be specified."
},
"line": {
"type": "integer",
@@ -1137,15 +1210,15 @@
},
"column": {
"type": "integer",
- "description": "Optional start column of range to search possible breakpoint locations in. If no start column is given, the first column in the start line is assumed."
+ "description": "Start position within `line` to search possible breakpoint locations in. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If no column is given, the first position in the start line is assumed."
},
"endLine": {
"type": "integer",
- "description": "Optional end line of range to search possible breakpoint locations in. If no end line is given, then the end line is assumed to be the start line."
+ "description": "End line of range to search possible breakpoint locations in. If no end line is given, then the end line is assumed to be the start line."
},
"endColumn": {
"type": "integer",
- "description": "Optional end column of range to search possible breakpoint locations in. If no end column is given, then it is assumed to be in the last column of the end line."
+ "description": "End position within `endLine` to search possible breakpoint locations in. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If no end column is given, the last position in the end line is assumed."
}
},
"required": [ "source", "line" ]
@@ -1153,7 +1226,7 @@
"BreakpointLocationsResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'breakpointLocations' request.\nContains possible locations for source breakpoints.",
+ "description": "Response to `breakpointLocations` request.\nContains possible locations for source breakpoints.",
"properties": {
"body": {
"type": "object",
@@ -1176,7 +1249,7 @@
"SetBreakpointsRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "Sets multiple breakpoints for a single source and clears all previous breakpoints in that source.\nTo clear all breakpoint for a source, specify an empty array.\nWhen a breakpoint is hit, a 'stopped' event (with reason 'breakpoint') is generated.",
+ "description": "Sets multiple breakpoints for a single source and clears all previous breakpoints in that source.\nTo clear all breakpoint for a source, specify an empty array.\nWhen a breakpoint is hit, a `stopped` event (with reason `breakpoint`) is generated.",
"properties": {
"command": {
"type": "string",
@@ -1191,11 +1264,11 @@
},
"SetBreakpointsArguments": {
"type": "object",
- "description": "Arguments for 'setBreakpoints' request.",
+ "description": "Arguments for `setBreakpoints` request.",
"properties": {
"source": {
"$ref": "#/definitions/Source",
- "description": "The source location of the breakpoints; either 'source.path' or 'source.reference' must be specified."
+ "description": "The source location of the breakpoints; either `source.path` or `source.sourceReference` must be specified."
},
"breakpoints": {
"type": "array",
@@ -1221,7 +1294,7 @@
"SetBreakpointsResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'setBreakpoints' request.\nReturned is information about each breakpoint created by this request.\nThis includes the actual code location and whether the breakpoint could be verified.\nThe breakpoints returned are in the same order as the elements of the 'breakpoints'\n(or the deprecated 'lines') array in the arguments.",
+ "description": "Response to `setBreakpoints` request.\nReturned is information about each breakpoint created by this request.\nThis includes the actual code location and whether the breakpoint could be verified.\nThe breakpoints returned are in the same order as the elements of the `breakpoints`\n(or the deprecated `lines`) array in the arguments.",
"properties": {
"body": {
"type": "object",
@@ -1231,7 +1304,7 @@
"items": {
"$ref": "#/definitions/Breakpoint"
},
- "description": "Information about the breakpoints.\nThe array elements are in the same order as the elements of the 'breakpoints' (or the deprecated 'lines') array in the arguments."
+ "description": "Information about the breakpoints.\nThe array elements are in the same order as the elements of the `breakpoints` (or the deprecated `lines`) array in the arguments."
}
},
"required": [ "breakpoints" ]
@@ -1244,7 +1317,7 @@
"SetFunctionBreakpointsRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "Replaces all existing function breakpoints with new function breakpoints.\nTo clear all function breakpoints, specify an empty array.\nWhen a function breakpoint is hit, a 'stopped' event (with reason 'function breakpoint') is generated.\nClients should only call this request if the capability 'supportsFunctionBreakpoints' is true.",
+ "description": "Replaces all existing function breakpoints with new function breakpoints.\nTo clear all function breakpoints, specify an empty array.\nWhen a function breakpoint is hit, a `stopped` event (with reason `function breakpoint`) is generated.\nClients should only call this request if the corresponding capability `supportsFunctionBreakpoints` is true.",
"properties": {
"command": {
"type": "string",
@@ -1259,7 +1332,7 @@
},
"SetFunctionBreakpointsArguments": {
"type": "object",
- "description": "Arguments for 'setFunctionBreakpoints' request.",
+ "description": "Arguments for `setFunctionBreakpoints` request.",
"properties": {
"breakpoints": {
"type": "array",
@@ -1274,7 +1347,7 @@
"SetFunctionBreakpointsResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'setFunctionBreakpoints' request.\nReturned is information about each breakpoint created by this request.",
+ "description": "Response to `setFunctionBreakpoints` request.\nReturned is information about each breakpoint created by this request.",
"properties": {
"body": {
"type": "object",
@@ -1284,7 +1357,7 @@
"items": {
"$ref": "#/definitions/Breakpoint"
},
- "description": "Information about the breakpoints. The array elements correspond to the elements of the 'breakpoints' array."
+ "description": "Information about the breakpoints. The array elements correspond to the elements of the `breakpoints` array."
}
},
"required": [ "breakpoints" ]
@@ -1297,7 +1370,7 @@
"SetExceptionBreakpointsRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "The request configures the debuggers response to thrown exceptions.\nIf an exception is configured to break, a 'stopped' event is fired (with reason 'exception').\nClients should only call this request if the capability 'exceptionBreakpointFilters' returns one or more filters.",
+ "description": "The request configures the debugger's response to thrown exceptions.\nIf an exception is configured to break, a `stopped` event is fired (with reason `exception`).\nClients should only call this request if the corresponding capability `exceptionBreakpointFilters` returns one or more filters.",
"properties": {
"command": {
"type": "string",
@@ -1312,28 +1385,28 @@
},
"SetExceptionBreakpointsArguments": {
"type": "object",
- "description": "Arguments for 'setExceptionBreakpoints' request.",
+ "description": "Arguments for `setExceptionBreakpoints` request.",
"properties": {
"filters": {
"type": "array",
"items": {
"type": "string"
},
- "description": "Set of exception filters specified by their ID. The set of all possible exception filters is defined by the 'exceptionBreakpointFilters' capability. The 'filter' and 'filterOptions' sets are additive."
+ "description": "Set of exception filters specified by their ID. The set of all possible exception filters is defined by the `exceptionBreakpointFilters` capability. The `filter` and `filterOptions` sets are additive."
},
"filterOptions": {
"type": "array",
"items": {
"$ref": "#/definitions/ExceptionFilterOptions"
},
- "description": "Set of exception filters and their options. The set of all possible exception filters is defined by the 'exceptionBreakpointFilters' capability. This attribute is only honored by a debug adapter if the capability 'supportsExceptionFilterOptions' is true. The 'filter' and 'filterOptions' sets are additive."
+ "description": "Set of exception filters and their options. The set of all possible exception filters is defined by the `exceptionBreakpointFilters` capability. This attribute is only honored by a debug adapter if the corresponding capability `supportsExceptionFilterOptions` is true. The `filter` and `filterOptions` sets are additive."
},
"exceptionOptions": {
"type": "array",
"items": {
"$ref": "#/definitions/ExceptionOptions"
},
- "description": "Configuration options for selected exceptions.\nThe attribute is only honored by a debug adapter if the capability 'supportsExceptionOptions' is true."
+ "description": "Configuration options for selected exceptions.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsExceptionOptions` is true."
}
},
"required": [ "filters" ]
@@ -1341,7 +1414,7 @@
"SetExceptionBreakpointsResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'setExceptionBreakpoints' request.\nThe response contains an array of Breakpoint objects with information about each exception breakpoint or filter. The Breakpoint objects are in the same order as the elements of the 'filters', 'filterOptions', 'exceptionOptions' arrays given as arguments. If both 'filters' and 'filterOptions' are given, the returned array must start with 'filters' information first, followed by 'filterOptions' information.\nThe mandatory 'verified' property of a Breakpoint object signals whether the exception breakpoint or filter could be successfully created and whether the optional condition or hit count expressions are valid. In case of an error the 'message' property explains the problem. An optional 'id' property can be used to introduce a unique ID for the exception breakpoint or filter so that it can be updated subsequently by sending breakpoint events.\nFor backward compatibility both the 'breakpoints' array and the enclosing 'body' are optional. If these elements are missing a client will not be able to show problems for individual exception breakpoints or filters.",
+ "description": "Response to `setExceptionBreakpoints` request.\nThe response contains an array of `Breakpoint` objects with information about each exception breakpoint or filter. The `Breakpoint` objects are in the same order as the elements of the `filters`, `filterOptions`, `exceptionOptions` arrays given as arguments. If both `filters` and `filterOptions` are given, the returned array must start with `filters` information first, followed by `filterOptions` information.\nThe `verified` property of a `Breakpoint` object signals whether the exception breakpoint or filter could be successfully created and whether the condition is valid. In case of an error the `message` property explains the problem. The `id` property can be used to introduce a unique ID for the exception breakpoint or filter so that it can be updated subsequently by sending breakpoint events.\nFor backward compatibility both the `breakpoints` array and the enclosing `body` are optional. If these elements are missing a client is not able to show problems for individual exception breakpoints or filters.",
"properties": {
"body": {
"type": "object",
@@ -1351,7 +1424,7 @@
"items": {
"$ref": "#/definitions/Breakpoint"
},
- "description": "Information about the exception breakpoints or filters.\nThe breakpoints returned are in the same order as the elements of the 'filters', 'filterOptions', 'exceptionOptions' arrays in the arguments. If both 'filters' and 'filterOptions' are given, the returned array must start with 'filters' information first, followed by 'filterOptions' information."
+ "description": "Information about the exception breakpoints or filters.\nThe breakpoints returned are in the same order as the elements of the `filters`, `filterOptions`, `exceptionOptions` arrays in the arguments. If both `filters` and `filterOptions` are given, the returned array must start with `filters` information first, followed by `filterOptions` information."
}
}
}
@@ -1362,7 +1435,7 @@
"DataBreakpointInfoRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "Obtains information on a possible data breakpoint that could be set on an expression or variable.\nClients should only call this request if the capability 'supportsDataBreakpoints' is true.",
+ "description": "Obtains information on a possible data breakpoint that could be set on an expression or variable.\nClients should only call this request if the corresponding capability `supportsDataBreakpoints` is true.",
"properties": {
"command": {
"type": "string",
@@ -1377,15 +1450,19 @@
},
"DataBreakpointInfoArguments": {
"type": "object",
- "description": "Arguments for 'dataBreakpointInfo' request.",
+ "description": "Arguments for `dataBreakpointInfo` request.",
"properties": {
"variablesReference": {
"type": "integer",
- "description": "Reference to the Variable container if the data breakpoint is requested for a child of the container."
+ "description": "Reference to the variable container if the data breakpoint is requested for a child of the container. The `variablesReference` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details."
},
"name": {
"type": "string",
- "description": "The name of the Variable's child to obtain data breakpoint information for.\nIf variablesReference isn't provided, this can be an expression."
+ "description": "The name of the variable's child to obtain data breakpoint information for.\nIf `variablesReference` isn't specified, this can be an expression."
+ },
+ "frameId": {
+ "type": "integer",
+ "description": "When `name` is an expression, evaluate it in the scope of this stack frame. If not specified, the expression is evaluated in the global scope. When `variablesReference` is specified, this property has no effect."
}
},
"required": [ "name" ]
@@ -1393,14 +1470,14 @@
"DataBreakpointInfoResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'dataBreakpointInfo' request.",
+ "description": "Response to `dataBreakpointInfo` request.",
"properties": {
"body": {
"type": "object",
"properties": {
"dataId": {
"type": [ "string", "null" ],
- "description": "An identifier for the data on which a data breakpoint can be registered with the setDataBreakpoints request or null if no data breakpoint is available."
+ "description": "An identifier for the data on which a data breakpoint can be registered with the `setDataBreakpoints` request or null if no data breakpoint is available. If a `variablesReference` or `frameId` is passed, the `dataId` is valid in the current suspended state, otherwise it's valid indefinitely. See 'Lifetime of Object References' in the Overview section for details. Breakpoints set using the `dataId` in the `setDataBreakpoints` request may outlive the lifetime of the associated `dataId`."
},
"description": {
"type": "string",
@@ -1411,11 +1488,11 @@
"items": {
"$ref": "#/definitions/DataBreakpointAccessType"
},
- "description": "Optional attribute listing the available access types for a potential data breakpoint. A UI frontend could surface this information."
+ "description": "Attribute lists the available access types for a potential data breakpoint. A UI client could surface this information."
},
"canPersist": {
"type": "boolean",
- "description": "Optional attribute indicating that a potential data breakpoint could be persisted across sessions."
+ "description": "Attribute indicates that a potential data breakpoint could be persisted across sessions."
}
},
"required": [ "dataId", "description" ]
@@ -1428,7 +1505,7 @@
"SetDataBreakpointsRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "Replaces all existing data breakpoints with new data breakpoints.\nTo clear all data breakpoints, specify an empty array.\nWhen a data breakpoint is hit, a 'stopped' event (with reason 'data breakpoint') is generated.\nClients should only call this request if the capability 'supportsDataBreakpoints' is true.",
+ "description": "Replaces all existing data breakpoints with new data breakpoints.\nTo clear all data breakpoints, specify an empty array.\nWhen a data breakpoint is hit, a `stopped` event (with reason `data breakpoint`) is generated.\nClients should only call this request if the corresponding capability `supportsDataBreakpoints` is true.",
"properties": {
"command": {
"type": "string",
@@ -1443,7 +1520,7 @@
},
"SetDataBreakpointsArguments": {
"type": "object",
- "description": "Arguments for 'setDataBreakpoints' request.",
+ "description": "Arguments for `setDataBreakpoints` request.",
"properties": {
"breakpoints": {
"type": "array",
@@ -1458,7 +1535,7 @@
"SetDataBreakpointsResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'setDataBreakpoints' request.\nReturned is information about each breakpoint created by this request.",
+ "description": "Response to `setDataBreakpoints` request.\nReturned is information about each breakpoint created by this request.",
"properties": {
"body": {
"type": "object",
@@ -1468,7 +1545,7 @@
"items": {
"$ref": "#/definitions/Breakpoint"
},
- "description": "Information about the data breakpoints. The array elements correspond to the elements of the input argument 'breakpoints' array."
+ "description": "Information about the data breakpoints. The array elements correspond to the elements of the input argument `breakpoints` array."
}
},
"required": [ "breakpoints" ]
@@ -1483,7 +1560,7 @@
{ "$ref": "#/definitions/Request" },
{
"type": "object",
- "description": "Replaces all existing instruction breakpoints. Typically, instruction breakpoints would be set from a diassembly window. \nTo clear all instruction breakpoints, specify an empty array.\nWhen an instruction breakpoint is hit, a 'stopped' event (with reason 'instruction breakpoint') is generated.\nClients should only call this request if the capability 'supportsInstructionBreakpoints' is true.",
+ "description": "Replaces all existing instruction breakpoints. Typically, instruction breakpoints would be set from a disassembly window. \nTo clear all instruction breakpoints, specify an empty array.\nWhen an instruction breakpoint is hit, a `stopped` event (with reason `instruction breakpoint`) is generated.\nClients should only call this request if the corresponding capability `supportsInstructionBreakpoints` is true.",
"properties": {
"command": {
"type": "string",
@@ -1498,7 +1575,7 @@
},
"SetInstructionBreakpointsArguments": {
"type": "object",
- "description": "Arguments for 'setInstructionBreakpoints' request",
+ "description": "Arguments for `setInstructionBreakpoints` request",
"properties": {
"breakpoints": {
"type": "array",
@@ -1515,7 +1592,7 @@
{ "$ref": "#/definitions/Response" },
{
"type": "object",
- "description": "Response to 'setInstructionBreakpoints' request",
+ "description": "Response to `setInstructionBreakpoints` request",
"properties": {
"body": {
"type": "object",
@@ -1525,7 +1602,7 @@
"items": {
"$ref": "#/definitions/Breakpoint"
},
- "description": "Information about the breakpoints. The array elements correspond to the elements of the 'breakpoints' array."
+ "description": "Information about the breakpoints. The array elements correspond to the elements of the `breakpoints` array."
}
},
"required": [ "breakpoints" ]
@@ -1538,7 +1615,7 @@
"ContinueRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "The request resumes execution of all threads. If the debug adapter supports single thread execution (see capability 'supportsSingleThreadExecutionRequests') setting the 'singleThread' argument to true resumes only the specified thread. If not all threads were resumed, the 'allThreadsContinued' attribute of the response must be set to false.",
+ "description": "The request resumes execution of all threads. If the debug adapter supports single thread execution (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true resumes only the specified thread. If not all threads were resumed, the `allThreadsContinued` attribute of the response should be set to false.",
"properties": {
"command": {
"type": "string",
@@ -1553,15 +1630,15 @@
},
"ContinueArguments": {
"type": "object",
- "description": "Arguments for 'continue' request.",
+ "description": "Arguments for `continue` request.",
"properties": {
"threadId": {
"type": "integer",
- "description": "Specifies the active thread. If the debug adapter supports single thread execution (see 'supportsSingleThreadExecutionRequests') and the optional argument 'singleThread' is true, only the thread with this ID is resumed."
+ "description": "Specifies the active thread. If the debug adapter supports single thread execution (see `supportsSingleThreadExecutionRequests`) and the argument `singleThread` is true, only the thread with this ID is resumed."
},
"singleThread": {
"type": "boolean",
- "description": "If this optional flag is true, execution is resumed only for the thread with given 'threadId'."
+ "description": "If this flag is true, execution is resumed only for the thread with given `threadId`."
}
},
"required": [ "threadId" ]
@@ -1569,14 +1646,14 @@
"ContinueResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'continue' request.",
+ "description": "Response to `continue` request.",
"properties": {
"body": {
"type": "object",
"properties": {
"allThreadsContinued": {
"type": "boolean",
- "description": "The value true (or a missing property) signals to the client that all threads have been resumed. The value false must be returned if not all threads were resumed."
+ "description": "The value true (or a missing property) signals to the client that all threads have been resumed. The value false indicates that not all threads were resumed."
}
}
}
@@ -1588,7 +1665,7 @@
"NextRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "The request executes one step (in the given granularity) for the specified thread and allows all other threads to run freely by resuming them.\nIf the debug adapter supports single thread execution (see capability 'supportsSingleThreadExecutionRequests') setting the 'singleThread' argument to true prevents other suspended threads from resuming.\nThe debug adapter first sends the response and then a 'stopped' event (with reason 'step') after the step has completed.",
+ "description": "The request executes one step (in the given granularity) for the specified thread and allows all other threads to run freely by resuming them.\nIf the debug adapter supports single thread execution (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true prevents other suspended threads from resuming.\nThe debug adapter first sends the response and then a `stopped` event (with reason `step`) after the step has completed.",
"properties": {
"command": {
"type": "string",
@@ -1603,7 +1680,7 @@
},
"NextArguments": {
"type": "object",
- "description": "Arguments for 'next' request.",
+ "description": "Arguments for `next` request.",
"properties": {
"threadId": {
"type": "integer",
@@ -1611,11 +1688,11 @@
},
"singleThread": {
"type": "boolean",
- "description": "If this optional flag is true, all other suspended threads are not resumed."
+ "description": "If this flag is true, all other suspended threads are not resumed."
},
"granularity": {
"$ref": "#/definitions/SteppingGranularity",
- "description": "Optional granularity to step. If no granularity is specified, a granularity of 'statement' is assumed."
+ "description": "Stepping granularity. If no granularity is specified, a granularity of `statement` is assumed."
}
},
"required": [ "threadId" ]
@@ -1623,14 +1700,14 @@
"NextResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'next' request. This is just an acknowledgement, so no body field is required."
+ "description": "Response to `next` request. This is just an acknowledgement, so no body field is required."
}]
},
"StepInRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "The request resumes the given thread to step into a function/method and allows all other threads to run freely by resuming them.\nIf the debug adapter supports single thread execution (see capability 'supportsSingleThreadExecutionRequests') setting the 'singleThread' argument to true prevents other suspended threads from resuming.\nIf the request cannot step into a target, 'stepIn' behaves like the 'next' request.\nThe debug adapter first sends the response and then a 'stopped' event (with reason 'step') after the step has completed.\nIf there are multiple function/method calls (or other targets) on the source line,\nthe optional argument 'targetId' can be used to control into which target the 'stepIn' should occur.\nThe list of possible targets for a given source line can be retrieved via the 'stepInTargets' request.",
+ "description": "The request resumes the given thread to step into a function/method and allows all other threads to run freely by resuming them.\nIf the debug adapter supports single thread execution (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true prevents other suspended threads from resuming.\nIf the request cannot step into a target, `stepIn` behaves like the `next` request.\nThe debug adapter first sends the response and then a `stopped` event (with reason `step`) after the step has completed.\nIf there are multiple function/method calls (or other targets) on the source line,\nthe argument `targetId` can be used to control into which target the `stepIn` should occur.\nThe list of possible targets for a given source line can be retrieved via the `stepInTargets` request.",
"properties": {
"command": {
"type": "string",
@@ -1645,7 +1722,7 @@
},
"StepInArguments": {
"type": "object",
- "description": "Arguments for 'stepIn' request.",
+ "description": "Arguments for `stepIn` request.",
"properties": {
"threadId": {
"type": "integer",
@@ -1653,15 +1730,15 @@
},
"singleThread": {
"type": "boolean",
- "description": "If this optional flag is true, all other suspended threads are not resumed."
+ "description": "If this flag is true, all other suspended threads are not resumed."
},
"targetId": {
"type": "integer",
- "description": "Optional id of the target to step into."
+ "description": "Id of the target to step into."
},
"granularity": {
"$ref": "#/definitions/SteppingGranularity",
- "description": "Optional granularity to step. If no granularity is specified, a granularity of 'statement' is assumed."
+ "description": "Stepping granularity. If no granularity is specified, a granularity of `statement` is assumed."
}
},
"required": [ "threadId" ]
@@ -1669,14 +1746,14 @@
"StepInResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'stepIn' request. This is just an acknowledgement, so no body field is required."
+ "description": "Response to `stepIn` request. This is just an acknowledgement, so no body field is required."
}]
},
"StepOutRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "The request resumes the given thread to step out (return) from a function/method and allows all other threads to run freely by resuming them.\nIf the debug adapter supports single thread execution (see capability 'supportsSingleThreadExecutionRequests') setting the 'singleThread' argument to true prevents other suspended threads from resuming.\nThe debug adapter first sends the response and then a 'stopped' event (with reason 'step') after the step has completed.",
+ "description": "The request resumes the given thread to step out (return) from a function/method and allows all other threads to run freely by resuming them.\nIf the debug adapter supports single thread execution (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true prevents other suspended threads from resuming.\nThe debug adapter first sends the response and then a `stopped` event (with reason `step`) after the step has completed.",
"properties": {
"command": {
"type": "string",
@@ -1691,7 +1768,7 @@
},
"StepOutArguments": {
"type": "object",
- "description": "Arguments for 'stepOut' request.",
+ "description": "Arguments for `stepOut` request.",
"properties": {
"threadId": {
"type": "integer",
@@ -1699,11 +1776,11 @@
},
"singleThread": {
"type": "boolean",
- "description": "If this optional flag is true, all other suspended threads are not resumed."
+ "description": "If this flag is true, all other suspended threads are not resumed."
},
"granularity": {
"$ref": "#/definitions/SteppingGranularity",
- "description": "Optional granularity to step. If no granularity is specified, a granularity of 'statement' is assumed."
+ "description": "Stepping granularity. If no granularity is specified, a granularity of `statement` is assumed."
}
},
"required": [ "threadId" ]
@@ -1711,14 +1788,14 @@
"StepOutResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'stepOut' request. This is just an acknowledgement, so no body field is required."
+ "description": "Response to `stepOut` request. This is just an acknowledgement, so no body field is required."
}]
},
"StepBackRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "The request executes one backward step (in the given granularity) for the specified thread and allows all other threads to run backward freely by resuming them.\nIf the debug adapter supports single thread execution (see capability 'supportsSingleThreadExecutionRequests') setting the 'singleThread' argument to true prevents other suspended threads from resuming.\nThe debug adapter first sends the response and then a 'stopped' event (with reason 'step') after the step has completed.\nClients should only call this request if the capability 'supportsStepBack' is true.",
+ "description": "The request executes one backward step (in the given granularity) for the specified thread and allows all other threads to run backward freely by resuming them.\nIf the debug adapter supports single thread execution (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true prevents other suspended threads from resuming.\nThe debug adapter first sends the response and then a `stopped` event (with reason `step`) after the step has completed.\nClients should only call this request if the corresponding capability `supportsStepBack` is true.",
"properties": {
"command": {
"type": "string",
@@ -1733,7 +1810,7 @@
},
"StepBackArguments": {
"type": "object",
- "description": "Arguments for 'stepBack' request.",
+ "description": "Arguments for `stepBack` request.",
"properties": {
"threadId": {
"type": "integer",
@@ -1741,11 +1818,11 @@
},
"singleThread": {
"type": "boolean",
- "description": "If this optional flag is true, all other suspended threads are not resumed."
+ "description": "If this flag is true, all other suspended threads are not resumed."
},
"granularity": {
"$ref": "#/definitions/SteppingGranularity",
- "description": "Optional granularity to step. If no granularity is specified, a granularity of 'statement' is assumed."
+ "description": "Stepping granularity to step. If no granularity is specified, a granularity of `statement` is assumed."
}
},
"required": [ "threadId" ]
@@ -1753,14 +1830,14 @@
"StepBackResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'stepBack' request. This is just an acknowledgement, so no body field is required."
+ "description": "Response to `stepBack` request. This is just an acknowledgement, so no body field is required."
}]
},
"ReverseContinueRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "The request resumes backward execution of all threads. If the debug adapter supports single thread execution (see capability 'supportsSingleThreadExecutionRequests') setting the 'singleThread' argument to true resumes only the specified thread. If not all threads were resumed, the 'allThreadsContinued' attribute of the response must be set to false.\nClients should only call this request if the capability 'supportsStepBack' is true.",
+ "description": "The request resumes backward execution of all threads. If the debug adapter supports single thread execution (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true resumes only the specified thread. If not all threads were resumed, the `allThreadsContinued` attribute of the response should be set to false.\nClients should only call this request if the corresponding capability `supportsStepBack` is true.",
"properties": {
"command": {
"type": "string",
@@ -1775,15 +1852,15 @@
},
"ReverseContinueArguments": {
"type": "object",
- "description": "Arguments for 'reverseContinue' request.",
+ "description": "Arguments for `reverseContinue` request.",
"properties": {
"threadId": {
"type": "integer",
- "description": "Specifies the active thread. If the debug adapter supports single thread execution (see 'supportsSingleThreadExecutionRequests') and the optional argument 'singleThread' is true, only the thread with this ID is resumed."
+ "description": "Specifies the active thread. If the debug adapter supports single thread execution (see `supportsSingleThreadExecutionRequests`) and the `singleThread` argument is true, only the thread with this ID is resumed."
},
"singleThread": {
"type": "boolean",
- "description": "If this optional flag is true, backward execution is resumed only for the thread with given 'threadId'."
+ "description": "If this flag is true, backward execution is resumed only for the thread with given `threadId`."
}
},
@@ -1792,14 +1869,14 @@
"ReverseContinueResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'reverseContinue' request. This is just an acknowledgement, so no body field is required."
+ "description": "Response to `reverseContinue` request. This is just an acknowledgement, so no body field is required."
}]
},
"RestartFrameRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "The request restarts execution of the specified stackframe.\nThe debug adapter first sends the response and then a 'stopped' event (with reason 'restart') after the restart has completed.\nClients should only call this request if the capability 'supportsRestartFrame' is true.",
+ "description": "The request restarts execution of the specified stack frame.\nThe debug adapter first sends the response and then a `stopped` event (with reason `restart`) after the restart has completed.\nClients should only call this request if the corresponding capability `supportsRestartFrame` is true.",
"properties": {
"command": {
"type": "string",
@@ -1814,11 +1891,11 @@
},
"RestartFrameArguments": {
"type": "object",
- "description": "Arguments for 'restartFrame' request.",
+ "description": "Arguments for `restartFrame` request.",
"properties": {
"frameId": {
"type": "integer",
- "description": "Restart this stackframe."
+ "description": "Restart the stack frame identified by `frameId`. The `frameId` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details."
}
},
"required": [ "frameId" ]
@@ -1826,14 +1903,14 @@
"RestartFrameResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'restartFrame' request. This is just an acknowledgement, so no body field is required."
+ "description": "Response to `restartFrame` request. This is just an acknowledgement, so no body field is required."
}]
},
"GotoRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "The request sets the location where the debuggee will continue to run.\nThis makes it possible to skip the execution of code or to executed code again.\nThe code between the current location and the goto target is not executed but skipped.\nThe debug adapter first sends the response and then a 'stopped' event with reason 'goto'.\nClients should only call this request if the capability 'supportsGotoTargetsRequest' is true (because only then goto targets exist that can be passed as arguments).",
+ "description": "The request sets the location where the debuggee will continue to run.\nThis makes it possible to skip the execution of code or to execute code again.\nThe code between the current location and the goto target is not executed but skipped.\nThe debug adapter first sends the response and then a `stopped` event with reason `goto`.\nClients should only call this request if the corresponding capability `supportsGotoTargetsRequest` is true (because only then goto targets exist that can be passed as arguments).",
"properties": {
"command": {
"type": "string",
@@ -1848,7 +1925,7 @@
},
"GotoArguments": {
"type": "object",
- "description": "Arguments for 'goto' request.",
+ "description": "Arguments for `goto` request.",
"properties": {
"threadId": {
"type": "integer",
@@ -1864,14 +1941,14 @@
"GotoResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'goto' request. This is just an acknowledgement, so no body field is required."
+ "description": "Response to `goto` request. This is just an acknowledgement, so no body field is required."
}]
},
"PauseRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "The request suspends the debuggee.\nThe debug adapter first sends the response and then a 'stopped' event (with reason 'pause') after the thread has been paused successfully.",
+ "description": "The request suspends the debuggee.\nThe debug adapter first sends the response and then a `stopped` event (with reason `pause`) after the thread has been paused successfully.",
"properties": {
"command": {
"type": "string",
@@ -1886,7 +1963,7 @@
},
"PauseArguments": {
"type": "object",
- "description": "Arguments for 'pause' request.",
+ "description": "Arguments for `pause` request.",
"properties": {
"threadId": {
"type": "integer",
@@ -1898,14 +1975,14 @@
"PauseResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'pause' request. This is just an acknowledgement, so no body field is required."
+ "description": "Response to `pause` request. This is just an acknowledgement, so no body field is required."
}]
},
"StackTraceRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "The request returns a stacktrace from the current execution state of a given thread.\nA client can request all stack frames by omitting the startFrame and levels arguments. For performance conscious clients and if the debug adapter's 'supportsDelayedStackTraceLoading' capability is true, stack frames can be retrieved in a piecemeal way with the startFrame and levels arguments. The response of the stackTrace request may contain a totalFrames property that hints at the total number of frames in the stack. If a client needs this total number upfront, it can issue a request for a single (first) frame and depending on the value of totalFrames decide how to proceed. In any case a client should be prepared to receive less frames than requested, which is an indication that the end of the stack has been reached.",
+ "description": "The request returns a stacktrace from the current execution state of a given thread.\nA client can request all stack frames by omitting the startFrame and levels arguments. For performance-conscious clients and if the corresponding capability `supportsDelayedStackTraceLoading` is true, stack frames can be retrieved in a piecemeal way with the `startFrame` and `levels` arguments. The response of the `stackTrace` request may contain a `totalFrames` property that hints at the total number of frames in the stack. If a client needs this total number upfront, it can issue a request for a single (first) frame and depending on the value of `totalFrames` decide how to proceed. In any case a client should be prepared to receive fewer frames than requested, which is an indication that the end of the stack has been reached.",
"properties": {
"command": {
"type": "string",
@@ -1920,7 +1997,7 @@
},
"StackTraceArguments": {
"type": "object",
- "description": "Arguments for 'stackTrace' request.",
+ "description": "Arguments for `stackTrace` request.",
"properties": {
"threadId": {
"type": "integer",
@@ -1936,7 +2013,7 @@
},
"format": {
"$ref": "#/definitions/StackFrameFormat",
- "description": "Specifies details on how to format the stack frames.\nThe attribute is only honored by a debug adapter if the capability 'supportsValueFormattingOptions' is true."
+ "description": "Specifies details on how to format the stack frames.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsValueFormattingOptions` is true."
}
},
"required": [ "threadId" ]
@@ -1944,7 +2021,7 @@
"StackTraceResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'stackTrace' request.",
+ "description": "Response to `stackTrace` request.",
"properties": {
"body": {
"type": "object",
@@ -1954,11 +2031,11 @@
"items": {
"$ref": "#/definitions/StackFrame"
},
- "description": "The frames of the stackframe. If the array has length zero, there are no stackframes available.\nThis means that there is no location information available."
+ "description": "The frames of the stack frame. If the array has length zero, there are no stack frames available.\nThis means that there is no location information available."
},
"totalFrames": {
"type": "integer",
- "description": "The total number of frames available in the stack. If omitted or if totalFrames is larger than the available frames, a client is expected to request frames until a request returns less frames than requested (which indicates the end of the stack). Returning monotonically increasing totalFrames values for subsequent requests can be used to enforce paging in the client."
+ "description": "The total number of frames available in the stack. If omitted or if `totalFrames` is larger than the available frames, a client is expected to request frames until a request returns less frames than requested (which indicates the end of the stack). Returning monotonically increasing `totalFrames` values for subsequent requests can be used to enforce paging in the client."
}
},
"required": [ "stackFrames" ]
@@ -1971,7 +2048,7 @@
"ScopesRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "The request returns the variable scopes for a given stackframe ID.",
+ "description": "The request returns the variable scopes for a given stack frame ID.",
"properties": {
"command": {
"type": "string",
@@ -1986,11 +2063,11 @@
},
"ScopesArguments": {
"type": "object",
- "description": "Arguments for 'scopes' request.",
+ "description": "Arguments for `scopes` request.",
"properties": {
"frameId": {
"type": "integer",
- "description": "Retrieve the scopes for this stackframe."
+ "description": "Retrieve the scopes for the stack frame identified by `frameId`. The `frameId` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details."
}
},
"required": [ "frameId" ]
@@ -1998,7 +2075,7 @@
"ScopesResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'scopes' request.",
+ "description": "Response to `scopes` request.",
"properties": {
"body": {
"type": "object",
@@ -2008,7 +2085,7 @@
"items": {
"$ref": "#/definitions/Scope"
},
- "description": "The scopes of the stackframe. If the array has length zero, there are no scopes available."
+ "description": "The scopes of the stack frame. If the array has length zero, there are no scopes available."
}
},
"required": [ "scopes" ]
@@ -2021,7 +2098,7 @@
"VariablesRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "Retrieves all child variables for the given variable reference.\nAn optional filter can be used to limit the fetched children to either named or indexed children.",
+ "description": "Retrieves all child variables for the given variable reference.\nA filter can be used to limit the fetched children to either named or indexed children.",
"properties": {
"command": {
"type": "string",
@@ -2036,28 +2113,28 @@
},
"VariablesArguments": {
"type": "object",
- "description": "Arguments for 'variables' request.",
+ "description": "Arguments for `variables` request.",
"properties": {
"variablesReference": {
"type": "integer",
- "description": "The Variable reference."
+ "description": "The variable for which to retrieve its children. The `variablesReference` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details."
},
"filter": {
"type": "string",
"enum": [ "indexed", "named" ],
- "description": "Optional filter to limit the child variables to either named or indexed. If omitted, both types are fetched."
+ "description": "Filter to limit the child variables to either named or indexed. If omitted, both types are fetched."
},
"start": {
"type": "integer",
- "description": "The index of the first variable to return; if omitted children start at 0."
+ "description": "The index of the first variable to return; if omitted children start at 0.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsVariablePaging` is true."
},
"count": {
"type": "integer",
- "description": "The number of variables to return. If count is missing or 0, all variables are returned."
+ "description": "The number of variables to return. If count is missing or 0, all variables are returned.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsVariablePaging` is true."
},
"format": {
"$ref": "#/definitions/ValueFormat",
- "description": "Specifies details on how to format the Variable values.\nThe attribute is only honored by a debug adapter if the capability 'supportsValueFormattingOptions' is true."
+ "description": "Specifies details on how to format the Variable values.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsValueFormattingOptions` is true."
}
},
"required": [ "variablesReference" ]
@@ -2065,7 +2142,7 @@
"VariablesResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'variables' request.",
+ "description": "Response to `variables` request.",
"properties": {
"body": {
"type": "object",
@@ -2088,7 +2165,7 @@
"SetVariableRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "Set the variable with the given name in the variable container to a new value. Clients should only call this request if the capability 'supportsSetVariable' is true.\nIf a debug adapter implements both setVariable and setExpression, a client will only use setExpression if the variable has an evaluateName property.",
+ "description": "Set the variable with the given name in the variable container to a new value. Clients should only call this request if the corresponding capability `supportsSetVariable` is true.\nIf a debug adapter implements both `setVariable` and `setExpression`, a client will only use `setExpression` if the variable has an `evaluateName` property.",
"properties": {
"command": {
"type": "string",
@@ -2103,11 +2180,11 @@
},
"SetVariableArguments": {
"type": "object",
- "description": "Arguments for 'setVariable' request.",
+ "description": "Arguments for `setVariable` request.",
"properties": {
"variablesReference": {
"type": "integer",
- "description": "The reference of the variable container."
+ "description": "The reference of the variable container. The `variablesReference` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details."
},
"name": {
"type": "string",
@@ -2127,7 +2204,7 @@
"SetVariableResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'setVariable' request.",
+ "description": "Response to `setVariable` request.",
"properties": {
"body": {
"type": "object",
@@ -2142,15 +2219,19 @@
},
"variablesReference": {
"type": "integer",
- "description": "If variablesReference is > 0, the new value is structured and its children can be retrieved by passing variablesReference to the VariablesRequest.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "If `variablesReference` is > 0, the new value is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details."
},
"namedVariables": {
"type": "integer",
- "description": "The number of named child variables.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "The number of named child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
},
"indexedVariables": {
"type": "integer",
- "description": "The number of indexed child variables.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "The number of indexed child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ },
+ "memoryReference": {
+ "type": "string",
+ "description": "A memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is true."
}
},
"required": [ "value" ]
@@ -2178,15 +2259,15 @@
},
"SourceArguments": {
"type": "object",
- "description": "Arguments for 'source' request.",
+ "description": "Arguments for `source` request.",
"properties": {
"source": {
"$ref": "#/definitions/Source",
- "description": "Specifies the source content to load. Either source.path or source.sourceReference must be specified."
+ "description": "Specifies the source content to load. Either `source.path` or `source.sourceReference` must be specified."
},
"sourceReference": {
"type": "integer",
- "description": "The reference to the source. This is the same as source.sourceReference.\nThis is provided for backward compatibility since old backends do not understand the 'source' attribute."
+ "description": "The reference to the source. This is the same as `source.sourceReference`.\nThis is provided for backward compatibility since old clients do not understand the `source` attribute."
}
},
"required": [ "sourceReference" ]
@@ -2194,7 +2275,7 @@
"SourceResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'source' request.",
+ "description": "Response to `source` request.",
"properties": {
"body": {
"type": "object",
@@ -2205,7 +2286,7 @@
},
"mimeType": {
"type": "string",
- "description": "Optional content type (mime type) of the source."
+ "description": "Content type (MIME type) of the source."
}
},
"required": [ "content" ]
@@ -2231,7 +2312,7 @@
"ThreadsResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'threads' request.",
+ "description": "Response to `threads` request.",
"properties": {
"body": {
"type": "object",
@@ -2254,7 +2335,7 @@
"TerminateThreadsRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "The request terminates the threads with the given ids.\nClients should only call this request if the capability 'supportsTerminateThreadsRequest' is true.",
+ "description": "The request terminates the threads with the given ids.\nClients should only call this request if the corresponding capability `supportsTerminateThreadsRequest` is true.",
"properties": {
"command": {
"type": "string",
@@ -2269,7 +2350,7 @@
},
"TerminateThreadsArguments": {
"type": "object",
- "description": "Arguments for 'terminateThreads' request.",
+ "description": "Arguments for `terminateThreads` request.",
"properties": {
"threadIds": {
"type": "array",
@@ -2283,14 +2364,14 @@
"TerminateThreadsResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'terminateThreads' request. This is just an acknowledgement, so no body field is required."
+ "description": "Response to `terminateThreads` request. This is just an acknowledgement, no body field is required."
}]
},
"ModulesRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "Modules can be retrieved from the debug adapter with this request which can either return all modules or a range of modules to support paging.\nClients should only call this request if the capability 'supportsModulesRequest' is true.",
+ "description": "Modules can be retrieved from the debug adapter with this request which can either return all modules or a range of modules to support paging.\nClients should only call this request if the corresponding capability `supportsModulesRequest` is true.",
"properties": {
"command": {
"type": "string",
@@ -2305,7 +2386,7 @@
},
"ModulesArguments": {
"type": "object",
- "description": "Arguments for 'modules' request.",
+ "description": "Arguments for `modules` request.",
"properties": {
"startModule": {
"type": "integer",
@@ -2313,14 +2394,14 @@
},
"moduleCount": {
"type": "integer",
- "description": "The number of modules to return. If moduleCount is not specified or 0, all modules are returned."
+ "description": "The number of modules to return. If `moduleCount` is not specified or 0, all modules are returned."
}
}
},
"ModulesResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'modules' request.",
+ "description": "Response to `modules` request.",
"properties": {
"body": {
"type": "object",
@@ -2347,7 +2428,7 @@
"LoadedSourcesRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "Retrieves the set of all sources currently loaded by the debugged process.\nClients should only call this request if the capability 'supportsLoadedSourcesRequest' is true.",
+ "description": "Retrieves the set of all sources currently loaded by the debugged process.\nClients should only call this request if the corresponding capability `supportsLoadedSourcesRequest` is true.",
"properties": {
"command": {
"type": "string",
@@ -2362,12 +2443,12 @@
},
"LoadedSourcesArguments": {
"type": "object",
- "description": "Arguments for 'loadedSources' request."
+ "description": "Arguments for `loadedSources` request."
},
"LoadedSourcesResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'loadedSources' request.",
+ "description": "Response to `loadedSources` request.",
"properties": {
"body": {
"type": "object",
@@ -2390,7 +2471,7 @@
"EvaluateRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "Evaluates the given expression in the context of the top most stack frame.\nThe expression has access to any variables and arguments that are in scope.",
+ "description": "Evaluates the given expression in the context of the topmost stack frame.\nThe expression has access to any variables and arguments that are in scope.",
"properties": {
"command": {
"type": "string",
@@ -2405,7 +2486,7 @@
},
"EvaluateArguments": {
"type": "object",
- "description": "Arguments for 'evaluate' request.",
+ "description": "Arguments for `evaluate` request.",
"properties": {
"expression": {
"type": "string",
@@ -2417,18 +2498,19 @@
},
"context": {
"type": "string",
- "_enum": [ "watch", "repl", "hover", "clipboard" ],
+ "_enum": [ "watch", "repl", "hover", "clipboard", "variables" ],
"enumDescriptions": [
- "evaluate is run in a watch.",
- "evaluate is run from REPL console.",
- "evaluate is run from a data hover.",
- "evaluate is run to generate the value that will be stored in the clipboard.\nThe attribute is only honored by a debug adapter if the capability 'supportsClipboardContext' is true."
+ "evaluate is called from a watch view context.",
+ "evaluate is called from a REPL context.",
+ "evaluate is called to generate the debug hover contents.\nThis value should only be used if the corresponding capability `supportsEvaluateForHovers` is true.",
+ "evaluate is called to generate clipboard contents.\nThis value should only be used if the corresponding capability `supportsClipboardContext` is true.",
+ "evaluate is called from a variables view context."
],
- "description": "The context in which the evaluate request is run."
+ "description": "The context in which the evaluate request is used."
},
"format": {
"$ref": "#/definitions/ValueFormat",
- "description": "Specifies details on how to format the Evaluate result.\nThe attribute is only honored by a debug adapter if the capability 'supportsValueFormattingOptions' is true."
+ "description": "Specifies details on how to format the result.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsValueFormattingOptions` is true."
}
},
"required": [ "expression" ]
@@ -2436,7 +2518,7 @@
"EvaluateResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'evaluate' request.",
+ "description": "Response to `evaluate` request.",
"properties": {
"body": {
"type": "object",
@@ -2447,27 +2529,27 @@
},
"type": {
"type": "string",
- "description": "The optional type of the evaluate result.\nThis attribute should only be returned by a debug adapter if the client has passed the value true for the 'supportsVariableType' capability of the 'initialize' request."
+ "description": "The type of the evaluate result.\nThis attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is true."
},
"presentationHint": {
"$ref": "#/definitions/VariablePresentationHint",
- "description": "Properties of a evaluate result that can be used to determine how to render the result in the UI."
+ "description": "Properties of an evaluate result that can be used to determine how to render the result in the UI."
},
"variablesReference": {
"type": "integer",
- "description": "If variablesReference is > 0, the evaluate result is structured and its children can be retrieved by passing variablesReference to the VariablesRequest.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "If `variablesReference` is > 0, the evaluate result is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details."
},
"namedVariables": {
"type": "integer",
- "description": "The number of named child variables.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "The number of named child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
},
"indexedVariables": {
"type": "integer",
- "description": "The number of indexed child variables.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "The number of indexed child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
},
"memoryReference": {
"type": "string",
- "description": "Optional memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute should be returned by a debug adapter if the client has passed the value true for the 'supportsMemoryReferences' capability of the 'initialize' request."
+ "description": "A memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is true."
}
},
"required": [ "result", "variablesReference" ]
@@ -2480,7 +2562,7 @@
"SetExpressionRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "Evaluates the given 'value' expression and assigns it to the 'expression' which must be a modifiable l-value.\nThe expressions have access to any variables and arguments that are in scope of the specified frame.\nClients should only call this request if the capability 'supportsSetExpression' is true.\nIf a debug adapter implements both setExpression and setVariable, a client will only use setExpression if the variable has an evaluateName property.",
+ "description": "Evaluates the given `value` expression and assigns it to the `expression` which must be a modifiable l-value.\nThe expressions have access to any variables and arguments that are in scope of the specified frame.\nClients should only call this request if the corresponding capability `supportsSetExpression` is true.\nIf a debug adapter implements both `setExpression` and `setVariable`, a client uses `setExpression` if the variable has an `evaluateName` property.",
"properties": {
"command": {
"type": "string",
@@ -2495,7 +2577,7 @@
},
"SetExpressionArguments": {
"type": "object",
- "description": "Arguments for 'setExpression' request.",
+ "description": "Arguments for `setExpression` request.",
"properties": {
"expression": {
"type": "string",
@@ -2519,7 +2601,7 @@
"SetExpressionResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'setExpression' request.",
+ "description": "Response to `setExpression` request.",
"properties": {
"body": {
"type": "object",
@@ -2530,7 +2612,7 @@
},
"type": {
"type": "string",
- "description": "The optional type of the value.\nThis attribute should only be returned by a debug adapter if the client has passed the value true for the 'supportsVariableType' capability of the 'initialize' request."
+ "description": "The type of the value.\nThis attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is true."
},
"presentationHint": {
"$ref": "#/definitions/VariablePresentationHint",
@@ -2538,15 +2620,19 @@
},
"variablesReference": {
"type": "integer",
- "description": "If variablesReference is > 0, the value is structured and its children can be retrieved by passing variablesReference to the VariablesRequest.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "If `variablesReference` is > 0, the evaluate result is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details."
},
"namedVariables": {
"type": "integer",
- "description": "The number of named child variables.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "The number of named child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
},
"indexedVariables": {
"type": "integer",
- "description": "The number of indexed child variables.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "The number of indexed child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ },
+ "memoryReference": {
+ "type": "string",
+ "description": "A memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is true."
}
},
"required": [ "value" ]
@@ -2559,7 +2645,7 @@
"StepInTargetsRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "This request retrieves the possible stepIn targets for the specified stack frame.\nThese targets can be used in the 'stepIn' request.\nThe StepInTargets may only be called if the 'supportsStepInTargetsRequest' capability exists and is true.\nClients should only call this request if the capability 'supportsStepInTargetsRequest' is true.",
+ "description": "This request retrieves the possible step-in targets for the specified stack frame.\nThese targets can be used in the `stepIn` request.\nClients should only call this request if the corresponding capability `supportsStepInTargetsRequest` is true.",
"properties": {
"command": {
"type": "string",
@@ -2574,11 +2660,11 @@
},
"StepInTargetsArguments": {
"type": "object",
- "description": "Arguments for 'stepInTargets' request.",
+ "description": "Arguments for `stepInTargets` request.",
"properties": {
"frameId": {
"type": "integer",
- "description": "The stack frame for which to retrieve the possible stepIn targets."
+ "description": "The stack frame for which to retrieve the possible step-in targets."
}
},
"required": [ "frameId" ]
@@ -2586,7 +2672,7 @@
"StepInTargetsResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'stepInTargets' request.",
+ "description": "Response to `stepInTargets` request.",
"properties": {
"body": {
"type": "object",
@@ -2596,7 +2682,7 @@
"items": {
"$ref": "#/definitions/StepInTarget"
},
- "description": "The possible stepIn targets of the specified source location."
+ "description": "The possible step-in targets of the specified source location."
}
},
"required": [ "targets" ]
@@ -2609,7 +2695,7 @@
"GotoTargetsRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "This request retrieves the possible goto targets for the specified source location.\nThese targets can be used in the 'goto' request.\nClients should only call this request if the capability 'supportsGotoTargetsRequest' is true.",
+ "description": "This request retrieves the possible goto targets for the specified source location.\nThese targets can be used in the `goto` request.\nClients should only call this request if the corresponding capability `supportsGotoTargetsRequest` is true.",
"properties": {
"command": {
"type": "string",
@@ -2624,7 +2710,7 @@
},
"GotoTargetsArguments": {
"type": "object",
- "description": "Arguments for 'gotoTargets' request.",
+ "description": "Arguments for `gotoTargets` request.",
"properties": {
"source": {
"$ref": "#/definitions/Source",
@@ -2636,7 +2722,7 @@
},
"column": {
"type": "integer",
- "description": "An optional column location for which the goto targets are determined."
+ "description": "The position within `line` for which the goto targets are determined. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based."
}
},
"required": [ "source", "line" ]
@@ -2644,7 +2730,7 @@
"GotoTargetsResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'gotoTargets' request.",
+ "description": "Response to `gotoTargets` request.",
"properties": {
"body": {
"type": "object",
@@ -2667,7 +2753,7 @@
"CompletionsRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "Returns a list of possible completions for a given caret position and text.\nClients should only call this request if the capability 'supportsCompletionsRequest' is true.",
+ "description": "Returns a list of possible completions for a given caret position and text.\nClients should only call this request if the corresponding capability `supportsCompletionsRequest` is true.",
"properties": {
"command": {
"type": "string",
@@ -2682,7 +2768,7 @@
},
"CompletionsArguments": {
"type": "object",
- "description": "Arguments for 'completions' request.",
+ "description": "Arguments for `completions` request.",
"properties": {
"frameId": {
"type": "integer",
@@ -2690,15 +2776,15 @@
},
"text": {
"type": "string",
- "description": "One or more source lines. Typically this is the text a user has typed into the debug console before he asked for completion."
+ "description": "One or more source lines. Typically this is the text users have typed into the debug console before they asked for completion."
},
"column": {
"type": "integer",
- "description": "The character position for which to determine the completion proposals."
+ "description": "The position within `text` for which to determine the completion proposals. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based."
},
"line": {
"type": "integer",
- "description": "An optional line for which to determine the completion proposals. If missing the first line of the text is assumed."
+ "description": "A line for which to determine the completion proposals. If missing the first line of the text is assumed."
}
},
"required": [ "text", "column" ]
@@ -2706,7 +2792,7 @@
"CompletionsResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'completions' request.",
+ "description": "Response to `completions` request.",
"properties": {
"body": {
"type": "object",
@@ -2729,7 +2815,7 @@
"ExceptionInfoRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "Retrieves the details of the exception that caused this event to be raised.\nClients should only call this request if the capability 'supportsExceptionInfoRequest' is true.",
+ "description": "Retrieves the details of the exception that caused this event to be raised.\nClients should only call this request if the corresponding capability `supportsExceptionInfoRequest` is true.",
"properties": {
"command": {
"type": "string",
@@ -2744,7 +2830,7 @@
},
"ExceptionInfoArguments": {
"type": "object",
- "description": "Arguments for 'exceptionInfo' request.",
+ "description": "Arguments for `exceptionInfo` request.",
"properties": {
"threadId": {
"type": "integer",
@@ -2756,7 +2842,7 @@
"ExceptionInfoResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'exceptionInfo' request.",
+ "description": "Response to `exceptionInfo` request.",
"properties": {
"body": {
"type": "object",
@@ -2767,7 +2853,7 @@
},
"description": {
"type": "string",
- "description": "Descriptive text for the exception provided by the debug adapter."
+ "description": "Descriptive text for the exception."
},
"breakMode": {
"$ref": "#/definitions/ExceptionBreakMode",
@@ -2788,7 +2874,7 @@
"ReadMemoryRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "Reads bytes from memory at the provided location.\nClients should only call this request if the capability 'supportsReadMemoryRequest' is true.",
+ "description": "Reads bytes from memory at the provided location.\nClients should only call this request if the corresponding capability `supportsReadMemoryRequest` is true.",
"properties": {
"command": {
"type": "string",
@@ -2803,7 +2889,7 @@
},
"ReadMemoryArguments": {
"type": "object",
- "description": "Arguments for 'readMemory' request.",
+ "description": "Arguments for `readMemory` request.",
"properties": {
"memoryReference": {
"type": "string",
@@ -2811,7 +2897,7 @@
},
"offset": {
"type": "integer",
- "description": "Optional offset (in bytes) to be applied to the reference location before reading data. Can be negative."
+ "description": "Offset (in bytes) to be applied to the reference location before reading data. Can be negative."
},
"count": {
"type": "integer",
@@ -2823,22 +2909,22 @@
"ReadMemoryResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'readMemory' request.",
+ "description": "Response to `readMemory` request.",
"properties": {
"body": {
"type": "object",
"properties": {
"address": {
"type": "string",
- "description": "The address of the first byte of data returned.\nTreated as a hex value if prefixed with '0x', or as a decimal value otherwise."
+ "description": "The address of the first byte of data returned.\nTreated as a hex value if prefixed with `0x`, or as a decimal value otherwise."
},
"unreadableBytes": {
"type": "integer",
- "description": "The number of unreadable bytes encountered after the last successfully read byte.\nThis can be used to determine the number of bytes that must be skipped before a subsequent 'readMemory' request will succeed."
+ "description": "The number of unreadable bytes encountered after the last successfully read byte.\nThis can be used to determine the number of bytes that should be skipped before a subsequent `readMemory` request succeeds."
},
"data": {
"type": "string",
- "description": "The bytes read from memory, encoded using base64."
+ "description": "The bytes read from memory, encoded using base64. If the decoded length of `data` is less than the requested `count` in the original `readMemory` request, and `unreadableBytes` is zero or omitted, then the client should assume it's reached the end of readable memory."
}
},
"required": [ "address" ]
@@ -2850,7 +2936,7 @@
"WriteMemoryRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "Writes bytes to memory at the provided location.\nClients should only call this request if the capability 'supportsWriteMemoryRequest' is true.",
+ "description": "Writes bytes to memory at the provided location.\nClients should only call this request if the corresponding capability `supportsWriteMemoryRequest` is true.",
"properties": {
"command": {
"type": "string",
@@ -2865,7 +2951,7 @@
},
"WriteMemoryArguments": {
"type": "object",
- "description": "Arguments for 'writeMemory' request.",
+ "description": "Arguments for `writeMemory` request.",
"properties": {
"memoryReference": {
"type": "string",
@@ -2873,11 +2959,11 @@
},
"offset": {
"type": "integer",
- "description": "Optional offset (in bytes) to be applied to the reference location before writing data. Can be negative."
+ "description": "Offset (in bytes) to be applied to the reference location before writing data. Can be negative."
},
"allowPartial": {
"type": "boolean",
- "description": "Optional property to control partial writes. If true, the debug adapter should attempt to write memory even if the entire memory region is not writable. In such a case the debug adapter should stop after hitting the first byte of memory that cannot be written and return the number of bytes written in the response via the 'offset' and 'bytesWritten' properties.\nIf false or missing, a debug adapter should attempt to verify the region is writable before writing, and fail the response if it is not."
+ "description": "Property to control partial writes. If true, the debug adapter should attempt to write memory even if the entire memory region is not writable. In such a case the debug adapter should stop after hitting the first byte of memory that cannot be written and return the number of bytes written in the response via the `offset` and `bytesWritten` properties.\nIf false or missing, a debug adapter should attempt to verify the region is writable before writing, and fail the response if it is not."
},
"data": {
"type": "string",
@@ -2889,18 +2975,18 @@
"WriteMemoryResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'writeMemory' request.",
+ "description": "Response to `writeMemory` request.",
"properties": {
"body": {
"type": "object",
"properties": {
"offset": {
"type": "integer",
- "description": "Optional property that should be returned when 'allowPartial' is true to indicate the offset of the first byte of data successfully written. Can be negative."
+ "description": "Property that should be returned when `allowPartial` is true to indicate the offset of the first byte of data successfully written. Can be negative."
},
"bytesWritten": {
"type": "integer",
- "description": "Optional property that should be returned when 'allowPartial' is true to indicate the number of bytes starting from address that were successfully written."
+ "description": "Property that should be returned when `allowPartial` is true to indicate the number of bytes starting from address that were successfully written."
}
}
}
@@ -2911,7 +2997,7 @@
"DisassembleRequest": {
"allOf": [ { "$ref": "#/definitions/Request" }, {
"type": "object",
- "description": "Disassembles code stored at the provided location.\nClients should only call this request if the capability 'supportsDisassembleRequest' is true.",
+ "description": "Disassembles code stored at the provided location.\nClients should only call this request if the corresponding capability `supportsDisassembleRequest` is true.",
"properties": {
"command": {
"type": "string",
@@ -2926,7 +3012,7 @@
},
"DisassembleArguments": {
"type": "object",
- "description": "Arguments for 'disassemble' request.",
+ "description": "Arguments for `disassemble` request.",
"properties": {
"memoryReference": {
"type": "string",
@@ -2934,11 +3020,11 @@
},
"offset": {
"type": "integer",
- "description": "Optional offset (in bytes) to be applied to the reference location before disassembling. Can be negative."
+ "description": "Offset (in bytes) to be applied to the reference location before disassembling. Can be negative."
},
"instructionOffset": {
"type": "integer",
- "description": "Optional offset (in instructions) to be applied after the byte offset (if any) before disassembling. Can be negative."
+ "description": "Offset (in instructions) to be applied after the byte offset (if any) before disassembling. Can be negative."
},
"instructionCount": {
"type": "integer",
@@ -2954,7 +3040,7 @@
"DisassembleResponse": {
"allOf": [ { "$ref": "#/definitions/Response" }, {
"type": "object",
- "description": "Response to 'disassemble' request.",
+ "description": "Response to `disassemble` request.",
"properties": {
"body": {
"type": "object",
@@ -2980,7 +3066,7 @@
"properties": {
"supportsConfigurationDoneRequest": {
"type": "boolean",
- "description": "The debug adapter supports the 'configurationDone' request."
+ "description": "The debug adapter supports the `configurationDone` request."
},
"supportsFunctionBreakpoints": {
"type": "boolean",
@@ -2996,18 +3082,18 @@
},
"supportsEvaluateForHovers": {
"type": "boolean",
- "description": "The debug adapter supports a (side effect free) evaluate request for data hovers."
+ "description": "The debug adapter supports a (side effect free) `evaluate` request for data hovers."
},
"exceptionBreakpointFilters": {
"type": "array",
"items": {
"$ref": "#/definitions/ExceptionBreakpointsFilter"
},
- "description": "Available exception filter options for the 'setExceptionBreakpoints' request."
+ "description": "Available exception filter options for the `setExceptionBreakpoints` request."
},
"supportsStepBack": {
"type": "boolean",
- "description": "The debug adapter supports stepping back via the 'stepBack' and 'reverseContinue' requests."
+ "description": "The debug adapter supports stepping back via the `stepBack` and `reverseContinue` requests."
},
"supportsSetVariable": {
"type": "boolean",
@@ -3019,26 +3105,26 @@
},
"supportsGotoTargetsRequest": {
"type": "boolean",
- "description": "The debug adapter supports the 'gotoTargets' request."
+ "description": "The debug adapter supports the `gotoTargets` request."
},
"supportsStepInTargetsRequest": {
"type": "boolean",
- "description": "The debug adapter supports the 'stepInTargets' request."
+ "description": "The debug adapter supports the `stepInTargets` request."
},
"supportsCompletionsRequest": {
"type": "boolean",
- "description": "The debug adapter supports the 'completions' request."
+ "description": "The debug adapter supports the `completions` request."
},
"completionTriggerCharacters": {
"type": "array",
"items": {
"type": "string"
},
- "description": "The set of characters that should trigger completion in a REPL. If not specified, the UI should assume the '.' character."
+ "description": "The set of characters that should trigger completion in a REPL. If not specified, the UI should assume the `.` character."
},
"supportsModulesRequest": {
"type": "boolean",
- "description": "The debug adapter supports the 'modules' request."
+ "description": "The debug adapter supports the `modules` request."
},
"additionalModuleColumns": {
"type": "array",
@@ -3056,51 +3142,51 @@
},
"supportsRestartRequest": {
"type": "boolean",
- "description": "The debug adapter supports the 'restart' request. In this case a client should not implement 'restart' by terminating and relaunching the adapter but by calling the RestartRequest."
+ "description": "The debug adapter supports the `restart` request. In this case a client should not implement `restart` by terminating and relaunching the adapter but by calling the `restart` request."
},
"supportsExceptionOptions": {
"type": "boolean",
- "description": "The debug adapter supports 'exceptionOptions' on the setExceptionBreakpoints request."
+ "description": "The debug adapter supports `exceptionOptions` on the `setExceptionBreakpoints` request."
},
"supportsValueFormattingOptions": {
"type": "boolean",
- "description": "The debug adapter supports a 'format' attribute on the stackTraceRequest, variablesRequest, and evaluateRequest."
+ "description": "The debug adapter supports a `format` attribute on the `stackTrace`, `variables`, and `evaluate` requests."
},
"supportsExceptionInfoRequest": {
"type": "boolean",
- "description": "The debug adapter supports the 'exceptionInfo' request."
+ "description": "The debug adapter supports the `exceptionInfo` request."
},
"supportTerminateDebuggee": {
"type": "boolean",
- "description": "The debug adapter supports the 'terminateDebuggee' attribute on the 'disconnect' request."
+ "description": "The debug adapter supports the `terminateDebuggee` attribute on the `disconnect` request."
},
"supportSuspendDebuggee": {
"type": "boolean",
- "description": "The debug adapter supports the 'suspendDebuggee' attribute on the 'disconnect' request."
+ "description": "The debug adapter supports the `suspendDebuggee` attribute on the `disconnect` request."
},
"supportsDelayedStackTraceLoading": {
"type": "boolean",
- "description": "The debug adapter supports the delayed loading of parts of the stack, which requires that both the 'startFrame' and 'levels' arguments and an optional 'totalFrames' result of the 'StackTrace' request are supported."
+ "description": "The debug adapter supports the delayed loading of parts of the stack, which requires that both the `startFrame` and `levels` arguments and the `totalFrames` result of the `stackTrace` request are supported."
},
"supportsLoadedSourcesRequest": {
"type": "boolean",
- "description": "The debug adapter supports the 'loadedSources' request."
+ "description": "The debug adapter supports the `loadedSources` request."
},
"supportsLogPoints": {
"type": "boolean",
- "description": "The debug adapter supports logpoints by interpreting the 'logMessage' attribute of the SourceBreakpoint."
+ "description": "The debug adapter supports log points by interpreting the `logMessage` attribute of the `SourceBreakpoint`."
},
"supportsTerminateThreadsRequest": {
"type": "boolean",
- "description": "The debug adapter supports the 'terminateThreads' request."
+ "description": "The debug adapter supports the `terminateThreads` request."
},
"supportsSetExpression": {
"type": "boolean",
- "description": "The debug adapter supports the 'setExpression' request."
+ "description": "The debug adapter supports the `setExpression` request."
},
"supportsTerminateRequest": {
"type": "boolean",
- "description": "The debug adapter supports the 'terminate' request."
+ "description": "The debug adapter supports the `terminate` request."
},
"supportsDataBreakpoints": {
"type": "boolean",
@@ -3108,31 +3194,31 @@
},
"supportsReadMemoryRequest": {
"type": "boolean",
- "description": "The debug adapter supports the 'readMemory' request."
+ "description": "The debug adapter supports the `readMemory` request."
},
"supportsWriteMemoryRequest": {
"type": "boolean",
- "description": "The debug adapter supports the 'writeMemory' request."
+ "description": "The debug adapter supports the `writeMemory` request."
},
"supportsDisassembleRequest": {
"type": "boolean",
- "description": "The debug adapter supports the 'disassemble' request."
+ "description": "The debug adapter supports the `disassemble` request."
},
"supportsCancelRequest": {
"type": "boolean",
- "description": "The debug adapter supports the 'cancel' request."
+ "description": "The debug adapter supports the `cancel` request."
},
"supportsBreakpointLocationsRequest": {
"type": "boolean",
- "description": "The debug adapter supports the 'breakpointLocations' request."
+ "description": "The debug adapter supports the `breakpointLocations` request."
},
"supportsClipboardContext": {
"type": "boolean",
- "description": "The debug adapter supports the 'clipboard' context value in the 'evaluate' request."
+ "description": "The debug adapter supports the `clipboard` context value in the `evaluate` request."
},
"supportsSteppingGranularity": {
"type": "boolean",
- "description": "The debug adapter supports stepping granularities (argument 'granularity') for the stepping requests."
+ "description": "The debug adapter supports stepping granularities (argument `granularity`) for the stepping requests."
},
"supportsInstructionBreakpoints": {
"type": "boolean",
@@ -3140,34 +3226,34 @@
},
"supportsExceptionFilterOptions": {
"type": "boolean",
- "description": "The debug adapter supports 'filterOptions' as an argument on the 'setExceptionBreakpoints' request."
+ "description": "The debug adapter supports `filterOptions` as an argument on the `setExceptionBreakpoints` request."
},
"supportsSingleThreadExecutionRequests": {
"type": "boolean",
- "description": "The debug adapter supports the 'singleThread' property on the execution requests ('continue', 'next', 'stepIn', 'stepOut', 'reverseContinue', 'stepBack')."
+ "description": "The debug adapter supports the `singleThread` property on the execution requests (`continue`, `next`, `stepIn`, `stepOut`, `reverseContinue`, `stepBack`)."
}
}
},
"ExceptionBreakpointsFilter": {
"type": "object",
- "description": "An ExceptionBreakpointsFilter is shown in the UI as an filter option for configuring how exceptions are dealt with.",
+ "description": "An `ExceptionBreakpointsFilter` is shown in the UI as an filter option for configuring how exceptions are dealt with.",
"properties": {
"filter": {
"type": "string",
- "description": "The internal ID of the filter option. This value is passed to the 'setExceptionBreakpoints' request."
+ "description": "The internal ID of the filter option. This value is passed to the `setExceptionBreakpoints` request."
},
"label": {
"type": "string",
- "description": "The name of the filter option. This will be shown in the UI."
+ "description": "The name of the filter option. This is shown in the UI."
},
"description": {
"type": "string",
- "description": "An optional help text providing additional information about the exception filter. This string is typically shown as a hover and must be translated."
+ "description": "A help text providing additional information about the exception filter. This string is typically shown as a hover and can be translated."
},
"default": {
"type": "boolean",
- "description": "Initial value of the filter option. If not specified a value 'false' is assumed."
+ "description": "Initial value of the filter option. If not specified a value false is assumed."
},
"supportsCondition": {
"type": "boolean",
@@ -3175,7 +3261,7 @@
},
"conditionDescription": {
"type": "string",
- "description": "An optional help text providing information about the condition. This string is shown as the placeholder text for a text box and must be translated."
+ "description": "A help text providing information about the condition. This string is shown as the placeholder text for a text box and can be translated."
}
},
"required": [ "filter", "label" ]
@@ -3187,18 +3273,18 @@
"properties": {
"id": {
"type": "integer",
- "description": "Unique identifier for the message."
+ "description": "Unique (within a debug adapter implementation) identifier for the message. The purpose of these error IDs is to help extension authors that have the requirement that every user visible error message needs a corresponding error number, so that users or customer support can find information about the specific error more easily."
},
"format": {
"type": "string",
- "description": "A format string for the message. Embedded variables have the form '{name}'.\nIf variable name starts with an underscore character, the variable does not contain user data (PII) and can be safely used for telemetry purposes."
+ "description": "A format string for the message. Embedded variables have the form `{name}`.\nIf variable name starts with an underscore character, the variable does not contain user data (PII) and can be safely used for telemetry purposes."
},
"variables": {
"type": "object",
"description": "An object used as a dictionary for looking up the variables in the format string.",
"additionalProperties": {
"type": "string",
- "description": "Values must be strings."
+ "description": "All dictionary values must be strings."
}
},
"sendTelemetry": {
@@ -3211,11 +3297,11 @@
},
"url": {
"type": "string",
- "description": "An optional url where additional information about this message can be found."
+ "description": "A url where additional information about this message can be found."
},
"urlLabel": {
"type": "string",
- "description": "An optional label that is presented to the user as the UI for opening the url."
+ "description": "A label that is presented to the user as the UI for opening the url."
}
},
"required": [ "id", "format" ]
@@ -3223,7 +3309,7 @@
"Module": {
"type": "object",
- "description": "A Module object represents a row in the modules view.\nTwo attributes are mandatory: an id identifies a module in the modules view and is used in a ModuleEvent for identifying a module for adding, updating or deleting.\nThe name is used to minimally render the module in the UI.\n\nAdditional attributes can be added to the module. They will show up in the module View if they have a corresponding ColumnDescriptor.\n\nTo avoid an unnecessary proliferation of additional attributes with similar semantics but different names\nwe recommend to re-use attributes from the 'recommended' list below first, and only introduce new attributes if nothing appropriate could be found.",
+ "description": "A Module object represents a row in the modules view.\nThe `id` attribute identifies a module in the modules view and is used in a `module` event for identifying a module for adding, updating or deleting.\nThe `name` attribute is used to minimally render the module in the UI.\n\nAdditional attributes can be added to the module. They show up in the module view if they have a corresponding `ColumnDescriptor`.\n\nTo avoid an unnecessary proliferation of additional attributes with similar semantics but different names, we recommend to re-use attributes from the 'recommended' list below first, and only introduce new attributes if nothing appropriate could be found.",
"properties": {
"id": {
"type": ["integer", "string"],
@@ -3235,7 +3321,7 @@
},
"path": {
"type": "string",
- "description": "optional but recommended attributes.\nalways try to use these first before introducing additional attributes.\n\nLogical full path to the module. The exact definition is implementation defined, but usually this would be a full path to the on-disk file for the module."
+ "description": "Logical full path to the module. The exact definition is implementation defined, but usually this would be a full path to the on-disk file for the module."
},
"isOptimized": {
"type": "boolean",
@@ -3251,7 +3337,7 @@
},
"symbolStatus": {
"type": "string",
- "description": "User understandable description of if symbols were found for the module (ex: 'Symbols Loaded', 'Symbols not found', etc."
+ "description": "User-understandable description of if symbols were found for the module (ex: 'Symbols Loaded', 'Symbols not found', etc.)"
},
"symbolFilePath": {
"type": "string",
@@ -3259,7 +3345,7 @@
},
"dateTimeStamp": {
"type": "string",
- "description": "Module created or modified."
+ "description": "Module created or modified, encoded as a RFC 3339 timestamp."
},
"addressRange": {
"type": "string",
@@ -3271,7 +3357,7 @@
"ColumnDescriptor": {
"type": "object",
- "description": "A ColumnDescriptor specifies what module attribute to show in a column of the ModulesView, how to format it,\nand what the column's label should be.\nIt is only used if the underlying UI actually supports this level of customization.",
+ "description": "A `ColumnDescriptor` specifies what module attribute to show in a column of the modules view, how to format it,\nand what the column's label should be.\nIt is only used if the underlying UI actually supports this level of customization.",
"properties": {
"attributeName": {
"type": "string",
@@ -3288,7 +3374,7 @@
"type": {
"type": "string",
"enum": [ "string", "number", "boolean", "unixTimestampUTC" ],
- "description": "Datatype of values in this column. Defaults to 'string' if not specified."
+ "description": "Datatype of values in this column. Defaults to `string` if not specified."
},
"width": {
"type": "integer",
@@ -3298,20 +3384,6 @@
"required": [ "attributeName", "label"]
},
- "ModulesViewDescriptor": {
- "type": "object",
- "description": "The ModulesViewDescriptor is the container for all declarative configuration options of a ModuleView.\nFor now it only specifies the columns to be shown in the modules view.",
- "properties": {
- "columns": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/ColumnDescriptor"
- }
- }
- },
- "required": [ "columns" ]
- },
-
"Thread": {
"type": "object",
"description": "A Thread",
@@ -3322,7 +3394,7 @@
},
"name": {
"type": "string",
- "description": "A name of the thread."
+ "description": "The name of the thread."
}
},
"required": [ "id", "name" ]
@@ -3330,7 +3402,7 @@
"Source": {
"type": "object",
- "description": "A Source is a descriptor for source code.\nIt is returned from the debug adapter as part of a StackFrame and it is used by clients when specifying breakpoints.",
+ "description": "A `Source` is a descriptor for source code.\nIt is returned from the debug adapter as part of a `StackFrame` and it is used by clients when specifying breakpoints.",
"properties": {
"name": {
"type": "string",
@@ -3338,31 +3410,31 @@
},
"path": {
"type": "string",
- "description": "The path of the source to be shown in the UI.\nIt is only used to locate and load the content of the source if no sourceReference is specified (or its value is 0)."
+ "description": "The path of the source to be shown in the UI.\nIt is only used to locate and load the content of the source if no `sourceReference` is specified (or its value is 0)."
},
"sourceReference": {
"type": "integer",
- "description": "If sourceReference > 0 the contents of the source must be retrieved through the SourceRequest (even if a path is specified).\nA sourceReference is only valid for a session, so it must not be used to persist a source.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "If the value > 0 the contents of the source must be retrieved through the `source` request (even if a path is specified).\nSince a `sourceReference` is only valid for a session, it can not be used to persist a source.\nThe value should be less than or equal to 2147483647 (2^31-1)."
},
"presentationHint": {
"type": "string",
- "description": "An optional hint for how to present the source in the UI.\nA value of 'deemphasize' can be used to indicate that the source is not available or that it is skipped on stepping.",
+ "description": "A hint for how to present the source in the UI.\nA value of `deemphasize` can be used to indicate that the source is not available or that it is skipped on stepping.",
"enum": [ "normal", "emphasize", "deemphasize" ]
},
"origin": {
"type": "string",
- "description": "The (optional) origin of this source: possible values 'internal module', 'inlined content from source map', etc."
+ "description": "The origin of this source. For example, 'internal module', 'inlined content from source map', etc."
},
"sources": {
"type": "array",
"items": {
"$ref": "#/definitions/Source"
},
- "description": "An optional list of sources that are related to this source. These may be the source that generated this source."
+ "description": "A list of sources that are related to this source. These may be the source that generated this source."
},
"adapterData": {
"type": [ "array", "boolean", "integer", "null", "number", "object", "string" ],
- "description": "Optional data that a debug adapter might want to loop through the client.\nThe client should leave the data intact and persist it across sessions. The client should not interpret the data."
+ "description": "Additional data that a debug adapter might want to loop through the client.\nThe client should leave the data intact and persist it across sessions. The client should not interpret the data."
},
"checksums": {
"type": "array",
@@ -3380,7 +3452,7 @@
"properties": {
"id": {
"type": "integer",
- "description": "An identifier for the stack frame. It must be unique across all threads.\nThis id can be used to retrieve the scopes of the frame with the 'scopesRequest' or to restart the execution of a stackframe."
+ "description": "An identifier for the stack frame. It must be unique across all threads.\nThis id can be used to retrieve the scopes of the frame with the `scopes` request or to restart the execution of a stack frame."
},
"name": {
"type": "string",
@@ -3388,31 +3460,31 @@
},
"source": {
"$ref": "#/definitions/Source",
- "description": "The optional source of the frame."
+ "description": "The source of the frame."
},
"line": {
"type": "integer",
- "description": "The line within the file of the frame. If source is null or doesn't exist, line is 0 and must be ignored."
+ "description": "The line within the source of the frame. If the source attribute is missing or doesn't exist, `line` is 0 and should be ignored by the client."
},
"column": {
"type": "integer",
- "description": "The column within the line. If source is null or doesn't exist, column is 0 and must be ignored."
+ "description": "Start position of the range covered by the stack frame. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If attribute `source` is missing or doesn't exist, `column` is 0 and should be ignored by the client."
},
"endLine": {
"type": "integer",
- "description": "An optional end line of the range covered by the stack frame."
+ "description": "The end line of the range covered by the stack frame."
},
"endColumn": {
"type": "integer",
- "description": "An optional end column of the range covered by the stack frame."
+ "description": "End position of the range covered by the stack frame. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based."
},
"canRestart": {
"type": "boolean",
- "description": "Indicates whether this frame can be restarted with the 'restart' request. Clients should only use this if the debug adapter supports the 'restart' request (capability 'supportsRestartRequest' is true)."
+ "description": "Indicates whether this frame can be restarted with the `restart` request. Clients should only use this if the debug adapter supports the `restart` request and the corresponding capability `supportsRestartRequest` is true. If a debug adapter has this capability, then `canRestart` defaults to `true` if the property is absent."
},
"instructionPointerReference": {
"type": "string",
- "description": "Optional memory reference for the current instruction pointer in this frame."
+ "description": "A memory reference for the current instruction pointer in this frame."
},
"moduleId": {
"type": ["integer", "string"],
@@ -3421,7 +3493,7 @@
"presentationHint": {
"type": "string",
"enum": [ "normal", "label", "subtle" ],
- "description": "An optional hint for how to present this frame in the UI.\nA value of 'label' can be used to indicate that the frame is an artificial frame that is used as a visual label or separator. A value of 'subtle' can be used to change the appearance of a frame in a 'subtle' way."
+ "description": "A hint for how to present this frame in the UI.\nA value of `label` can be used to indicate that the frame is an artificial frame that is used as a visual label or separator. A value of `subtle` can be used to change the appearance of a frame in a 'subtle' way."
}
},
"required": [ "id", "name", "line", "column" ]
@@ -3429,7 +3501,7 @@
"Scope": {
"type": "object",
- "description": "A Scope is a named container for variables. Optionally a scope can map to a source or a range within a source.",
+ "description": "A `Scope` is a named container for variables. Optionally a scope can map to a source or a range within a source.",
"properties": {
"name": {
"type": "string",
@@ -3437,25 +3509,25 @@
},
"presentationHint": {
"type": "string",
- "description": "An optional hint for how to present this scope in the UI. If this attribute is missing, the scope is shown with a generic UI.",
+ "description": "A hint for how to present this scope in the UI. If this attribute is missing, the scope is shown with a generic UI.",
"_enum": [ "arguments", "locals", "registers" ],
"enumDescriptions": [
"Scope contains method arguments.",
"Scope contains local variables.",
- "Scope contains registers. Only a single 'registers' scope should be returned from a 'scopes' request."
+ "Scope contains registers. Only a single `registers` scope should be returned from a `scopes` request."
]
},
"variablesReference": {
"type": "integer",
- "description": "The variables of this scope can be retrieved by passing the value of variablesReference to the VariablesRequest."
+ "description": "The variables of this scope can be retrieved by passing the value of `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details."
},
"namedVariables": {
"type": "integer",
- "description": "The number of named variables in this scope.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks."
+ "description": "The number of named variables in this scope.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks."
},
"indexedVariables": {
"type": "integer",
- "description": "The number of indexed variables in this scope.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks."
+ "description": "The number of indexed variables in this scope.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks."
},
"expensive": {
"type": "boolean",
@@ -3463,23 +3535,23 @@
},
"source": {
"$ref": "#/definitions/Source",
- "description": "Optional source for this scope."
+ "description": "The source for this scope."
},
"line": {
"type": "integer",
- "description": "Optional start line of the range covered by this scope."
+ "description": "The start line of the range covered by this scope."
},
"column": {
"type": "integer",
- "description": "Optional start column of the range covered by this scope."
+ "description": "Start position of the range covered by the scope. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based."
},
"endLine": {
"type": "integer",
- "description": "Optional end line of the range covered by this scope."
+ "description": "The end line of the range covered by this scope."
},
"endColumn": {
"type": "integer",
- "description": "Optional end column of the range covered by this scope."
+ "description": "End position of the range covered by the scope. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based."
}
},
"required": [ "name", "variablesReference", "expensive" ]
@@ -3487,7 +3559,7 @@
"Variable": {
"type": "object",
- "description": "A Variable is a name/value pair.\nOptionally a variable can have a 'type' that is shown if space permits or when hovering over the variable's name.\nAn optional 'kind' is used to render additional properties of the variable, e.g. different icons can be used to indicate that a variable is public or private.\nIf the value is structured (has children), a handle is provided to retrieve the children with the VariablesRequest.\nIf the number of named or indexed children is large, the numbers should be returned via the optional 'namedVariables' and 'indexedVariables' attributes.\nThe client can use this optional information to present the children in a paged UI and fetch them in chunks.",
+ "description": "A Variable is a name/value pair.\nThe `type` attribute is shown if space permits or when hovering over the variable's name.\nThe `kind` attribute is used to render additional properties of the variable, e.g. different icons can be used to indicate that a variable is public or private.\nIf the value is structured (has children), a handle is provided to retrieve the children with the `variables` request.\nIf the number of named or indexed children is large, the numbers should be returned via the `namedVariables` and `indexedVariables` attributes.\nThe client can use this information to present the children in a paged UI and fetch them in chunks.",
"properties": {
"name": {
"type": "string",
@@ -3495,11 +3567,11 @@
},
"value": {
"type": "string",
- "description": "The variable's value. This can be a multi-line text, e.g. for a function the body of a function."
+ "description": "The variable's value.\nThis can be a multi-line text, e.g. for a function the body of a function.\nFor structured variables (which do not have a simple value), it is recommended to provide a one-line representation of the structured object. This helps to identify the structured object in the collapsed state when its children are not yet visible.\nAn empty string can be used if no value should be shown in the UI."
},
"type": {
"type": "string",
- "description": "The type of the variable's value. Typically shown in the UI when hovering over the value.\nThis attribute should only be returned by a debug adapter if the client has passed the value true for the 'supportsVariableType' capability of the 'initialize' request."
+ "description": "The type of the variable's value. Typically shown in the UI when hovering over the value.\nThis attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is true."
},
"presentationHint": {
"$ref": "#/definitions/VariablePresentationHint",
@@ -3507,23 +3579,23 @@
},
"evaluateName": {
"type": "string",
- "description": "Optional evaluatable name of this variable which can be passed to the 'EvaluateRequest' to fetch the variable's value."
+ "description": "The evaluatable name of this variable which can be passed to the `evaluate` request to fetch the variable's value."
},
"variablesReference": {
"type": "integer",
- "description": "If variablesReference is > 0, the variable is structured and its children can be retrieved by passing variablesReference to the VariablesRequest."
+ "description": "If `variablesReference` is > 0, the variable is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details."
},
"namedVariables": {
"type": "integer",
- "description": "The number of named child variables.\nThe client can use this optional information to present the children in a paged UI and fetch them in chunks."
+ "description": "The number of named child variables.\nThe client can use this information to present the children in a paged UI and fetch them in chunks."
},
"indexedVariables": {
"type": "integer",
- "description": "The number of indexed child variables.\nThe client can use this optional information to present the children in a paged UI and fetch them in chunks."
+ "description": "The number of indexed child variables.\nThe client can use this information to present the children in a paged UI and fetch them in chunks."
},
"memoryReference": {
"type": "string",
- "description": "Optional memory reference for the variable if the variable represents executable code, such as a function pointer.\nThis attribute is only required if the client has passed the value true for the 'supportsMemoryReferences' capability of the 'initialize' request."
+ "description": "A memory reference associated with this variable.\nFor pointer type variables, this is generally a reference to the memory address contained in the pointer.\nFor executable data, this reference may later be used in a `disassemble` request.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is true."
}
},
"required": [ "name", "value", "variablesReference" ]
@@ -3531,7 +3603,7 @@
"VariablePresentationHint": {
"type": "object",
- "description": "Optional properties of a variable that can be used to determine how to render the variable in the UI.",
+ "description": "Properties of a variable that can be used to determine how to render the variable in the UI.",
"properties": {
"kind": {
"description": "The kind of variable. Before introducing additional values, try to use the listed values.",
@@ -3547,8 +3619,8 @@
"Indicates that the object is an inner class.",
"Indicates that the object is an interface.",
"Indicates that the object is the most derived class.",
- "Indicates that the object is virtual, that means it is a synthetic object introducedby the\nadapter for rendering purposes, e.g. an index range for large arrays.",
- "Deprecated: Indicates that a data breakpoint is registered for the object. The 'hasDataBreakpoint' attribute should generally be used instead."
+ "Indicates that the object is virtual, that means it is a synthetic object introduced by the adapter for rendering purposes, e.g. an index range for large arrays.",
+ "Deprecated: Indicates that a data breakpoint is registered for the object. The `hasDataBreakpoint` attribute should generally be used instead."
]
},
"attributes": {
@@ -3562,8 +3634,8 @@
"Indicates that the object is a constant.",
"Indicates that the object is read only.",
"Indicates that the object is a raw string.",
- "Indicates that the object can have an Object ID created for it.",
- "Indicates that the object has an Object ID associated with it.",
+ "Indicates that the object can have an Object ID created for it. This is a vestigial attribute that is used by some clients; 'Object ID's are not specified in the protocol.",
+ "Indicates that the object has an Object ID associated with it. This is a vestigial attribute that is used by some clients; 'Object ID's are not specified in the protocol.",
"Indicates that the evaluation had side effects.",
"Indicates that the object has its value tracked by a data breakpoint."
]
@@ -3573,13 +3645,17 @@
"description": "Visibility of variable. Before introducing additional values, try to use the listed values.",
"type": "string",
"_enum": [ "public", "private", "protected", "internal", "final" ]
+ },
+ "lazy": {
+ "description": "If true, clients can present the variable with a UI that supports a specific gesture to trigger its evaluation.\nThis mechanism can be used for properties that require executing code when retrieving their value and where the code execution can be expensive and/or produce side-effects. A typical example are properties based on a getter function.\nPlease note that in addition to the `lazy` flag, the variable's `variablesReference` is expected to refer to a variable that will provide the value through another `variable` request.",
+ "type": "boolean"
}
}
},
"BreakpointLocation": {
"type": "object",
- "description": "Properties of a breakpoint location returned from the 'breakpointLocations' request.",
+ "description": "Properties of a breakpoint location returned from the `breakpointLocations` request.",
"properties": {
"line": {
"type": "integer",
@@ -3587,15 +3663,15 @@
},
"column": {
"type": "integer",
- "description": "Optional start column of breakpoint location."
+ "description": "The start position of a breakpoint location. Position is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based."
},
"endLine": {
"type": "integer",
- "description": "Optional end line of breakpoint location if the location covers a range."
+ "description": "The end line of breakpoint location if the location covers a range."
},
"endColumn": {
"type": "integer",
- "description": "Optional end column of breakpoint location if the location covers a range."
+ "description": "The end position of a breakpoint location (if the location covers a range). Position is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based."
}
},
"required": [ "line" ]
@@ -3603,7 +3679,7 @@
"SourceBreakpoint": {
"type": "object",
- "description": "Properties of a breakpoint or logpoint passed to the setBreakpoints request.",
+ "description": "Properties of a breakpoint or logpoint passed to the `setBreakpoints` request.",
"properties": {
"line": {
"type": "integer",
@@ -3611,19 +3687,19 @@
},
"column": {
"type": "integer",
- "description": "An optional source column of the breakpoint."
+ "description": "Start position within source line of the breakpoint or logpoint. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based."
},
"condition": {
"type": "string",
- "description": "An optional expression for conditional breakpoints.\nIt is only honored by a debug adapter if the capability 'supportsConditionalBreakpoints' is true."
+ "description": "The expression for conditional breakpoints.\nIt is only honored by a debug adapter if the corresponding capability `supportsConditionalBreakpoints` is true."
},
"hitCondition": {
"type": "string",
- "description": "An optional expression that controls how many hits of the breakpoint are ignored.\nThe backend is expected to interpret the expression as needed.\nThe attribute is only honored by a debug adapter if the capability 'supportsHitConditionalBreakpoints' is true."
+ "description": "The expression that controls how many hits of the breakpoint are ignored.\nThe debug adapter is expected to interpret the expression as needed.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsHitConditionalBreakpoints` is true.\nIf both this property and `condition` are specified, `hitCondition` should be evaluated only if the `condition` is met, and the debug adapter should stop only if both conditions are met."
},
"logMessage": {
"type": "string",
- "description": "If this attribute exists and is non-empty, the backend must not 'break' (stop)\nbut log the message instead. Expressions within {} are interpolated.\nThe attribute is only honored by a debug adapter if the capability 'supportsLogPoints' is true."
+ "description": "If this attribute exists and is non-empty, the debug adapter must not 'break' (stop)\nbut log the message instead. Expressions within `{}` are interpolated.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsLogPoints` is true.\nIf either `hitCondition` or `condition` is specified, then the message should only be logged if those conditions are met."
}
},
"required": [ "line" ]
@@ -3631,7 +3707,7 @@
"FunctionBreakpoint": {
"type": "object",
- "description": "Properties of a breakpoint passed to the setFunctionBreakpoints request.",
+ "description": "Properties of a breakpoint passed to the `setFunctionBreakpoints` request.",
"properties": {
"name": {
"type": "string",
@@ -3639,11 +3715,11 @@
},
"condition": {
"type": "string",
- "description": "An optional expression for conditional breakpoints.\nIt is only honored by a debug adapter if the capability 'supportsConditionalBreakpoints' is true."
+ "description": "An expression for conditional breakpoints.\nIt is only honored by a debug adapter if the corresponding capability `supportsConditionalBreakpoints` is true."
},
"hitCondition": {
"type": "string",
- "description": "An optional expression that controls how many hits of the breakpoint are ignored.\nThe backend is expected to interpret the expression as needed.\nThe attribute is only honored by a debug adapter if the capability 'supportsHitConditionalBreakpoints' is true."
+ "description": "An expression that controls how many hits of the breakpoint are ignored.\nThe debug adapter is expected to interpret the expression as needed.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsHitConditionalBreakpoints` is true."
}
},
"required": [ "name" ]
@@ -3657,11 +3733,11 @@
"DataBreakpoint": {
"type": "object",
- "description": "Properties of a data breakpoint passed to the setDataBreakpoints request.",
+ "description": "Properties of a data breakpoint passed to the `setDataBreakpoints` request.",
"properties": {
"dataId": {
"type": "string",
- "description": "An id representing the data. This id is returned from the dataBreakpointInfo request."
+ "description": "An id representing the data. This id is returned from the `dataBreakpointInfo` request."
},
"accessType": {
"$ref": "#/definitions/DataBreakpointAccessType",
@@ -3669,11 +3745,11 @@
},
"condition": {
"type": "string",
- "description": "An optional expression for conditional breakpoints."
+ "description": "An expression for conditional breakpoints."
},
"hitCondition": {
"type": "string",
- "description": "An optional expression that controls how many hits of the breakpoint are ignored.\nThe backend is expected to interpret the expression as needed."
+ "description": "An expression that controls how many hits of the breakpoint are ignored.\nThe debug adapter is expected to interpret the expression as needed."
}
},
"required": [ "dataId" ]
@@ -3681,23 +3757,23 @@
"InstructionBreakpoint": {
"type": "object",
- "description": "Properties of a breakpoint passed to the setInstructionBreakpoints request",
+ "description": "Properties of a breakpoint passed to the `setInstructionBreakpoints` request",
"properties": {
"instructionReference": {
"type": "string",
- "description": "The instruction reference of the breakpoint.\nThis should be a memory or instruction pointer reference from an EvaluateResponse, Variable, StackFrame, GotoTarget, or Breakpoint."
+ "description": "The instruction reference of the breakpoint.\nThis should be a memory or instruction pointer reference from an `EvaluateResponse`, `Variable`, `StackFrame`, `GotoTarget`, or `Breakpoint`."
},
"offset": {
"type": "integer",
- "description": "An optional offset from the instruction reference.\nThis can be negative."
+ "description": "The offset from the instruction reference in bytes.\nThis can be negative."
},
"condition": {
"type": "string",
- "description": "An optional expression for conditional breakpoints.\nIt is only honored by a debug adapter if the capability 'supportsConditionalBreakpoints' is true."
+ "description": "An expression for conditional breakpoints.\nIt is only honored by a debug adapter if the corresponding capability `supportsConditionalBreakpoints` is true."
},
"hitCondition": {
"type": "string",
- "description": "An optional expression that controls how many hits of the breakpoint are ignored.\nThe backend is expected to interpret the expression as needed.\nThe attribute is only honored by a debug adapter if the capability 'supportsHitConditionalBreakpoints' is true."
+ "description": "An expression that controls how many hits of the breakpoint are ignored.\nThe debug adapter is expected to interpret the expression as needed.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsHitConditionalBreakpoints` is true."
}
},
"required": [ "instructionReference" ]
@@ -3705,19 +3781,19 @@
"Breakpoint": {
"type": "object",
- "description": "Information about a Breakpoint created in setBreakpoints, setFunctionBreakpoints, setInstructionBreakpoints, or setDataBreakpoints.",
+ "description": "Information about a breakpoint created in `setBreakpoints`, `setFunctionBreakpoints`, `setInstructionBreakpoints`, or `setDataBreakpoints` requests.",
"properties": {
"id": {
"type": "integer",
- "description": "An optional identifier for the breakpoint. It is needed if breakpoint events are used to update or remove breakpoints."
+ "description": "The identifier for the breakpoint. It is needed if breakpoint events are used to update or remove breakpoints."
},
"verified": {
"type": "boolean",
- "description": "If true breakpoint could be set (but not necessarily at the desired location)."
+ "description": "If true, the breakpoint could be set (but not necessarily at the desired location)."
},
"message": {
"type": "string",
- "description": "An optional message about the state of the breakpoint.\nThis is shown to the user and can be used to explain why a breakpoint could not be verified."
+ "description": "A message about the state of the breakpoint.\nThis is shown to the user and can be used to explain why a breakpoint could not be verified."
},
"source": {
"$ref": "#/definitions/Source",
@@ -3729,23 +3805,28 @@
},
"column": {
"type": "integer",
- "description": "An optional start column of the actual range covered by the breakpoint."
+ "description": "Start position of the source range covered by the breakpoint. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based."
},
"endLine": {
"type": "integer",
- "description": "An optional end line of the actual range covered by the breakpoint."
+ "description": "The end line of the actual range covered by the breakpoint."
},
"endColumn": {
"type": "integer",
- "description": "An optional end column of the actual range covered by the breakpoint.\nIf no end line is given, then the end column is assumed to be in the start line."
+ "description": "End position of the source range covered by the breakpoint. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.\nIf no end line is given, then the end column is assumed to be in the start line."
},
"instructionReference": {
"type": "string",
- "description": "An optional memory reference to where the breakpoint is set."
+ "description": "A memory reference to where the breakpoint is set."
},
"offset": {
"type": "integer",
- "description": "An optional offset from the instruction reference.\nThis can be negative."
+ "description": "The offset from the instruction reference.\nThis can be negative."
+ },
+ "reason": {
+ "type": "string",
+ "description": "A machine-readable explanation of why a breakpoint may not be verified. If a breakpoint is verified or a specific reason is not known, the adapter should omit this property. Possible values include:\n\n- `pending`: Indicates a breakpoint might be verified in the future, but the adapter cannot verify it in the current state.\n - `failed`: Indicates a breakpoint was not able to be verified, and the adapter does not believe it can be verified without intervention.",
+ "enum": [ "pending", "failed" ]
}
},
"required": [ "verified" ]
@@ -3753,10 +3834,10 @@
"SteppingGranularity": {
"type": "string",
- "description": "The granularity of one 'step' in the stepping requests 'next', 'stepIn', 'stepOut', and 'stepBack'.",
+ "description": "The granularity of one 'step' in the stepping requests `next`, `stepIn`, `stepOut`, and `stepBack`.",
"enum": [ "statement", "line", "instruction" ],
"enumDescriptions": [
- "The step should allow the program to run until the current statement has finished executing.\nThe meaning of a statement is determined by the adapter and it may be considered equivalent to a line.\nFor example 'for(int i = 0; i < 10; i++) could be considered to have 3 statements 'int i = 0', 'i < 10', and 'i++'.",
+ "The step should allow the program to run until the current statement has finished executing.\nThe meaning of a statement is determined by the adapter and it may be considered equivalent to a line.\nFor example 'for(int i = 0; i < 10; i++)' could be considered to have 3 statements 'int i = 0', 'i < 10', and 'i++'.",
"The step should allow the program to run until the current source line has executed.",
"The step should allow one instruction to execute (e.g. one x86 instruction)."
]
@@ -3764,15 +3845,31 @@
"StepInTarget": {
"type": "object",
- "description": "A StepInTarget can be used in the 'stepIn' request and determines into which single target the stepIn request should step.",
+ "description": "A `StepInTarget` can be used in the `stepIn` request and determines into which single target the `stepIn` request should step.",
"properties": {
"id": {
"type": "integer",
- "description": "Unique identifier for a stepIn target."
+ "description": "Unique identifier for a step-in target."
},
"label": {
"type": "string",
- "description": "The name of the stepIn target (shown in the UI)."
+ "description": "The name of the step-in target (shown in the UI)."
+ },
+ "line": {
+ "type": "integer",
+ "description": "The line of the step-in target."
+ },
+ "column": {
+ "type": "integer",
+ "description": "Start position of the range covered by the step in target. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based."
+ },
+ "endLine": {
+ "type": "integer",
+ "description": "The end line of the range covered by the step-in target."
+ },
+ "endColumn": {
+ "type": "integer",
+ "description": "End position of the range covered by the step in target. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based."
}
},
"required": [ "id", "label" ]
@@ -3780,11 +3877,11 @@
"GotoTarget": {
"type": "object",
- "description": "A GotoTarget describes a code location that can be used as a target in the 'goto' request.\nThe possible goto targets can be determined via the 'gotoTargets' request.",
+ "description": "A `GotoTarget` describes a code location that can be used as a target in the `goto` request.\nThe possible goto targets can be determined via the `gotoTargets` request.",
"properties": {
"id": {
"type": "integer",
- "description": "Unique identifier for a goto target. This is used in the goto request."
+ "description": "Unique identifier for a goto target. This is used in the `goto` request."
},
"label": {
"type": "string",
@@ -3796,19 +3893,19 @@
},
"column": {
"type": "integer",
- "description": "An optional column of the goto target."
+ "description": "The column of the goto target."
},
"endLine": {
"type": "integer",
- "description": "An optional end line of the range covered by the goto target."
+ "description": "The end line of the range covered by the goto target."
},
"endColumn": {
"type": "integer",
- "description": "An optional end column of the range covered by the goto target."
+ "description": "The end column of the range covered by the goto target."
},
"instructionPointerReference": {
"type": "string",
- "description": "Optional memory reference for the instruction pointer value represented by this target."
+ "description": "A memory reference for the instruction pointer value represented by this target."
}
},
"required": [ "id", "label", "line" ]
@@ -3816,7 +3913,7 @@
"CompletionItem": {
"type": "object",
- "description": "CompletionItems are the suggestions returned from the CompletionsRequest.",
+ "description": "`CompletionItems` are the suggestions returned from the `completions` request.",
"properties": {
"label": {
"type": "string",
@@ -3824,11 +3921,15 @@
},
"text": {
"type": "string",
- "description": "If text is not falsy then it is inserted instead of the label."
+ "description": "If text is returned and not an empty string, then it is inserted instead of the label."
},
"sortText": {
"type": "string",
- "description": "A string that should be used when comparing this item with other items. When `falsy` the label is used."
+ "description": "A string that should be used when comparing this item with other items. If not returned or an empty string, the `label` is used instead."
+ },
+ "detail": {
+ "type": "string",
+ "description": "A human-readable string with additional information about this item, like type or symbol information."
},
"type": {
"$ref": "#/definitions/CompletionItemType",
@@ -3836,19 +3937,19 @@
},
"start": {
"type": "integer",
- "description": "This value determines the location (in the CompletionsRequest's 'text' attribute) where the completion text is added.\nIf missing the text is added at the location specified by the CompletionsRequest's 'column' attribute."
+ "description": "Start position (within the `text` attribute of the `completions` request) where the completion text is added. The position is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If the start position is omitted the text is added at the location specified by the `column` attribute of the `completions` request."
},
"length": {
"type": "integer",
- "description": "This value determines how many characters are overwritten by the completion text.\nIf missing the value 0 is assumed which results in the completion text being inserted."
+ "description": "Length determines how many characters are overwritten by the completion text and it is measured in UTF-16 code units. If missing the value 0 is assumed which results in the completion text being inserted."
},
"selectionStart": {
"type": "integer",
- "description": "Determines the start of the new selection after the text has been inserted (or replaced).\nThe start position must in the range 0 and length of the completion text.\nIf omitted the selection starts at the end of the completion text."
+ "description": "Determines the start of the new selection after the text has been inserted (or replaced). `selectionStart` is measured in UTF-16 code units and must be in the range 0 and length of the completion text. If omitted the selection starts at the end of the completion text."
},
"selectionLength": {
"type": "integer",
- "description": "Determines the length of the new selection after the text has been inserted (or replaced).\nThe selection can not extend beyond the bounds of the completion text.\nIf omitted the length is assumed to be 0."
+ "description": "Determines the length of the new selection after the text has been inserted (or replaced) and it is measured in UTF-16 code units. The selection can not extend beyond the bounds of the completion text. If omitted the length is assumed to be 0."
}
},
"required": [ "label" ]
@@ -3876,7 +3977,7 @@
},
"checksum": {
"type": "string",
- "description": "Value of the checksum."
+ "description": "Value of the checksum, encoded as a hexadecimal value."
}
},
"required": [ "algorithm", "checksum" ]
@@ -3932,15 +4033,15 @@
"ExceptionFilterOptions": {
"type": "object",
- "description": "An ExceptionFilterOptions is used to specify an exception filter together with a condition for the setExceptionsFilter request.",
+ "description": "An `ExceptionFilterOptions` is used to specify an exception filter together with a condition for the `setExceptionBreakpoints` request.",
"properties": {
"filterId": {
"type": "string",
- "description": "ID of an exception filter returned by the 'exceptionBreakpointFilters' capability."
+ "description": "ID of an exception filter returned by the `exceptionBreakpointFilters` capability."
},
"condition": {
"type": "string",
- "description": "An optional expression for conditional exceptions.\nThe exception will break into the debugger if the result of the condition is true."
+ "description": "An expression for conditional exceptions.\nThe exception breaks into the debugger if the result of the condition is true."
}
},
"required": [ "filterId" ]
@@ -3948,14 +4049,14 @@
"ExceptionOptions": {
"type": "object",
- "description": "An ExceptionOptions assigns configuration options to a set of exceptions.",
+ "description": "An `ExceptionOptions` assigns configuration options to a set of exceptions.",
"properties": {
"path": {
"type": "array",
"items": {
"$ref": "#/definitions/ExceptionPathSegment"
},
- "description": "A path that selects a single or multiple exceptions in a tree. If 'path' is missing, the whole tree is selected.\nBy convention the first segment of the path is a category that is used to group exceptions in the UI."
+ "description": "A path that selects a single or multiple exceptions in a tree. If `path` is missing, the whole tree is selected.\nBy convention the first segment of the path is a category that is used to group exceptions in the UI."
},
"breakMode": {
"$ref": "#/definitions/ExceptionBreakMode",
@@ -3973,7 +4074,7 @@
"ExceptionPathSegment": {
"type": "object",
- "description": "An ExceptionPathSegment represents a segment in a path that is used to match leafs or nodes in a tree of exceptions.\nIf a segment consists of more than one name, it matches the names provided if 'negate' is false or missing or\nit matches anything except the names provided if 'negate' is true.",
+ "description": "An `ExceptionPathSegment` represents a segment in a path that is used to match leafs or nodes in a tree of exceptions.\nIf a segment consists of more than one name, it matches the names provided if `negate` is false or missing, or it matches anything except the names provided if `negate` is true.",
"properties": {
"negate": {
"type": "boolean",
@@ -3984,7 +4085,7 @@
"items": {
"type": "string"
},
- "description": "Depending on the value of 'negate' the names that should match or not match."
+ "description": "Depending on the value of `negate` the names that should match or not match."
}
},
"required": [ "names" ]
@@ -4008,7 +4109,7 @@
},
"evaluateName": {
"type": "string",
- "description": "Optional expression that can be evaluated in the current scope to obtain the exception object."
+ "description": "An expression that can be evaluated in the current scope to obtain the exception object."
},
"stackTrace": {
"type": "string",
@@ -4030,11 +4131,11 @@
"properties": {
"address": {
"type": "string",
- "description": "The address of the instruction. Treated as a hex value if prefixed with '0x', or as a decimal value otherwise."
+ "description": "The address of the instruction. Treated as a hex value if prefixed with `0x`, or as a decimal value otherwise."
},
"instructionBytes": {
"type": "string",
- "description": "Optional raw bytes representing the instruction and its operands, in an implementation-defined format."
+ "description": "Raw bytes representing the instruction and its operands, in an implementation-defined format."
},
"instruction": {
"type": "string",
@@ -4063,6 +4164,11 @@
"endColumn": {
"type": "integer",
"description": "The end column of the range that corresponds to this instruction, if any."
+ },
+ "presentationHint": {
+ "type": "string",
+ "description": "A hint for how to present the instruction in the UI.\n\nA value of `invalid` may be used to indicate this instruction is 'filler' and cannot be reached by the program. For example, unreadable memory addresses may be presented is 'invalid.'",
+ "enum": [ "normal", "invalid" ]
}
},
"required": [ "address", "instruction" ]
@@ -4070,7 +4176,7 @@
"InvalidatedAreas": {
"type": "string",
- "description": "Logical areas that can be invalidated by the 'invalidated' event.",
+ "description": "Logical areas that can be invalidated by the `invalidated` event.",
"_enum": [ "all", "stacks", "threads", "variables" ],
"enumDescriptions": [
"All previously fetched data has become invalid and needs to be refetched.",
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py
index 0cbb3f5b3..e5078f0e4 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py
@@ -5,11 +5,10 @@
class BaseSchema(object):
-
@staticmethod
def initialize_ids_translation():
- BaseSchema._dap_id_to_obj_id = {0:0, None:None}
- BaseSchema._obj_id_to_dap_id = {0:0, None:None}
+ BaseSchema._dap_id_to_obj_id = {0: 0, None: None}
+ BaseSchema._obj_id_to_dap_id = {0: 0, None: None}
BaseSchema._next_dap_id = partial(next, itertools.count(1))
def to_json(self):
@@ -17,8 +16,8 @@ def to_json(self):
@staticmethod
def _translate_id_to_dap(obj_id):
- if obj_id == '*':
- return '*'
+ if obj_id == "*":
+ return "*"
# Note: we don't invalidate ids, so, if some object starts using the same id
# of another object, the same id will be used.
dap_id = BaseSchema._obj_id_to_dap_id.get(obj_id)
@@ -29,12 +28,12 @@ def _translate_id_to_dap(obj_id):
@staticmethod
def _translate_id_from_dap(dap_id):
- if dap_id == '*':
- return '*'
+ if dap_id == "*":
+ return "*"
try:
return BaseSchema._dap_id_to_obj_id[dap_id]
except:
- raise KeyError('Wrong ID sent from the client: %s' % (dap_id,))
+ raise KeyError("Wrong ID sent from the client: %s" % (dap_id,))
@staticmethod
def update_dict_ids_to_dap(dct):
@@ -59,7 +58,6 @@ def register(cls):
def register_request(command):
-
def do_register(cls):
_requests_to_types[command] = cls
return cls
@@ -68,7 +66,6 @@ def do_register(cls):
def register_response(command):
-
def do_register(cls):
_responses_to_types[command] = cls
return cls
@@ -77,7 +74,6 @@ def do_register(cls):
def register_event(event):
-
def do_register(cls):
_event_to_types[event] = cls
return cls
@@ -86,45 +82,45 @@ def do_register(cls):
def from_dict(dct, update_ids_from_dap=False):
- msg_type = dct.get('type')
+ msg_type = dct.get("type")
if msg_type is None:
- raise ValueError('Unable to make sense of message: %s' % (dct,))
+ raise ValueError("Unable to make sense of message: %s" % (dct,))
- if msg_type == 'request':
+ if msg_type == "request":
to_type = _requests_to_types
- use = dct['command']
+ use = dct["command"]
- elif msg_type == 'response':
+ elif msg_type == "response":
to_type = _responses_to_types
- use = dct['command']
+ use = dct["command"]
else:
to_type = _event_to_types
- use = dct['event']
+ use = dct["event"]
cls = to_type.get(use)
if cls is None:
- raise ValueError('Unable to create message from dict: %s. %s not in %s' % (dct, use, sorted(to_type.keys())))
+ raise ValueError("Unable to create message from dict: %s. %s not in %s" % (dct, use, sorted(to_type.keys())))
try:
return cls(update_ids_from_dap=update_ids_from_dap, **dct)
except:
- msg = 'Error creating %s from %s' % (cls, dct)
+ msg = "Error creating %s from %s" % (cls, dct)
debug_exception(msg)
raise
-def from_json(json_msg, update_ids_from_dap=False, on_dict_loaded=lambda dct:None):
+def from_json(json_msg, update_ids_from_dap=False, on_dict_loaded=lambda dct: None):
if isinstance(json_msg, bytes):
- json_msg = json_msg.decode('utf-8')
+ json_msg = json_msg.decode("utf-8")
as_dict = json.loads(json_msg)
on_dict_loaded(as_dict)
try:
return from_dict(as_dict, update_ids_from_dap=update_ids_from_dap)
except:
- if as_dict.get('type') == 'response' and not as_dict.get('success'):
+ if as_dict.get("type") == "response" and not as_dict.get("success"):
# Error messages may not have required body (return as a generic Response).
- Response = _all_messages['Response']
+ Response = _all_messages["Response"]
return Response(**as_dict)
else:
raise
@@ -132,16 +128,16 @@ def from_json(json_msg, update_ids_from_dap=False, on_dict_loaded=lambda dct:Non
def get_response_class(request):
if request.__class__ == dict:
- return _responses_to_types[request['command']]
+ return _responses_to_types[request["command"]]
return _responses_to_types[request.command]
def build_response(request, kwargs=None):
if kwargs is None:
- kwargs = {'success':True}
+ kwargs = {"success": True}
else:
- if 'success' not in kwargs:
- kwargs['success'] = True
+ if "success" not in kwargs:
+ kwargs["success"] = True
response_class = _responses_to_types[request.command]
- kwargs.setdefault('seq', -1) # To be overwritten before sending
+ kwargs.setdefault("seq", -1) # To be overwritten before sending
return response_class(command=request.command, request_seq=request.seq, **kwargs)
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py
index 3159f63ed..bdb66e121 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py
@@ -16,38 +16,29 @@ class ProtocolMessage(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "type": {
- "type": "string",
- "description": "Message type.",
- "_enum": [
- "request",
- "response",
- "event"
- ]
- }
+ "type": {"type": "string", "description": "Message type.", "_enum": ["request", "response", "event"]},
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, type, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param string type: Message type.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
self.type = type
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
seq = self.seq
dct = {
- 'type': type,
- 'seq': seq,
+ "type": type,
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -64,61 +55,44 @@ class Request(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "description": "The command to execute."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "description": "The command to execute."},
"arguments": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Object containing arguments for the command."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Object containing arguments for the command.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, command, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param string command: The command to execute.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
:param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] arguments: Object containing arguments for the command.
"""
- self.type = 'request'
+ self.type = "request"
self.command = command
self.seq = seq
self.arguments = arguments
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
seq = self.seq
arguments = self.arguments
dct = {
- 'type': type,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "seq": seq,
}
if arguments is not None:
- dct['arguments'] = arguments
+ dct["arguments"] = arguments
dct.update(self.kwargs)
return dct
@@ -134,61 +108,44 @@ class Event(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "event"
- ]
- },
- "event": {
- "type": "string",
- "description": "Type of event."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["event"]},
+ "event": {"type": "string", "description": "Type of event."},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Event-specific information."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Event-specific information.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, event, seq=-1, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param string event: Type of event.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
:param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Event-specific information.
"""
- self.type = 'event'
+ self.type = "event"
self.event = event
self.seq = seq
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
event = self.event
seq = self.seq
body = self.body
dct = {
- 'type': type,
- 'event': event,
- 'seq': seq,
+ "type": type,
+ "event": event,
+ "seq": seq,
}
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
@@ -204,68 +161,45 @@ class Response(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Contains request result if success is true and optional error details if success is false."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Contains request result if success is True and error details if success is false.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and optional error details if success is false.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -274,7 +208,6 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -284,25 +217,25 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_response('error')
+@register_response("error")
@register
class ErrorResponse(BaseSchema):
"""
- On error (whenever 'success' is false), the body can provide more details.
+ On error (whenever `success` is false), the body can provide more details.
Note: automatically generated code. Do not edit manually.
"""
@@ -310,77 +243,56 @@ class ErrorResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
- "properties": {
- "error": {
- "$ref": "#/definitions/Message",
- "description": "An optional, structured error message."
- }
- }
- }
+ "properties": {"error": {"$ref": "#/definitions/Message", "description": "A structured error message."}},
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param ErrorResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param ErrorResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = ErrorResponseBody()
else:
- self.body = ErrorResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ErrorResponseBody else body
+ self.body = ErrorResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ErrorResponseBody else body
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -390,50 +302,49 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('cancel')
+@register_request("cancel")
@register
class CancelRequest(BaseSchema):
"""
- The 'cancel' request is used by the frontend in two situations:
-
+ The `cancel` request is used by the client in two situations:
+
- to indicate that it is no longer interested in the result produced by a specific request issued
earlier
-
- - to cancel a progress sequence. Clients should only call this request if the capability
- 'supportsCancelRequest' is true.
-
+
+ - to cancel a progress sequence.
+
+ Clients should only call this request if the corresponding capability `supportsCancelRequest` is
+ true.
+
This request has a hint characteristic: a debug adapter can only be expected to make a 'best effort'
- in honouring this request but there are no guarantees.
-
- The 'cancel' request may return an error if it could not cancel an operation but a frontend should
+ in honoring this request but there are no guarantees.
+
+ The `cancel` request may return an error if it could not cancel an operation but a client should
refrain from presenting this error to end users.
-
- A frontend client should only call this request if the capability 'supportsCancelRequest' is true.
-
- The request that got canceled still needs to send a response back. This can either be a normal
- result ('success' attribute true)
-
- or an error response ('success' attribute false and the 'message' set to 'cancelled').
-
- Returning partial results from a cancelled request is possible but please note that a frontend
- client has no generic way for detecting that a response is partial or not.
-
- The progress that got cancelled still needs to send a 'progressEnd' event back.
-
- A client should not assume that progress just got cancelled after sending the 'cancel' request.
+
+ The request that got cancelled still needs to send a response back. This can either be a normal
+ result (`success` attribute true) or an error response (`success` attribute false and the `message`
+ set to `cancelled`).
+
+ Returning partial results from a cancelled request is possible but please note that a client has no
+ generic way for detecting that a response is partial or not.
+
+ The progress that got cancelled still needs to send a `progressEnd` event back.
+
+ A client should not assume that progress just got cancelled after sending the `cancel` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -441,57 +352,48 @@ class CancelRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "command": {
- "type": "string",
- "enum": [
- "cancel"
- ]
- },
- "arguments": {
- "type": "CancelArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["cancel"]},
+ "arguments": {"type": "CancelArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param CancelArguments arguments:
+ :param string type:
+ :param string command:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param CancelArguments arguments:
"""
- self.type = 'request'
- self.command = 'cancel'
+ self.type = "request"
+ self.command = "cancel"
self.seq = seq
if arguments is None:
self.arguments = CancelArguments()
else:
- self.arguments = CancelArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != CancelArguments else arguments
+ self.arguments = (
+ CancelArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != CancelArguments
+ else arguments
+ )
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
seq = self.seq
arguments = self.arguments
dct = {
- 'type': type,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "seq": seq,
}
if arguments is not None:
- dct['arguments'] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["arguments"] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
return dct
@@ -499,7 +401,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class CancelArguments(BaseSchema):
"""
- Arguments for 'cancel' request.
+ Arguments for `cancel` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -507,47 +409,45 @@ class CancelArguments(BaseSchema):
__props__ = {
"requestId": {
"type": "integer",
- "description": "The ID (attribute 'seq') of the request to cancel. If missing no request is cancelled.\nBoth a 'requestId' and a 'progressId' can be specified in one request."
+ "description": "The ID (attribute `seq`) of the request to cancel. If missing no request is cancelled.\nBoth a `requestId` and a `progressId` can be specified in one request.",
},
"progressId": {
"type": "string",
- "description": "The ID (attribute 'progressId') of the progress to cancel. If missing no progress is cancelled.\nBoth a 'requestId' and a 'progressId' can be specified in one request."
- }
+ "description": "The ID (attribute `progressId`) of the progress to cancel. If missing no progress is cancelled.\nBoth a `requestId` and a `progressId` can be specified in one request.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, requestId=None, progressId=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param integer requestId: The ID (attribute 'seq') of the request to cancel. If missing no request is cancelled.
- Both a 'requestId' and a 'progressId' can be specified in one request.
- :param string progressId: The ID (attribute 'progressId') of the progress to cancel. If missing no progress is cancelled.
- Both a 'requestId' and a 'progressId' can be specified in one request.
+ :param integer requestId: The ID (attribute `seq`) of the request to cancel. If missing no request is cancelled.
+ Both a `requestId` and a `progressId` can be specified in one request.
+ :param string progressId: The ID (attribute `progressId`) of the progress to cancel. If missing no progress is cancelled.
+ Both a `requestId` and a `progressId` can be specified in one request.
"""
self.requestId = requestId
self.progressId = progressId
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
requestId = self.requestId
progressId = self.progressId
- dct = {
- }
+ dct = {}
if requestId is not None:
- dct['requestId'] = requestId
+ dct["requestId"] = requestId
if progressId is not None:
- dct['progressId'] = progressId
+ dct["progressId"] = progressId
dct.update(self.kwargs)
return dct
-@register_response('cancel')
+@register_response("cancel")
@register
class CancelResponse(BaseSchema):
"""
- Response to 'cancel' request. This is just an acknowledgement, so no body field is required.
+ Response to `cancel` request. This is just an acknowledgement, so no body field is required.
Note: automatically generated code. Do not edit manually.
"""
@@ -555,68 +455,45 @@ class CancelResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Contains request result if success is true and optional error details if success is false."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Contains request result if success is True and error details if success is false.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and optional error details if success is false.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -625,7 +502,6 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -635,45 +511,45 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_event('initialized')
+@register_event("initialized")
@register
class InitializedEvent(BaseSchema):
"""
This event indicates that the debug adapter is ready to accept configuration requests (e.g.
- SetBreakpointsRequest, SetExceptionBreakpointsRequest).
-
+ `setBreakpoints`, `setExceptionBreakpoints`).
+
A debug adapter is expected to send this event when it is ready to accept configuration requests
- (but not before the 'initialize' request has finished).
-
+ (but not before the `initialize` request has finished).
+
The sequence of events/requests is as follows:
-
- - adapters sends 'initialized' event (after the 'initialize' request has returned)
-
- - frontend sends zero or more 'setBreakpoints' requests
-
- - frontend sends one 'setFunctionBreakpoints' request (if capability 'supportsFunctionBreakpoints'
- is true)
-
- - frontend sends a 'setExceptionBreakpoints' request if one or more 'exceptionBreakpointFilters'
- have been defined (or if 'supportsConfigurationDoneRequest' is not defined or false)
-
- - frontend sends other future configuration requests
-
- - frontend sends one 'configurationDone' request to indicate the end of the configuration.
+
+ - adapters sends `initialized` event (after the `initialize` request has returned)
+
+ - client sends zero or more `setBreakpoints` requests
+
+ - client sends one `setFunctionBreakpoints` request (if corresponding capability
+ `supportsFunctionBreakpoints` is true)
+
+ - client sends a `setExceptionBreakpoints` request if one or more `exceptionBreakpointFilters` have
+ been defined (or if `supportsConfigurationDoneRequest` is not true)
+
+ - client sends other future configuration requests
+
+ - client sends one `configurationDone` request to indicate the end of the configuration.
Note: automatically generated code. Do not edit manually.
"""
@@ -681,74 +557,55 @@ class InitializedEvent(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "event"
- ]
- },
- "event": {
- "type": "string",
- "enum": [
- "initialized"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["event"]},
+ "event": {"type": "string", "enum": ["initialized"]},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Event-specific information."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Event-specific information.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, seq=-1, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string event:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string event:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
:param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Event-specific information.
"""
- self.type = 'event'
- self.event = 'initialized'
+ self.type = "event"
+ self.event = "initialized"
self.seq = seq
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
event = self.event
seq = self.seq
body = self.body
dct = {
- 'type': type,
- 'event': event,
- 'seq': seq,
+ "type": type,
+ "event": event,
+ "seq": seq,
}
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_event('stopped')
+@register_event("stopped")
@register
class StoppedEvent(BaseSchema):
"""
The event indicates that the execution of the debuggee has stopped due to some condition.
-
- This can be caused by a break point previously set, a stepping request has completed, by executing a
+
+ This can be caused by a breakpoint previously set, a stepping request has completed, by executing a
debugger statement etc.
Note: automatically generated code. Do not edit manually.
@@ -757,26 +614,16 @@ class StoppedEvent(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "event"
- ]
- },
- "event": {
- "type": "string",
- "enum": [
- "stopped"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["event"]},
+ "event": {"type": "string", "enum": ["stopped"]},
"body": {
"type": "object",
"properties": {
"reason": {
"type": "string",
- "description": "The reason for the event.\nFor backward compatibility this string is shown in the UI if the 'description' attribute is missing (but it must not be translated).",
+ "description": "The reason for the event.\nFor backward compatibility this string is shown in the UI if the `description` attribute is missing (but it must not be translated).",
"_enum": [
"step",
"breakpoint",
@@ -786,88 +633,80 @@ class StoppedEvent(BaseSchema):
"goto",
"function breakpoint",
"data breakpoint",
- "instruction breakpoint"
- ]
+ "instruction breakpoint",
+ ],
},
"description": {
"type": "string",
- "description": "The full reason for the event, e.g. 'Paused on exception'. This string is shown in the UI as is and must be translated."
- },
- "threadId": {
- "type": "integer",
- "description": "The thread which was stopped."
+ "description": "The full reason for the event, e.g. 'Paused on exception'. This string is shown in the UI as is and can be translated.",
},
+ "threadId": {"type": "integer", "description": "The thread which was stopped."},
"preserveFocusHint": {
"type": "boolean",
- "description": "A value of true hints to the frontend that this event should not change the focus."
+ "description": "A value of True hints to the client that this event should not change the focus.",
},
"text": {
"type": "string",
- "description": "Additional information. E.g. if reason is 'exception', text contains the exception name. This string is shown in the UI."
+ "description": "Additional information. E.g. if reason is `exception`, text contains the exception name. This string is shown in the UI.",
},
"allThreadsStopped": {
"type": "boolean",
- "description": "If 'allThreadsStopped' is true, a debug adapter can announce that all threads have stopped.\n- The client should use this information to enable that all threads can be expanded to access their stacktraces.\n- If the attribute is missing or false, only the thread with the given threadId can be expanded."
+ "description": "If `allThreadsStopped` is True, a debug adapter can announce that all threads have stopped.\n- The client should use this information to enable that all threads can be expanded to access their stacktraces.\n- If the attribute is missing or false, only the thread with the given `threadId` can be expanded.",
},
"hitBreakpointIds": {
"type": "array",
- "items": {
- "type": "integer"
- },
- "description": "Ids of the breakpoints that triggered the event. In most cases there will be only a single breakpoint but here are some examples for multiple breakpoints:\n- Different types of breakpoints map to the same location.\n- Multiple source breakpoints get collapsed to the same instruction by the compiler/runtime.\n- Multiple function breakpoints with different function names map to the same location."
- }
+ "items": {"type": "integer"},
+ "description": "Ids of the breakpoints that triggered the event. In most cases there is only a single breakpoint but here are some examples for multiple breakpoints:\n- Different types of breakpoints map to the same location.\n- Multiple source breakpoints get collapsed to the same instruction by the compiler/runtime.\n- Multiple function breakpoints with different function names map to the same location.",
+ },
},
- "required": [
- "reason"
- ]
- }
+ "required": ["reason"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string event:
- :param StoppedEventBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string event:
+ :param StoppedEventBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'event'
- self.event = 'stopped'
+ self.type = "event"
+ self.event = "stopped"
if body is None:
self.body = StoppedEventBody()
else:
- self.body = StoppedEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != StoppedEventBody else body
+ self.body = StoppedEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != StoppedEventBody else body
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
event = self.event
body = self.body
seq = self.seq
dct = {
- 'type': type,
- 'event': event,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "event": event,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
-@register_event('continued')
+@register_event("continued")
@register
class ContinuedEvent(BaseSchema):
"""
The event indicates that the execution of the debuggee has continued.
-
+
Please note: a debug adapter is not expected to send this event in response to a request that
- implies that execution continues, e.g. 'launch' or 'continue'.
-
- It is only necessary to send a 'continued' event if there was no previous request that implied this.
+ implies that execution continues, e.g. `launch` or `continue`.
+
+ It is only necessary to send a `continued` event if there was no previous request that implied this.
Note: automatically generated code. Do not edit manually.
"""
@@ -875,74 +714,60 @@ class ContinuedEvent(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "event"
- ]
- },
- "event": {
- "type": "string",
- "enum": [
- "continued"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["event"]},
+ "event": {"type": "string", "enum": ["continued"]},
"body": {
"type": "object",
"properties": {
- "threadId": {
- "type": "integer",
- "description": "The thread which was continued."
- },
+ "threadId": {"type": "integer", "description": "The thread which was continued."},
"allThreadsContinued": {
"type": "boolean",
- "description": "If 'allThreadsContinued' is true, a debug adapter can announce that all threads have continued."
- }
+ "description": "If `allThreadsContinued` is True, a debug adapter can announce that all threads have continued.",
+ },
},
- "required": [
- "threadId"
- ]
- }
+ "required": ["threadId"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string event:
- :param ContinuedEventBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string event:
+ :param ContinuedEventBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'event'
- self.event = 'continued'
+ self.type = "event"
+ self.event = "continued"
if body is None:
self.body = ContinuedEventBody()
else:
- self.body = ContinuedEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ContinuedEventBody else body
+ self.body = (
+ ContinuedEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ContinuedEventBody else body
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
event = self.event
body = self.body
seq = self.seq
dct = {
- 'type': type,
- 'event': event,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "event": event,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
-@register_event('exited')
+@register_event("exited")
@register
class ExitedEvent(BaseSchema):
"""
@@ -954,70 +779,52 @@ class ExitedEvent(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "event"
- ]
- },
- "event": {
- "type": "string",
- "enum": [
- "exited"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["event"]},
+ "event": {"type": "string", "enum": ["exited"]},
"body": {
"type": "object",
- "properties": {
- "exitCode": {
- "type": "integer",
- "description": "The exit code returned from the debuggee."
- }
- },
- "required": [
- "exitCode"
- ]
- }
+ "properties": {"exitCode": {"type": "integer", "description": "The exit code returned from the debuggee."}},
+ "required": ["exitCode"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string event:
- :param ExitedEventBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string event:
+ :param ExitedEventBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'event'
- self.event = 'exited'
+ self.type = "event"
+ self.event = "exited"
if body is None:
self.body = ExitedEventBody()
else:
- self.body = ExitedEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ExitedEventBody else body
+ self.body = ExitedEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ExitedEventBody else body
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
event = self.event
body = self.body
seq = self.seq
dct = {
- 'type': type,
- 'event': event,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "event": event,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
-@register_event('terminated')
+@register_event("terminated")
@register
class TerminatedEvent(BaseSchema):
"""
@@ -1030,76 +837,59 @@ class TerminatedEvent(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "event"
- ]
- },
- "event": {
- "type": "string",
- "enum": [
- "terminated"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["event"]},
+ "event": {"type": "string", "enum": ["terminated"]},
"body": {
"type": "object",
"properties": {
"restart": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "A debug adapter may set 'restart' to true (or to an arbitrary object) to request that the front end restarts the session.\nThe value is not interpreted by the client and passed unmodified as an attribute '__restart' to the 'launch' and 'attach' requests."
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "A debug adapter may set `restart` to True (or to an arbitrary object) to request that the client restarts the session.\nThe value is not interpreted by the client and passed unmodified as an attribute `__restart` to the `launch` and `attach` requests.",
}
- }
- }
+ },
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, seq=-1, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string event:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param TerminatedEventBody body:
+ :param string type:
+ :param string event:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param TerminatedEventBody body:
"""
- self.type = 'event'
- self.event = 'terminated'
+ self.type = "event"
+ self.event = "terminated"
self.seq = seq
if body is None:
self.body = TerminatedEventBody()
else:
- self.body = TerminatedEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != TerminatedEventBody else body
+ self.body = (
+ TerminatedEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != TerminatedEventBody else body
+ )
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
event = self.event
seq = self.seq
body = self.body
dct = {
- 'type': type,
- 'event': event,
- 'seq': seq,
+ "type": type,
+ "event": event,
+ "seq": seq,
}
if body is not None:
- dct['body'] = body.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["body"] = body.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
return dct
-@register_event('thread')
+@register_event("thread")
@register
class ThreadEvent(BaseSchema):
"""
@@ -1111,79 +901,55 @@ class ThreadEvent(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "event"
- ]
- },
- "event": {
- "type": "string",
- "enum": [
- "thread"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["event"]},
+ "event": {"type": "string", "enum": ["thread"]},
"body": {
"type": "object",
"properties": {
- "reason": {
- "type": "string",
- "description": "The reason for the event.",
- "_enum": [
- "started",
- "exited"
- ]
- },
- "threadId": {
- "type": "integer",
- "description": "The identifier of the thread."
- }
+ "reason": {"type": "string", "description": "The reason for the event.", "_enum": ["started", "exited"]},
+ "threadId": {"type": "integer", "description": "The identifier of the thread."},
},
- "required": [
- "reason",
- "threadId"
- ]
- }
+ "required": ["reason", "threadId"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string event:
- :param ThreadEventBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string event:
+ :param ThreadEventBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'event'
- self.event = 'thread'
+ self.type = "event"
+ self.event = "thread"
if body is None:
self.body = ThreadEventBody()
else:
- self.body = ThreadEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ThreadEventBody else body
+ self.body = ThreadEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ThreadEventBody else body
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
event = self.event
body = self.body
seq = self.seq
dct = {
- 'type': type,
- 'event': event,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "event": event,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
-@register_event('output')
+@register_event("output")
@register
class OutputEvent(BaseSchema):
"""
@@ -1195,130 +961,90 @@ class OutputEvent(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "event"
- ]
- },
- "event": {
- "type": "string",
- "enum": [
- "output"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["event"]},
+ "event": {"type": "string", "enum": ["output"]},
"body": {
"type": "object",
"properties": {
"category": {
"type": "string",
- "description": "The output category. If not specified or if the category is not understand by the client, 'console' is assumed.",
- "_enum": [
- "console",
- "important",
- "stdout",
- "stderr",
- "telemetry"
- ],
+ "description": "The output category. If not specified or if the category is not understood by the client, `console` is assumed.",
+ "_enum": ["console", "important", "stdout", "stderr", "telemetry"],
"enumDescriptions": [
"Show the output in the client's default message UI, e.g. a 'debug console'. This category should only be used for informational output from the debugger (as opposed to the debuggee).",
- "A hint for the client to show the ouput in the client's UI for important and highly visible information, e.g. as a popup notification. This category should only be used for important messages from the debugger (as opposed to the debuggee). Since this category value is a hint, clients might ignore the hint and assume the 'console' category.",
+ "A hint for the client to show the output in the client's UI for important and highly visible information, e.g. as a popup notification. This category should only be used for important messages from the debugger (as opposed to the debuggee). Since this category value is a hint, clients might ignore the hint and assume the `console` category.",
"Show the output as normal program output from the debuggee.",
"Show the output as error program output from the debuggee.",
- "Send the output to telemetry instead of showing it to the user."
- ]
- },
- "output": {
- "type": "string",
- "description": "The output to report."
+ "Send the output to telemetry instead of showing it to the user.",
+ ],
},
+ "output": {"type": "string", "description": "The output to report."},
"group": {
"type": "string",
"description": "Support for keeping an output log organized by grouping related messages.",
- "enum": [
- "start",
- "startCollapsed",
- "end"
- ],
+ "enum": ["start", "startCollapsed", "end"],
"enumDescriptions": [
- "Start a new group in expanded mode. Subsequent output events are members of the group and should be shown indented.\nThe 'output' attribute becomes the name of the group and is not indented.",
- "Start a new group in collapsed mode. Subsequent output events are members of the group and should be shown indented (as soon as the group is expanded).\nThe 'output' attribute becomes the name of the group and is not indented.",
- "End the current group and decreases the indentation of subsequent output events.\nA non empty 'output' attribute is shown as the unindented end of the group."
- ]
+ "Start a new group in expanded mode. Subsequent output events are members of the group and should be shown indented.\nThe `output` attribute becomes the name of the group and is not indented.",
+ "Start a new group in collapsed mode. Subsequent output events are members of the group and should be shown indented (as soon as the group is expanded).\nThe `output` attribute becomes the name of the group and is not indented.",
+ "End the current group and decrease the indentation of subsequent output events.\nA non-empty `output` attribute is shown as the unindented end of the group.",
+ ],
},
"variablesReference": {
"type": "integer",
- "description": "If an attribute 'variablesReference' exists and its value is > 0, the output contains objects which can be retrieved by passing 'variablesReference' to the 'variables' request. The value should be less than or equal to 2147483647 (2^31-1)."
- },
- "source": {
- "$ref": "#/definitions/Source",
- "description": "An optional source location where the output was produced."
- },
- "line": {
- "type": "integer",
- "description": "An optional source location line where the output was produced."
+ "description": "If an attribute `variablesReference` exists and its value is > 0, the output contains objects which can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.",
},
+ "source": {"$ref": "#/definitions/Source", "description": "The source location where the output was produced."},
+ "line": {"type": "integer", "description": "The source location's line where the output was produced."},
"column": {
"type": "integer",
- "description": "An optional source location column where the output was produced."
+ "description": "The position in `line` where the output was produced. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.",
},
"data": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Optional data to report. For the 'telemetry' category the data will be sent to telemetry, for the other categories the data is shown in JSON format."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Additional data to report. For the `telemetry` category the data is sent to telemetry, for the other categories the data is shown in JSON format.",
+ },
},
- "required": [
- "output"
- ]
- }
+ "required": ["output"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string event:
- :param OutputEventBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string event:
+ :param OutputEventBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'event'
- self.event = 'output'
+ self.type = "event"
+ self.event = "output"
if body is None:
self.body = OutputEventBody()
else:
- self.body = OutputEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != OutputEventBody else body
+ self.body = OutputEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != OutputEventBody else body
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
event = self.event
body = self.body
seq = self.seq
dct = {
- 'type': type,
- 'event': event,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "event": event,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
-@register_event('breakpoint')
+@register_event("breakpoint")
@register
class BreakpointEvent(BaseSchema):
"""
@@ -1330,80 +1056,60 @@ class BreakpointEvent(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "event"
- ]
- },
- "event": {
- "type": "string",
- "enum": [
- "breakpoint"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["event"]},
+ "event": {"type": "string", "enum": ["breakpoint"]},
"body": {
"type": "object",
"properties": {
- "reason": {
- "type": "string",
- "description": "The reason for the event.",
- "_enum": [
- "changed",
- "new",
- "removed"
- ]
- },
+ "reason": {"type": "string", "description": "The reason for the event.", "_enum": ["changed", "new", "removed"]},
"breakpoint": {
"$ref": "#/definitions/Breakpoint",
- "description": "The 'id' attribute is used to find the target breakpoint and the other attributes are used as the new values."
- }
+ "description": "The `id` attribute is used to find the target breakpoint, the other attributes are used as the new values.",
+ },
},
- "required": [
- "reason",
- "breakpoint"
- ]
- }
+ "required": ["reason", "breakpoint"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string event:
- :param BreakpointEventBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string event:
+ :param BreakpointEventBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'event'
- self.event = 'breakpoint'
+ self.type = "event"
+ self.event = "breakpoint"
if body is None:
self.body = BreakpointEventBody()
else:
- self.body = BreakpointEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != BreakpointEventBody else body
+ self.body = (
+ BreakpointEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != BreakpointEventBody else body
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
event = self.event
body = self.body
seq = self.seq
dct = {
- 'type': type,
- 'event': event,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "event": event,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
-@register_event('module')
+@register_event("module")
@register
class ModuleEvent(BaseSchema):
"""
@@ -1415,80 +1121,58 @@ class ModuleEvent(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "event"
- ]
- },
- "event": {
- "type": "string",
- "enum": [
- "module"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["event"]},
+ "event": {"type": "string", "enum": ["module"]},
"body": {
"type": "object",
"properties": {
- "reason": {
- "type": "string",
- "description": "The reason for the event.",
- "enum": [
- "new",
- "changed",
- "removed"
- ]
- },
+ "reason": {"type": "string", "description": "The reason for the event.", "enum": ["new", "changed", "removed"]},
"module": {
"$ref": "#/definitions/Module",
- "description": "The new, changed, or removed module. In case of 'removed' only the module id is used."
- }
+ "description": "The new, changed, or removed module. In case of `removed` only the module id is used.",
+ },
},
- "required": [
- "reason",
- "module"
- ]
- }
+ "required": ["reason", "module"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string event:
- :param ModuleEventBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string event:
+ :param ModuleEventBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'event'
- self.event = 'module'
+ self.type = "event"
+ self.event = "module"
if body is None:
self.body = ModuleEventBody()
else:
- self.body = ModuleEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ModuleEventBody else body
+ self.body = ModuleEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ModuleEventBody else body
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
event = self.event
body = self.body
seq = self.seq
dct = {
- 'type': type,
- 'event': event,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "event": event,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
-@register_event('loadedSource')
+@register_event("loadedSource")
@register
class LoadedSourceEvent(BaseSchema):
"""
@@ -1501,80 +1185,57 @@ class LoadedSourceEvent(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "event"
- ]
- },
- "event": {
- "type": "string",
- "enum": [
- "loadedSource"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["event"]},
+ "event": {"type": "string", "enum": ["loadedSource"]},
"body": {
"type": "object",
"properties": {
- "reason": {
- "type": "string",
- "description": "The reason for the event.",
- "enum": [
- "new",
- "changed",
- "removed"
- ]
- },
- "source": {
- "$ref": "#/definitions/Source",
- "description": "The new, changed, or removed source."
- }
+ "reason": {"type": "string", "description": "The reason for the event.", "enum": ["new", "changed", "removed"]},
+ "source": {"$ref": "#/definitions/Source", "description": "The new, changed, or removed source."},
},
- "required": [
- "reason",
- "source"
- ]
- }
+ "required": ["reason", "source"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string event:
- :param LoadedSourceEventBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string event:
+ :param LoadedSourceEventBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'event'
- self.event = 'loadedSource'
+ self.type = "event"
+ self.event = "loadedSource"
if body is None:
self.body = LoadedSourceEventBody()
else:
- self.body = LoadedSourceEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != LoadedSourceEventBody else body
+ self.body = (
+ LoadedSourceEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != LoadedSourceEventBody else body
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
event = self.event
body = self.body
seq = self.seq
dct = {
- 'type': type,
- 'event': event,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "event": event,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
-@register_event('process')
+@register_event("process")
@register
class ProcessEvent(BaseSchema):
"""
@@ -1587,107 +1248,90 @@ class ProcessEvent(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "event"
- ]
- },
- "event": {
- "type": "string",
- "enum": [
- "process"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["event"]},
+ "event": {"type": "string", "enum": ["process"]},
"body": {
"type": "object",
"properties": {
"name": {
"type": "string",
- "description": "The logical name of the process. This is usually the full path to process's executable file. Example: /home/example/myproj/program.js."
+ "description": "The logical name of the process. This is usually the full path to process's executable file. Example: /home/example/myproj/program.js.",
},
"systemProcessId": {
"type": "integer",
- "description": "The system process id of the debugged process. This property will be missing for non-system processes."
+ "description": "The system process id of the debugged process. This property is missing for non-system processes.",
},
"isLocalProcess": {
"type": "boolean",
- "description": "If true, the process is running on the same computer as the debug adapter."
+ "description": "If True, the process is running on the same computer as the debug adapter.",
},
"startMethod": {
"type": "string",
- "enum": [
- "launch",
- "attach",
- "attachForSuspendedLaunch"
- ],
+ "enum": ["launch", "attach", "attachForSuspendedLaunch"],
"description": "Describes how the debug engine started debugging this process.",
"enumDescriptions": [
"Process was launched under the debugger.",
"Debugger attached to an existing process.",
- "A project launcher component has launched a new process in a suspended state and then asked the debugger to attach."
- ]
+ "A project launcher component has launched a new process in a suspended state and then asked the debugger to attach.",
+ ],
},
"pointerSize": {
"type": "integer",
- "description": "The size of a pointer or address for this process, in bits. This value may be used by clients when formatting addresses for display."
- }
+ "description": "The size of a pointer or address for this process, in bits. This value may be used by clients when formatting addresses for display.",
+ },
},
- "required": [
- "name"
- ]
- }
+ "required": ["name"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string event:
- :param ProcessEventBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string event:
+ :param ProcessEventBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'event'
- self.event = 'process'
+ self.type = "event"
+ self.event = "process"
if body is None:
self.body = ProcessEventBody()
else:
- self.body = ProcessEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ProcessEventBody else body
+ self.body = ProcessEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ProcessEventBody else body
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
event = self.event
body = self.body
seq = self.seq
dct = {
- 'type': type,
- 'event': event,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "event": event,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
-@register_event('capabilities')
+@register_event("capabilities")
@register
class CapabilitiesEvent(BaseSchema):
"""
The event indicates that one or more capabilities have changed.
-
- Since the capabilities are dependent on the frontend and its UI, it might not be possible to change
+
+ Since the capabilities are dependent on the client and its UI, it might not be possible to change
that at random times (or too late).
-
- Consequently this event has a hint characteristic: a frontend can only be expected to make a 'best
- effort' in honouring individual capabilities but there are no guarantees.
-
+
+ Consequently this event has a hint characteristic: a client can only be expected to make a 'best
+ effort' in honoring individual capabilities but there are no guarantees.
+
Only changed capabilities need to be included, all other capabilities keep their values.
Note: automatically generated code. Do not edit manually.
@@ -1696,82 +1340,63 @@ class CapabilitiesEvent(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "event"
- ]
- },
- "event": {
- "type": "string",
- "enum": [
- "capabilities"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["event"]},
+ "event": {"type": "string", "enum": ["capabilities"]},
"body": {
"type": "object",
- "properties": {
- "capabilities": {
- "$ref": "#/definitions/Capabilities",
- "description": "The set of updated capabilities."
- }
- },
- "required": [
- "capabilities"
- ]
- }
+ "properties": {"capabilities": {"$ref": "#/definitions/Capabilities", "description": "The set of updated capabilities."}},
+ "required": ["capabilities"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string event:
- :param CapabilitiesEventBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string event:
+ :param CapabilitiesEventBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'event'
- self.event = 'capabilities'
+ self.type = "event"
+ self.event = "capabilities"
if body is None:
self.body = CapabilitiesEventBody()
else:
- self.body = CapabilitiesEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != CapabilitiesEventBody else body
+ self.body = (
+ CapabilitiesEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != CapabilitiesEventBody else body
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
event = self.event
body = self.body
seq = self.seq
dct = {
- 'type': type,
- 'event': event,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "event": event,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
-@register_event('progressStart')
+@register_event("progressStart")
@register
class ProgressStartEvent(BaseSchema):
"""
- The event signals that a long running operation is about to start and
-
- provides additional information for the client to set up a corresponding progress and cancellation
- UI.
-
+ The event signals that a long running operation is about to start and provides additional
+ information for the client to set up a corresponding progress and cancellation UI.
+
The client is free to delay the showing of the UI in order to reduce flicker.
-
- This event should only be sent if the client has passed the value true for the
- 'supportsProgressReporting' capability of the 'initialize' request.
+
+ This event should only be sent if the corresponding capability `supportsProgressReporting` is true.
Note: automatically generated code. Do not edit manually.
"""
@@ -1779,101 +1404,88 @@ class ProgressStartEvent(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "event"
- ]
- },
- "event": {
- "type": "string",
- "enum": [
- "progressStart"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["event"]},
+ "event": {"type": "string", "enum": ["progressStart"]},
"body": {
"type": "object",
"properties": {
"progressId": {
"type": "string",
- "description": "An ID that must be used in subsequent 'progressUpdate' and 'progressEnd' events to make them refer to the same progress reporting.\nIDs must be unique within a debug session."
+ "description": "An ID that can be used in subsequent `progressUpdate` and `progressEnd` events to make them refer to the same progress reporting.\nIDs must be unique within a debug session.",
},
"title": {
"type": "string",
- "description": "Mandatory (short) title of the progress reporting. Shown in the UI to describe the long running operation."
+ "description": "Short title of the progress reporting. Shown in the UI to describe the long running operation.",
},
"requestId": {
"type": "integer",
- "description": "The request ID that this progress report is related to. If specified a debug adapter is expected to emit\nprogress events for the long running request until the request has been either completed or cancelled.\nIf the request ID is omitted, the progress report is assumed to be related to some general activity of the debug adapter."
+ "description": "The request ID that this progress report is related to. If specified a debug adapter is expected to emit progress events for the long running request until the request has been either completed or cancelled.\nIf the request ID is omitted, the progress report is assumed to be related to some general activity of the debug adapter.",
},
"cancellable": {
"type": "boolean",
- "description": "If true, the request that reports progress may be canceled with a 'cancel' request.\nSo this property basically controls whether the client should use UX that supports cancellation.\nClients that don't support cancellation are allowed to ignore the setting."
- },
- "message": {
- "type": "string",
- "description": "Optional, more detailed progress message."
+ "description": "If True, the request that reports progress may be cancelled with a `cancel` request.\nSo this property basically controls whether the client should use UX that supports cancellation.\nClients that don't support cancellation are allowed to ignore the setting.",
},
+ "message": {"type": "string", "description": "More detailed progress message."},
"percentage": {
"type": "number",
- "description": "Optional progress percentage to display (value range: 0 to 100). If omitted no percentage will be shown."
- }
+ "description": "Progress percentage to display (value range: 0 to 100). If omitted no percentage is shown.",
+ },
},
- "required": [
- "progressId",
- "title"
- ]
- }
+ "required": ["progressId", "title"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string event:
- :param ProgressStartEventBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string event:
+ :param ProgressStartEventBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'event'
- self.event = 'progressStart'
+ self.type = "event"
+ self.event = "progressStart"
if body is None:
self.body = ProgressStartEventBody()
else:
- self.body = ProgressStartEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ProgressStartEventBody else body
+ self.body = (
+ ProgressStartEventBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != ProgressStartEventBody
+ else body
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
event = self.event
body = self.body
seq = self.seq
dct = {
- 'type': type,
- 'event': event,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "event": event,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
-@register_event('progressUpdate')
+@register_event("progressUpdate")
@register
class ProgressUpdateEvent(BaseSchema):
"""
- The event signals that the progress reporting needs to updated with a new message and/or percentage.
-
+ The event signals that the progress reporting needs to be updated with a new message and/or
+ percentage.
+
The client does not have to update the UI immediately, but the clients needs to keep track of the
message and/or percentage values.
-
- This event should only be sent if the client has passed the value true for the
- 'supportsProgressReporting' capability of the 'initialize' request.
+
+ This event should only be sent if the corresponding capability `supportsProgressReporting` is true.
Note: automatically generated code. Do not edit manually.
"""
@@ -1881,85 +1493,72 @@ class ProgressUpdateEvent(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "event"
- ]
- },
- "event": {
- "type": "string",
- "enum": [
- "progressUpdate"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["event"]},
+ "event": {"type": "string", "enum": ["progressUpdate"]},
"body": {
"type": "object",
"properties": {
- "progressId": {
- "type": "string",
- "description": "The ID that was introduced in the initial 'progressStart' event."
- },
+ "progressId": {"type": "string", "description": "The ID that was introduced in the initial `progressStart` event."},
"message": {
"type": "string",
- "description": "Optional, more detailed progress message. If omitted, the previous message (if any) is used."
+ "description": "More detailed progress message. If omitted, the previous message (if any) is used.",
},
"percentage": {
"type": "number",
- "description": "Optional progress percentage to display (value range: 0 to 100). If omitted no percentage will be shown."
- }
+ "description": "Progress percentage to display (value range: 0 to 100). If omitted no percentage is shown.",
+ },
},
- "required": [
- "progressId"
- ]
- }
+ "required": ["progressId"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string event:
- :param ProgressUpdateEventBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string event:
+ :param ProgressUpdateEventBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'event'
- self.event = 'progressUpdate'
+ self.type = "event"
+ self.event = "progressUpdate"
if body is None:
self.body = ProgressUpdateEventBody()
else:
- self.body = ProgressUpdateEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ProgressUpdateEventBody else body
+ self.body = (
+ ProgressUpdateEventBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != ProgressUpdateEventBody
+ else body
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
event = self.event
body = self.body
seq = self.seq
dct = {
- 'type': type,
- 'event': event,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "event": event,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
-@register_event('progressEnd')
+@register_event("progressEnd")
@register
class ProgressEndEvent(BaseSchema):
"""
- The event signals the end of the progress reporting with an optional final message.
-
- This event should only be sent if the client has passed the value true for the
- 'supportsProgressReporting' capability of the 'initialize' request.
+ The event signals the end of the progress reporting with a final message.
+
+ This event should only be sent if the corresponding capability `supportsProgressReporting` is true.
Note: automatically generated code. Do not edit manually.
"""
@@ -1967,86 +1566,71 @@ class ProgressEndEvent(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "event"
- ]
- },
- "event": {
- "type": "string",
- "enum": [
- "progressEnd"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["event"]},
+ "event": {"type": "string", "enum": ["progressEnd"]},
"body": {
"type": "object",
"properties": {
- "progressId": {
- "type": "string",
- "description": "The ID that was introduced in the initial 'ProgressStartEvent'."
- },
+ "progressId": {"type": "string", "description": "The ID that was introduced in the initial `ProgressStartEvent`."},
"message": {
"type": "string",
- "description": "Optional, more detailed progress message. If omitted, the previous message (if any) is used."
- }
+ "description": "More detailed progress message. If omitted, the previous message (if any) is used.",
+ },
},
- "required": [
- "progressId"
- ]
- }
+ "required": ["progressId"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string event:
- :param ProgressEndEventBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string event:
+ :param ProgressEndEventBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'event'
- self.event = 'progressEnd'
+ self.type = "event"
+ self.event = "progressEnd"
if body is None:
self.body = ProgressEndEventBody()
else:
- self.body = ProgressEndEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ProgressEndEventBody else body
+ self.body = (
+ ProgressEndEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ProgressEndEventBody else body
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
event = self.event
body = self.body
seq = self.seq
dct = {
- 'type': type,
- 'event': event,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "event": event,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
-@register_event('invalidated')
+@register_event("invalidated")
@register
class InvalidatedEvent(BaseSchema):
"""
This event signals that some state in the debug adapter has changed and requires that the client
needs to re-render the data snapshot previously requested.
-
+
Debug adapters do not have to emit this event for runtime changes like stopped or thread events
because in that case the client refetches the new state anyway. But the event can be used for
example to refresh the UI after rendering formatting has changed in the debug adapter.
-
- This event should only be sent if the debug adapter has received a value true for the
- 'supportsInvalidatedEvent' capability of the 'initialize' request.
+
+ This event should only be sent if the corresponding capability `supportsInvalidatedEvent` is true.
Note: automatically generated code. Do not edit manually.
"""
@@ -2054,93 +1638,81 @@ class InvalidatedEvent(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "event"
- ]
- },
- "event": {
- "type": "string",
- "enum": [
- "invalidated"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["event"]},
+ "event": {"type": "string", "enum": ["invalidated"]},
"body": {
"type": "object",
"properties": {
"areas": {
"type": "array",
- "description": "Optional set of logical areas that got invalidated. This property has a hint characteristic: a client can only be expected to make a 'best effort' in honouring the areas but there are no guarantees. If this property is missing, empty, or if values are not understand the client should assume a single value 'all'.",
- "items": {
- "$ref": "#/definitions/InvalidatedAreas"
- }
+ "description": "Set of logical areas that got invalidated. This property has a hint characteristic: a client can only be expected to make a 'best effort' in honoring the areas but there are no guarantees. If this property is missing, empty, or if values are not understood, the client should assume a single value `all`.",
+ "items": {"$ref": "#/definitions/InvalidatedAreas"},
},
"threadId": {
"type": "integer",
- "description": "If specified, the client only needs to refetch data related to this thread."
+ "description": "If specified, the client only needs to refetch data related to this thread.",
},
"stackFrameId": {
"type": "integer",
- "description": "If specified, the client only needs to refetch data related to this stack frame (and the 'threadId' is ignored)."
- }
- }
- }
+ "description": "If specified, the client only needs to refetch data related to this stack frame (and the `threadId` is ignored).",
+ },
+ },
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string event:
- :param InvalidatedEventBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string event:
+ :param InvalidatedEventBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'event'
- self.event = 'invalidated'
+ self.type = "event"
+ self.event = "invalidated"
if body is None:
self.body = InvalidatedEventBody()
else:
- self.body = InvalidatedEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != InvalidatedEventBody else body
+ self.body = (
+ InvalidatedEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != InvalidatedEventBody else body
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
event = self.event
body = self.body
seq = self.seq
dct = {
- 'type': type,
- 'event': event,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "event": event,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
-@register_event('memory')
+@register_event("memory")
@register
class MemoryEvent(BaseSchema):
"""
- This event indicates that some memory range has been updated. It should only be sent if the debug
- adapter has received a value true for the `supportsMemoryEvent` capability of the `initialize`
- request.
-
+ This event indicates that some memory range has been updated. It should only be sent if the
+ corresponding capability `supportsMemoryEvent` is true.
+
Clients typically react to the event by re-issuing a `readMemory` request if they show the memory
identified by the `memoryReference` and if the updated memory range overlaps the displayed range.
Clients should not make assumptions how individual memory references relate to each other, so they
should not assume that they are part of a single continuous address range and might overlap.
-
+
Debug adapters can use this event to indicate that the contents of a memory range has changed due to
- some other DAP request like `setVariable` or `setExpression`. Debug adapters are not expected to
- emit this event for each and every memory change of a running program, because that information is
+ some other request like `setVariable` or `setExpression`. Debug adapters are not expected to emit
+ this event for each and every memory change of a running program, because that information is
typically not available from debuggers and it would flood clients with too many events.
Note: automatically generated code. Do not edit manually.
@@ -2149,89 +1721,76 @@ class MemoryEvent(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "event"
- ]
- },
- "event": {
- "type": "string",
- "enum": [
- "memory"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["event"]},
+ "event": {"type": "string", "enum": ["memory"]},
"body": {
"type": "object",
"properties": {
- "memoryReference": {
- "type": "string",
- "description": "Memory reference of a memory range that has been updated."
- },
- "offset": {
- "type": "integer",
- "description": "Starting offset in bytes where memory has been updated. Can be negative."
- },
- "count": {
- "type": "integer",
- "description": "Number of bytes updated."
- }
+ "memoryReference": {"type": "string", "description": "Memory reference of a memory range that has been updated."},
+ "offset": {"type": "integer", "description": "Starting offset in bytes where memory has been updated. Can be negative."},
+ "count": {"type": "integer", "description": "Number of bytes updated."},
},
- "required": [
- "memoryReference",
- "offset",
- "count"
- ]
- }
+ "required": ["memoryReference", "offset", "count"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string event:
- :param MemoryEventBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string event:
+ :param MemoryEventBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'event'
- self.event = 'memory'
+ self.type = "event"
+ self.event = "memory"
if body is None:
self.body = MemoryEventBody()
else:
- self.body = MemoryEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != MemoryEventBody else body
+ self.body = MemoryEventBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != MemoryEventBody else body
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
event = self.event
body = self.body
seq = self.seq
dct = {
- 'type': type,
- 'event': event,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "event": event,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
-@register_request('runInTerminal')
+@register_request("runInTerminal")
@register
class RunInTerminalRequest(BaseSchema):
"""
- This optional request is sent from the debug adapter to the client to run a command in a terminal.
-
+ This request is sent from the debug adapter to the client to run a command in a terminal.
+
This is typically used to launch the debuggee in a terminal provided by the client.
-
- This request should only be called if the client has passed the value true for the
- 'supportsRunInTerminalRequest' capability of the 'initialize' request.
+
+ This request should only be called if the corresponding client capability
+ `supportsRunInTerminalRequest` is true.
+
+ Client implementations of `runInTerminal` are free to run the command however they choose including
+ issuing the command to a command line interpreter (aka 'shell'). Argument strings passed to the
+ `runInTerminal` request must arrive verbatim in the command to be run. As a consequence, clients
+ which use a shell are responsible for escaping any special shell characters in the argument strings
+ to prevent them from being interpreted (and modified) by the shell.
+
+ Some users may wish to take advantage of shell processing in the argument strings. For clients which
+ implement `runInTerminal` using an intermediary shell, the `argsCanBeInterpretedByShell` property
+ can be set to true. In this case the client is requested not to escape any special shell characters
+ in the argument strings.
Note: automatically generated code. Do not edit manually.
"""
@@ -2239,55 +1798,46 @@ class RunInTerminalRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "command": {
- "type": "string",
- "enum": [
- "runInTerminal"
- ]
- },
- "arguments": {
- "type": "RunInTerminalRequestArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["runInTerminal"]},
+ "arguments": {"type": "RunInTerminalRequestArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param RunInTerminalRequestArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param RunInTerminalRequestArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'runInTerminal'
+ self.type = "request"
+ self.command = "runInTerminal"
if arguments is None:
self.arguments = RunInTerminalRequestArguments()
else:
- self.arguments = RunInTerminalRequestArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != RunInTerminalRequestArguments else arguments
+ self.arguments = (
+ RunInTerminalRequestArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != RunInTerminalRequestArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -2296,7 +1846,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class RunInTerminalRequestArguments(BaseSchema):
"""
- Arguments for 'runInTerminal' request.
+ Arguments for `runInTerminal` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -2304,50 +1854,44 @@ class RunInTerminalRequestArguments(BaseSchema):
__props__ = {
"kind": {
"type": "string",
- "enum": [
- "integrated",
- "external"
- ],
- "description": "What kind of terminal to launch."
- },
- "title": {
- "type": "string",
- "description": "Optional title of the terminal."
+ "enum": ["integrated", "external"],
+ "description": "What kind of terminal to launch. Defaults to `integrated` if not specified.",
},
+ "title": {"type": "string", "description": "Title of the terminal."},
"cwd": {
"type": "string",
- "description": "Working directory for the command. For non-empty, valid paths this typically results in execution of a change directory command."
+ "description": "Working directory for the command. For non-empty, valid paths this typically results in execution of a change directory command.",
},
"args": {
"type": "array",
- "items": {
- "type": "string"
- },
- "description": "List of arguments. The first argument is the command to run."
+ "items": {"type": "string"},
+ "description": "List of arguments. The first argument is the command to run.",
},
"env": {
"type": "object",
"description": "Environment key-value pairs that are added to or removed from the default environment.",
"additionalProperties": {
- "type": [
- "string",
- "null"
- ],
- "description": "Proper values must be strings. A value of 'null' removes the variable from the environment."
- }
- }
+ "type": ["string", "null"],
+ "description": "A string is a proper value for an environment variable. The value `null` removes the variable from the environment.",
+ },
+ },
+ "argsCanBeInterpretedByShell": {
+ "type": "boolean",
+ "description": "This property should only be set if the corresponding capability `supportsArgsCanBeInterpretedByShell` is True. If the client uses an intermediary shell to launch the application, then the client must not attempt to escape characters with special meanings for the shell. The user is fully responsible for escaping as needed and that arguments using special characters may not be portable across shells.",
+ },
}
- __refs__ = set(['env'])
+ __refs__ = set(["env"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
- def __init__(self, cwd, args, kind=None, title=None, env=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ def __init__(self, cwd, args, kind=None, title=None, env=None, argsCanBeInterpretedByShell=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param string cwd: Working directory for the command. For non-empty, valid paths this typically results in execution of a change directory command.
:param array args: List of arguments. The first argument is the command to run.
- :param string kind: What kind of terminal to launch.
- :param string title: Optional title of the terminal.
+ :param string kind: What kind of terminal to launch. Defaults to `integrated` if not specified.
+ :param string title: Title of the terminal.
:param RunInTerminalRequestArgumentsEnv env: Environment key-value pairs that are added to or removed from the default environment.
+ :param boolean argsCanBeInterpretedByShell: This property should only be set if the corresponding capability `supportsArgsCanBeInterpretedByShell` is true. If the client uses an intermediary shell to launch the application, then the client must not attempt to escape characters with special meanings for the shell. The user is fully responsible for escaping as needed and that arguments using special characters may not be portable across shells.
"""
self.cwd = cwd
self.args = args
@@ -2356,10 +1900,14 @@ def __init__(self, cwd, args, kind=None, title=None, env=None, update_ids_from_d
if env is None:
self.env = RunInTerminalRequestArgumentsEnv()
else:
- self.env = RunInTerminalRequestArgumentsEnv(update_ids_from_dap=update_ids_from_dap, **env) if env.__class__ != RunInTerminalRequestArgumentsEnv else env
+ self.env = (
+ RunInTerminalRequestArgumentsEnv(update_ids_from_dap=update_ids_from_dap, **env)
+ if env.__class__ != RunInTerminalRequestArgumentsEnv
+ else env
+ )
+ self.argsCanBeInterpretedByShell = argsCanBeInterpretedByShell
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
cwd = self.cwd
args = self.args
@@ -2368,25 +1916,242 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
kind = self.kind
title = self.title
env = self.env
+ argsCanBeInterpretedByShell = self.argsCanBeInterpretedByShell
+ dct = {
+ "cwd": cwd,
+ "args": args,
+ }
+ if kind is not None:
+ dct["kind"] = kind
+ if title is not None:
+ dct["title"] = title
+ if env is not None:
+ dct["env"] = env.to_dict(update_ids_to_dap=update_ids_to_dap)
+ if argsCanBeInterpretedByShell is not None:
+ dct["argsCanBeInterpretedByShell"] = argsCanBeInterpretedByShell
+ dct.update(self.kwargs)
+ return dct
+
+
+@register_response("runInTerminal")
+@register
+class RunInTerminalResponse(BaseSchema):
+ """
+ Response to `runInTerminal` request.
+
+ Note: automatically generated code. Do not edit manually.
+ """
+
+ __props__ = {
+ "seq": {
+ "type": "integer",
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
+ },
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
+ "success": {
+ "type": "boolean",
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
+ },
+ "command": {"type": "string", "description": "The command requested."},
+ "message": {
+ "type": "string",
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
+ },
+ "body": {
+ "type": "object",
+ "properties": {
+ "processId": {
+ "type": "integer",
+ "description": "The process ID. The value should be less than or equal to 2147483647 (2^31-1).",
+ },
+ "shellProcessId": {
+ "type": "integer",
+ "description": "The process ID of the terminal shell. The value should be less than or equal to 2147483647 (2^31-1).",
+ },
+ },
+ },
+ }
+ __refs__ = set(["body"])
+
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ """
+ :param string type:
+ :param integer request_seq: Sequence number of the corresponding request.
+ :param boolean success: Outcome of the request.
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
+ :param string command: The command requested.
+ :param RunInTerminalResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
+ Some predefined values exist.
+ """
+ self.type = "response"
+ self.request_seq = request_seq
+ self.success = success
+ self.command = command
+ if body is None:
+ self.body = RunInTerminalResponseBody()
+ else:
+ self.body = (
+ RunInTerminalResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != RunInTerminalResponseBody
+ else body
+ )
+ self.seq = seq
+ self.message = message
+ self.kwargs = kwargs
+
+ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
+ type = self.type # noqa (assign to builtin)
+ request_seq = self.request_seq
+ success = self.success
+ command = self.command
+ body = self.body
+ seq = self.seq
+ message = self.message
+ dct = {
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
+ }
+ if message is not None:
+ dct["message"] = message
+ dct.update(self.kwargs)
+ return dct
+
+
+@register_request("startDebugging")
+@register
+class StartDebuggingRequest(BaseSchema):
+ """
+ This request is sent from the debug adapter to the client to start a new debug session of the same
+ type as the caller.
+
+ This request should only be sent if the corresponding client capability
+ `supportsStartDebuggingRequest` is true.
+
+ A client implementation of `startDebugging` should start a new debug session (of the same type as
+ the caller) in the same way that the caller's session was started. If the client supports
+ hierarchical debug sessions, the newly created session can be treated as a child of the caller
+ session.
+
+ Note: automatically generated code. Do not edit manually.
+ """
+
+ __props__ = {
+ "seq": {
+ "type": "integer",
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
+ },
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["startDebugging"]},
+ "arguments": {"type": "StartDebuggingRequestArguments"},
+ }
+ __refs__ = set(["arguments"])
+
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ """
+ :param string type:
+ :param string command:
+ :param StartDebuggingRequestArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ """
+ self.type = "request"
+ self.command = "startDebugging"
+ if arguments is None:
+ self.arguments = StartDebuggingRequestArguments()
+ else:
+ self.arguments = (
+ StartDebuggingRequestArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != StartDebuggingRequestArguments
+ else arguments
+ )
+ self.seq = seq
+ self.kwargs = kwargs
+
+ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
+ type = self.type # noqa (assign to builtin)
+ command = self.command
+ arguments = self.arguments
+ seq = self.seq
+ dct = {
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
+ }
+ dct.update(self.kwargs)
+ return dct
+
+
+@register
+class StartDebuggingRequestArguments(BaseSchema):
+ """
+ Arguments for `startDebugging` request.
+
+ Note: automatically generated code. Do not edit manually.
+ """
+
+ __props__ = {
+ "configuration": {
+ "type": "object",
+ "additionalProperties": True,
+ "description": "Arguments passed to the new debug session. The arguments must only contain properties understood by the `launch` or `attach` requests of the debug adapter and they must not contain any client-specific properties (e.g. `type`) or client-specific features (e.g. substitutable 'variables').",
+ },
+ "request": {
+ "type": "string",
+ "enum": ["launch", "attach"],
+ "description": "Indicates whether the new debug session should be started with a `launch` or `attach` request.",
+ },
+ }
+ __refs__ = set(["configuration"])
+
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(self, configuration, request, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ """
+ :param StartDebuggingRequestArgumentsConfiguration configuration: Arguments passed to the new debug session. The arguments must only contain properties understood by the `launch` or `attach` requests of the debug adapter and they must not contain any client-specific properties (e.g. `type`) or client-specific features (e.g. substitutable 'variables').
+ :param string request: Indicates whether the new debug session should be started with a `launch` or `attach` request.
+ """
+ if configuration is None:
+ self.configuration = StartDebuggingRequestArgumentsConfiguration()
+ else:
+ self.configuration = (
+ StartDebuggingRequestArgumentsConfiguration(update_ids_from_dap=update_ids_from_dap, **configuration)
+ if configuration.__class__ != StartDebuggingRequestArgumentsConfiguration
+ else configuration
+ )
+ self.request = request
+ self.kwargs = kwargs
+
+ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
+ configuration = self.configuration
+ request = self.request
dct = {
- 'cwd': cwd,
- 'args': args,
+ "configuration": configuration.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "request": request,
}
- if kind is not None:
- dct['kind'] = kind
- if title is not None:
- dct['title'] = title
- if env is not None:
- dct['env'] = env.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
return dct
-@register_response('runInTerminal')
+@register_response("startDebugging")
@register
-class RunInTerminalResponse(BaseSchema):
+class StartDebuggingResponse(BaseSchema):
"""
- Response to 'runInTerminal' request.
+ Response to `startDebugging` request. This is just an acknowledgement, so no body field is required.
Note: automatically generated code. Do not edit manually.
"""
@@ -2394,119 +2159,90 @@ class RunInTerminalResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
- "type": "object",
- "properties": {
- "processId": {
- "type": "integer",
- "description": "The process ID. The value should be less than or equal to 2147483647 (2^31-1)."
- },
- "shellProcessId": {
- "type": "integer",
- "description": "The process ID of the terminal shell. The value should be less than or equal to 2147483647 (2^31-1)."
- }
- }
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Contains request result if success is True and error details if success is false.",
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
- def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param RunInTerminalResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
- if body is None:
- self.body = RunInTerminalResponseBody()
- else:
- self.body = RunInTerminalResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != RunInTerminalResponseBody else body
self.seq = seq
self.message = message
+ self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
success = self.success
command = self.command
- body = self.body
seq = self.seq
message = self.message
+ body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
+ if body is not None:
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_request('initialize')
+@register_request("initialize")
@register
class InitializeRequest(BaseSchema):
"""
- The 'initialize' request is sent as the first request from the client to the debug adapter
-
- in order to configure it with client capabilities and to retrieve capabilities from the debug
- adapter.
-
- Until the debug adapter has responded to with an 'initialize' response, the client must not send any
+ The `initialize` request is sent as the first request from the client to the debug adapter in order
+ to configure it with client capabilities and to retrieve capabilities from the debug adapter.
+
+ Until the debug adapter has responded with an `initialize` response, the client must not send any
additional requests or events to the debug adapter.
-
+
In addition the debug adapter is not allowed to send any requests or events to the client until it
- has responded with an 'initialize' response.
-
- The 'initialize' request may only be sent once.
+ has responded with an `initialize` response.
+
+ The `initialize` request may only be sent once.
Note: automatically generated code. Do not edit manually.
"""
@@ -2514,55 +2250,46 @@ class InitializeRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "initialize"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "InitializeRequestArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["initialize"]},
+ "arguments": {"type": "InitializeRequestArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param InitializeRequestArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param InitializeRequestArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'initialize'
+ self.type = "request"
+ self.command = "initialize"
if arguments is None:
self.arguments = InitializeRequestArguments()
else:
- self.arguments = InitializeRequestArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != InitializeRequestArguments else arguments
+ self.arguments = (
+ InitializeRequestArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != InitializeRequestArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -2571,93 +2298,78 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class InitializeRequestArguments(BaseSchema):
"""
- Arguments for 'initialize' request.
+ Arguments for `initialize` request.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
- "clientID": {
- "type": "string",
- "description": "The ID of the (frontend) client using this adapter."
- },
- "clientName": {
- "type": "string",
- "description": "The human readable name of the (frontend) client using this adapter."
- },
- "adapterID": {
- "type": "string",
- "description": "The ID of the debug adapter."
- },
- "locale": {
- "type": "string",
- "description": "The ISO-639 locale of the (frontend) client using this adapter, e.g. en-US or de-CH."
- },
- "linesStartAt1": {
- "type": "boolean",
- "description": "If true all line numbers are 1-based (default)."
- },
- "columnsStartAt1": {
- "type": "boolean",
- "description": "If true all column numbers are 1-based (default)."
- },
+ "clientID": {"type": "string", "description": "The ID of the client using this adapter."},
+ "clientName": {"type": "string", "description": "The human-readable name of the client using this adapter."},
+ "adapterID": {"type": "string", "description": "The ID of the debug adapter."},
+ "locale": {"type": "string", "description": "The ISO-639 locale of the client using this adapter, e.g. en-US or de-CH."},
+ "linesStartAt1": {"type": "boolean", "description": "If True all line numbers are 1-based (default)."},
+ "columnsStartAt1": {"type": "boolean", "description": "If True all column numbers are 1-based (default)."},
"pathFormat": {
"type": "string",
- "_enum": [
- "path",
- "uri"
- ],
- "description": "Determines in what format paths are specified. The default is 'path', which is the native format."
- },
- "supportsVariableType": {
- "type": "boolean",
- "description": "Client supports the optional type attribute for variables."
- },
- "supportsVariablePaging": {
+ "_enum": ["path", "uri"],
+ "description": "Determines in what format paths are specified. The default is `path`, which is the native format.",
+ },
+ "supportsVariableType": {"type": "boolean", "description": "Client supports the `type` attribute for variables."},
+ "supportsVariablePaging": {"type": "boolean", "description": "Client supports the paging of variables."},
+ "supportsRunInTerminalRequest": {"type": "boolean", "description": "Client supports the `runInTerminal` request."},
+ "supportsMemoryReferences": {"type": "boolean", "description": "Client supports memory references."},
+ "supportsProgressReporting": {"type": "boolean", "description": "Client supports progress reporting."},
+ "supportsInvalidatedEvent": {"type": "boolean", "description": "Client supports the `invalidated` event."},
+ "supportsMemoryEvent": {"type": "boolean", "description": "Client supports the `memory` event."},
+ "supportsArgsCanBeInterpretedByShell": {
"type": "boolean",
- "description": "Client supports the paging of variables."
+ "description": "Client supports the `argsCanBeInterpretedByShell` attribute on the `runInTerminal` request.",
},
- "supportsRunInTerminalRequest": {
- "type": "boolean",
- "description": "Client supports the runInTerminal request."
- },
- "supportsMemoryReferences": {
- "type": "boolean",
- "description": "Client supports memory references."
- },
- "supportsProgressReporting": {
- "type": "boolean",
- "description": "Client supports progress reporting."
- },
- "supportsInvalidatedEvent": {
- "type": "boolean",
- "description": "Client supports the invalidated event."
- },
- "supportsMemoryEvent": {
- "type": "boolean",
- "description": "Client supports the memory event."
- }
+ "supportsStartDebuggingRequest": {"type": "boolean", "description": "Client supports the `startDebugging` request."},
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
-
- def __init__(self, adapterID, clientID=None, clientName=None, locale=None, linesStartAt1=None, columnsStartAt1=None, pathFormat=None, supportsVariableType=None, supportsVariablePaging=None, supportsRunInTerminalRequest=None, supportsMemoryReferences=None, supportsProgressReporting=None, supportsInvalidatedEvent=None, supportsMemoryEvent=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(
+ self,
+ adapterID,
+ clientID=None,
+ clientName=None,
+ locale=None,
+ linesStartAt1=None,
+ columnsStartAt1=None,
+ pathFormat=None,
+ supportsVariableType=None,
+ supportsVariablePaging=None,
+ supportsRunInTerminalRequest=None,
+ supportsMemoryReferences=None,
+ supportsProgressReporting=None,
+ supportsInvalidatedEvent=None,
+ supportsMemoryEvent=None,
+ supportsArgsCanBeInterpretedByShell=None,
+ supportsStartDebuggingRequest=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
"""
:param string adapterID: The ID of the debug adapter.
- :param string clientID: The ID of the (frontend) client using this adapter.
- :param string clientName: The human readable name of the (frontend) client using this adapter.
- :param string locale: The ISO-639 locale of the (frontend) client using this adapter, e.g. en-US or de-CH.
+ :param string clientID: The ID of the client using this adapter.
+ :param string clientName: The human-readable name of the client using this adapter.
+ :param string locale: The ISO-639 locale of the client using this adapter, e.g. en-US or de-CH.
:param boolean linesStartAt1: If true all line numbers are 1-based (default).
:param boolean columnsStartAt1: If true all column numbers are 1-based (default).
- :param string pathFormat: Determines in what format paths are specified. The default is 'path', which is the native format.
- :param boolean supportsVariableType: Client supports the optional type attribute for variables.
+ :param string pathFormat: Determines in what format paths are specified. The default is `path`, which is the native format.
+ :param boolean supportsVariableType: Client supports the `type` attribute for variables.
:param boolean supportsVariablePaging: Client supports the paging of variables.
- :param boolean supportsRunInTerminalRequest: Client supports the runInTerminal request.
+ :param boolean supportsRunInTerminalRequest: Client supports the `runInTerminal` request.
:param boolean supportsMemoryReferences: Client supports memory references.
:param boolean supportsProgressReporting: Client supports progress reporting.
- :param boolean supportsInvalidatedEvent: Client supports the invalidated event.
- :param boolean supportsMemoryEvent: Client supports the memory event.
+ :param boolean supportsInvalidatedEvent: Client supports the `invalidated` event.
+ :param boolean supportsMemoryEvent: Client supports the `memory` event.
+ :param boolean supportsArgsCanBeInterpretedByShell: Client supports the `argsCanBeInterpretedByShell` attribute on the `runInTerminal` request.
+ :param boolean supportsStartDebuggingRequest: Client supports the `startDebugging` request.
"""
self.adapterID = adapterID
self.clientID = clientID
@@ -2673,9 +2385,10 @@ def __init__(self, adapterID, clientID=None, clientName=None, locale=None, lines
self.supportsProgressReporting = supportsProgressReporting
self.supportsInvalidatedEvent = supportsInvalidatedEvent
self.supportsMemoryEvent = supportsMemoryEvent
+ self.supportsArgsCanBeInterpretedByShell = supportsArgsCanBeInterpretedByShell
+ self.supportsStartDebuggingRequest = supportsStartDebuggingRequest
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
adapterID = self.adapterID
clientID = self.clientID
@@ -2691,44 +2404,50 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
supportsProgressReporting = self.supportsProgressReporting
supportsInvalidatedEvent = self.supportsInvalidatedEvent
supportsMemoryEvent = self.supportsMemoryEvent
+ supportsArgsCanBeInterpretedByShell = self.supportsArgsCanBeInterpretedByShell
+ supportsStartDebuggingRequest = self.supportsStartDebuggingRequest
dct = {
- 'adapterID': adapterID,
+ "adapterID": adapterID,
}
if clientID is not None:
- dct['clientID'] = clientID
+ dct["clientID"] = clientID
if clientName is not None:
- dct['clientName'] = clientName
+ dct["clientName"] = clientName
if locale is not None:
- dct['locale'] = locale
+ dct["locale"] = locale
if linesStartAt1 is not None:
- dct['linesStartAt1'] = linesStartAt1
+ dct["linesStartAt1"] = linesStartAt1
if columnsStartAt1 is not None:
- dct['columnsStartAt1'] = columnsStartAt1
+ dct["columnsStartAt1"] = columnsStartAt1
if pathFormat is not None:
- dct['pathFormat'] = pathFormat
+ dct["pathFormat"] = pathFormat
if supportsVariableType is not None:
- dct['supportsVariableType'] = supportsVariableType
+ dct["supportsVariableType"] = supportsVariableType
if supportsVariablePaging is not None:
- dct['supportsVariablePaging'] = supportsVariablePaging
+ dct["supportsVariablePaging"] = supportsVariablePaging
if supportsRunInTerminalRequest is not None:
- dct['supportsRunInTerminalRequest'] = supportsRunInTerminalRequest
+ dct["supportsRunInTerminalRequest"] = supportsRunInTerminalRequest
if supportsMemoryReferences is not None:
- dct['supportsMemoryReferences'] = supportsMemoryReferences
+ dct["supportsMemoryReferences"] = supportsMemoryReferences
if supportsProgressReporting is not None:
- dct['supportsProgressReporting'] = supportsProgressReporting
+ dct["supportsProgressReporting"] = supportsProgressReporting
if supportsInvalidatedEvent is not None:
- dct['supportsInvalidatedEvent'] = supportsInvalidatedEvent
+ dct["supportsInvalidatedEvent"] = supportsInvalidatedEvent
if supportsMemoryEvent is not None:
- dct['supportsMemoryEvent'] = supportsMemoryEvent
+ dct["supportsMemoryEvent"] = supportsMemoryEvent
+ if supportsArgsCanBeInterpretedByShell is not None:
+ dct["supportsArgsCanBeInterpretedByShell"] = supportsArgsCanBeInterpretedByShell
+ if supportsStartDebuggingRequest is not None:
+ dct["supportsStartDebuggingRequest"] = supportsStartDebuggingRequest
dct.update(self.kwargs)
return dct
-@register_response('initialize')
+@register_response("initialize")
@register
class InitializeResponse(BaseSchema):
"""
- Response to 'initialize' request.
+ Response to `initialize` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -2736,60 +2455,42 @@ class InitializeResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
- "body": {
- "description": "The capabilities of this debug adapter.",
- "type": "Capabilities"
- }
+ "body": {"description": "The capabilities of this debug adapter.", "type": "Capabilities"},
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
:param Capabilities body: The capabilities of this debug adapter.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -2798,10 +2499,9 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
if body is None:
self.body = Capabilities()
else:
- self.body = Capabilities(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != Capabilities else body
+ self.body = Capabilities(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != Capabilities else body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -2811,30 +2511,31 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["body"] = body.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
return dct
-@register_request('configurationDone')
+@register_request("configurationDone")
@register
class ConfigurationDoneRequest(BaseSchema):
"""
- This optional request indicates that the client has finished initialization of the debug adapter.
-
+ This request indicates that the client has finished initialization of the debug adapter.
+
So it is the last request in the sequence of configuration requests (which was started by the
- 'initialized' event).
-
- Clients should only call this request if the capability 'supportsConfigurationDoneRequest' is true.
+ `initialized` event).
+
+ Clients should only call this request if the corresponding capability
+ `supportsConfigurationDoneRequest` is true.
Note: automatically generated code. Do not edit manually.
"""
@@ -2842,57 +2543,48 @@ class ConfigurationDoneRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "configurationDone"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "ConfigurationDoneArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["configurationDone"]},
+ "arguments": {"type": "ConfigurationDoneArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param ConfigurationDoneArguments arguments:
+ :param string type:
+ :param string command:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param ConfigurationDoneArguments arguments:
"""
- self.type = 'request'
- self.command = 'configurationDone'
+ self.type = "request"
+ self.command = "configurationDone"
self.seq = seq
if arguments is None:
self.arguments = ConfigurationDoneArguments()
else:
- self.arguments = ConfigurationDoneArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != ConfigurationDoneArguments else arguments
+ self.arguments = (
+ ConfigurationDoneArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != ConfigurationDoneArguments
+ else arguments
+ )
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
seq = self.seq
arguments = self.arguments
dct = {
- 'type': type,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "seq": seq,
}
if arguments is not None:
- dct['arguments'] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["arguments"] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
return dct
@@ -2900,7 +2592,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class ConfigurationDoneArguments(BaseSchema):
"""
- Arguments for 'configurationDone' request.
+ Arguments for `configurationDone` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -2908,28 +2600,24 @@ class ConfigurationDoneArguments(BaseSchema):
__props__ = {}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
- """
-
- """
-
- self.kwargs = kwargs
+ """ """
+ self.kwargs = kwargs
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
- dct = {
- }
+ dct = {}
dct.update(self.kwargs)
return dct
-@register_response('configurationDone')
+@register_response("configurationDone")
@register
class ConfigurationDoneResponse(BaseSchema):
"""
- Response to 'configurationDone' request. This is just an acknowledgement, so no body field is
+ Response to `configurationDone` request. This is just an acknowledgement, so no body field is
required.
Note: automatically generated code. Do not edit manually.
@@ -2938,68 +2626,45 @@ class ConfigurationDoneResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Contains request result if success is true and optional error details if success is false."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Contains request result if success is True and error details if success is false.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and optional error details if success is false.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -3008,7 +2673,6 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -3018,27 +2682,27 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_request('launch')
+@register_request("launch")
@register
class LaunchRequest(BaseSchema):
"""
This launch request is sent from the client to the debug adapter to start the debuggee with or
- without debugging (if 'noDebug' is true).
-
+ without debugging (if `noDebug` is true).
+
Since launching is debugger/runtime specific, the arguments for this request are not part of this
specification.
@@ -3048,55 +2712,46 @@ class LaunchRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "launch"
- ]
- },
- "arguments": {
- "type": "LaunchRequestArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["launch"]},
+ "arguments": {"type": "LaunchRequestArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param LaunchRequestArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param LaunchRequestArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'launch'
+ self.type = "request"
+ self.command = "launch"
if arguments is None:
self.arguments = LaunchRequestArguments()
else:
- self.arguments = LaunchRequestArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != LaunchRequestArguments else arguments
+ self.arguments = (
+ LaunchRequestArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != LaunchRequestArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -3105,63 +2760,50 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class LaunchRequestArguments(BaseSchema):
"""
- Arguments for 'launch' request. Additional attributes are implementation specific.
+ Arguments for `launch` request. Additional attributes are implementation specific.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
- "noDebug": {
- "type": "boolean",
- "description": "If noDebug is true the launch request should launch the program without enabling debugging."
- },
+ "noDebug": {"type": "boolean", "description": "If True, the launch request should launch the program without enabling debugging."},
"__restart": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Optional data from the previous, restarted session.\nThe data is sent as the 'restart' attribute of the 'terminated' event.\nThe client should leave the data intact."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Arbitrary data from the previous, restarted session.\nThe data is sent as the `restart` attribute of the `terminated` event.\nThe client should leave the data intact.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, noDebug=None, __restart=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param boolean noDebug: If noDebug is true the launch request should launch the program without enabling debugging.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] __restart: Optional data from the previous, restarted session.
- The data is sent as the 'restart' attribute of the 'terminated' event.
+ :param boolean noDebug: If true, the launch request should launch the program without enabling debugging.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] __restart: Arbitrary data from the previous, restarted session.
+ The data is sent as the `restart` attribute of the `terminated` event.
The client should leave the data intact.
"""
self.noDebug = noDebug
self.__restart = __restart
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
noDebug = self.noDebug
__restart = self.__restart
- dct = {
- }
+ dct = {}
if noDebug is not None:
- dct['noDebug'] = noDebug
+ dct["noDebug"] = noDebug
if __restart is not None:
- dct['__restart'] = __restart
+ dct["__restart"] = __restart
dct.update(self.kwargs)
return dct
-@register_response('launch')
+@register_response("launch")
@register
class LaunchResponse(BaseSchema):
"""
- Response to 'launch' request. This is just an acknowledgement, so no body field is required.
+ Response to `launch` request. This is just an acknowledgement, so no body field is required.
Note: automatically generated code. Do not edit manually.
"""
@@ -3169,68 +2811,45 @@ class LaunchResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Contains request result if success is true and optional error details if success is false."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Contains request result if success is True and error details if success is false.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and optional error details if success is false.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -3239,7 +2858,6 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -3249,27 +2867,27 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_request('attach')
+@register_request("attach")
@register
class AttachRequest(BaseSchema):
"""
- The attach request is sent from the client to the debug adapter to attach to a debuggee that is
+ The `attach` request is sent from the client to the debug adapter to attach to a debuggee that is
already running.
-
+
Since attaching is debugger/runtime specific, the arguments for this request are not part of this
specification.
@@ -3279,55 +2897,46 @@ class AttachRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "attach"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "AttachRequestArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["attach"]},
+ "arguments": {"type": "AttachRequestArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param AttachRequestArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param AttachRequestArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'attach'
+ self.type = "request"
+ self.command = "attach"
if arguments is None:
self.arguments = AttachRequestArguments()
else:
- self.arguments = AttachRequestArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != AttachRequestArguments else arguments
+ self.arguments = (
+ AttachRequestArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != AttachRequestArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -3336,54 +2945,44 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class AttachRequestArguments(BaseSchema):
"""
- Arguments for 'attach' request. Additional attributes are implementation specific.
+ Arguments for `attach` request. Additional attributes are implementation specific.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
"__restart": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Optional data from the previous, restarted session.\nThe data is sent as the 'restart' attribute of the 'terminated' event.\nThe client should leave the data intact."
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Arbitrary data from the previous, restarted session.\nThe data is sent as the `restart` attribute of the `terminated` event.\nThe client should leave the data intact.",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, __restart=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] __restart: Optional data from the previous, restarted session.
- The data is sent as the 'restart' attribute of the 'terminated' event.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] __restart: Arbitrary data from the previous, restarted session.
+ The data is sent as the `restart` attribute of the `terminated` event.
The client should leave the data intact.
"""
self.__restart = __restart
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
__restart = self.__restart
- dct = {
- }
+ dct = {}
if __restart is not None:
- dct['__restart'] = __restart
+ dct["__restart"] = __restart
dct.update(self.kwargs)
return dct
-@register_response('attach')
+@register_response("attach")
@register
class AttachResponse(BaseSchema):
"""
- Response to 'attach' request. This is just an acknowledgement, so no body field is required.
+ Response to `attach` request. This is just an acknowledgement, so no body field is required.
Note: automatically generated code. Do not edit manually.
"""
@@ -3391,68 +2990,45 @@ class AttachResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Contains request result if success is true and optional error details if success is false."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Contains request result if success is True and error details if success is false.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and optional error details if success is false.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -3461,7 +3037,6 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -3471,28 +3046,28 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_request('restart')
+@register_request("restart")
@register
class RestartRequest(BaseSchema):
"""
- Restarts a debug session. Clients should only call this request if the capability
- 'supportsRestartRequest' is true.
-
- If the capability is missing or has the value false, a typical client will emulate 'restart' by
+ Restarts a debug session. Clients should only call this request if the corresponding capability
+ `supportsRestartRequest` is true.
+
+ If the capability is missing or has the value false, a typical client emulates `restart` by
terminating the debug adapter first and then launching it anew.
Note: automatically generated code. Do not edit manually.
@@ -3501,57 +3076,48 @@ class RestartRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "restart"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "RestartArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["restart"]},
+ "arguments": {"type": "RestartArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param RestartArguments arguments:
+ :param string type:
+ :param string command:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param RestartArguments arguments:
"""
- self.type = 'request'
- self.command = 'restart'
+ self.type = "request"
+ self.command = "restart"
self.seq = seq
if arguments is None:
self.arguments = RestartArguments()
else:
- self.arguments = RestartArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != RestartArguments else arguments
+ self.arguments = (
+ RestartArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != RestartArguments
+ else arguments
+ )
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
seq = self.seq
arguments = self.arguments
dct = {
- 'type': type,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "seq": seq,
}
if arguments is not None:
- dct['arguments'] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["arguments"] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
return dct
@@ -3559,51 +3125,42 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class RestartArguments(BaseSchema):
"""
- Arguments for 'restart' request.
+ Arguments for `restart` request.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
"arguments": {
- "oneOf": [
- {
- "$ref": "#/definitions/LaunchRequestArguments"
- },
- {
- "$ref": "#/definitions/AttachRequestArguments"
- }
- ],
- "description": "The latest version of the 'launch' or 'attach' configuration."
+ "oneOf": [{"$ref": "#/definitions/LaunchRequestArguments"}, {"$ref": "#/definitions/AttachRequestArguments"}],
+ "description": "The latest version of the `launch` or `attach` configuration.",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param TypeNA arguments: The latest version of the 'launch' or 'attach' configuration.
+ :param TypeNA arguments: The latest version of the `launch` or `attach` configuration.
"""
self.arguments = arguments
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
arguments = self.arguments
- dct = {
- }
+ dct = {}
if arguments is not None:
- dct['arguments'] = arguments
+ dct["arguments"] = arguments
dct.update(self.kwargs)
return dct
-@register_response('restart')
+@register_response("restart")
@register
class RestartResponse(BaseSchema):
"""
- Response to 'restart' request. This is just an acknowledgement, so no body field is required.
+ Response to `restart` request. This is just an acknowledgement, so no body field is required.
Note: automatically generated code. Do not edit manually.
"""
@@ -3611,68 +3168,45 @@ class RestartResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Contains request result if success is true and optional error details if success is false."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Contains request result if success is True and error details if success is false.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and optional error details if success is false.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -3681,7 +3215,6 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -3691,36 +3224,34 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_request('disconnect')
+@register_request("disconnect")
@register
class DisconnectRequest(BaseSchema):
"""
- The 'disconnect' request is sent from the client to the debug adapter in order to stop debugging.
-
- It asks the debug adapter to disconnect from the debuggee and to terminate the debug adapter.
-
- If the debuggee has been started with the 'launch' request, the 'disconnect' request terminates the
- debuggee.
-
- If the 'attach' request was used to connect to the debuggee, 'disconnect' does not terminate the
- debuggee.
-
- This behavior can be controlled with the 'terminateDebuggee' argument (if supported by the debug
- adapter).
+ The `disconnect` request asks the debug adapter to disconnect from the debuggee (thus ending the
+ debug session) and then to shut down itself (the debug adapter).
+
+ In addition, the debug adapter must terminate the debuggee if it was started with the `launch`
+ request. If an `attach` request was used to connect to the debuggee, then the debug adapter must not
+ terminate the debuggee.
+
+ This implicit behavior of when to terminate the debuggee can be overridden with the
+ `terminateDebuggee` argument (which is only supported by a debug adapter if the corresponding
+ capability `supportTerminateDebuggee` is true).
Note: automatically generated code. Do not edit manually.
"""
@@ -3728,57 +3259,48 @@ class DisconnectRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "disconnect"
- ]
- },
- "arguments": {
- "type": "DisconnectArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["disconnect"]},
+ "arguments": {"type": "DisconnectArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param DisconnectArguments arguments:
+ :param string type:
+ :param string command:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param DisconnectArguments arguments:
"""
- self.type = 'request'
- self.command = 'disconnect'
+ self.type = "request"
+ self.command = "disconnect"
self.seq = seq
if arguments is None:
self.arguments = DisconnectArguments()
else:
- self.arguments = DisconnectArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != DisconnectArguments else arguments
+ self.arguments = (
+ DisconnectArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != DisconnectArguments
+ else arguments
+ )
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
seq = self.seq
arguments = self.arguments
dct = {
- 'type': type,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "seq": seq,
}
if arguments is not None:
- dct['arguments'] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["arguments"] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
return dct
@@ -3786,7 +3308,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class DisconnectArguments(BaseSchema):
"""
- Arguments for 'disconnect' request.
+ Arguments for `disconnect` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -3794,58 +3316,56 @@ class DisconnectArguments(BaseSchema):
__props__ = {
"restart": {
"type": "boolean",
- "description": "A value of true indicates that this 'disconnect' request is part of a restart sequence."
+ "description": "A value of True indicates that this `disconnect` request is part of a restart sequence.",
},
"terminateDebuggee": {
"type": "boolean",
- "description": "Indicates whether the debuggee should be terminated when the debugger is disconnected.\nIf unspecified, the debug adapter is free to do whatever it thinks is best.\nThe attribute is only honored by a debug adapter if the capability 'supportTerminateDebuggee' is true."
+ "description": "Indicates whether the debuggee should be terminated when the debugger is disconnected.\nIf unspecified, the debug adapter is free to do whatever it thinks is best.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportTerminateDebuggee` is True.",
},
"suspendDebuggee": {
"type": "boolean",
- "description": "Indicates whether the debuggee should stay suspended when the debugger is disconnected.\nIf unspecified, the debuggee should resume execution.\nThe attribute is only honored by a debug adapter if the capability 'supportSuspendDebuggee' is true."
- }
+ "description": "Indicates whether the debuggee should stay suspended when the debugger is disconnected.\nIf unspecified, the debuggee should resume execution.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportSuspendDebuggee` is True.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, restart=None, terminateDebuggee=None, suspendDebuggee=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param boolean restart: A value of true indicates that this 'disconnect' request is part of a restart sequence.
+ :param boolean restart: A value of true indicates that this `disconnect` request is part of a restart sequence.
:param boolean terminateDebuggee: Indicates whether the debuggee should be terminated when the debugger is disconnected.
If unspecified, the debug adapter is free to do whatever it thinks is best.
- The attribute is only honored by a debug adapter if the capability 'supportTerminateDebuggee' is true.
+ The attribute is only honored by a debug adapter if the corresponding capability `supportTerminateDebuggee` is true.
:param boolean suspendDebuggee: Indicates whether the debuggee should stay suspended when the debugger is disconnected.
If unspecified, the debuggee should resume execution.
- The attribute is only honored by a debug adapter if the capability 'supportSuspendDebuggee' is true.
+ The attribute is only honored by a debug adapter if the corresponding capability `supportSuspendDebuggee` is true.
"""
self.restart = restart
self.terminateDebuggee = terminateDebuggee
self.suspendDebuggee = suspendDebuggee
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
restart = self.restart
terminateDebuggee = self.terminateDebuggee
suspendDebuggee = self.suspendDebuggee
- dct = {
- }
+ dct = {}
if restart is not None:
- dct['restart'] = restart
+ dct["restart"] = restart
if terminateDebuggee is not None:
- dct['terminateDebuggee'] = terminateDebuggee
+ dct["terminateDebuggee"] = terminateDebuggee
if suspendDebuggee is not None:
- dct['suspendDebuggee'] = suspendDebuggee
+ dct["suspendDebuggee"] = suspendDebuggee
dct.update(self.kwargs)
return dct
-@register_response('disconnect')
+@register_response("disconnect")
@register
class DisconnectResponse(BaseSchema):
"""
- Response to 'disconnect' request. This is just an acknowledgement, so no body field is required.
+ Response to `disconnect` request. This is just an acknowledgement, so no body field is required.
Note: automatically generated code. Do not edit manually.
"""
@@ -3853,68 +3373,45 @@ class DisconnectResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Contains request result if success is true and optional error details if success is false."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Contains request result if success is True and error details if success is false.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and optional error details if success is false.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -3923,7 +3420,6 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -3933,28 +3429,38 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_request('terminate')
+@register_request("terminate")
@register
class TerminateRequest(BaseSchema):
"""
- The 'terminate' request is sent from the client to the debug adapter in order to give the debuggee a
- chance for terminating itself.
-
- Clients should only call this request if the capability 'supportsTerminateRequest' is true.
+ The `terminate` request is sent from the client to the debug adapter in order to shut down the
+ debuggee gracefully. Clients should only call this request if the capability
+ `supportsTerminateRequest` is true.
+
+ Typically a debug adapter implements `terminate` by sending a software signal which the debuggee
+ intercepts in order to clean things up properly before terminating itself.
+
+ Please note that this request does not directly affect the state of the debug session: if the
+ debuggee decides to veto the graceful shutdown for any reason by not terminating itself, then the
+ debug session just continues.
+
+ Clients can surface the `terminate` request as an explicit command or they can integrate it into a
+ two stage Stop command that first sends `terminate` to request a graceful shutdown, and if that
+ fails uses `disconnect` for a forceful shutdown.
Note: automatically generated code. Do not edit manually.
"""
@@ -3962,57 +3468,48 @@ class TerminateRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "terminate"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "TerminateArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["terminate"]},
+ "arguments": {"type": "TerminateArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param TerminateArguments arguments:
+ :param string type:
+ :param string command:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param TerminateArguments arguments:
"""
- self.type = 'request'
- self.command = 'terminate'
+ self.type = "request"
+ self.command = "terminate"
self.seq = seq
if arguments is None:
self.arguments = TerminateArguments()
else:
- self.arguments = TerminateArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != TerminateArguments else arguments
+ self.arguments = (
+ TerminateArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != TerminateArguments
+ else arguments
+ )
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
seq = self.seq
arguments = self.arguments
dct = {
- 'type': type,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "seq": seq,
}
if arguments is not None:
- dct['arguments'] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["arguments"] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
return dct
@@ -4020,7 +3517,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class TerminateArguments(BaseSchema):
"""
- Arguments for 'terminate' request.
+ Arguments for `terminate` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -4028,36 +3525,34 @@ class TerminateArguments(BaseSchema):
__props__ = {
"restart": {
"type": "boolean",
- "description": "A value of true indicates that this 'terminate' request is part of a restart sequence."
+ "description": "A value of True indicates that this `terminate` request is part of a restart sequence.",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, restart=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param boolean restart: A value of true indicates that this 'terminate' request is part of a restart sequence.
+ :param boolean restart: A value of true indicates that this `terminate` request is part of a restart sequence.
"""
self.restart = restart
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
restart = self.restart
- dct = {
- }
+ dct = {}
if restart is not None:
- dct['restart'] = restart
+ dct["restart"] = restart
dct.update(self.kwargs)
return dct
-@register_response('terminate')
+@register_response("terminate")
@register
class TerminateResponse(BaseSchema):
"""
- Response to 'terminate' request. This is just an acknowledgement, so no body field is required.
+ Response to `terminate` request. This is just an acknowledgement, so no body field is required.
Note: automatically generated code. Do not edit manually.
"""
@@ -4065,68 +3560,45 @@ class TerminateResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Contains request result if success is true and optional error details if success is false."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Contains request result if success is True and error details if success is false.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and optional error details if success is false.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -4135,7 +3607,6 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -4145,29 +3616,29 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_request('breakpointLocations')
+@register_request("breakpointLocations")
@register
class BreakpointLocationsRequest(BaseSchema):
"""
- The 'breakpointLocations' request returns all possible locations for source breakpoints in a given
+ The `breakpointLocations` request returns all possible locations for source breakpoints in a given
range.
-
- Clients should only call this request if the capability 'supportsBreakpointLocationsRequest' is
- true.
+
+ Clients should only call this request if the corresponding capability
+ `supportsBreakpointLocationsRequest` is true.
Note: automatically generated code. Do not edit manually.
"""
@@ -4175,57 +3646,48 @@ class BreakpointLocationsRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "command": {
- "type": "string",
- "enum": [
- "breakpointLocations"
- ]
- },
- "arguments": {
- "type": "BreakpointLocationsArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["breakpointLocations"]},
+ "arguments": {"type": "BreakpointLocationsArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param BreakpointLocationsArguments arguments:
+ :param string type:
+ :param string command:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param BreakpointLocationsArguments arguments:
"""
- self.type = 'request'
- self.command = 'breakpointLocations'
+ self.type = "request"
+ self.command = "breakpointLocations"
self.seq = seq
if arguments is None:
self.arguments = BreakpointLocationsArguments()
else:
- self.arguments = BreakpointLocationsArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != BreakpointLocationsArguments else arguments
+ self.arguments = (
+ BreakpointLocationsArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != BreakpointLocationsArguments
+ else arguments
+ )
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
seq = self.seq
arguments = self.arguments
dct = {
- 'type': type,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "seq": seq,
}
if arguments is not None:
- dct['arguments'] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["arguments"] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
return dct
@@ -4233,56 +3695,55 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class BreakpointLocationsArguments(BaseSchema):
"""
- Arguments for 'breakpointLocations' request.
+ Arguments for `breakpointLocations` request.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
"source": {
- "description": "The source location of the breakpoints; either 'source.path' or 'source.reference' must be specified.",
- "type": "Source"
+ "description": "The source location of the breakpoints; either `source.path` or `source.sourceReference` must be specified.",
+ "type": "Source",
},
"line": {
"type": "integer",
- "description": "Start line of range to search possible breakpoint locations in. If only the line is specified, the request returns all possible locations in that line."
+ "description": "Start line of range to search possible breakpoint locations in. If only the line is specified, the request returns all possible locations in that line.",
},
"column": {
"type": "integer",
- "description": "Optional start column of range to search possible breakpoint locations in. If no start column is given, the first column in the start line is assumed."
+ "description": "Start position within `line` to search possible breakpoint locations in. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If no column is given, the first position in the start line is assumed.",
},
"endLine": {
"type": "integer",
- "description": "Optional end line of range to search possible breakpoint locations in. If no end line is given, then the end line is assumed to be the start line."
+ "description": "End line of range to search possible breakpoint locations in. If no end line is given, then the end line is assumed to be the start line.",
},
"endColumn": {
"type": "integer",
- "description": "Optional end column of range to search possible breakpoint locations in. If no end column is given, then it is assumed to be in the last column of the end line."
- }
+ "description": "End position within `endLine` to search possible breakpoint locations in. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If no end column is given, the last position in the end line is assumed.",
+ },
}
- __refs__ = set(['source'])
+ __refs__ = set(["source"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, source, line, column=None, endLine=None, endColumn=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param Source source: The source location of the breakpoints; either 'source.path' or 'source.reference' must be specified.
+ :param Source source: The source location of the breakpoints; either `source.path` or `source.sourceReference` must be specified.
:param integer line: Start line of range to search possible breakpoint locations in. If only the line is specified, the request returns all possible locations in that line.
- :param integer column: Optional start column of range to search possible breakpoint locations in. If no start column is given, the first column in the start line is assumed.
- :param integer endLine: Optional end line of range to search possible breakpoint locations in. If no end line is given, then the end line is assumed to be the start line.
- :param integer endColumn: Optional end column of range to search possible breakpoint locations in. If no end column is given, then it is assumed to be in the last column of the end line.
+ :param integer column: Start position within `line` to search possible breakpoint locations in. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If no column is given, the first position in the start line is assumed.
+ :param integer endLine: End line of range to search possible breakpoint locations in. If no end line is given, then the end line is assumed to be the start line.
+ :param integer endColumn: End position within `endLine` to search possible breakpoint locations in. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If no end column is given, the last position in the end line is assumed.
"""
if source is None:
self.source = Source()
else:
- self.source = Source(update_ids_from_dap=update_ids_from_dap, **source) if source.__class__ != Source else source
+ self.source = Source(update_ids_from_dap=update_ids_from_dap, **source) if source.__class__ != Source else source
self.line = line
self.column = column
self.endLine = endLine
self.endColumn = endColumn
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
source = self.source
line = self.line
@@ -4290,25 +3751,25 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
endLine = self.endLine
endColumn = self.endColumn
dct = {
- 'source': source.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'line': line,
+ "source": source.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "line": line,
}
if column is not None:
- dct['column'] = column
+ dct["column"] = column
if endLine is not None:
- dct['endLine'] = endLine
+ dct["endLine"] = endLine
if endColumn is not None:
- dct['endColumn'] = endColumn
+ dct["endColumn"] = endColumn
dct.update(self.kwargs)
return dct
-@register_response('breakpointLocations')
+@register_response("breakpointLocations")
@register
class BreakpointLocationsResponse(BaseSchema):
"""
- Response to 'breakpointLocations' request.
-
+ Response to `breakpointLocations` request.
+
Contains possible locations for source breakpoints.
Note: automatically generated code. Do not edit manually.
@@ -4317,83 +3778,67 @@ class BreakpointLocationsResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
"breakpoints": {
"type": "array",
- "items": {
- "$ref": "#/definitions/BreakpointLocation"
- },
- "description": "Sorted set of possible breakpoint locations."
+ "items": {"$ref": "#/definitions/BreakpointLocation"},
+ "description": "Sorted set of possible breakpoint locations.",
}
},
- "required": [
- "breakpoints"
- ]
- }
+ "required": ["breakpoints"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param BreakpointLocationsResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param BreakpointLocationsResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = BreakpointLocationsResponseBody()
else:
- self.body = BreakpointLocationsResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != BreakpointLocationsResponseBody else body
+ self.body = (
+ BreakpointLocationsResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != BreakpointLocationsResponseBody
+ else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -4403,28 +3848,28 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('setBreakpoints')
+@register_request("setBreakpoints")
@register
class SetBreakpointsRequest(BaseSchema):
"""
Sets multiple breakpoints for a single source and clears all previous breakpoints in that source.
-
+
To clear all breakpoint for a source, specify an empty array.
-
- When a breakpoint is hit, a 'stopped' event (with reason 'breakpoint') is generated.
+
+ When a breakpoint is hit, a `stopped` event (with reason `breakpoint`) is generated.
Note: automatically generated code. Do not edit manually.
"""
@@ -4432,55 +3877,46 @@ class SetBreakpointsRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "setBreakpoints"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "SetBreakpointsArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["setBreakpoints"]},
+ "arguments": {"type": "SetBreakpointsArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param SetBreakpointsArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param SetBreakpointsArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'setBreakpoints'
+ self.type = "request"
+ self.command = "setBreakpoints"
if arguments is None:
self.arguments = SetBreakpointsArguments()
else:
- self.arguments = SetBreakpointsArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != SetBreakpointsArguments else arguments
+ self.arguments = (
+ SetBreakpointsArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != SetBreakpointsArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -4489,42 +3925,34 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class SetBreakpointsArguments(BaseSchema):
"""
- Arguments for 'setBreakpoints' request.
+ Arguments for `setBreakpoints` request.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
"source": {
- "description": "The source location of the breakpoints; either 'source.path' or 'source.reference' must be specified.",
- "type": "Source"
+ "description": "The source location of the breakpoints; either `source.path` or `source.sourceReference` must be specified.",
+ "type": "Source",
},
"breakpoints": {
"type": "array",
- "items": {
- "$ref": "#/definitions/SourceBreakpoint"
- },
- "description": "The code locations of the breakpoints."
- },
- "lines": {
- "type": "array",
- "items": {
- "type": "integer"
- },
- "description": "Deprecated: The code locations of the breakpoints."
+ "items": {"$ref": "#/definitions/SourceBreakpoint"},
+ "description": "The code locations of the breakpoints.",
},
+ "lines": {"type": "array", "items": {"type": "integer"}, "description": "Deprecated: The code locations of the breakpoints."},
"sourceModified": {
"type": "boolean",
- "description": "A value of true indicates that the underlying source has been modified which results in new breakpoint locations."
- }
+ "description": "A value of True indicates that the underlying source has been modified which results in new breakpoint locations.",
+ },
}
- __refs__ = set(['source'])
+ __refs__ = set(["source"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, source, breakpoints=None, lines=None, sourceModified=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param Source source: The source location of the breakpoints; either 'source.path' or 'source.reference' must be specified.
+ :param Source source: The source location of the breakpoints; either `source.path` or `source.sourceReference` must be specified.
:param array breakpoints: The code locations of the breakpoints.
:param array lines: Deprecated: The code locations of the breakpoints.
:param boolean sourceModified: A value of true indicates that the underlying source has been modified which results in new breakpoint locations.
@@ -4532,7 +3960,7 @@ def __init__(self, source, breakpoints=None, lines=None, sourceModified=None, up
if source is None:
self.source = Source()
else:
- self.source = Source(update_ids_from_dap=update_ids_from_dap, **source) if source.__class__ != Source else source
+ self.source = Source(update_ids_from_dap=update_ids_from_dap, **source) if source.__class__ != Source else source
self.breakpoints = breakpoints
if update_ids_from_dap and self.breakpoints:
for o in self.breakpoints:
@@ -4541,7 +3969,6 @@ def __init__(self, source, breakpoints=None, lines=None, sourceModified=None, up
self.sourceModified = sourceModified
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
source = self.source
breakpoints = self.breakpoints
@@ -4552,31 +3979,33 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
lines = [x.to_dict() for x in lines]
sourceModified = self.sourceModified
dct = {
- 'source': source.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "source": source.to_dict(update_ids_to_dap=update_ids_to_dap),
}
if breakpoints is not None:
- dct['breakpoints'] = [SourceBreakpoint.update_dict_ids_to_dap(o) for o in breakpoints] if (update_ids_to_dap and breakpoints) else breakpoints
+ dct["breakpoints"] = (
+ [SourceBreakpoint.update_dict_ids_to_dap(o) for o in breakpoints] if (update_ids_to_dap and breakpoints) else breakpoints
+ )
if lines is not None:
- dct['lines'] = lines
+ dct["lines"] = lines
if sourceModified is not None:
- dct['sourceModified'] = sourceModified
+ dct["sourceModified"] = sourceModified
dct.update(self.kwargs)
return dct
-@register_response('setBreakpoints')
+@register_response("setBreakpoints")
@register
class SetBreakpointsResponse(BaseSchema):
"""
- Response to 'setBreakpoints' request.
-
+ Response to `setBreakpoints` request.
+
Returned is information about each breakpoint created by this request.
-
+
This includes the actual code location and whether the breakpoint could be verified.
-
- The breakpoints returned are in the same order as the elements of the 'breakpoints'
-
- (or the deprecated 'lines') array in the arguments.
+
+ The breakpoints returned are in the same order as the elements of the `breakpoints`
+
+ (or the deprecated `lines`) array in the arguments.
Note: automatically generated code. Do not edit manually.
"""
@@ -4584,83 +4013,67 @@ class SetBreakpointsResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
"breakpoints": {
"type": "array",
- "items": {
- "$ref": "#/definitions/Breakpoint"
- },
- "description": "Information about the breakpoints.\nThe array elements are in the same order as the elements of the 'breakpoints' (or the deprecated 'lines') array in the arguments."
+ "items": {"$ref": "#/definitions/Breakpoint"},
+ "description": "Information about the breakpoints.\nThe array elements are in the same order as the elements of the `breakpoints` (or the deprecated `lines`) array in the arguments.",
}
},
- "required": [
- "breakpoints"
- ]
- }
+ "required": ["breakpoints"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param SetBreakpointsResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param SetBreakpointsResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = SetBreakpointsResponseBody()
else:
- self.body = SetBreakpointsResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != SetBreakpointsResponseBody else body
+ self.body = (
+ SetBreakpointsResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != SetBreakpointsResponseBody
+ else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -4670,31 +4083,32 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('setFunctionBreakpoints')
+@register_request("setFunctionBreakpoints")
@register
class SetFunctionBreakpointsRequest(BaseSchema):
"""
Replaces all existing function breakpoints with new function breakpoints.
-
+
To clear all function breakpoints, specify an empty array.
-
- When a function breakpoint is hit, a 'stopped' event (with reason 'function breakpoint') is
+
+ When a function breakpoint is hit, a `stopped` event (with reason `function breakpoint`) is
generated.
-
- Clients should only call this request if the capability 'supportsFunctionBreakpoints' is true.
+
+ Clients should only call this request if the corresponding capability `supportsFunctionBreakpoints`
+ is true.
Note: automatically generated code. Do not edit manually.
"""
@@ -4702,55 +4116,46 @@ class SetFunctionBreakpointsRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "command": {
- "type": "string",
- "enum": [
- "setFunctionBreakpoints"
- ]
- },
- "arguments": {
- "type": "SetFunctionBreakpointsArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["setFunctionBreakpoints"]},
+ "arguments": {"type": "SetFunctionBreakpointsArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param SetFunctionBreakpointsArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param SetFunctionBreakpointsArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'setFunctionBreakpoints'
+ self.type = "request"
+ self.command = "setFunctionBreakpoints"
if arguments is None:
self.arguments = SetFunctionBreakpointsArguments()
else:
- self.arguments = SetFunctionBreakpointsArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != SetFunctionBreakpointsArguments else arguments
+ self.arguments = (
+ SetFunctionBreakpointsArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != SetFunctionBreakpointsArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -4759,7 +4164,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class SetFunctionBreakpointsArguments(BaseSchema):
"""
- Arguments for 'setFunctionBreakpoints' request.
+ Arguments for `setFunctionBreakpoints` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -4767,15 +4172,13 @@ class SetFunctionBreakpointsArguments(BaseSchema):
__props__ = {
"breakpoints": {
"type": "array",
- "items": {
- "$ref": "#/definitions/FunctionBreakpoint"
- },
- "description": "The function names of the breakpoints."
+ "items": {"$ref": "#/definitions/FunctionBreakpoint"},
+ "description": "The function names of the breakpoints.",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -4787,24 +4190,25 @@ def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (u
FunctionBreakpoint.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
breakpoints = self.breakpoints
if breakpoints and hasattr(breakpoints[0], "to_dict"):
breakpoints = [x.to_dict() for x in breakpoints]
dct = {
- 'breakpoints': [FunctionBreakpoint.update_dict_ids_to_dap(o) for o in breakpoints] if (update_ids_to_dap and breakpoints) else breakpoints,
+ "breakpoints": [FunctionBreakpoint.update_dict_ids_to_dap(o) for o in breakpoints]
+ if (update_ids_to_dap and breakpoints)
+ else breakpoints,
}
dct.update(self.kwargs)
return dct
-@register_response('setFunctionBreakpoints')
+@register_response("setFunctionBreakpoints")
@register
class SetFunctionBreakpointsResponse(BaseSchema):
"""
- Response to 'setFunctionBreakpoints' request.
-
+ Response to `setFunctionBreakpoints` request.
+
Returned is information about each breakpoint created by this request.
Note: automatically generated code. Do not edit manually.
@@ -4813,83 +4217,67 @@ class SetFunctionBreakpointsResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
"breakpoints": {
"type": "array",
- "items": {
- "$ref": "#/definitions/Breakpoint"
- },
- "description": "Information about the breakpoints. The array elements correspond to the elements of the 'breakpoints' array."
+ "items": {"$ref": "#/definitions/Breakpoint"},
+ "description": "Information about the breakpoints. The array elements correspond to the elements of the `breakpoints` array.",
}
},
- "required": [
- "breakpoints"
- ]
- }
+ "required": ["breakpoints"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param SetFunctionBreakpointsResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param SetFunctionBreakpointsResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = SetFunctionBreakpointsResponseBody()
else:
- self.body = SetFunctionBreakpointsResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != SetFunctionBreakpointsResponseBody else body
+ self.body = (
+ SetFunctionBreakpointsResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != SetFunctionBreakpointsResponseBody
+ else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -4899,29 +4287,29 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('setExceptionBreakpoints')
+@register_request("setExceptionBreakpoints")
@register
class SetExceptionBreakpointsRequest(BaseSchema):
"""
- The request configures the debuggers response to thrown exceptions.
-
- If an exception is configured to break, a 'stopped' event is fired (with reason 'exception').
-
- Clients should only call this request if the capability 'exceptionBreakpointFilters' returns one or
- more filters.
+ The request configures the debugger's response to thrown exceptions.
+
+ If an exception is configured to break, a `stopped` event is fired (with reason `exception`).
+
+ Clients should only call this request if the corresponding capability `exceptionBreakpointFilters`
+ returns one or more filters.
Note: automatically generated code. Do not edit manually.
"""
@@ -4929,55 +4317,46 @@ class SetExceptionBreakpointsRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "setExceptionBreakpoints"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "SetExceptionBreakpointsArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["setExceptionBreakpoints"]},
+ "arguments": {"type": "SetExceptionBreakpointsArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param SetExceptionBreakpointsArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param SetExceptionBreakpointsArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'setExceptionBreakpoints'
+ self.type = "request"
+ self.command = "setExceptionBreakpoints"
if arguments is None:
self.arguments = SetExceptionBreakpointsArguments()
else:
- self.arguments = SetExceptionBreakpointsArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != SetExceptionBreakpointsArguments else arguments
+ self.arguments = (
+ SetExceptionBreakpointsArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != SetExceptionBreakpointsArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -4986,7 +4365,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class SetExceptionBreakpointsArguments(BaseSchema):
"""
- Arguments for 'setExceptionBreakpoints' request.
+ Arguments for `setExceptionBreakpoints` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -4994,36 +4373,30 @@ class SetExceptionBreakpointsArguments(BaseSchema):
__props__ = {
"filters": {
"type": "array",
- "items": {
- "type": "string"
- },
- "description": "Set of exception filters specified by their ID. The set of all possible exception filters is defined by the 'exceptionBreakpointFilters' capability. The 'filter' and 'filterOptions' sets are additive."
+ "items": {"type": "string"},
+ "description": "Set of exception filters specified by their ID. The set of all possible exception filters is defined by the `exceptionBreakpointFilters` capability. The `filter` and `filterOptions` sets are additive.",
},
"filterOptions": {
"type": "array",
- "items": {
- "$ref": "#/definitions/ExceptionFilterOptions"
- },
- "description": "Set of exception filters and their options. The set of all possible exception filters is defined by the 'exceptionBreakpointFilters' capability. This attribute is only honored by a debug adapter if the capability 'supportsExceptionFilterOptions' is true. The 'filter' and 'filterOptions' sets are additive."
+ "items": {"$ref": "#/definitions/ExceptionFilterOptions"},
+ "description": "Set of exception filters and their options. The set of all possible exception filters is defined by the `exceptionBreakpointFilters` capability. This attribute is only honored by a debug adapter if the corresponding capability `supportsExceptionFilterOptions` is True. The `filter` and `filterOptions` sets are additive.",
},
"exceptionOptions": {
"type": "array",
- "items": {
- "$ref": "#/definitions/ExceptionOptions"
- },
- "description": "Configuration options for selected exceptions.\nThe attribute is only honored by a debug adapter if the capability 'supportsExceptionOptions' is true."
- }
+ "items": {"$ref": "#/definitions/ExceptionOptions"},
+ "description": "Configuration options for selected exceptions.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsExceptionOptions` is True.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, filters, filterOptions=None, exceptionOptions=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param array filters: Set of exception filters specified by their ID. The set of all possible exception filters is defined by the 'exceptionBreakpointFilters' capability. The 'filter' and 'filterOptions' sets are additive.
- :param array filterOptions: Set of exception filters and their options. The set of all possible exception filters is defined by the 'exceptionBreakpointFilters' capability. This attribute is only honored by a debug adapter if the capability 'supportsExceptionFilterOptions' is true. The 'filter' and 'filterOptions' sets are additive.
+ :param array filters: Set of exception filters specified by their ID. The set of all possible exception filters is defined by the `exceptionBreakpointFilters` capability. The `filter` and `filterOptions` sets are additive.
+ :param array filterOptions: Set of exception filters and their options. The set of all possible exception filters is defined by the `exceptionBreakpointFilters` capability. This attribute is only honored by a debug adapter if the corresponding capability `supportsExceptionFilterOptions` is true. The `filter` and `filterOptions` sets are additive.
:param array exceptionOptions: Configuration options for selected exceptions.
- The attribute is only honored by a debug adapter if the capability 'supportsExceptionOptions' is true.
+ The attribute is only honored by a debug adapter if the corresponding capability `supportsExceptionOptions` is true.
"""
self.filters = filters
self.filterOptions = filterOptions
@@ -5036,7 +4409,6 @@ def __init__(self, filters, filterOptions=None, exceptionOptions=None, update_id
ExceptionOptions.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
filters = self.filters
if filters and hasattr(filters[0], "to_dict"):
@@ -5048,36 +4420,43 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if exceptionOptions and hasattr(exceptionOptions[0], "to_dict"):
exceptionOptions = [x.to_dict() for x in exceptionOptions]
dct = {
- 'filters': filters,
+ "filters": filters,
}
if filterOptions is not None:
- dct['filterOptions'] = [ExceptionFilterOptions.update_dict_ids_to_dap(o) for o in filterOptions] if (update_ids_to_dap and filterOptions) else filterOptions
+ dct["filterOptions"] = (
+ [ExceptionFilterOptions.update_dict_ids_to_dap(o) for o in filterOptions]
+ if (update_ids_to_dap and filterOptions)
+ else filterOptions
+ )
if exceptionOptions is not None:
- dct['exceptionOptions'] = [ExceptionOptions.update_dict_ids_to_dap(o) for o in exceptionOptions] if (update_ids_to_dap and exceptionOptions) else exceptionOptions
+ dct["exceptionOptions"] = (
+ [ExceptionOptions.update_dict_ids_to_dap(o) for o in exceptionOptions]
+ if (update_ids_to_dap and exceptionOptions)
+ else exceptionOptions
+ )
dct.update(self.kwargs)
return dct
-@register_response('setExceptionBreakpoints')
+@register_response("setExceptionBreakpoints")
@register
class SetExceptionBreakpointsResponse(BaseSchema):
"""
- Response to 'setExceptionBreakpoints' request.
-
- The response contains an array of Breakpoint objects with information about each exception
- breakpoint or filter. The Breakpoint objects are in the same order as the elements of the 'filters',
- 'filterOptions', 'exceptionOptions' arrays given as arguments. If both 'filters' and 'filterOptions'
- are given, the returned array must start with 'filters' information first, followed by
- 'filterOptions' information.
-
- The mandatory 'verified' property of a Breakpoint object signals whether the exception breakpoint or
- filter could be successfully created and whether the optional condition or hit count expressions are
- valid. In case of an error the 'message' property explains the problem. An optional 'id' property
- can be used to introduce a unique ID for the exception breakpoint or filter so that it can be
- updated subsequently by sending breakpoint events.
-
- For backward compatibility both the 'breakpoints' array and the enclosing 'body' are optional. If
- these elements are missing a client will not be able to show problems for individual exception
+ Response to `setExceptionBreakpoints` request.
+
+ The response contains an array of `Breakpoint` objects with information about each exception
+ breakpoint or filter. The `Breakpoint` objects are in the same order as the elements of the
+ `filters`, `filterOptions`, `exceptionOptions` arrays given as arguments. If both `filters` and
+ `filterOptions` are given, the returned array must start with `filters` information first, followed
+ by `filterOptions` information.
+
+ The `verified` property of a `Breakpoint` object signals whether the exception breakpoint or filter
+ could be successfully created and whether the condition is valid. In case of an error the `message`
+ property explains the problem. The `id` property can be used to introduce a unique ID for the
+ exception breakpoint or filter so that it can be updated subsequently by sending breakpoint events.
+
+ For backward compatibility both the `breakpoints` array and the enclosing `body` are optional. If
+ these elements are missing a client is not able to show problems for individual exception
breakpoints or filters.
Note: automatically generated code. Do not edit manually.
@@ -5086,68 +4465,51 @@ class SetExceptionBreakpointsResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
"breakpoints": {
"type": "array",
- "items": {
- "$ref": "#/definitions/Breakpoint"
- },
- "description": "Information about the exception breakpoints or filters.\nThe breakpoints returned are in the same order as the elements of the 'filters', 'filterOptions', 'exceptionOptions' arrays in the arguments. If both 'filters' and 'filterOptions' are given, the returned array must start with 'filters' information first, followed by 'filterOptions' information."
+ "items": {"$ref": "#/definitions/Breakpoint"},
+ "description": "Information about the exception breakpoints or filters.\nThe breakpoints returned are in the same order as the elements of the `filters`, `filterOptions`, `exceptionOptions` arrays in the arguments. If both `filters` and `filterOptions` are given, the returned array must start with `filters` information first, followed by `filterOptions` information.",
}
- }
- }
+ },
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param SetExceptionBreakpointsResponseBody body:
+ :param SetExceptionBreakpointsResponseBody body:
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -5156,10 +4518,13 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
if body is None:
self.body = SetExceptionBreakpointsResponseBody()
else:
- self.body = SetExceptionBreakpointsResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != SetExceptionBreakpointsResponseBody else body
+ self.body = (
+ SetExceptionBreakpointsResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != SetExceptionBreakpointsResponseBody
+ else body
+ )
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -5169,27 +4534,28 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["body"] = body.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
return dct
-@register_request('dataBreakpointInfo')
+@register_request("dataBreakpointInfo")
@register
class DataBreakpointInfoRequest(BaseSchema):
"""
Obtains information on a possible data breakpoint that could be set on an expression or variable.
-
- Clients should only call this request if the capability 'supportsDataBreakpoints' is true.
+
+ Clients should only call this request if the corresponding capability `supportsDataBreakpoints` is
+ true.
Note: automatically generated code. Do not edit manually.
"""
@@ -5197,55 +4563,46 @@ class DataBreakpointInfoRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "dataBreakpointInfo"
- ]
- },
- "arguments": {
- "type": "DataBreakpointInfoArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["dataBreakpointInfo"]},
+ "arguments": {"type": "DataBreakpointInfoArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param DataBreakpointInfoArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param DataBreakpointInfoArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'dataBreakpointInfo'
+ self.type = "request"
+ self.command = "dataBreakpointInfo"
if arguments is None:
self.arguments = DataBreakpointInfoArguments()
else:
- self.arguments = DataBreakpointInfoArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != DataBreakpointInfoArguments else arguments
+ self.arguments = (
+ DataBreakpointInfoArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != DataBreakpointInfoArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -5254,7 +4611,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class DataBreakpointInfoArguments(BaseSchema):
"""
- Arguments for 'dataBreakpointInfo' request.
+ Arguments for `dataBreakpointInfo` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -5262,62 +4619,77 @@ class DataBreakpointInfoArguments(BaseSchema):
__props__ = {
"variablesReference": {
"type": "integer",
- "description": "Reference to the Variable container if the data breakpoint is requested for a child of the container."
+ "description": "Reference to the variable container if the data breakpoint is requested for a child of the container. The `variablesReference` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details.",
},
"name": {
"type": "string",
- "description": "The name of the Variable's child to obtain data breakpoint information for.\nIf variablesReference isn't provided, this can be an expression."
- }
+ "description": "The name of the variable's child to obtain data breakpoint information for.\nIf `variablesReference` isn't specified, this can be an expression.",
+ },
+ "frameId": {
+ "type": "integer",
+ "description": "When `name` is an expression, evaluate it in the scope of this stack frame. If not specified, the expression is evaluated in the global scope. When `variablesReference` is specified, this property has no effect.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
- def __init__(self, name, variablesReference=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ def __init__(self, name, variablesReference=None, frameId=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string name: The name of the Variable's child to obtain data breakpoint information for.
- If variablesReference isn't provided, this can be an expression.
- :param integer variablesReference: Reference to the Variable container if the data breakpoint is requested for a child of the container.
+ :param string name: The name of the variable's child to obtain data breakpoint information for.
+ If `variablesReference` isn't specified, this can be an expression.
+ :param integer variablesReference: Reference to the variable container if the data breakpoint is requested for a child of the container. The `variablesReference` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details.
+ :param integer frameId: When `name` is an expression, evaluate it in the scope of this stack frame. If not specified, the expression is evaluated in the global scope. When `variablesReference` is specified, this property has no effect.
"""
self.name = name
self.variablesReference = variablesReference
+ self.frameId = frameId
if update_ids_from_dap:
self.variablesReference = self._translate_id_from_dap(self.variablesReference)
+ self.frameId = self._translate_id_from_dap(self.frameId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'variablesReference' in dct:
- dct['variablesReference'] = cls._translate_id_from_dap(dct['variablesReference'])
+ if "variablesReference" in dct:
+ dct["variablesReference"] = cls._translate_id_from_dap(dct["variablesReference"])
+ if "frameId" in dct:
+ dct["frameId"] = cls._translate_id_from_dap(dct["frameId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
name = self.name
variablesReference = self.variablesReference
+ frameId = self.frameId
if update_ids_to_dap:
if variablesReference is not None:
variablesReference = self._translate_id_to_dap(variablesReference)
+ if frameId is not None:
+ frameId = self._translate_id_to_dap(frameId)
dct = {
- 'name': name,
+ "name": name,
}
if variablesReference is not None:
- dct['variablesReference'] = variablesReference
+ dct["variablesReference"] = variablesReference
+ if frameId is not None:
+ dct["frameId"] = frameId
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'variablesReference' in dct:
- dct['variablesReference'] = cls._translate_id_to_dap(dct['variablesReference'])
+ if "variablesReference" in dct:
+ dct["variablesReference"] = cls._translate_id_to_dap(dct["variablesReference"])
+ if "frameId" in dct:
+ dct["frameId"] = cls._translate_id_to_dap(dct["frameId"])
return dct
-@register_response('dataBreakpointInfo')
+@register_response("dataBreakpointInfo")
@register
class DataBreakpointInfoResponse(BaseSchema):
"""
- Response to 'dataBreakpointInfo' request.
+ Response to `dataBreakpointInfo` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -5325,99 +4697,79 @@ class DataBreakpointInfoResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
"dataId": {
- "type": [
- "string",
- "null"
- ],
- "description": "An identifier for the data on which a data breakpoint can be registered with the setDataBreakpoints request or null if no data breakpoint is available."
+ "type": ["string", "null"],
+ "description": "An identifier for the data on which a data breakpoint can be registered with the `setDataBreakpoints` request or null if no data breakpoint is available. If a `variablesReference` or `frameId` is passed, the `dataId` is valid in the current suspended state, otherwise it's valid indefinitely. See 'Lifetime of Object References' in the Overview section for details. Breakpoints set using the `dataId` in the `setDataBreakpoints` request may outlive the lifetime of the associated `dataId`.",
},
"description": {
"type": "string",
- "description": "UI string that describes on what data the breakpoint is set on or why a data breakpoint is not available."
+ "description": "UI string that describes on what data the breakpoint is set on or why a data breakpoint is not available.",
},
"accessTypes": {
"type": "array",
- "items": {
- "$ref": "#/definitions/DataBreakpointAccessType"
- },
- "description": "Optional attribute listing the available access types for a potential data breakpoint. A UI frontend could surface this information."
+ "items": {"$ref": "#/definitions/DataBreakpointAccessType"},
+ "description": "Attribute lists the available access types for a potential data breakpoint. A UI client could surface this information.",
},
"canPersist": {
"type": "boolean",
- "description": "Optional attribute indicating that a potential data breakpoint could be persisted across sessions."
- }
+ "description": "Attribute indicates that a potential data breakpoint could be persisted across sessions.",
+ },
},
- "required": [
- "dataId",
- "description"
- ]
- }
+ "required": ["dataId", "description"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param DataBreakpointInfoResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param DataBreakpointInfoResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = DataBreakpointInfoResponseBody()
else:
- self.body = DataBreakpointInfoResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != DataBreakpointInfoResponseBody else body
+ self.body = (
+ DataBreakpointInfoResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != DataBreakpointInfoResponseBody
+ else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -5427,30 +4779,31 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('setDataBreakpoints')
+@register_request("setDataBreakpoints")
@register
class SetDataBreakpointsRequest(BaseSchema):
"""
Replaces all existing data breakpoints with new data breakpoints.
-
+
To clear all data breakpoints, specify an empty array.
-
- When a data breakpoint is hit, a 'stopped' event (with reason 'data breakpoint') is generated.
-
- Clients should only call this request if the capability 'supportsDataBreakpoints' is true.
+
+ When a data breakpoint is hit, a `stopped` event (with reason `data breakpoint`) is generated.
+
+ Clients should only call this request if the corresponding capability `supportsDataBreakpoints` is
+ true.
Note: automatically generated code. Do not edit manually.
"""
@@ -5458,55 +4811,46 @@ class SetDataBreakpointsRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "setDataBreakpoints"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "SetDataBreakpointsArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["setDataBreakpoints"]},
+ "arguments": {"type": "SetDataBreakpointsArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param SetDataBreakpointsArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param SetDataBreakpointsArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'setDataBreakpoints'
+ self.type = "request"
+ self.command = "setDataBreakpoints"
if arguments is None:
self.arguments = SetDataBreakpointsArguments()
else:
- self.arguments = SetDataBreakpointsArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != SetDataBreakpointsArguments else arguments
+ self.arguments = (
+ SetDataBreakpointsArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != SetDataBreakpointsArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -5515,7 +4859,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class SetDataBreakpointsArguments(BaseSchema):
"""
- Arguments for 'setDataBreakpoints' request.
+ Arguments for `setDataBreakpoints` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -5523,15 +4867,13 @@ class SetDataBreakpointsArguments(BaseSchema):
__props__ = {
"breakpoints": {
"type": "array",
- "items": {
- "$ref": "#/definitions/DataBreakpoint"
- },
- "description": "The contents of this array replaces all existing data breakpoints. An empty array clears all data breakpoints."
+ "items": {"$ref": "#/definitions/DataBreakpoint"},
+ "description": "The contents of this array replaces all existing data breakpoints. An empty array clears all data breakpoints.",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -5543,24 +4885,25 @@ def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (u
DataBreakpoint.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
breakpoints = self.breakpoints
if breakpoints and hasattr(breakpoints[0], "to_dict"):
breakpoints = [x.to_dict() for x in breakpoints]
dct = {
- 'breakpoints': [DataBreakpoint.update_dict_ids_to_dap(o) for o in breakpoints] if (update_ids_to_dap and breakpoints) else breakpoints,
+ "breakpoints": [DataBreakpoint.update_dict_ids_to_dap(o) for o in breakpoints]
+ if (update_ids_to_dap and breakpoints)
+ else breakpoints,
}
dct.update(self.kwargs)
return dct
-@register_response('setDataBreakpoints')
+@register_response("setDataBreakpoints")
@register
class SetDataBreakpointsResponse(BaseSchema):
"""
- Response to 'setDataBreakpoints' request.
-
+ Response to `setDataBreakpoints` request.
+
Returned is information about each breakpoint created by this request.
Note: automatically generated code. Do not edit manually.
@@ -5569,83 +4912,67 @@ class SetDataBreakpointsResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
"breakpoints": {
"type": "array",
- "items": {
- "$ref": "#/definitions/Breakpoint"
- },
- "description": "Information about the data breakpoints. The array elements correspond to the elements of the input argument 'breakpoints' array."
+ "items": {"$ref": "#/definitions/Breakpoint"},
+ "description": "Information about the data breakpoints. The array elements correspond to the elements of the input argument `breakpoints` array.",
}
},
- "required": [
- "breakpoints"
- ]
- }
+ "required": ["breakpoints"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param SetDataBreakpointsResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param SetDataBreakpointsResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = SetDataBreakpointsResponseBody()
else:
- self.body = SetDataBreakpointsResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != SetDataBreakpointsResponseBody else body
+ self.body = (
+ SetDataBreakpointsResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != SetDataBreakpointsResponseBody
+ else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -5655,32 +4982,33 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('setInstructionBreakpoints')
+@register_request("setInstructionBreakpoints")
@register
class SetInstructionBreakpointsRequest(BaseSchema):
"""
Replaces all existing instruction breakpoints. Typically, instruction breakpoints would be set from
- a diassembly window.
-
+ a disassembly window.
+
To clear all instruction breakpoints, specify an empty array.
-
- When an instruction breakpoint is hit, a 'stopped' event (with reason 'instruction breakpoint') is
+
+ When an instruction breakpoint is hit, a `stopped` event (with reason `instruction breakpoint`) is
generated.
-
- Clients should only call this request if the capability 'supportsInstructionBreakpoints' is true.
+
+ Clients should only call this request if the corresponding capability
+ `supportsInstructionBreakpoints` is true.
Note: automatically generated code. Do not edit manually.
"""
@@ -5688,55 +5016,46 @@ class SetInstructionBreakpointsRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "setInstructionBreakpoints"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "SetInstructionBreakpointsArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["setInstructionBreakpoints"]},
+ "arguments": {"type": "SetInstructionBreakpointsArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param SetInstructionBreakpointsArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param SetInstructionBreakpointsArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'setInstructionBreakpoints'
+ self.type = "request"
+ self.command = "setInstructionBreakpoints"
if arguments is None:
self.arguments = SetInstructionBreakpointsArguments()
else:
- self.arguments = SetInstructionBreakpointsArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != SetInstructionBreakpointsArguments else arguments
+ self.arguments = (
+ SetInstructionBreakpointsArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != SetInstructionBreakpointsArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -5745,7 +5064,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class SetInstructionBreakpointsArguments(BaseSchema):
"""
- Arguments for 'setInstructionBreakpoints' request
+ Arguments for `setInstructionBreakpoints` request
Note: automatically generated code. Do not edit manually.
"""
@@ -5753,15 +5072,13 @@ class SetInstructionBreakpointsArguments(BaseSchema):
__props__ = {
"breakpoints": {
"type": "array",
- "items": {
- "$ref": "#/definitions/InstructionBreakpoint"
- },
- "description": "The instruction references of the breakpoints"
+ "items": {"$ref": "#/definitions/InstructionBreakpoint"},
+ "description": "The instruction references of the breakpoints",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -5773,23 +5090,24 @@ def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (u
InstructionBreakpoint.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
breakpoints = self.breakpoints
if breakpoints and hasattr(breakpoints[0], "to_dict"):
breakpoints = [x.to_dict() for x in breakpoints]
dct = {
- 'breakpoints': [InstructionBreakpoint.update_dict_ids_to_dap(o) for o in breakpoints] if (update_ids_to_dap and breakpoints) else breakpoints,
+ "breakpoints": [InstructionBreakpoint.update_dict_ids_to_dap(o) for o in breakpoints]
+ if (update_ids_to_dap and breakpoints)
+ else breakpoints,
}
dct.update(self.kwargs)
return dct
-@register_response('setInstructionBreakpoints')
+@register_response("setInstructionBreakpoints")
@register
class SetInstructionBreakpointsResponse(BaseSchema):
"""
- Response to 'setInstructionBreakpoints' request
+ Response to `setInstructionBreakpoints` request
Note: automatically generated code. Do not edit manually.
"""
@@ -5797,83 +5115,67 @@ class SetInstructionBreakpointsResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
"breakpoints": {
"type": "array",
- "items": {
- "$ref": "#/definitions/Breakpoint"
- },
- "description": "Information about the breakpoints. The array elements correspond to the elements of the 'breakpoints' array."
+ "items": {"$ref": "#/definitions/Breakpoint"},
+ "description": "Information about the breakpoints. The array elements correspond to the elements of the `breakpoints` array.",
}
},
- "required": [
- "breakpoints"
- ]
- }
+ "required": ["breakpoints"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param SetInstructionBreakpointsResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param SetInstructionBreakpointsResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = SetInstructionBreakpointsResponseBody()
else:
- self.body = SetInstructionBreakpointsResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != SetInstructionBreakpointsResponseBody else body
+ self.body = (
+ SetInstructionBreakpointsResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != SetInstructionBreakpointsResponseBody
+ else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -5883,27 +5185,27 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('continue')
+@register_request("continue")
@register
class ContinueRequest(BaseSchema):
"""
The request resumes execution of all threads. If the debug adapter supports single thread execution
- (see capability 'supportsSingleThreadExecutionRequests') setting the 'singleThread' argument to true
- resumes only the specified thread. If not all threads were resumed, the 'allThreadsContinued'
- attribute of the response must be set to false.
+ (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to
+ true resumes only the specified thread. If not all threads were resumed, the `allThreadsContinued`
+ attribute of the response should be set to false.
Note: automatically generated code. Do not edit manually.
"""
@@ -5911,55 +5213,46 @@ class ContinueRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "continue"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "ContinueArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["continue"]},
+ "arguments": {"type": "ContinueArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param ContinueArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param ContinueArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'continue'
+ self.type = "request"
+ self.command = "continue"
if arguments is None:
self.arguments = ContinueArguments()
else:
- self.arguments = ContinueArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != ContinueArguments else arguments
+ self.arguments = (
+ ContinueArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != ContinueArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -5968,7 +5261,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class ContinueArguments(BaseSchema):
"""
- Arguments for 'continue' request.
+ Arguments for `continue` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -5976,33 +5269,32 @@ class ContinueArguments(BaseSchema):
__props__ = {
"threadId": {
"type": "integer",
- "description": "Specifies the active thread. If the debug adapter supports single thread execution (see 'supportsSingleThreadExecutionRequests') and the optional argument 'singleThread' is true, only the thread with this ID is resumed."
+ "description": "Specifies the active thread. If the debug adapter supports single thread execution (see `supportsSingleThreadExecutionRequests`) and the argument `singleThread` is True, only the thread with this ID is resumed.",
},
"singleThread": {
"type": "boolean",
- "description": "If this optional flag is true, execution is resumed only for the thread with given 'threadId'."
- }
+ "description": "If this flag is True, execution is resumed only for the thread with given `threadId`.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, threadId, singleThread=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param integer threadId: Specifies the active thread. If the debug adapter supports single thread execution (see 'supportsSingleThreadExecutionRequests') and the optional argument 'singleThread' is true, only the thread with this ID is resumed.
- :param boolean singleThread: If this optional flag is true, execution is resumed only for the thread with given 'threadId'.
+ :param integer threadId: Specifies the active thread. If the debug adapter supports single thread execution (see `supportsSingleThreadExecutionRequests`) and the argument `singleThread` is true, only the thread with this ID is resumed.
+ :param boolean singleThread: If this flag is true, execution is resumed only for the thread with given `threadId`.
"""
self.threadId = threadId
self.singleThread = singleThread
if update_ids_from_dap:
self.threadId = self._translate_id_from_dap(self.threadId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_from_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_from_dap(dct["threadId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -6012,25 +5304,25 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if threadId is not None:
threadId = self._translate_id_to_dap(threadId)
dct = {
- 'threadId': threadId,
+ "threadId": threadId,
}
if singleThread is not None:
- dct['singleThread'] = singleThread
+ dct["singleThread"] = singleThread
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_to_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_to_dap(dct["threadId"])
return dct
-@register_response('continue')
+@register_response("continue")
@register
class ContinueResponse(BaseSchema):
"""
- Response to 'continue' request.
+ Response to `continue` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -6038,77 +5330,63 @@ class ContinueResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
"allThreadsContinued": {
"type": "boolean",
- "description": "The value true (or a missing property) signals to the client that all threads have been resumed. The value false must be returned if not all threads were resumed."
+ "description": "The value True (or a missing property) signals to the client that all threads have been resumed. The value false indicates that not all threads were resumed.",
}
- }
- }
+ },
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param ContinueResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param ContinueResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = ContinueResponseBody()
else:
- self.body = ContinueResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ContinueResponseBody else body
+ self.body = (
+ ContinueResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ContinueResponseBody else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -6118,31 +5396,31 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('next')
+@register_request("next")
@register
class NextRequest(BaseSchema):
"""
The request executes one step (in the given granularity) for the specified thread and allows all
other threads to run freely by resuming them.
-
+
If the debug adapter supports single thread execution (see capability
- 'supportsSingleThreadExecutionRequests') setting the 'singleThread' argument to true prevents other
+ `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true prevents other
suspended threads from resuming.
-
- The debug adapter first sends the response and then a 'stopped' event (with reason 'step') after the
+
+ The debug adapter first sends the response and then a `stopped` event (with reason `step`) after the
step has completed.
Note: automatically generated code. Do not edit manually.
@@ -6151,55 +5429,44 @@ class NextRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "next"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "NextArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["next"]},
+ "arguments": {"type": "NextArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param NextArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param NextArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'next'
+ self.type = "request"
+ self.command = "next"
if arguments is None:
self.arguments = NextArguments()
else:
- self.arguments = NextArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != NextArguments else arguments
+ self.arguments = (
+ NextArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != NextArguments else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -6208,7 +5475,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class NextArguments(BaseSchema):
"""
- Arguments for 'next' request.
+ Arguments for `next` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -6216,26 +5483,23 @@ class NextArguments(BaseSchema):
__props__ = {
"threadId": {
"type": "integer",
- "description": "Specifies the thread for which to resume execution for one step (of the given granularity)."
- },
- "singleThread": {
- "type": "boolean",
- "description": "If this optional flag is true, all other suspended threads are not resumed."
+ "description": "Specifies the thread for which to resume execution for one step (of the given granularity).",
},
+ "singleThread": {"type": "boolean", "description": "If this flag is True, all other suspended threads are not resumed."},
"granularity": {
- "description": "Optional granularity to step. If no granularity is specified, a granularity of 'statement' is assumed.",
- "type": "SteppingGranularity"
- }
+ "description": "Stepping granularity. If no granularity is specified, a granularity of `statement` is assumed.",
+ "type": "SteppingGranularity",
+ },
}
- __refs__ = set(['granularity'])
+ __refs__ = set(["granularity"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, threadId, singleThread=None, granularity=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param integer threadId: Specifies the thread for which to resume execution for one step (of the given granularity).
- :param boolean singleThread: If this optional flag is true, all other suspended threads are not resumed.
- :param SteppingGranularity granularity: Optional granularity to step. If no granularity is specified, a granularity of 'statement' is assumed.
+ :param boolean singleThread: If this flag is true, all other suspended threads are not resumed.
+ :param SteppingGranularity granularity: Stepping granularity. If no granularity is specified, a granularity of `statement` is assumed.
"""
self.threadId = threadId
self.singleThread = singleThread
@@ -6245,12 +5509,11 @@ def __init__(self, threadId, singleThread=None, granularity=None, update_ids_fro
if update_ids_from_dap:
self.threadId = self._translate_id_from_dap(self.threadId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_from_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_from_dap(dct["threadId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -6261,27 +5524,27 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if threadId is not None:
threadId = self._translate_id_to_dap(threadId)
dct = {
- 'threadId': threadId,
+ "threadId": threadId,
}
if singleThread is not None:
- dct['singleThread'] = singleThread
+ dct["singleThread"] = singleThread
if granularity is not None:
- dct['granularity'] = granularity
+ dct["granularity"] = granularity
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_to_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_to_dap(dct["threadId"])
return dct
-@register_response('next')
+@register_response("next")
@register
class NextResponse(BaseSchema):
"""
- Response to 'next' request. This is just an acknowledgement, so no body field is required.
+ Response to `next` request. This is just an acknowledgement, so no body field is required.
Note: automatically generated code. Do not edit manually.
"""
@@ -6289,68 +5552,45 @@ class NextResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Contains request result if success is true and optional error details if success is false."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Contains request result if success is True and error details if success is false.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and optional error details if success is false.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -6359,7 +5599,6 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -6369,41 +5608,41 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_request('stepIn')
+@register_request("stepIn")
@register
class StepInRequest(BaseSchema):
"""
The request resumes the given thread to step into a function/method and allows all other threads to
run freely by resuming them.
-
+
If the debug adapter supports single thread execution (see capability
- 'supportsSingleThreadExecutionRequests') setting the 'singleThread' argument to true prevents other
+ `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true prevents other
suspended threads from resuming.
-
- If the request cannot step into a target, 'stepIn' behaves like the 'next' request.
-
- The debug adapter first sends the response and then a 'stopped' event (with reason 'step') after the
+
+ If the request cannot step into a target, `stepIn` behaves like the `next` request.
+
+ The debug adapter first sends the response and then a `stopped` event (with reason `step`) after the
step has completed.
-
+
If there are multiple function/method calls (or other targets) on the source line,
-
- the optional argument 'targetId' can be used to control into which target the 'stepIn' should occur.
-
- The list of possible targets for a given source line can be retrieved via the 'stepInTargets'
+
+ the argument `targetId` can be used to control into which target the `stepIn` should occur.
+
+ The list of possible targets for a given source line can be retrieved via the `stepInTargets`
request.
Note: automatically generated code. Do not edit manually.
@@ -6412,55 +5651,46 @@ class StepInRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "stepIn"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "StepInArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["stepIn"]},
+ "arguments": {"type": "StepInArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param StepInArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param StepInArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'stepIn'
+ self.type = "request"
+ self.command = "stepIn"
if arguments is None:
self.arguments = StepInArguments()
else:
- self.arguments = StepInArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != StepInArguments else arguments
+ self.arguments = (
+ StepInArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != StepInArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -6469,7 +5699,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class StepInArguments(BaseSchema):
"""
- Arguments for 'stepIn' request.
+ Arguments for `stepIn` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -6477,31 +5707,25 @@ class StepInArguments(BaseSchema):
__props__ = {
"threadId": {
"type": "integer",
- "description": "Specifies the thread for which to resume execution for one step-into (of the given granularity)."
- },
- "singleThread": {
- "type": "boolean",
- "description": "If this optional flag is true, all other suspended threads are not resumed."
- },
- "targetId": {
- "type": "integer",
- "description": "Optional id of the target to step into."
+ "description": "Specifies the thread for which to resume execution for one step-into (of the given granularity).",
},
+ "singleThread": {"type": "boolean", "description": "If this flag is True, all other suspended threads are not resumed."},
+ "targetId": {"type": "integer", "description": "Id of the target to step into."},
"granularity": {
- "description": "Optional granularity to step. If no granularity is specified, a granularity of 'statement' is assumed.",
- "type": "SteppingGranularity"
- }
+ "description": "Stepping granularity. If no granularity is specified, a granularity of `statement` is assumed.",
+ "type": "SteppingGranularity",
+ },
}
- __refs__ = set(['granularity'])
+ __refs__ = set(["granularity"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, threadId, singleThread=None, targetId=None, granularity=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param integer threadId: Specifies the thread for which to resume execution for one step-into (of the given granularity).
- :param boolean singleThread: If this optional flag is true, all other suspended threads are not resumed.
- :param integer targetId: Optional id of the target to step into.
- :param SteppingGranularity granularity: Optional granularity to step. If no granularity is specified, a granularity of 'statement' is assumed.
+ :param boolean singleThread: If this flag is true, all other suspended threads are not resumed.
+ :param integer targetId: Id of the target to step into.
+ :param SteppingGranularity granularity: Stepping granularity. If no granularity is specified, a granularity of `statement` is assumed.
"""
self.threadId = threadId
self.singleThread = singleThread
@@ -6512,12 +5736,11 @@ def __init__(self, threadId, singleThread=None, targetId=None, granularity=None,
if update_ids_from_dap:
self.threadId = self._translate_id_from_dap(self.threadId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_from_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_from_dap(dct["threadId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -6529,29 +5752,29 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if threadId is not None:
threadId = self._translate_id_to_dap(threadId)
dct = {
- 'threadId': threadId,
+ "threadId": threadId,
}
if singleThread is not None:
- dct['singleThread'] = singleThread
+ dct["singleThread"] = singleThread
if targetId is not None:
- dct['targetId'] = targetId
+ dct["targetId"] = targetId
if granularity is not None:
- dct['granularity'] = granularity
+ dct["granularity"] = granularity
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_to_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_to_dap(dct["threadId"])
return dct
-@register_response('stepIn')
+@register_response("stepIn")
@register
class StepInResponse(BaseSchema):
"""
- Response to 'stepIn' request. This is just an acknowledgement, so no body field is required.
+ Response to `stepIn` request. This is just an acknowledgement, so no body field is required.
Note: automatically generated code. Do not edit manually.
"""
@@ -6559,68 +5782,45 @@ class StepInResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Contains request result if success is true and optional error details if success is false."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Contains request result if success is True and error details if success is false.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and optional error details if success is false.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -6629,7 +5829,6 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -6639,32 +5838,32 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_request('stepOut')
+@register_request("stepOut")
@register
class StepOutRequest(BaseSchema):
"""
The request resumes the given thread to step out (return) from a function/method and allows all
other threads to run freely by resuming them.
-
+
If the debug adapter supports single thread execution (see capability
- 'supportsSingleThreadExecutionRequests') setting the 'singleThread' argument to true prevents other
+ `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true prevents other
suspended threads from resuming.
-
- The debug adapter first sends the response and then a 'stopped' event (with reason 'step') after the
+
+ The debug adapter first sends the response and then a `stopped` event (with reason `step`) after the
step has completed.
Note: automatically generated code. Do not edit manually.
@@ -6673,55 +5872,46 @@ class StepOutRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "command": {
- "type": "string",
- "enum": [
- "stepOut"
- ]
- },
- "arguments": {
- "type": "StepOutArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["stepOut"]},
+ "arguments": {"type": "StepOutArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param StepOutArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param StepOutArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'stepOut'
+ self.type = "request"
+ self.command = "stepOut"
if arguments is None:
self.arguments = StepOutArguments()
else:
- self.arguments = StepOutArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != StepOutArguments else arguments
+ self.arguments = (
+ StepOutArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != StepOutArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -6730,7 +5920,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class StepOutArguments(BaseSchema):
"""
- Arguments for 'stepOut' request.
+ Arguments for `stepOut` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -6738,26 +5928,23 @@ class StepOutArguments(BaseSchema):
__props__ = {
"threadId": {
"type": "integer",
- "description": "Specifies the thread for which to resume execution for one step-out (of the given granularity)."
- },
- "singleThread": {
- "type": "boolean",
- "description": "If this optional flag is true, all other suspended threads are not resumed."
+ "description": "Specifies the thread for which to resume execution for one step-out (of the given granularity).",
},
+ "singleThread": {"type": "boolean", "description": "If this flag is True, all other suspended threads are not resumed."},
"granularity": {
- "description": "Optional granularity to step. If no granularity is specified, a granularity of 'statement' is assumed.",
- "type": "SteppingGranularity"
- }
+ "description": "Stepping granularity. If no granularity is specified, a granularity of `statement` is assumed.",
+ "type": "SteppingGranularity",
+ },
}
- __refs__ = set(['granularity'])
+ __refs__ = set(["granularity"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, threadId, singleThread=None, granularity=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param integer threadId: Specifies the thread for which to resume execution for one step-out (of the given granularity).
- :param boolean singleThread: If this optional flag is true, all other suspended threads are not resumed.
- :param SteppingGranularity granularity: Optional granularity to step. If no granularity is specified, a granularity of 'statement' is assumed.
+ :param boolean singleThread: If this flag is true, all other suspended threads are not resumed.
+ :param SteppingGranularity granularity: Stepping granularity. If no granularity is specified, a granularity of `statement` is assumed.
"""
self.threadId = threadId
self.singleThread = singleThread
@@ -6767,12 +5954,11 @@ def __init__(self, threadId, singleThread=None, granularity=None, update_ids_fro
if update_ids_from_dap:
self.threadId = self._translate_id_from_dap(self.threadId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_from_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_from_dap(dct["threadId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -6783,27 +5969,27 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if threadId is not None:
threadId = self._translate_id_to_dap(threadId)
dct = {
- 'threadId': threadId,
+ "threadId": threadId,
}
if singleThread is not None:
- dct['singleThread'] = singleThread
+ dct["singleThread"] = singleThread
if granularity is not None:
- dct['granularity'] = granularity
+ dct["granularity"] = granularity
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_to_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_to_dap(dct["threadId"])
return dct
-@register_response('stepOut')
+@register_response("stepOut")
@register
class StepOutResponse(BaseSchema):
"""
- Response to 'stepOut' request. This is just an acknowledgement, so no body field is required.
+ Response to `stepOut` request. This is just an acknowledgement, so no body field is required.
Note: automatically generated code. Do not edit manually.
"""
@@ -6811,68 +5997,45 @@ class StepOutResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Contains request result if success is true and optional error details if success is false."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Contains request result if success is True and error details if success is false.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and optional error details if success is false.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -6881,7 +6044,6 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -6891,35 +6053,35 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_request('stepBack')
+@register_request("stepBack")
@register
class StepBackRequest(BaseSchema):
"""
The request executes one backward step (in the given granularity) for the specified thread and
allows all other threads to run backward freely by resuming them.
-
+
If the debug adapter supports single thread execution (see capability
- 'supportsSingleThreadExecutionRequests') setting the 'singleThread' argument to true prevents other
+ `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true prevents other
suspended threads from resuming.
-
- The debug adapter first sends the response and then a 'stopped' event (with reason 'step') after the
+
+ The debug adapter first sends the response and then a `stopped` event (with reason `step`) after the
step has completed.
-
- Clients should only call this request if the capability 'supportsStepBack' is true.
+
+ Clients should only call this request if the corresponding capability `supportsStepBack` is true.
Note: automatically generated code. Do not edit manually.
"""
@@ -6927,55 +6089,46 @@ class StepBackRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "stepBack"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "StepBackArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["stepBack"]},
+ "arguments": {"type": "StepBackArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param StepBackArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param StepBackArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'stepBack'
+ self.type = "request"
+ self.command = "stepBack"
if arguments is None:
self.arguments = StepBackArguments()
else:
- self.arguments = StepBackArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != StepBackArguments else arguments
+ self.arguments = (
+ StepBackArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != StepBackArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -6984,7 +6137,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class StepBackArguments(BaseSchema):
"""
- Arguments for 'stepBack' request.
+ Arguments for `stepBack` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -6992,26 +6145,23 @@ class StepBackArguments(BaseSchema):
__props__ = {
"threadId": {
"type": "integer",
- "description": "Specifies the thread for which to resume execution for one step backwards (of the given granularity)."
- },
- "singleThread": {
- "type": "boolean",
- "description": "If this optional flag is true, all other suspended threads are not resumed."
+ "description": "Specifies the thread for which to resume execution for one step backwards (of the given granularity).",
},
+ "singleThread": {"type": "boolean", "description": "If this flag is True, all other suspended threads are not resumed."},
"granularity": {
- "description": "Optional granularity to step. If no granularity is specified, a granularity of 'statement' is assumed.",
- "type": "SteppingGranularity"
- }
+ "description": "Stepping granularity to step. If no granularity is specified, a granularity of `statement` is assumed.",
+ "type": "SteppingGranularity",
+ },
}
- __refs__ = set(['granularity'])
+ __refs__ = set(["granularity"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, threadId, singleThread=None, granularity=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param integer threadId: Specifies the thread for which to resume execution for one step backwards (of the given granularity).
- :param boolean singleThread: If this optional flag is true, all other suspended threads are not resumed.
- :param SteppingGranularity granularity: Optional granularity to step. If no granularity is specified, a granularity of 'statement' is assumed.
+ :param boolean singleThread: If this flag is true, all other suspended threads are not resumed.
+ :param SteppingGranularity granularity: Stepping granularity to step. If no granularity is specified, a granularity of `statement` is assumed.
"""
self.threadId = threadId
self.singleThread = singleThread
@@ -7021,12 +6171,11 @@ def __init__(self, threadId, singleThread=None, granularity=None, update_ids_fro
if update_ids_from_dap:
self.threadId = self._translate_id_from_dap(self.threadId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_from_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_from_dap(dct["threadId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -7037,27 +6186,27 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if threadId is not None:
threadId = self._translate_id_to_dap(threadId)
dct = {
- 'threadId': threadId,
+ "threadId": threadId,
}
if singleThread is not None:
- dct['singleThread'] = singleThread
+ dct["singleThread"] = singleThread
if granularity is not None:
- dct['granularity'] = granularity
+ dct["granularity"] = granularity
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_to_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_to_dap(dct["threadId"])
return dct
-@register_response('stepBack')
+@register_response("stepBack")
@register
class StepBackResponse(BaseSchema):
"""
- Response to 'stepBack' request. This is just an acknowledgement, so no body field is required.
+ Response to `stepBack` request. This is just an acknowledgement, so no body field is required.
Note: automatically generated code. Do not edit manually.
"""
@@ -7065,68 +6214,45 @@ class StepBackResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Contains request result if success is true and optional error details if success is false."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Contains request result if success is True and error details if success is false.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and optional error details if success is false.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -7135,7 +6261,6 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -7145,30 +6270,30 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_request('reverseContinue')
+@register_request("reverseContinue")
@register
class ReverseContinueRequest(BaseSchema):
"""
The request resumes backward execution of all threads. If the debug adapter supports single thread
- execution (see capability 'supportsSingleThreadExecutionRequests') setting the 'singleThread'
+ execution (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread`
argument to true resumes only the specified thread. If not all threads were resumed, the
- 'allThreadsContinued' attribute of the response must be set to false.
-
- Clients should only call this request if the capability 'supportsStepBack' is true.
+ `allThreadsContinued` attribute of the response should be set to false.
+
+ Clients should only call this request if the corresponding capability `supportsStepBack` is true.
Note: automatically generated code. Do not edit manually.
"""
@@ -7176,55 +6301,46 @@ class ReverseContinueRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "command": {
- "type": "string",
- "enum": [
- "reverseContinue"
- ]
- },
- "arguments": {
- "type": "ReverseContinueArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["reverseContinue"]},
+ "arguments": {"type": "ReverseContinueArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param ReverseContinueArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param ReverseContinueArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'reverseContinue'
+ self.type = "request"
+ self.command = "reverseContinue"
if arguments is None:
self.arguments = ReverseContinueArguments()
else:
- self.arguments = ReverseContinueArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != ReverseContinueArguments else arguments
+ self.arguments = (
+ ReverseContinueArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != ReverseContinueArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -7233,7 +6349,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class ReverseContinueArguments(BaseSchema):
"""
- Arguments for 'reverseContinue' request.
+ Arguments for `reverseContinue` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -7241,33 +6357,32 @@ class ReverseContinueArguments(BaseSchema):
__props__ = {
"threadId": {
"type": "integer",
- "description": "Specifies the active thread. If the debug adapter supports single thread execution (see 'supportsSingleThreadExecutionRequests') and the optional argument 'singleThread' is true, only the thread with this ID is resumed."
+ "description": "Specifies the active thread. If the debug adapter supports single thread execution (see `supportsSingleThreadExecutionRequests`) and the `singleThread` argument is True, only the thread with this ID is resumed.",
},
"singleThread": {
"type": "boolean",
- "description": "If this optional flag is true, backward execution is resumed only for the thread with given 'threadId'."
- }
+ "description": "If this flag is True, backward execution is resumed only for the thread with given `threadId`.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, threadId, singleThread=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param integer threadId: Specifies the active thread. If the debug adapter supports single thread execution (see 'supportsSingleThreadExecutionRequests') and the optional argument 'singleThread' is true, only the thread with this ID is resumed.
- :param boolean singleThread: If this optional flag is true, backward execution is resumed only for the thread with given 'threadId'.
+ :param integer threadId: Specifies the active thread. If the debug adapter supports single thread execution (see `supportsSingleThreadExecutionRequests`) and the `singleThread` argument is true, only the thread with this ID is resumed.
+ :param boolean singleThread: If this flag is true, backward execution is resumed only for the thread with given `threadId`.
"""
self.threadId = threadId
self.singleThread = singleThread
if update_ids_from_dap:
self.threadId = self._translate_id_from_dap(self.threadId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_from_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_from_dap(dct["threadId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -7277,25 +6392,25 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if threadId is not None:
threadId = self._translate_id_to_dap(threadId)
dct = {
- 'threadId': threadId,
+ "threadId": threadId,
}
if singleThread is not None:
- dct['singleThread'] = singleThread
+ dct["singleThread"] = singleThread
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_to_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_to_dap(dct["threadId"])
return dct
-@register_response('reverseContinue')
+@register_response("reverseContinue")
@register
class ReverseContinueResponse(BaseSchema):
"""
- Response to 'reverseContinue' request. This is just an acknowledgement, so no body field is
+ Response to `reverseContinue` request. This is just an acknowledgement, so no body field is
required.
Note: automatically generated code. Do not edit manually.
@@ -7304,68 +6419,45 @@ class ReverseContinueResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Contains request result if success is true and optional error details if success is false."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Contains request result if success is True and error details if success is false.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and optional error details if success is false.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -7374,7 +6466,6 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -7384,30 +6475,31 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_request('restartFrame')
+@register_request("restartFrame")
@register
class RestartFrameRequest(BaseSchema):
"""
- The request restarts execution of the specified stackframe.
-
- The debug adapter first sends the response and then a 'stopped' event (with reason 'restart') after
+ The request restarts execution of the specified stack frame.
+
+ The debug adapter first sends the response and then a `stopped` event (with reason `restart`) after
the restart has completed.
-
- Clients should only call this request if the capability 'supportsRestartFrame' is true.
+
+ Clients should only call this request if the corresponding capability `supportsRestartFrame` is
+ true.
Note: automatically generated code. Do not edit manually.
"""
@@ -7415,55 +6507,46 @@ class RestartFrameRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "restartFrame"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "RestartFrameArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["restartFrame"]},
+ "arguments": {"type": "RestartFrameArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param RestartFrameArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param RestartFrameArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'restartFrame'
+ self.type = "request"
+ self.command = "restartFrame"
if arguments is None:
self.arguments = RestartFrameArguments()
else:
- self.arguments = RestartFrameArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != RestartFrameArguments else arguments
+ self.arguments = (
+ RestartFrameArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != RestartFrameArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -7472,7 +6555,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class RestartFrameArguments(BaseSchema):
"""
- Arguments for 'restartFrame' request.
+ Arguments for `restartFrame` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -7480,27 +6563,26 @@ class RestartFrameArguments(BaseSchema):
__props__ = {
"frameId": {
"type": "integer",
- "description": "Restart this stackframe."
+ "description": "Restart the stack frame identified by `frameId`. The `frameId` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details.",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, frameId, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param integer frameId: Restart this stackframe.
+ :param integer frameId: Restart the stack frame identified by `frameId`. The `frameId` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details.
"""
self.frameId = frameId
if update_ids_from_dap:
self.frameId = self._translate_id_from_dap(self.frameId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'frameId' in dct:
- dct['frameId'] = cls._translate_id_from_dap(dct['frameId'])
+ if "frameId" in dct:
+ dct["frameId"] = cls._translate_id_from_dap(dct["frameId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -7509,23 +6591,23 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if frameId is not None:
frameId = self._translate_id_to_dap(frameId)
dct = {
- 'frameId': frameId,
+ "frameId": frameId,
}
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'frameId' in dct:
- dct['frameId'] = cls._translate_id_to_dap(dct['frameId'])
+ if "frameId" in dct:
+ dct["frameId"] = cls._translate_id_to_dap(dct["frameId"])
return dct
-@register_response('restartFrame')
+@register_response("restartFrame")
@register
class RestartFrameResponse(BaseSchema):
"""
- Response to 'restartFrame' request. This is just an acknowledgement, so no body field is required.
+ Response to `restartFrame` request. This is just an acknowledgement, so no body field is required.
Note: automatically generated code. Do not edit manually.
"""
@@ -7533,68 +6615,45 @@ class RestartFrameResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Contains request result if success is true and optional error details if success is false."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Contains request result if success is True and error details if success is false.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and optional error details if success is false.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -7603,7 +6662,6 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -7613,34 +6671,34 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_request('goto')
+@register_request("goto")
@register
class GotoRequest(BaseSchema):
"""
The request sets the location where the debuggee will continue to run.
-
- This makes it possible to skip the execution of code or to executed code again.
-
+
+ This makes it possible to skip the execution of code or to execute code again.
+
The code between the current location and the goto target is not executed but skipped.
-
- The debug adapter first sends the response and then a 'stopped' event with reason 'goto'.
-
- Clients should only call this request if the capability 'supportsGotoTargetsRequest' is true
- (because only then goto targets exist that can be passed as arguments).
+
+ The debug adapter first sends the response and then a `stopped` event with reason `goto`.
+
+ Clients should only call this request if the corresponding capability `supportsGotoTargetsRequest`
+ is true (because only then goto targets exist that can be passed as arguments).
Note: automatically generated code. Do not edit manually.
"""
@@ -7648,55 +6706,44 @@ class GotoRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "goto"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "GotoArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["goto"]},
+ "arguments": {"type": "GotoArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param GotoArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param GotoArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'goto'
+ self.type = "request"
+ self.command = "goto"
if arguments is None:
self.arguments = GotoArguments()
else:
- self.arguments = GotoArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != GotoArguments else arguments
+ self.arguments = (
+ GotoArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != GotoArguments else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -7705,24 +6752,18 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class GotoArguments(BaseSchema):
"""
- Arguments for 'goto' request.
+ Arguments for `goto` request.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
- "threadId": {
- "type": "integer",
- "description": "Set the goto target for this thread."
- },
- "targetId": {
- "type": "integer",
- "description": "The location where the debuggee will continue to run."
- }
+ "threadId": {"type": "integer", "description": "Set the goto target for this thread."},
+ "targetId": {"type": "integer", "description": "The location where the debuggee will continue to run."},
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, threadId, targetId, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -7734,12 +6775,11 @@ def __init__(self, threadId, targetId, update_ids_from_dap=False, **kwargs): #
if update_ids_from_dap:
self.threadId = self._translate_id_from_dap(self.threadId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_from_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_from_dap(dct["threadId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -7749,24 +6789,24 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if threadId is not None:
threadId = self._translate_id_to_dap(threadId)
dct = {
- 'threadId': threadId,
- 'targetId': targetId,
+ "threadId": threadId,
+ "targetId": targetId,
}
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_to_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_to_dap(dct["threadId"])
return dct
-@register_response('goto')
+@register_response("goto")
@register
class GotoResponse(BaseSchema):
"""
- Response to 'goto' request. This is just an acknowledgement, so no body field is required.
+ Response to `goto` request. This is just an acknowledgement, so no body field is required.
Note: automatically generated code. Do not edit manually.
"""
@@ -7774,68 +6814,45 @@ class GotoResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Contains request result if success is true and optional error details if success is false."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Contains request result if success is True and error details if success is false.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and optional error details if success is false.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -7844,7 +6861,6 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -7854,27 +6870,27 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_request('pause')
+@register_request("pause")
@register
class PauseRequest(BaseSchema):
"""
The request suspends the debuggee.
-
- The debug adapter first sends the response and then a 'stopped' event (with reason 'pause') after
+
+ The debug adapter first sends the response and then a `stopped` event (with reason `pause`) after
the thread has been paused successfully.
Note: automatically generated code. Do not edit manually.
@@ -7883,55 +6899,44 @@ class PauseRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "pause"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "PauseArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["pause"]},
+ "arguments": {"type": "PauseArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param PauseArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param PauseArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'pause'
+ self.type = "request"
+ self.command = "pause"
if arguments is None:
self.arguments = PauseArguments()
else:
- self.arguments = PauseArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != PauseArguments else arguments
+ self.arguments = (
+ PauseArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != PauseArguments else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -7940,20 +6945,15 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class PauseArguments(BaseSchema):
"""
- Arguments for 'pause' request.
+ Arguments for `pause` request.
Note: automatically generated code. Do not edit manually.
"""
- __props__ = {
- "threadId": {
- "type": "integer",
- "description": "Pause execution for this thread."
- }
- }
+ __props__ = {"threadId": {"type": "integer", "description": "Pause execution for this thread."}}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, threadId, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -7963,12 +6963,11 @@ def __init__(self, threadId, update_ids_from_dap=False, **kwargs): # noqa (upda
if update_ids_from_dap:
self.threadId = self._translate_id_from_dap(self.threadId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_from_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_from_dap(dct["threadId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -7977,23 +6976,23 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if threadId is not None:
threadId = self._translate_id_to_dap(threadId)
dct = {
- 'threadId': threadId,
+ "threadId": threadId,
}
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_to_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_to_dap(dct["threadId"])
return dct
-@register_response('pause')
+@register_response("pause")
@register
class PauseResponse(BaseSchema):
"""
- Response to 'pause' request. This is just an acknowledgement, so no body field is required.
+ Response to `pause` request. This is just an acknowledgement, so no body field is required.
Note: automatically generated code. Do not edit manually.
"""
@@ -8001,68 +7000,45 @@ class PauseResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
+ },
+ "body": {
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Contains request result if success is True and error details if success is false.",
},
- "body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Contains request result if success is true and optional error details if success is false."
- }
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and optional error details if success is false.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -8071,7 +7047,6 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -8081,33 +7056,33 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_request('stackTrace')
+@register_request("stackTrace")
@register
class StackTraceRequest(BaseSchema):
"""
The request returns a stacktrace from the current execution state of a given thread.
-
+
A client can request all stack frames by omitting the startFrame and levels arguments. For
- performance conscious clients and if the debug adapter's 'supportsDelayedStackTraceLoading'
- capability is true, stack frames can be retrieved in a piecemeal way with the startFrame and levels
- arguments. The response of the stackTrace request may contain a totalFrames property that hints at
- the total number of frames in the stack. If a client needs this total number upfront, it can issue a
- request for a single (first) frame and depending on the value of totalFrames decide how to proceed.
- In any case a client should be prepared to receive less frames than requested, which is an
+ performance-conscious clients and if the corresponding capability `supportsDelayedStackTraceLoading`
+ is true, stack frames can be retrieved in a piecemeal way with the `startFrame` and `levels`
+ arguments. The response of the `stackTrace` request may contain a `totalFrames` property that hints
+ at the total number of frames in the stack. If a client needs this total number upfront, it can
+ issue a request for a single (first) frame and depending on the value of `totalFrames` decide how to
+ proceed. In any case a client should be prepared to receive fewer frames than requested, which is an
indication that the end of the stack has been reached.
Note: automatically generated code. Do not edit manually.
@@ -8116,55 +7091,46 @@ class StackTraceRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "stackTrace"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "StackTraceArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["stackTrace"]},
+ "arguments": {"type": "StackTraceArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param StackTraceArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param StackTraceArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'stackTrace'
+ self.type = "request"
+ self.command = "stackTrace"
if arguments is None:
self.arguments = StackTraceArguments()
else:
- self.arguments = StackTraceArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != StackTraceArguments else arguments
+ self.arguments = (
+ StackTraceArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != StackTraceArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -8173,32 +7139,26 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class StackTraceArguments(BaseSchema):
"""
- Arguments for 'stackTrace' request.
+ Arguments for `stackTrace` request.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
- "threadId": {
- "type": "integer",
- "description": "Retrieve the stacktrace for this thread."
- },
- "startFrame": {
- "type": "integer",
- "description": "The index of the first frame to return; if omitted frames start at 0."
- },
+ "threadId": {"type": "integer", "description": "Retrieve the stacktrace for this thread."},
+ "startFrame": {"type": "integer", "description": "The index of the first frame to return; if omitted frames start at 0."},
"levels": {
"type": "integer",
- "description": "The maximum number of frames to return. If levels is not specified or 0, all frames are returned."
+ "description": "The maximum number of frames to return. If levels is not specified or 0, all frames are returned.",
},
"format": {
- "description": "Specifies details on how to format the stack frames.\nThe attribute is only honored by a debug adapter if the capability 'supportsValueFormattingOptions' is true.",
- "type": "StackFrameFormat"
- }
+ "description": "Specifies details on how to format the stack frames.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsValueFormattingOptions` is True.",
+ "type": "StackFrameFormat",
+ },
}
- __refs__ = set(['format'])
+ __refs__ = set(["format"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, threadId, startFrame=None, levels=None, format=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -8206,7 +7166,7 @@ def __init__(self, threadId, startFrame=None, levels=None, format=None, update_i
:param integer startFrame: The index of the first frame to return; if omitted frames start at 0.
:param integer levels: The maximum number of frames to return. If levels is not specified or 0, all frames are returned.
:param StackFrameFormat format: Specifies details on how to format the stack frames.
- The attribute is only honored by a debug adapter if the capability 'supportsValueFormattingOptions' is true.
+ The attribute is only honored by a debug adapter if the corresponding capability `supportsValueFormattingOptions` is true.
"""
self.threadId = threadId
self.startFrame = startFrame
@@ -8214,16 +7174,17 @@ def __init__(self, threadId, startFrame=None, levels=None, format=None, update_i
if format is None:
self.format = StackFrameFormat()
else:
- self.format = StackFrameFormat(update_ids_from_dap=update_ids_from_dap, **format) if format.__class__ != StackFrameFormat else format
+ self.format = (
+ StackFrameFormat(update_ids_from_dap=update_ids_from_dap, **format) if format.__class__ != StackFrameFormat else format
+ )
if update_ids_from_dap:
self.threadId = self._translate_id_from_dap(self.threadId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_from_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_from_dap(dct["threadId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -8235,29 +7196,29 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if threadId is not None:
threadId = self._translate_id_to_dap(threadId)
dct = {
- 'threadId': threadId,
+ "threadId": threadId,
}
if startFrame is not None:
- dct['startFrame'] = startFrame
+ dct["startFrame"] = startFrame
if levels is not None:
- dct['levels'] = levels
+ dct["levels"] = levels
if format is not None:
- dct['format'] = format.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["format"] = format.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_to_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_to_dap(dct["threadId"])
return dct
-@register_response('stackTrace')
+@register_response("stackTrace")
@register
class StackTraceResponse(BaseSchema):
"""
- Response to 'stackTrace' request.
+ Response to `stackTrace` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -8265,87 +7226,71 @@ class StackTraceResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
"stackFrames": {
"type": "array",
- "items": {
- "$ref": "#/definitions/StackFrame"
- },
- "description": "The frames of the stackframe. If the array has length zero, there are no stackframes available.\nThis means that there is no location information available."
+ "items": {"$ref": "#/definitions/StackFrame"},
+ "description": "The frames of the stack frame. If the array has length zero, there are no stack frames available.\nThis means that there is no location information available.",
},
"totalFrames": {
"type": "integer",
- "description": "The total number of frames available in the stack. If omitted or if totalFrames is larger than the available frames, a client is expected to request frames until a request returns less frames than requested (which indicates the end of the stack). Returning monotonically increasing totalFrames values for subsequent requests can be used to enforce paging in the client."
- }
+ "description": "The total number of frames available in the stack. If omitted or if `totalFrames` is larger than the available frames, a client is expected to request frames until a request returns less frames than requested (which indicates the end of the stack). Returning monotonically increasing `totalFrames` values for subsequent requests can be used to enforce paging in the client.",
+ },
},
- "required": [
- "stackFrames"
- ]
- }
+ "required": ["stackFrames"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param StackTraceResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param StackTraceResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = StackTraceResponseBody()
else:
- self.body = StackTraceResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != StackTraceResponseBody else body
+ self.body = (
+ StackTraceResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != StackTraceResponseBody
+ else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -8355,24 +7300,24 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('scopes')
+@register_request("scopes")
@register
class ScopesRequest(BaseSchema):
"""
- The request returns the variable scopes for a given stackframe ID.
+ The request returns the variable scopes for a given stack frame ID.
Note: automatically generated code. Do not edit manually.
"""
@@ -8380,55 +7325,46 @@ class ScopesRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "command": {
- "type": "string",
- "enum": [
- "scopes"
- ]
- },
- "arguments": {
- "type": "ScopesArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["scopes"]},
+ "arguments": {"type": "ScopesArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param ScopesArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param ScopesArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'scopes'
+ self.type = "request"
+ self.command = "scopes"
if arguments is None:
self.arguments = ScopesArguments()
else:
- self.arguments = ScopesArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != ScopesArguments else arguments
+ self.arguments = (
+ ScopesArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != ScopesArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -8437,7 +7373,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class ScopesArguments(BaseSchema):
"""
- Arguments for 'scopes' request.
+ Arguments for `scopes` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -8445,27 +7381,26 @@ class ScopesArguments(BaseSchema):
__props__ = {
"frameId": {
"type": "integer",
- "description": "Retrieve the scopes for this stackframe."
+ "description": "Retrieve the scopes for the stack frame identified by `frameId`. The `frameId` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details.",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, frameId, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param integer frameId: Retrieve the scopes for this stackframe.
+ :param integer frameId: Retrieve the scopes for the stack frame identified by `frameId`. The `frameId` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details.
"""
self.frameId = frameId
if update_ids_from_dap:
self.frameId = self._translate_id_from_dap(self.frameId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'frameId' in dct:
- dct['frameId'] = cls._translate_id_from_dap(dct['frameId'])
+ if "frameId" in dct:
+ dct["frameId"] = cls._translate_id_from_dap(dct["frameId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -8474,23 +7409,23 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if frameId is not None:
frameId = self._translate_id_to_dap(frameId)
dct = {
- 'frameId': frameId,
+ "frameId": frameId,
}
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'frameId' in dct:
- dct['frameId'] = cls._translate_id_to_dap(dct['frameId'])
+ if "frameId" in dct:
+ dct["frameId"] = cls._translate_id_to_dap(dct["frameId"])
return dct
-@register_response('scopes')
+@register_response("scopes")
@register
class ScopesResponse(BaseSchema):
"""
- Response to 'scopes' request.
+ Response to `scopes` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -8498,83 +7433,65 @@ class ScopesResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
"scopes": {
"type": "array",
- "items": {
- "$ref": "#/definitions/Scope"
- },
- "description": "The scopes of the stackframe. If the array has length zero, there are no scopes available."
+ "items": {"$ref": "#/definitions/Scope"},
+ "description": "The scopes of the stack frame. If the array has length zero, there are no scopes available.",
}
},
- "required": [
- "scopes"
- ]
- }
+ "required": ["scopes"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param ScopesResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param ScopesResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = ScopesResponseBody()
else:
- self.body = ScopesResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ScopesResponseBody else body
+ self.body = (
+ ScopesResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ScopesResponseBody else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -8584,26 +7501,26 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('variables')
+@register_request("variables")
@register
class VariablesRequest(BaseSchema):
"""
Retrieves all child variables for the given variable reference.
-
- An optional filter can be used to limit the fetched children to either named or indexed children.
+
+ A filter can be used to limit the fetched children to either named or indexed children.
Note: automatically generated code. Do not edit manually.
"""
@@ -8611,55 +7528,46 @@ class VariablesRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "variables"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "VariablesArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["variables"]},
+ "arguments": {"type": "VariablesArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param VariablesArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param VariablesArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'variables'
+ self.type = "request"
+ self.command = "variables"
if arguments is None:
self.arguments = VariablesArguments()
else:
- self.arguments = VariablesArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != VariablesArguments else arguments
+ self.arguments = (
+ VariablesArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != VariablesArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -8668,7 +7576,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class VariablesArguments(BaseSchema):
"""
- Arguments for 'variables' request.
+ Arguments for `variables` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -8676,41 +7584,40 @@ class VariablesArguments(BaseSchema):
__props__ = {
"variablesReference": {
"type": "integer",
- "description": "The Variable reference."
+ "description": "The variable for which to retrieve its children. The `variablesReference` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details.",
},
"filter": {
"type": "string",
- "enum": [
- "indexed",
- "named"
- ],
- "description": "Optional filter to limit the child variables to either named or indexed. If omitted, both types are fetched."
+ "enum": ["indexed", "named"],
+ "description": "Filter to limit the child variables to either named or indexed. If omitted, both types are fetched.",
},
"start": {
"type": "integer",
- "description": "The index of the first variable to return; if omitted children start at 0."
+ "description": "The index of the first variable to return; if omitted children start at 0.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsVariablePaging` is True.",
},
"count": {
"type": "integer",
- "description": "The number of variables to return. If count is missing or 0, all variables are returned."
+ "description": "The number of variables to return. If count is missing or 0, all variables are returned.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsVariablePaging` is True.",
},
"format": {
- "description": "Specifies details on how to format the Variable values.\nThe attribute is only honored by a debug adapter if the capability 'supportsValueFormattingOptions' is true.",
- "type": "ValueFormat"
- }
+ "description": "Specifies details on how to format the Variable values.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsValueFormattingOptions` is True.",
+ "type": "ValueFormat",
+ },
}
- __refs__ = set(['format'])
+ __refs__ = set(["format"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, variablesReference, filter=None, start=None, count=None, format=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param integer variablesReference: The Variable reference.
- :param string filter: Optional filter to limit the child variables to either named or indexed. If omitted, both types are fetched.
+ :param integer variablesReference: The variable for which to retrieve its children. The `variablesReference` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details.
+ :param string filter: Filter to limit the child variables to either named or indexed. If omitted, both types are fetched.
:param integer start: The index of the first variable to return; if omitted children start at 0.
+ The attribute is only honored by a debug adapter if the corresponding capability `supportsVariablePaging` is true.
:param integer count: The number of variables to return. If count is missing or 0, all variables are returned.
+ The attribute is only honored by a debug adapter if the corresponding capability `supportsVariablePaging` is true.
:param ValueFormat format: Specifies details on how to format the Variable values.
- The attribute is only honored by a debug adapter if the capability 'supportsValueFormattingOptions' is true.
+ The attribute is only honored by a debug adapter if the corresponding capability `supportsValueFormattingOptions` is true.
"""
self.variablesReference = variablesReference
self.filter = filter
@@ -8719,16 +7626,15 @@ def __init__(self, variablesReference, filter=None, start=None, count=None, form
if format is None:
self.format = ValueFormat()
else:
- self.format = ValueFormat(update_ids_from_dap=update_ids_from_dap, **format) if format.__class__ != ValueFormat else format
+ self.format = ValueFormat(update_ids_from_dap=update_ids_from_dap, **format) if format.__class__ != ValueFormat else format
if update_ids_from_dap:
self.variablesReference = self._translate_id_from_dap(self.variablesReference)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'variablesReference' in dct:
- dct['variablesReference'] = cls._translate_id_from_dap(dct['variablesReference'])
+ if "variablesReference" in dct:
+ dct["variablesReference"] = cls._translate_id_from_dap(dct["variablesReference"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -8741,31 +7647,31 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if variablesReference is not None:
variablesReference = self._translate_id_to_dap(variablesReference)
dct = {
- 'variablesReference': variablesReference,
+ "variablesReference": variablesReference,
}
if filter is not None:
- dct['filter'] = filter
+ dct["filter"] = filter
if start is not None:
- dct['start'] = start
+ dct["start"] = start
if count is not None:
- dct['count'] = count
+ dct["count"] = count
if format is not None:
- dct['format'] = format.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["format"] = format.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'variablesReference' in dct:
- dct['variablesReference'] = cls._translate_id_to_dap(dct['variablesReference'])
+ if "variablesReference" in dct:
+ dct["variablesReference"] = cls._translate_id_to_dap(dct["variablesReference"])
return dct
-@register_response('variables')
+@register_response("variables")
@register
class VariablesResponse(BaseSchema):
"""
- Response to 'variables' request.
+ Response to `variables` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -8773,83 +7679,65 @@ class VariablesResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
"variables": {
"type": "array",
- "items": {
- "$ref": "#/definitions/Variable"
- },
- "description": "All (or a range) of variables for the given variable reference."
+ "items": {"$ref": "#/definitions/Variable"},
+ "description": "All (or a range) of variables for the given variable reference.",
}
},
- "required": [
- "variables"
- ]
- }
+ "required": ["variables"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param VariablesResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param VariablesResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = VariablesResponseBody()
else:
- self.body = VariablesResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != VariablesResponseBody else body
+ self.body = (
+ VariablesResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != VariablesResponseBody else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -8859,28 +7747,28 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('setVariable')
+@register_request("setVariable")
@register
class SetVariableRequest(BaseSchema):
"""
Set the variable with the given name in the variable container to a new value. Clients should only
- call this request if the capability 'supportsSetVariable' is true.
-
- If a debug adapter implements both setVariable and setExpression, a client will only use
- setExpression if the variable has an evaluateName property.
+ call this request if the corresponding capability `supportsSetVariable` is true.
+
+ If a debug adapter implements both `setVariable` and `setExpression`, a client will only use
+ `setExpression` if the variable has an `evaluateName` property.
Note: automatically generated code. Do not edit manually.
"""
@@ -8888,55 +7776,46 @@ class SetVariableRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "setVariable"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "SetVariableArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["setVariable"]},
+ "arguments": {"type": "SetVariableArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param SetVariableArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param SetVariableArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'setVariable'
+ self.type = "request"
+ self.command = "setVariable"
if arguments is None:
self.arguments = SetVariableArguments()
else:
- self.arguments = SetVariableArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != SetVariableArguments else arguments
+ self.arguments = (
+ SetVariableArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != SetVariableArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -8945,7 +7824,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class SetVariableArguments(BaseSchema):
"""
- Arguments for 'setVariable' request.
+ Arguments for `setVariable` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -8953,28 +7832,19 @@ class SetVariableArguments(BaseSchema):
__props__ = {
"variablesReference": {
"type": "integer",
- "description": "The reference of the variable container."
- },
- "name": {
- "type": "string",
- "description": "The name of the variable in the container."
- },
- "value": {
- "type": "string",
- "description": "The value of the variable."
+ "description": "The reference of the variable container. The `variablesReference` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details.",
},
- "format": {
- "description": "Specifies details on how to format the response value.",
- "type": "ValueFormat"
- }
+ "name": {"type": "string", "description": "The name of the variable in the container."},
+ "value": {"type": "string", "description": "The value of the variable."},
+ "format": {"description": "Specifies details on how to format the response value.", "type": "ValueFormat"},
}
- __refs__ = set(['format'])
+ __refs__ = set(["format"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, variablesReference, name, value, format=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param integer variablesReference: The reference of the variable container.
+ :param integer variablesReference: The reference of the variable container. The `variablesReference` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details.
:param string name: The name of the variable in the container.
:param string value: The value of the variable.
:param ValueFormat format: Specifies details on how to format the response value.
@@ -8985,16 +7855,15 @@ def __init__(self, variablesReference, name, value, format=None, update_ids_from
if format is None:
self.format = ValueFormat()
else:
- self.format = ValueFormat(update_ids_from_dap=update_ids_from_dap, **format) if format.__class__ != ValueFormat else format
+ self.format = ValueFormat(update_ids_from_dap=update_ids_from_dap, **format) if format.__class__ != ValueFormat else format
if update_ids_from_dap:
self.variablesReference = self._translate_id_from_dap(self.variablesReference)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'variablesReference' in dct:
- dct['variablesReference'] = cls._translate_id_from_dap(dct['variablesReference'])
+ if "variablesReference" in dct:
+ dct["variablesReference"] = cls._translate_id_from_dap(dct["variablesReference"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -9006,27 +7875,27 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if variablesReference is not None:
variablesReference = self._translate_id_to_dap(variablesReference)
dct = {
- 'variablesReference': variablesReference,
- 'name': name,
- 'value': value,
+ "variablesReference": variablesReference,
+ "name": name,
+ "value": value,
}
if format is not None:
- dct['format'] = format.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["format"] = format.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'variablesReference' in dct:
- dct['variablesReference'] = cls._translate_id_to_dap(dct['variablesReference'])
+ if "variablesReference" in dct:
+ dct["variablesReference"] = cls._translate_id_to_dap(dct["variablesReference"])
return dct
-@register_response('setVariable')
+@register_response("setVariable")
@register
class SetVariableResponse(BaseSchema):
"""
- Response to 'setVariable' request.
+ Response to `setVariable` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -9034,96 +7903,83 @@ class SetVariableResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
- "value": {
- "type": "string",
- "description": "The new value of the variable."
- },
+ "value": {"type": "string", "description": "The new value of the variable."},
"type": {
"type": "string",
- "description": "The type of the new value. Typically shown in the UI when hovering over the value."
+ "description": "The type of the new value. Typically shown in the UI when hovering over the value.",
},
"variablesReference": {
"type": "integer",
- "description": "If variablesReference is > 0, the new value is structured and its children can be retrieved by passing variablesReference to the VariablesRequest.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "If `variablesReference` is > 0, the new value is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.",
},
"namedVariables": {
"type": "integer",
- "description": "The number of named child variables.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "The number of named child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).",
},
"indexedVariables": {
"type": "integer",
- "description": "The number of indexed child variables.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
- }
+ "description": "The number of indexed child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).",
+ },
+ "memoryReference": {
+ "type": "string",
+ "description": "A memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is True.",
+ },
},
- "required": [
- "value"
- ]
- }
+ "required": ["value"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param SetVariableResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param SetVariableResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = SetVariableResponseBody()
else:
- self.body = SetVariableResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != SetVariableResponseBody else body
+ self.body = (
+ SetVariableResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != SetVariableResponseBody
+ else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -9133,20 +7989,20 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('source')
+@register_request("source")
@register
class SourceRequest(BaseSchema):
"""
@@ -9158,55 +8014,46 @@ class SourceRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "command": {
- "type": "string",
- "enum": [
- "source"
- ]
- },
- "arguments": {
- "type": "SourceArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["source"]},
+ "arguments": {"type": "SourceArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param SourceArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param SourceArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'source'
+ self.type = "request"
+ self.command = "source"
if arguments is None:
self.arguments = SourceArguments()
else:
- self.arguments = SourceArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != SourceArguments else arguments
+ self.arguments = (
+ SourceArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != SourceArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -9215,56 +8062,55 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class SourceArguments(BaseSchema):
"""
- Arguments for 'source' request.
+ Arguments for `source` request.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
"source": {
- "description": "Specifies the source content to load. Either source.path or source.sourceReference must be specified.",
- "type": "Source"
+ "description": "Specifies the source content to load. Either `source.path` or `source.sourceReference` must be specified.",
+ "type": "Source",
},
"sourceReference": {
"type": "integer",
- "description": "The reference to the source. This is the same as source.sourceReference.\nThis is provided for backward compatibility since old backends do not understand the 'source' attribute."
- }
+ "description": "The reference to the source. This is the same as `source.sourceReference`.\nThis is provided for backward compatibility since old clients do not understand the `source` attribute.",
+ },
}
- __refs__ = set(['source'])
+ __refs__ = set(["source"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, sourceReference, source=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param integer sourceReference: The reference to the source. This is the same as source.sourceReference.
- This is provided for backward compatibility since old backends do not understand the 'source' attribute.
- :param Source source: Specifies the source content to load. Either source.path or source.sourceReference must be specified.
+ :param integer sourceReference: The reference to the source. This is the same as `source.sourceReference`.
+ This is provided for backward compatibility since old clients do not understand the `source` attribute.
+ :param Source source: Specifies the source content to load. Either `source.path` or `source.sourceReference` must be specified.
"""
self.sourceReference = sourceReference
if source is None:
self.source = Source()
else:
- self.source = Source(update_ids_from_dap=update_ids_from_dap, **source) if source.__class__ != Source else source
+ self.source = Source(update_ids_from_dap=update_ids_from_dap, **source) if source.__class__ != Source else source
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
sourceReference = self.sourceReference
source = self.source
dct = {
- 'sourceReference': sourceReference,
+ "sourceReference": sourceReference,
}
if source is not None:
- dct['source'] = source.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["source"] = source.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
return dct
-@register_response('source')
+@register_response("source")
@register
class SourceResponse(BaseSchema):
"""
- Response to 'source' request.
+ Response to `source` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -9272,84 +8118,62 @@ class SourceResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
- "content": {
- "type": "string",
- "description": "Content of the source reference."
- },
- "mimeType": {
- "type": "string",
- "description": "Optional content type (mime type) of the source."
- }
+ "content": {"type": "string", "description": "Content of the source reference."},
+ "mimeType": {"type": "string", "description": "Content type (MIME type) of the source."},
},
- "required": [
- "content"
- ]
- }
+ "required": ["content"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param SourceResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param SourceResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = SourceResponseBody()
else:
- self.body = SourceResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != SourceResponseBody else body
+ self.body = (
+ SourceResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != SourceResponseBody else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -9359,20 +8183,20 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('threads')
+@register_request("threads")
@register
class ThreadsRequest(BaseSchema):
"""
@@ -9384,72 +8208,53 @@ class ThreadsRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "threads"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["threads"]},
"arguments": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Object containing arguments for the command."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Object containing arguments for the command.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
:param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] arguments: Object containing arguments for the command.
"""
- self.type = 'request'
- self.command = 'threads'
+ self.type = "request"
+ self.command = "threads"
self.seq = seq
self.arguments = arguments
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
seq = self.seq
arguments = self.arguments
dct = {
- 'type': type,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "seq": seq,
}
if arguments is not None:
- dct['arguments'] = arguments
+ dct["arguments"] = arguments
dct.update(self.kwargs)
return dct
-@register_response('threads')
+@register_response("threads")
@register
class ThreadsResponse(BaseSchema):
"""
- Response to 'threads' request.
+ Response to `threads` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -9457,83 +8262,59 @@ class ThreadsResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
- "properties": {
- "threads": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/Thread"
- },
- "description": "All threads."
- }
- },
- "required": [
- "threads"
- ]
- }
+ "properties": {"threads": {"type": "array", "items": {"$ref": "#/definitions/Thread"}, "description": "All threads."}},
+ "required": ["threads"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param ThreadsResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param ThreadsResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = ThreadsResponseBody()
else:
- self.body = ThreadsResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ThreadsResponseBody else body
+ self.body = (
+ ThreadsResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ThreadsResponseBody else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -9543,26 +8324,27 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('terminateThreads')
+@register_request("terminateThreads")
@register
class TerminateThreadsRequest(BaseSchema):
"""
The request terminates the threads with the given ids.
-
- Clients should only call this request if the capability 'supportsTerminateThreadsRequest' is true.
+
+ Clients should only call this request if the corresponding capability
+ `supportsTerminateThreadsRequest` is true.
Note: automatically generated code. Do not edit manually.
"""
@@ -9570,55 +8352,46 @@ class TerminateThreadsRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "terminateThreads"
- ]
- },
- "arguments": {
- "type": "TerminateThreadsArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["terminateThreads"]},
+ "arguments": {"type": "TerminateThreadsArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param TerminateThreadsArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param TerminateThreadsArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'terminateThreads'
+ self.type = "request"
+ self.command = "terminateThreads"
if arguments is None:
self.arguments = TerminateThreadsArguments()
else:
- self.arguments = TerminateThreadsArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != TerminateThreadsArguments else arguments
+ self.arguments = (
+ TerminateThreadsArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != TerminateThreadsArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -9627,23 +8400,15 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class TerminateThreadsArguments(BaseSchema):
"""
- Arguments for 'terminateThreads' request.
+ Arguments for `terminateThreads` request.
Note: automatically generated code. Do not edit manually.
"""
- __props__ = {
- "threadIds": {
- "type": "array",
- "items": {
- "type": "integer"
- },
- "description": "Ids of threads to be terminated."
- }
- }
+ __props__ = {"threadIds": {"type": "array", "items": {"type": "integer"}, "description": "Ids of threads to be terminated."}}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, threadIds=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -9652,25 +8417,22 @@ def __init__(self, threadIds=None, update_ids_from_dap=False, **kwargs): # noqa
self.threadIds = threadIds
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
threadIds = self.threadIds
if threadIds and hasattr(threadIds[0], "to_dict"):
threadIds = [x.to_dict() for x in threadIds]
- dct = {
- }
+ dct = {}
if threadIds is not None:
- dct['threadIds'] = threadIds
+ dct["threadIds"] = threadIds
dct.update(self.kwargs)
return dct
-@register_response('terminateThreads')
+@register_response("terminateThreads")
@register
class TerminateThreadsResponse(BaseSchema):
"""
- Response to 'terminateThreads' request. This is just an acknowledgement, so no body field is
- required.
+ Response to `terminateThreads` request. This is just an acknowledgement, no body field is required.
Note: automatically generated code. Do not edit manually.
"""
@@ -9678,68 +8440,45 @@ class TerminateThreadsResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Contains request result if success is true and optional error details if success is false."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Contains request result if success is True and error details if success is false.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and optional error details if success is false.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -9748,7 +8487,6 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -9758,28 +8496,29 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_request('modules')
+@register_request("modules")
@register
class ModulesRequest(BaseSchema):
"""
Modules can be retrieved from the debug adapter with this request which can either return all
modules or a range of modules to support paging.
-
- Clients should only call this request if the capability 'supportsModulesRequest' is true.
+
+ Clients should only call this request if the corresponding capability `supportsModulesRequest` is
+ true.
Note: automatically generated code. Do not edit manually.
"""
@@ -9787,57 +8526,48 @@ class ModulesRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "modules"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "ModulesArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["modules"]},
+ "arguments": {"type": "ModulesArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param ModulesArguments arguments:
+ :param string type:
+ :param string command:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param ModulesArguments arguments:
"""
- self.type = 'request'
- self.command = 'modules'
+ self.type = "request"
+ self.command = "modules"
self.seq = seq
if arguments is None:
self.arguments = ModulesArguments()
else:
- self.arguments = ModulesArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != ModulesArguments else arguments
+ self.arguments = (
+ ModulesArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != ModulesArguments
+ else arguments
+ )
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
seq = self.seq
arguments = self.arguments
dct = {
- 'type': type,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "seq": seq,
}
if arguments is not None:
- dct['arguments'] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["arguments"] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
return dct
@@ -9845,53 +8575,48 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class ModulesArguments(BaseSchema):
"""
- Arguments for 'modules' request.
+ Arguments for `modules` request.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
- "startModule": {
- "type": "integer",
- "description": "The index of the first module to return; if omitted modules start at 0."
- },
+ "startModule": {"type": "integer", "description": "The index of the first module to return; if omitted modules start at 0."},
"moduleCount": {
"type": "integer",
- "description": "The number of modules to return. If moduleCount is not specified or 0, all modules are returned."
- }
+ "description": "The number of modules to return. If `moduleCount` is not specified or 0, all modules are returned.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, startModule=None, moduleCount=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param integer startModule: The index of the first module to return; if omitted modules start at 0.
- :param integer moduleCount: The number of modules to return. If moduleCount is not specified or 0, all modules are returned.
+ :param integer moduleCount: The number of modules to return. If `moduleCount` is not specified or 0, all modules are returned.
"""
self.startModule = startModule
self.moduleCount = moduleCount
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
startModule = self.startModule
moduleCount = self.moduleCount
- dct = {
- }
+ dct = {}
if startModule is not None:
- dct['startModule'] = startModule
+ dct["startModule"] = startModule
if moduleCount is not None:
- dct['moduleCount'] = moduleCount
+ dct["moduleCount"] = moduleCount
dct.update(self.kwargs)
return dct
-@register_response('modules')
+@register_response("modules")
@register
class ModulesResponse(BaseSchema):
"""
- Response to 'modules' request.
+ Response to `modules` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -9899,87 +8624,62 @@ class ModulesResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
- "modules": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/Module"
- },
- "description": "All modules or range of modules."
- },
- "totalModules": {
- "type": "integer",
- "description": "The total number of modules available."
- }
+ "modules": {"type": "array", "items": {"$ref": "#/definitions/Module"}, "description": "All modules or range of modules."},
+ "totalModules": {"type": "integer", "description": "The total number of modules available."},
},
- "required": [
- "modules"
- ]
- }
+ "required": ["modules"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param ModulesResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param ModulesResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = ModulesResponseBody()
else:
- self.body = ModulesResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ModulesResponseBody else body
+ self.body = (
+ ModulesResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ModulesResponseBody else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -9989,26 +8689,27 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('loadedSources')
+@register_request("loadedSources")
@register
class LoadedSourcesRequest(BaseSchema):
"""
Retrieves the set of all sources currently loaded by the debugged process.
-
- Clients should only call this request if the capability 'supportsLoadedSourcesRequest' is true.
+
+ Clients should only call this request if the corresponding capability `supportsLoadedSourcesRequest`
+ is true.
Note: automatically generated code. Do not edit manually.
"""
@@ -10016,57 +8717,48 @@ class LoadedSourcesRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "loadedSources"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "LoadedSourcesArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["loadedSources"]},
+ "arguments": {"type": "LoadedSourcesArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param LoadedSourcesArguments arguments:
+ :param string type:
+ :param string command:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param LoadedSourcesArguments arguments:
"""
- self.type = 'request'
- self.command = 'loadedSources'
+ self.type = "request"
+ self.command = "loadedSources"
self.seq = seq
if arguments is None:
self.arguments = LoadedSourcesArguments()
else:
- self.arguments = LoadedSourcesArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != LoadedSourcesArguments else arguments
+ self.arguments = (
+ LoadedSourcesArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != LoadedSourcesArguments
+ else arguments
+ )
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
seq = self.seq
arguments = self.arguments
dct = {
- 'type': type,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "seq": seq,
}
if arguments is not None:
- dct['arguments'] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["arguments"] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
return dct
@@ -10074,7 +8766,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class LoadedSourcesArguments(BaseSchema):
"""
- Arguments for 'loadedSources' request.
+ Arguments for `loadedSources` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -10082,28 +8774,24 @@ class LoadedSourcesArguments(BaseSchema):
__props__ = {}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
- """
-
- """
-
- self.kwargs = kwargs
+ """ """
+ self.kwargs = kwargs
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
- dct = {
- }
+ dct = {}
dct.update(self.kwargs)
return dct
-@register_response('loadedSources')
+@register_response("loadedSources")
@register
class LoadedSourcesResponse(BaseSchema):
"""
- Response to 'loadedSources' request.
+ Response to `loadedSources` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -10111,83 +8799,63 @@ class LoadedSourcesResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
- "sources": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/Source"
- },
- "description": "Set of loaded sources."
- }
+ "sources": {"type": "array", "items": {"$ref": "#/definitions/Source"}, "description": "Set of loaded sources."}
},
- "required": [
- "sources"
- ]
- }
+ "required": ["sources"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param LoadedSourcesResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param LoadedSourcesResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = LoadedSourcesResponseBody()
else:
- self.body = LoadedSourcesResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != LoadedSourcesResponseBody else body
+ self.body = (
+ LoadedSourcesResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != LoadedSourcesResponseBody
+ else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -10197,25 +8865,25 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('evaluate')
+@register_request("evaluate")
@register
class EvaluateRequest(BaseSchema):
"""
- Evaluates the given expression in the context of the top most stack frame.
-
+ Evaluates the given expression in the context of the topmost stack frame.
+
The expression has access to any variables and arguments that are in scope.
Note: automatically generated code. Do not edit manually.
@@ -10224,55 +8892,46 @@ class EvaluateRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "command": {
- "type": "string",
- "enum": [
- "evaluate"
- ]
- },
- "arguments": {
- "type": "EvaluateArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["evaluate"]},
+ "arguments": {"type": "EvaluateArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param EvaluateArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param EvaluateArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'evaluate'
+ self.type = "request"
+ self.command = "evaluate"
if arguments is None:
self.arguments = EvaluateArguments()
else:
- self.arguments = EvaluateArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != EvaluateArguments else arguments
+ self.arguments = (
+ EvaluateArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != EvaluateArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -10281,52 +8940,45 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class EvaluateArguments(BaseSchema):
"""
- Arguments for 'evaluate' request.
+ Arguments for `evaluate` request.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
- "expression": {
- "type": "string",
- "description": "The expression to evaluate."
- },
+ "expression": {"type": "string", "description": "The expression to evaluate."},
"frameId": {
"type": "integer",
- "description": "Evaluate the expression in the scope of this stack frame. If not specified, the expression is evaluated in the global scope."
+ "description": "Evaluate the expression in the scope of this stack frame. If not specified, the expression is evaluated in the global scope.",
},
"context": {
"type": "string",
- "_enum": [
- "watch",
- "repl",
- "hover",
- "clipboard"
- ],
+ "_enum": ["watch", "repl", "hover", "clipboard", "variables"],
"enumDescriptions": [
- "evaluate is run in a watch.",
- "evaluate is run from REPL console.",
- "evaluate is run from a data hover.",
- "evaluate is run to generate the value that will be stored in the clipboard.\nThe attribute is only honored by a debug adapter if the capability 'supportsClipboardContext' is true."
+ "evaluate is called from a watch view context.",
+ "evaluate is called from a REPL context.",
+ "evaluate is called to generate the debug hover contents.\nThis value should only be used if the corresponding capability `supportsEvaluateForHovers` is True.",
+ "evaluate is called to generate clipboard contents.\nThis value should only be used if the corresponding capability `supportsClipboardContext` is True.",
+ "evaluate is called from a variables view context.",
],
- "description": "The context in which the evaluate request is run."
+ "description": "The context in which the evaluate request is used.",
},
"format": {
- "description": "Specifies details on how to format the Evaluate result.\nThe attribute is only honored by a debug adapter if the capability 'supportsValueFormattingOptions' is true.",
- "type": "ValueFormat"
- }
+ "description": "Specifies details on how to format the result.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsValueFormattingOptions` is True.",
+ "type": "ValueFormat",
+ },
}
- __refs__ = set(['format'])
+ __refs__ = set(["format"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, expression, frameId=None, context=None, format=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param string expression: The expression to evaluate.
:param integer frameId: Evaluate the expression in the scope of this stack frame. If not specified, the expression is evaluated in the global scope.
- :param string context: The context in which the evaluate request is run.
- :param ValueFormat format: Specifies details on how to format the Evaluate result.
- The attribute is only honored by a debug adapter if the capability 'supportsValueFormattingOptions' is true.
+ :param string context: The context in which the evaluate request is used.
+ :param ValueFormat format: Specifies details on how to format the result.
+ The attribute is only honored by a debug adapter if the corresponding capability `supportsValueFormattingOptions` is true.
"""
self.expression = expression
self.frameId = frameId
@@ -10334,16 +8986,15 @@ def __init__(self, expression, frameId=None, context=None, format=None, update_i
if format is None:
self.format = ValueFormat()
else:
- self.format = ValueFormat(update_ids_from_dap=update_ids_from_dap, **format) if format.__class__ != ValueFormat else format
+ self.format = ValueFormat(update_ids_from_dap=update_ids_from_dap, **format) if format.__class__ != ValueFormat else format
if update_ids_from_dap:
self.frameId = self._translate_id_from_dap(self.frameId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'frameId' in dct:
- dct['frameId'] = cls._translate_id_from_dap(dct['frameId'])
+ if "frameId" in dct:
+ dct["frameId"] = cls._translate_id_from_dap(dct["frameId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -10355,29 +9006,29 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if frameId is not None:
frameId = self._translate_id_to_dap(frameId)
dct = {
- 'expression': expression,
+ "expression": expression,
}
if frameId is not None:
- dct['frameId'] = frameId
+ dct["frameId"] = frameId
if context is not None:
- dct['context'] = context
+ dct["context"] = context
if format is not None:
- dct['format'] = format.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["format"] = format.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'frameId' in dct:
- dct['frameId'] = cls._translate_id_to_dap(dct['frameId'])
+ if "frameId" in dct:
+ dct["frameId"] = cls._translate_id_to_dap(dct["frameId"])
return dct
-@register_response('evaluate')
+@register_response("evaluate")
@register
class EvaluateResponse(BaseSchema):
"""
- Response to 'evaluate' request.
+ Response to `evaluate` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -10385,105 +9036,85 @@ class EvaluateResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
- "result": {
- "type": "string",
- "description": "The result of the evaluate request."
- },
+ "result": {"type": "string", "description": "The result of the evaluate request."},
"type": {
"type": "string",
- "description": "The optional type of the evaluate result.\nThis attribute should only be returned by a debug adapter if the client has passed the value true for the 'supportsVariableType' capability of the 'initialize' request."
+ "description": "The type of the evaluate result.\nThis attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is True.",
},
"presentationHint": {
"$ref": "#/definitions/VariablePresentationHint",
- "description": "Properties of a evaluate result that can be used to determine how to render the result in the UI."
+ "description": "Properties of an evaluate result that can be used to determine how to render the result in the UI.",
},
"variablesReference": {
"type": "integer",
- "description": "If variablesReference is > 0, the evaluate result is structured and its children can be retrieved by passing variablesReference to the VariablesRequest.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "If `variablesReference` is > 0, the evaluate result is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.",
},
"namedVariables": {
"type": "integer",
- "description": "The number of named child variables.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "The number of named child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).",
},
"indexedVariables": {
"type": "integer",
- "description": "The number of indexed child variables.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "The number of indexed child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).",
},
"memoryReference": {
"type": "string",
- "description": "Optional memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute should be returned by a debug adapter if the client has passed the value true for the 'supportsMemoryReferences' capability of the 'initialize' request."
- }
+ "description": "A memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is True.",
+ },
},
- "required": [
- "result",
- "variablesReference"
- ]
- }
+ "required": ["result", "variablesReference"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param EvaluateResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param EvaluateResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = EvaluateResponseBody()
else:
- self.body = EvaluateResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != EvaluateResponseBody else body
+ self.body = (
+ EvaluateResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != EvaluateResponseBody else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -10493,32 +9124,33 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('setExpression')
+@register_request("setExpression")
@register
class SetExpressionRequest(BaseSchema):
"""
- Evaluates the given 'value' expression and assigns it to the 'expression' which must be a modifiable
+ Evaluates the given `value` expression and assigns it to the `expression` which must be a modifiable
l-value.
-
+
The expressions have access to any variables and arguments that are in scope of the specified frame.
-
- Clients should only call this request if the capability 'supportsSetExpression' is true.
-
- If a debug adapter implements both setExpression and setVariable, a client will only use
- setExpression if the variable has an evaluateName property.
+
+ Clients should only call this request if the corresponding capability `supportsSetExpression` is
+ true.
+
+ If a debug adapter implements both `setExpression` and `setVariable`, a client uses `setExpression`
+ if the variable has an `evaluateName` property.
Note: automatically generated code. Do not edit manually.
"""
@@ -10526,55 +9158,46 @@ class SetExpressionRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "setExpression"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "SetExpressionArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["setExpression"]},
+ "arguments": {"type": "SetExpressionArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param SetExpressionArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param SetExpressionArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'setExpression'
+ self.type = "request"
+ self.command = "setExpression"
if arguments is None:
self.arguments = SetExpressionArguments()
else:
- self.arguments = SetExpressionArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != SetExpressionArguments else arguments
+ self.arguments = (
+ SetExpressionArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != SetExpressionArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -10583,32 +9206,23 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class SetExpressionArguments(BaseSchema):
"""
- Arguments for 'setExpression' request.
+ Arguments for `setExpression` request.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
- "expression": {
- "type": "string",
- "description": "The l-value expression to assign to."
- },
- "value": {
- "type": "string",
- "description": "The value expression to assign to the l-value expression."
- },
+ "expression": {"type": "string", "description": "The l-value expression to assign to."},
+ "value": {"type": "string", "description": "The value expression to assign to the l-value expression."},
"frameId": {
"type": "integer",
- "description": "Evaluate the expressions in the scope of this stack frame. If not specified, the expressions are evaluated in the global scope."
+ "description": "Evaluate the expressions in the scope of this stack frame. If not specified, the expressions are evaluated in the global scope.",
},
- "format": {
- "description": "Specifies how the resulting value should be formatted.",
- "type": "ValueFormat"
- }
+ "format": {"description": "Specifies how the resulting value should be formatted.", "type": "ValueFormat"},
}
- __refs__ = set(['format'])
+ __refs__ = set(["format"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, expression, value, frameId=None, format=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -10623,16 +9237,15 @@ def __init__(self, expression, value, frameId=None, format=None, update_ids_from
if format is None:
self.format = ValueFormat()
else:
- self.format = ValueFormat(update_ids_from_dap=update_ids_from_dap, **format) if format.__class__ != ValueFormat else format
+ self.format = ValueFormat(update_ids_from_dap=update_ids_from_dap, **format) if format.__class__ != ValueFormat else format
if update_ids_from_dap:
self.frameId = self._translate_id_from_dap(self.frameId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'frameId' in dct:
- dct['frameId'] = cls._translate_id_from_dap(dct['frameId'])
+ if "frameId" in dct:
+ dct["frameId"] = cls._translate_id_from_dap(dct["frameId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -10644,28 +9257,28 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if frameId is not None:
frameId = self._translate_id_to_dap(frameId)
dct = {
- 'expression': expression,
- 'value': value,
+ "expression": expression,
+ "value": value,
}
if frameId is not None:
- dct['frameId'] = frameId
+ dct["frameId"] = frameId
if format is not None:
- dct['format'] = format.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["format"] = format.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'frameId' in dct:
- dct['frameId'] = cls._translate_id_to_dap(dct['frameId'])
+ if "frameId" in dct:
+ dct["frameId"] = cls._translate_id_to_dap(dct["frameId"])
return dct
-@register_response('setExpression')
+@register_response("setExpression")
@register
class SetExpressionResponse(BaseSchema):
"""
- Response to 'setExpression' request.
+ Response to `setExpression` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -10673,100 +9286,87 @@ class SetExpressionResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
- "value": {
- "type": "string",
- "description": "The new value of the expression."
- },
+ "value": {"type": "string", "description": "The new value of the expression."},
"type": {
"type": "string",
- "description": "The optional type of the value.\nThis attribute should only be returned by a debug adapter if the client has passed the value true for the 'supportsVariableType' capability of the 'initialize' request."
+ "description": "The type of the value.\nThis attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is True.",
},
"presentationHint": {
"$ref": "#/definitions/VariablePresentationHint",
- "description": "Properties of a value that can be used to determine how to render the result in the UI."
+ "description": "Properties of a value that can be used to determine how to render the result in the UI.",
},
"variablesReference": {
"type": "integer",
- "description": "If variablesReference is > 0, the value is structured and its children can be retrieved by passing variablesReference to the VariablesRequest.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "If `variablesReference` is > 0, the evaluate result is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.",
},
"namedVariables": {
"type": "integer",
- "description": "The number of named child variables.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "The number of named child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).",
},
"indexedVariables": {
"type": "integer",
- "description": "The number of indexed child variables.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
- }
+ "description": "The number of indexed child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).",
+ },
+ "memoryReference": {
+ "type": "string",
+ "description": "A memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is True.",
+ },
},
- "required": [
- "value"
- ]
- }
+ "required": ["value"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param SetExpressionResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param SetExpressionResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = SetExpressionResponseBody()
else:
- self.body = SetExpressionResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != SetExpressionResponseBody else body
+ self.body = (
+ SetExpressionResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != SetExpressionResponseBody
+ else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -10776,31 +9376,29 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('stepInTargets')
+@register_request("stepInTargets")
@register
class StepInTargetsRequest(BaseSchema):
"""
- This request retrieves the possible stepIn targets for the specified stack frame.
-
- These targets can be used in the 'stepIn' request.
-
- The StepInTargets may only be called if the 'supportsStepInTargetsRequest' capability exists and is
- true.
-
- Clients should only call this request if the capability 'supportsStepInTargetsRequest' is true.
+ This request retrieves the possible step-in targets for the specified stack frame.
+
+ These targets can be used in the `stepIn` request.
+
+ Clients should only call this request if the corresponding capability `supportsStepInTargetsRequest`
+ is true.
Note: automatically generated code. Do not edit manually.
"""
@@ -10808,55 +9406,46 @@ class StepInTargetsRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "stepInTargets"
- ]
- },
- "arguments": {
- "type": "StepInTargetsArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["stepInTargets"]},
+ "arguments": {"type": "StepInTargetsArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param StepInTargetsArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param StepInTargetsArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'stepInTargets'
+ self.type = "request"
+ self.command = "stepInTargets"
if arguments is None:
self.arguments = StepInTargetsArguments()
else:
- self.arguments = StepInTargetsArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != StepInTargetsArguments else arguments
+ self.arguments = (
+ StepInTargetsArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != StepInTargetsArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -10865,35 +9454,29 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class StepInTargetsArguments(BaseSchema):
"""
- Arguments for 'stepInTargets' request.
+ Arguments for `stepInTargets` request.
Note: automatically generated code. Do not edit manually.
"""
- __props__ = {
- "frameId": {
- "type": "integer",
- "description": "The stack frame for which to retrieve the possible stepIn targets."
- }
- }
+ __props__ = {"frameId": {"type": "integer", "description": "The stack frame for which to retrieve the possible step-in targets."}}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, frameId, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param integer frameId: The stack frame for which to retrieve the possible stepIn targets.
+ :param integer frameId: The stack frame for which to retrieve the possible step-in targets.
"""
self.frameId = frameId
if update_ids_from_dap:
self.frameId = self._translate_id_from_dap(self.frameId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'frameId' in dct:
- dct['frameId'] = cls._translate_id_from_dap(dct['frameId'])
+ if "frameId" in dct:
+ dct["frameId"] = cls._translate_id_from_dap(dct["frameId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -10902,23 +9485,23 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if frameId is not None:
frameId = self._translate_id_to_dap(frameId)
dct = {
- 'frameId': frameId,
+ "frameId": frameId,
}
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'frameId' in dct:
- dct['frameId'] = cls._translate_id_to_dap(dct['frameId'])
+ if "frameId" in dct:
+ dct["frameId"] = cls._translate_id_to_dap(dct["frameId"])
return dct
-@register_response('stepInTargets')
+@register_response("stepInTargets")
@register
class StepInTargetsResponse(BaseSchema):
"""
- Response to 'stepInTargets' request.
+ Response to `stepInTargets` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -10926,83 +9509,67 @@ class StepInTargetsResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
"targets": {
"type": "array",
- "items": {
- "$ref": "#/definitions/StepInTarget"
- },
- "description": "The possible stepIn targets of the specified source location."
+ "items": {"$ref": "#/definitions/StepInTarget"},
+ "description": "The possible step-in targets of the specified source location.",
}
},
- "required": [
- "targets"
- ]
- }
+ "required": ["targets"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param StepInTargetsResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param StepInTargetsResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = StepInTargetsResponseBody()
else:
- self.body = StepInTargetsResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != StepInTargetsResponseBody else body
+ self.body = (
+ StepInTargetsResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != StepInTargetsResponseBody
+ else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -11012,28 +9579,29 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('gotoTargets')
+@register_request("gotoTargets")
@register
class GotoTargetsRequest(BaseSchema):
"""
This request retrieves the possible goto targets for the specified source location.
-
- These targets can be used in the 'goto' request.
-
- Clients should only call this request if the capability 'supportsGotoTargetsRequest' is true.
+
+ These targets can be used in the `goto` request.
+
+ Clients should only call this request if the corresponding capability `supportsGotoTargetsRequest`
+ is true.
Note: automatically generated code. Do not edit manually.
"""
@@ -11041,55 +9609,46 @@ class GotoTargetsRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "gotoTargets"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "GotoTargetsArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["gotoTargets"]},
+ "arguments": {"type": "GotoTargetsArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param GotoTargetsArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param GotoTargetsArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'gotoTargets'
+ self.type = "request"
+ self.command = "gotoTargets"
if arguments is None:
self.arguments = GotoTargetsArguments()
else:
- self.arguments = GotoTargetsArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != GotoTargetsArguments else arguments
+ self.arguments = (
+ GotoTargetsArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != GotoTargetsArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -11098,63 +9657,56 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class GotoTargetsArguments(BaseSchema):
"""
- Arguments for 'gotoTargets' request.
+ Arguments for `gotoTargets` request.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
- "source": {
- "description": "The source location for which the goto targets are determined.",
- "type": "Source"
- },
- "line": {
- "type": "integer",
- "description": "The line location for which the goto targets are determined."
- },
+ "source": {"description": "The source location for which the goto targets are determined.", "type": "Source"},
+ "line": {"type": "integer", "description": "The line location for which the goto targets are determined."},
"column": {
"type": "integer",
- "description": "An optional column location for which the goto targets are determined."
- }
+ "description": "The position within `line` for which the goto targets are determined. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.",
+ },
}
- __refs__ = set(['source'])
+ __refs__ = set(["source"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, source, line, column=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param Source source: The source location for which the goto targets are determined.
:param integer line: The line location for which the goto targets are determined.
- :param integer column: An optional column location for which the goto targets are determined.
+ :param integer column: The position within `line` for which the goto targets are determined. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.
"""
if source is None:
self.source = Source()
else:
- self.source = Source(update_ids_from_dap=update_ids_from_dap, **source) if source.__class__ != Source else source
+ self.source = Source(update_ids_from_dap=update_ids_from_dap, **source) if source.__class__ != Source else source
self.line = line
self.column = column
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
source = self.source
line = self.line
column = self.column
dct = {
- 'source': source.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'line': line,
+ "source": source.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "line": line,
}
if column is not None:
- dct['column'] = column
+ dct["column"] = column
dct.update(self.kwargs)
return dct
-@register_response('gotoTargets')
+@register_response("gotoTargets")
@register
class GotoTargetsResponse(BaseSchema):
"""
- Response to 'gotoTargets' request.
+ Response to `gotoTargets` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -11162,83 +9714,67 @@ class GotoTargetsResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
"targets": {
"type": "array",
- "items": {
- "$ref": "#/definitions/GotoTarget"
- },
- "description": "The possible goto targets of the specified location."
+ "items": {"$ref": "#/definitions/GotoTarget"},
+ "description": "The possible goto targets of the specified location.",
}
},
- "required": [
- "targets"
- ]
- }
+ "required": ["targets"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param GotoTargetsResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param GotoTargetsResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = GotoTargetsResponseBody()
else:
- self.body = GotoTargetsResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != GotoTargetsResponseBody else body
+ self.body = (
+ GotoTargetsResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != GotoTargetsResponseBody
+ else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -11248,26 +9784,27 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('completions')
+@register_request("completions")
@register
class CompletionsRequest(BaseSchema):
"""
Returns a list of possible completions for a given caret position and text.
-
- Clients should only call this request if the capability 'supportsCompletionsRequest' is true.
+
+ Clients should only call this request if the corresponding capability `supportsCompletionsRequest`
+ is true.
Note: automatically generated code. Do not edit manually.
"""
@@ -11275,55 +9812,46 @@ class CompletionsRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "command": {
- "type": "string",
- "enum": [
- "completions"
- ]
- },
- "arguments": {
- "type": "CompletionsArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["completions"]},
+ "arguments": {"type": "CompletionsArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param CompletionsArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param CompletionsArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'completions'
+ self.type = "request"
+ self.command = "completions"
if arguments is None:
self.arguments = CompletionsArguments()
else:
- self.arguments = CompletionsArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != CompletionsArguments else arguments
+ self.arguments = (
+ CompletionsArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != CompletionsArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -11332,7 +9860,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class CompletionsArguments(BaseSchema):
"""
- Arguments for 'completions' request.
+ Arguments for `completions` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -11340,31 +9868,31 @@ class CompletionsArguments(BaseSchema):
__props__ = {
"frameId": {
"type": "integer",
- "description": "Returns completions in the scope of this stack frame. If not specified, the completions are returned for the global scope."
+ "description": "Returns completions in the scope of this stack frame. If not specified, the completions are returned for the global scope.",
},
"text": {
"type": "string",
- "description": "One or more source lines. Typically this is the text a user has typed into the debug console before he asked for completion."
+ "description": "One or more source lines. Typically this is the text users have typed into the debug console before they asked for completion.",
},
"column": {
"type": "integer",
- "description": "The character position for which to determine the completion proposals."
+ "description": "The position within `text` for which to determine the completion proposals. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.",
},
"line": {
"type": "integer",
- "description": "An optional line for which to determine the completion proposals. If missing the first line of the text is assumed."
- }
+ "description": "A line for which to determine the completion proposals. If missing the first line of the text is assumed.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, text, column, frameId=None, line=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string text: One or more source lines. Typically this is the text a user has typed into the debug console before he asked for completion.
- :param integer column: The character position for which to determine the completion proposals.
+ :param string text: One or more source lines. Typically this is the text users have typed into the debug console before they asked for completion.
+ :param integer column: The position within `text` for which to determine the completion proposals. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.
:param integer frameId: Returns completions in the scope of this stack frame. If not specified, the completions are returned for the global scope.
- :param integer line: An optional line for which to determine the completion proposals. If missing the first line of the text is assumed.
+ :param integer line: A line for which to determine the completion proposals. If missing the first line of the text is assumed.
"""
self.text = text
self.column = column
@@ -11373,12 +9901,11 @@ def __init__(self, text, column, frameId=None, line=None, update_ids_from_dap=Fa
if update_ids_from_dap:
self.frameId = self._translate_id_from_dap(self.frameId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'frameId' in dct:
- dct['frameId'] = cls._translate_id_from_dap(dct['frameId'])
+ if "frameId" in dct:
+ dct["frameId"] = cls._translate_id_from_dap(dct["frameId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -11390,28 +9917,28 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if frameId is not None:
frameId = self._translate_id_to_dap(frameId)
dct = {
- 'text': text,
- 'column': column,
+ "text": text,
+ "column": column,
}
if frameId is not None:
- dct['frameId'] = frameId
+ dct["frameId"] = frameId
if line is not None:
- dct['line'] = line
+ dct["line"] = line
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'frameId' in dct:
- dct['frameId'] = cls._translate_id_to_dap(dct['frameId'])
+ if "frameId" in dct:
+ dct["frameId"] = cls._translate_id_to_dap(dct["frameId"])
return dct
-@register_response('completions')
+@register_response("completions")
@register
class CompletionsResponse(BaseSchema):
"""
- Response to 'completions' request.
+ Response to `completions` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -11419,83 +9946,67 @@ class CompletionsResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
"targets": {
"type": "array",
- "items": {
- "$ref": "#/definitions/CompletionItem"
- },
- "description": "The possible completions for ."
+ "items": {"$ref": "#/definitions/CompletionItem"},
+ "description": "The possible completions for .",
}
},
- "required": [
- "targets"
- ]
- }
+ "required": ["targets"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param CompletionsResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param CompletionsResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = CompletionsResponseBody()
else:
- self.body = CompletionsResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != CompletionsResponseBody else body
+ self.body = (
+ CompletionsResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != CompletionsResponseBody
+ else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -11505,26 +10016,27 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('exceptionInfo')
+@register_request("exceptionInfo")
@register
class ExceptionInfoRequest(BaseSchema):
"""
Retrieves the details of the exception that caused this event to be raised.
-
- Clients should only call this request if the capability 'supportsExceptionInfoRequest' is true.
+
+ Clients should only call this request if the corresponding capability `supportsExceptionInfoRequest`
+ is true.
Note: automatically generated code. Do not edit manually.
"""
@@ -11532,55 +10044,46 @@ class ExceptionInfoRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "exceptionInfo"
- ]
- },
- "arguments": {
- "type": "ExceptionInfoArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["exceptionInfo"]},
+ "arguments": {"type": "ExceptionInfoArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param ExceptionInfoArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param ExceptionInfoArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'exceptionInfo'
+ self.type = "request"
+ self.command = "exceptionInfo"
if arguments is None:
self.arguments = ExceptionInfoArguments()
else:
- self.arguments = ExceptionInfoArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != ExceptionInfoArguments else arguments
+ self.arguments = (
+ ExceptionInfoArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != ExceptionInfoArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -11589,20 +10092,15 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class ExceptionInfoArguments(BaseSchema):
"""
- Arguments for 'exceptionInfo' request.
+ Arguments for `exceptionInfo` request.
Note: automatically generated code. Do not edit manually.
"""
- __props__ = {
- "threadId": {
- "type": "integer",
- "description": "Thread for which exception information should be retrieved."
- }
- }
+ __props__ = {"threadId": {"type": "integer", "description": "Thread for which exception information should be retrieved."}}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, threadId, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -11612,12 +10110,11 @@ def __init__(self, threadId, update_ids_from_dap=False, **kwargs): # noqa (upda
if update_ids_from_dap:
self.threadId = self._translate_id_from_dap(self.threadId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_from_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_from_dap(dct["threadId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -11626,23 +10123,23 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if threadId is not None:
threadId = self._translate_id_to_dap(threadId)
dct = {
- 'threadId': threadId,
+ "threadId": threadId,
}
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_to_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_to_dap(dct["threadId"])
return dct
-@register_response('exceptionInfo')
+@register_response("exceptionInfo")
@register
class ExceptionInfoResponse(BaseSchema):
"""
- Response to 'exceptionInfo' request.
+ Response to `exceptionInfo` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -11650,93 +10147,69 @@ class ExceptionInfoResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
- "exceptionId": {
- "type": "string",
- "description": "ID of the exception that was thrown."
- },
- "description": {
- "type": "string",
- "description": "Descriptive text for the exception provided by the debug adapter."
- },
+ "exceptionId": {"type": "string", "description": "ID of the exception that was thrown."},
+ "description": {"type": "string", "description": "Descriptive text for the exception."},
"breakMode": {
"$ref": "#/definitions/ExceptionBreakMode",
- "description": "Mode that caused the exception notification to be raised."
+ "description": "Mode that caused the exception notification to be raised.",
},
- "details": {
- "$ref": "#/definitions/ExceptionDetails",
- "description": "Detailed information about the exception."
- }
+ "details": {"$ref": "#/definitions/ExceptionDetails", "description": "Detailed information about the exception."},
},
- "required": [
- "exceptionId",
- "breakMode"
- ]
- }
+ "required": ["exceptionId", "breakMode"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param ExceptionInfoResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param ExceptionInfoResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = ExceptionInfoResponseBody()
else:
- self.body = ExceptionInfoResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ExceptionInfoResponseBody else body
+ self.body = (
+ ExceptionInfoResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != ExceptionInfoResponseBody
+ else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -11746,26 +10219,27 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
-@register_request('readMemory')
+@register_request("readMemory")
@register
class ReadMemoryRequest(BaseSchema):
"""
Reads bytes from memory at the provided location.
-
- Clients should only call this request if the capability 'supportsReadMemoryRequest' is true.
+
+ Clients should only call this request if the corresponding capability `supportsReadMemoryRequest` is
+ true.
Note: automatically generated code. Do not edit manually.
"""
@@ -11773,55 +10247,46 @@ class ReadMemoryRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "command": {
- "type": "string",
- "enum": [
- "readMemory"
- ]
- },
- "arguments": {
- "type": "ReadMemoryArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["readMemory"]},
+ "arguments": {"type": "ReadMemoryArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param ReadMemoryArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param ReadMemoryArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'readMemory'
+ self.type = "request"
+ self.command = "readMemory"
if arguments is None:
self.arguments = ReadMemoryArguments()
else:
- self.arguments = ReadMemoryArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != ReadMemoryArguments else arguments
+ self.arguments = (
+ ReadMemoryArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != ReadMemoryArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -11830,60 +10295,53 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class ReadMemoryArguments(BaseSchema):
"""
- Arguments for 'readMemory' request.
+ Arguments for `readMemory` request.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
- "memoryReference": {
- "type": "string",
- "description": "Memory reference to the base location from which data should be read."
- },
+ "memoryReference": {"type": "string", "description": "Memory reference to the base location from which data should be read."},
"offset": {
"type": "integer",
- "description": "Optional offset (in bytes) to be applied to the reference location before reading data. Can be negative."
+ "description": "Offset (in bytes) to be applied to the reference location before reading data. Can be negative.",
},
- "count": {
- "type": "integer",
- "description": "Number of bytes to read at the specified location and offset."
- }
+ "count": {"type": "integer", "description": "Number of bytes to read at the specified location and offset."},
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, memoryReference, count, offset=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param string memoryReference: Memory reference to the base location from which data should be read.
:param integer count: Number of bytes to read at the specified location and offset.
- :param integer offset: Optional offset (in bytes) to be applied to the reference location before reading data. Can be negative.
+ :param integer offset: Offset (in bytes) to be applied to the reference location before reading data. Can be negative.
"""
self.memoryReference = memoryReference
self.count = count
self.offset = offset
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
memoryReference = self.memoryReference
count = self.count
offset = self.offset
dct = {
- 'memoryReference': memoryReference,
- 'count': count,
+ "memoryReference": memoryReference,
+ "count": count,
}
if offset is not None:
- dct['offset'] = offset
+ dct["offset"] = offset
dct.update(self.kwargs)
return dct
-@register_response('readMemory')
+@register_response("readMemory")
@register
class ReadMemoryResponse(BaseSchema):
"""
- Response to 'readMemory' request.
+ Response to `readMemory` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -11891,76 +10349,59 @@ class ReadMemoryResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
"address": {
"type": "string",
- "description": "The address of the first byte of data returned.\nTreated as a hex value if prefixed with '0x', or as a decimal value otherwise."
+ "description": "The address of the first byte of data returned.\nTreated as a hex value if prefixed with `0x`, or as a decimal value otherwise.",
},
"unreadableBytes": {
"type": "integer",
- "description": "The number of unreadable bytes encountered after the last successfully read byte.\nThis can be used to determine the number of bytes that must be skipped before a subsequent 'readMemory' request will succeed."
+ "description": "The number of unreadable bytes encountered after the last successfully read byte.\nThis can be used to determine the number of bytes that should be skipped before a subsequent `readMemory` request succeeds.",
},
"data": {
"type": "string",
- "description": "The bytes read from memory, encoded using base64."
- }
+ "description": "The bytes read from memory, encoded using base64. If the decoded length of `data` is less than the requested `count` in the original `readMemory` request, and `unreadableBytes` is zero or omitted, then the client should assume it's reached the end of readable memory.",
+ },
},
- "required": [
- "address"
- ]
- }
+ "required": ["address"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param ReadMemoryResponseBody body:
+ :param ReadMemoryResponseBody body:
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -11969,10 +10410,13 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
if body is None:
self.body = ReadMemoryResponseBody()
else:
- self.body = ReadMemoryResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != ReadMemoryResponseBody else body
+ self.body = (
+ ReadMemoryResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != ReadMemoryResponseBody
+ else body
+ )
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -11982,27 +10426,28 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["body"] = body.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
return dct
-@register_request('writeMemory')
+@register_request("writeMemory")
@register
class WriteMemoryRequest(BaseSchema):
"""
Writes bytes to memory at the provided location.
-
- Clients should only call this request if the capability 'supportsWriteMemoryRequest' is true.
+
+ Clients should only call this request if the corresponding capability `supportsWriteMemoryRequest`
+ is true.
Note: automatically generated code. Do not edit manually.
"""
@@ -12010,55 +10455,46 @@ class WriteMemoryRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "writeMemory"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "WriteMemoryArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["writeMemory"]},
+ "arguments": {"type": "WriteMemoryArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param WriteMemoryArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param WriteMemoryArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'writeMemory'
+ self.type = "request"
+ self.command = "writeMemory"
if arguments is None:
self.arguments = WriteMemoryArguments()
else:
- self.arguments = WriteMemoryArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != WriteMemoryArguments else arguments
+ self.arguments = (
+ WriteMemoryArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != WriteMemoryArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -12067,39 +10503,33 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class WriteMemoryArguments(BaseSchema):
"""
- Arguments for 'writeMemory' request.
+ Arguments for `writeMemory` request.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
- "memoryReference": {
- "type": "string",
- "description": "Memory reference to the base location to which data should be written."
- },
+ "memoryReference": {"type": "string", "description": "Memory reference to the base location to which data should be written."},
"offset": {
"type": "integer",
- "description": "Optional offset (in bytes) to be applied to the reference location before writing data. Can be negative."
+ "description": "Offset (in bytes) to be applied to the reference location before writing data. Can be negative.",
},
"allowPartial": {
"type": "boolean",
- "description": "Optional property to control partial writes. If true, the debug adapter should attempt to write memory even if the entire memory region is not writable. In such a case the debug adapter should stop after hitting the first byte of memory that cannot be written and return the number of bytes written in the response via the 'offset' and 'bytesWritten' properties.\nIf false or missing, a debug adapter should attempt to verify the region is writable before writing, and fail the response if it is not."
+ "description": "Property to control partial writes. If True, the debug adapter should attempt to write memory even if the entire memory region is not writable. In such a case the debug adapter should stop after hitting the first byte of memory that cannot be written and return the number of bytes written in the response via the `offset` and `bytesWritten` properties.\nIf false or missing, a debug adapter should attempt to verify the region is writable before writing, and fail the response if it is not.",
},
- "data": {
- "type": "string",
- "description": "Bytes to write, encoded using base64."
- }
+ "data": {"type": "string", "description": "Bytes to write, encoded using base64."},
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, memoryReference, data, offset=None, allowPartial=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param string memoryReference: Memory reference to the base location to which data should be written.
:param string data: Bytes to write, encoded using base64.
- :param integer offset: Optional offset (in bytes) to be applied to the reference location before writing data. Can be negative.
- :param boolean allowPartial: Optional property to control partial writes. If true, the debug adapter should attempt to write memory even if the entire memory region is not writable. In such a case the debug adapter should stop after hitting the first byte of memory that cannot be written and return the number of bytes written in the response via the 'offset' and 'bytesWritten' properties.
+ :param integer offset: Offset (in bytes) to be applied to the reference location before writing data. Can be negative.
+ :param boolean allowPartial: Property to control partial writes. If true, the debug adapter should attempt to write memory even if the entire memory region is not writable. In such a case the debug adapter should stop after hitting the first byte of memory that cannot be written and return the number of bytes written in the response via the `offset` and `bytesWritten` properties.
If false or missing, a debug adapter should attempt to verify the region is writable before writing, and fail the response if it is not.
"""
self.memoryReference = memoryReference
@@ -12108,29 +10538,28 @@ def __init__(self, memoryReference, data, offset=None, allowPartial=None, update
self.allowPartial = allowPartial
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
memoryReference = self.memoryReference
data = self.data
offset = self.offset
allowPartial = self.allowPartial
dct = {
- 'memoryReference': memoryReference,
- 'data': data,
+ "memoryReference": memoryReference,
+ "data": data,
}
if offset is not None:
- dct['offset'] = offset
+ dct["offset"] = offset
if allowPartial is not None:
- dct['allowPartial'] = allowPartial
+ dct["allowPartial"] = allowPartial
dct.update(self.kwargs)
return dct
-@register_response('writeMemory')
+@register_response("writeMemory")
@register
class WriteMemoryResponse(BaseSchema):
"""
- Response to 'writeMemory' request.
+ Response to `writeMemory` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -12138,69 +10567,54 @@ class WriteMemoryResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
"offset": {
"type": "integer",
- "description": "Optional property that should be returned when 'allowPartial' is true to indicate the offset of the first byte of data successfully written. Can be negative."
+ "description": "Property that should be returned when `allowPartial` is True to indicate the offset of the first byte of data successfully written. Can be negative.",
},
"bytesWritten": {
"type": "integer",
- "description": "Optional property that should be returned when 'allowPartial' is true to indicate the number of bytes starting from address that were successfully written."
- }
- }
- }
+ "description": "Property that should be returned when `allowPartial` is True to indicate the number of bytes starting from address that were successfully written.",
+ },
+ },
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param WriteMemoryResponseBody body:
+ :param WriteMemoryResponseBody body:
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -12209,10 +10623,13 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
if body is None:
self.body = WriteMemoryResponseBody()
else:
- self.body = WriteMemoryResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != WriteMemoryResponseBody else body
+ self.body = (
+ WriteMemoryResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != WriteMemoryResponseBody
+ else body
+ )
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -12222,27 +10639,28 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["body"] = body.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
return dct
-@register_request('disassemble')
+@register_request("disassemble")
@register
class DisassembleRequest(BaseSchema):
"""
Disassembles code stored at the provided location.
-
- Clients should only call this request if the capability 'supportsDisassembleRequest' is true.
+
+ Clients should only call this request if the corresponding capability `supportsDisassembleRequest`
+ is true.
Note: automatically generated code. Do not edit manually.
"""
@@ -12250,55 +10668,46 @@ class DisassembleRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "disassemble"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "DisassembleArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["disassemble"]},
+ "arguments": {"type": "DisassembleArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param DisassembleArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param DisassembleArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'disassemble'
+ self.type = "request"
+ self.command = "disassemble"
if arguments is None:
self.arguments = DisassembleArguments()
else:
- self.arguments = DisassembleArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != DisassembleArguments else arguments
+ self.arguments = (
+ DisassembleArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != DisassembleArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -12307,7 +10716,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class DisassembleArguments(BaseSchema):
"""
- Arguments for 'disassemble' request.
+ Arguments for `disassemble` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -12315,36 +10724,45 @@ class DisassembleArguments(BaseSchema):
__props__ = {
"memoryReference": {
"type": "string",
- "description": "Memory reference to the base location containing the instructions to disassemble."
+ "description": "Memory reference to the base location containing the instructions to disassemble.",
},
"offset": {
"type": "integer",
- "description": "Optional offset (in bytes) to be applied to the reference location before disassembling. Can be negative."
+ "description": "Offset (in bytes) to be applied to the reference location before disassembling. Can be negative.",
},
"instructionOffset": {
"type": "integer",
- "description": "Optional offset (in instructions) to be applied after the byte offset (if any) before disassembling. Can be negative."
+ "description": "Offset (in instructions) to be applied after the byte offset (if any) before disassembling. Can be negative.",
},
"instructionCount": {
"type": "integer",
- "description": "Number of instructions to disassemble starting at the specified location and offset.\nAn adapter must return exactly this number of instructions - any unavailable instructions should be replaced with an implementation-defined 'invalid instruction' value."
+ "description": "Number of instructions to disassemble starting at the specified location and offset.\nAn adapter must return exactly this number of instructions - any unavailable instructions should be replaced with an implementation-defined 'invalid instruction' value.",
},
"resolveSymbols": {
"type": "boolean",
- "description": "If true, the adapter should attempt to resolve memory addresses and other values to symbolic names."
- }
+ "description": "If True, the adapter should attempt to resolve memory addresses and other values to symbolic names.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
- def __init__(self, memoryReference, instructionCount, offset=None, instructionOffset=None, resolveSymbols=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ def __init__(
+ self,
+ memoryReference,
+ instructionCount,
+ offset=None,
+ instructionOffset=None,
+ resolveSymbols=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
"""
:param string memoryReference: Memory reference to the base location containing the instructions to disassemble.
:param integer instructionCount: Number of instructions to disassemble starting at the specified location and offset.
An adapter must return exactly this number of instructions - any unavailable instructions should be replaced with an implementation-defined 'invalid instruction' value.
- :param integer offset: Optional offset (in bytes) to be applied to the reference location before disassembling. Can be negative.
- :param integer instructionOffset: Optional offset (in instructions) to be applied after the byte offset (if any) before disassembling. Can be negative.
+ :param integer offset: Offset (in bytes) to be applied to the reference location before disassembling. Can be negative.
+ :param integer instructionOffset: Offset (in instructions) to be applied after the byte offset (if any) before disassembling. Can be negative.
:param boolean resolveSymbols: If true, the adapter should attempt to resolve memory addresses and other values to symbolic names.
"""
self.memoryReference = memoryReference
@@ -12354,7 +10772,6 @@ def __init__(self, memoryReference, instructionCount, offset=None, instructionOf
self.resolveSymbols = resolveSymbols
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
memoryReference = self.memoryReference
instructionCount = self.instructionCount
@@ -12362,24 +10779,24 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
instructionOffset = self.instructionOffset
resolveSymbols = self.resolveSymbols
dct = {
- 'memoryReference': memoryReference,
- 'instructionCount': instructionCount,
+ "memoryReference": memoryReference,
+ "instructionCount": instructionCount,
}
if offset is not None:
- dct['offset'] = offset
+ dct["offset"] = offset
if instructionOffset is not None:
- dct['instructionOffset'] = instructionOffset
+ dct["instructionOffset"] = instructionOffset
if resolveSymbols is not None:
- dct['resolveSymbols'] = resolveSymbols
+ dct["resolveSymbols"] = resolveSymbols
dct.update(self.kwargs)
return dct
-@register_response('disassemble')
+@register_response("disassemble")
@register
class DisassembleResponse(BaseSchema):
"""
- Response to 'disassemble' request.
+ Response to `disassemble` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -12387,71 +10804,52 @@ class DisassembleResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
"instructions": {
"type": "array",
- "items": {
- "$ref": "#/definitions/DisassembledInstruction"
- },
- "description": "The list of disassembled instructions."
+ "items": {"$ref": "#/definitions/DisassembledInstruction"},
+ "description": "The list of disassembled instructions.",
}
},
- "required": [
- "instructions"
- ]
- }
+ "required": ["instructions"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param DisassembleResponseBody body:
+ :param DisassembleResponseBody body:
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -12460,10 +10858,13 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
if body is None:
self.body = DisassembleResponseBody()
else:
- self.body = DisassembleResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != DisassembleResponseBody else body
+ self.body = (
+ DisassembleResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != DisassembleResponseBody
+ else body
+ )
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -12473,16 +10874,16 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["body"] = body.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
return dct
@@ -12498,218 +10899,199 @@ class Capabilities(BaseSchema):
__props__ = {
"supportsConfigurationDoneRequest": {
"type": "boolean",
- "description": "The debug adapter supports the 'configurationDone' request."
- },
- "supportsFunctionBreakpoints": {
- "type": "boolean",
- "description": "The debug adapter supports function breakpoints."
- },
- "supportsConditionalBreakpoints": {
- "type": "boolean",
- "description": "The debug adapter supports conditional breakpoints."
+ "description": "The debug adapter supports the `configurationDone` request.",
},
+ "supportsFunctionBreakpoints": {"type": "boolean", "description": "The debug adapter supports function breakpoints."},
+ "supportsConditionalBreakpoints": {"type": "boolean", "description": "The debug adapter supports conditional breakpoints."},
"supportsHitConditionalBreakpoints": {
"type": "boolean",
- "description": "The debug adapter supports breakpoints that break execution after a specified number of hits."
+ "description": "The debug adapter supports breakpoints that break execution after a specified number of hits.",
},
"supportsEvaluateForHovers": {
"type": "boolean",
- "description": "The debug adapter supports a (side effect free) evaluate request for data hovers."
+ "description": "The debug adapter supports a (side effect free) `evaluate` request for data hovers.",
},
"exceptionBreakpointFilters": {
"type": "array",
- "items": {
- "$ref": "#/definitions/ExceptionBreakpointsFilter"
- },
- "description": "Available exception filter options for the 'setExceptionBreakpoints' request."
+ "items": {"$ref": "#/definitions/ExceptionBreakpointsFilter"},
+ "description": "Available exception filter options for the `setExceptionBreakpoints` request.",
},
"supportsStepBack": {
"type": "boolean",
- "description": "The debug adapter supports stepping back via the 'stepBack' and 'reverseContinue' requests."
- },
- "supportsSetVariable": {
- "type": "boolean",
- "description": "The debug adapter supports setting a variable to a value."
- },
- "supportsRestartFrame": {
- "type": "boolean",
- "description": "The debug adapter supports restarting a frame."
- },
- "supportsGotoTargetsRequest": {
- "type": "boolean",
- "description": "The debug adapter supports the 'gotoTargets' request."
- },
- "supportsStepInTargetsRequest": {
- "type": "boolean",
- "description": "The debug adapter supports the 'stepInTargets' request."
- },
- "supportsCompletionsRequest": {
- "type": "boolean",
- "description": "The debug adapter supports the 'completions' request."
+ "description": "The debug adapter supports stepping back via the `stepBack` and `reverseContinue` requests.",
},
+ "supportsSetVariable": {"type": "boolean", "description": "The debug adapter supports setting a variable to a value."},
+ "supportsRestartFrame": {"type": "boolean", "description": "The debug adapter supports restarting a frame."},
+ "supportsGotoTargetsRequest": {"type": "boolean", "description": "The debug adapter supports the `gotoTargets` request."},
+ "supportsStepInTargetsRequest": {"type": "boolean", "description": "The debug adapter supports the `stepInTargets` request."},
+ "supportsCompletionsRequest": {"type": "boolean", "description": "The debug adapter supports the `completions` request."},
"completionTriggerCharacters": {
"type": "array",
- "items": {
- "type": "string"
- },
- "description": "The set of characters that should trigger completion in a REPL. If not specified, the UI should assume the '.' character."
- },
- "supportsModulesRequest": {
- "type": "boolean",
- "description": "The debug adapter supports the 'modules' request."
+ "items": {"type": "string"},
+ "description": "The set of characters that should trigger completion in a REPL. If not specified, the UI should assume the `.` character.",
},
+ "supportsModulesRequest": {"type": "boolean", "description": "The debug adapter supports the `modules` request."},
"additionalModuleColumns": {
"type": "array",
- "items": {
- "$ref": "#/definitions/ColumnDescriptor"
- },
- "description": "The set of additional module information exposed by the debug adapter."
+ "items": {"$ref": "#/definitions/ColumnDescriptor"},
+ "description": "The set of additional module information exposed by the debug adapter.",
},
"supportedChecksumAlgorithms": {
"type": "array",
- "items": {
- "$ref": "#/definitions/ChecksumAlgorithm"
- },
- "description": "Checksum algorithms supported by the debug adapter."
+ "items": {"$ref": "#/definitions/ChecksumAlgorithm"},
+ "description": "Checksum algorithms supported by the debug adapter.",
},
"supportsRestartRequest": {
"type": "boolean",
- "description": "The debug adapter supports the 'restart' request. In this case a client should not implement 'restart' by terminating and relaunching the adapter but by calling the RestartRequest."
+ "description": "The debug adapter supports the `restart` request. In this case a client should not implement `restart` by terminating and relaunching the adapter but by calling the `restart` request.",
},
"supportsExceptionOptions": {
"type": "boolean",
- "description": "The debug adapter supports 'exceptionOptions' on the setExceptionBreakpoints request."
+ "description": "The debug adapter supports `exceptionOptions` on the `setExceptionBreakpoints` request.",
},
"supportsValueFormattingOptions": {
"type": "boolean",
- "description": "The debug adapter supports a 'format' attribute on the stackTraceRequest, variablesRequest, and evaluateRequest."
- },
- "supportsExceptionInfoRequest": {
- "type": "boolean",
- "description": "The debug adapter supports the 'exceptionInfo' request."
+ "description": "The debug adapter supports a `format` attribute on the `stackTrace`, `variables`, and `evaluate` requests.",
},
+ "supportsExceptionInfoRequest": {"type": "boolean", "description": "The debug adapter supports the `exceptionInfo` request."},
"supportTerminateDebuggee": {
"type": "boolean",
- "description": "The debug adapter supports the 'terminateDebuggee' attribute on the 'disconnect' request."
+ "description": "The debug adapter supports the `terminateDebuggee` attribute on the `disconnect` request.",
},
"supportSuspendDebuggee": {
"type": "boolean",
- "description": "The debug adapter supports the 'suspendDebuggee' attribute on the 'disconnect' request."
+ "description": "The debug adapter supports the `suspendDebuggee` attribute on the `disconnect` request.",
},
"supportsDelayedStackTraceLoading": {
"type": "boolean",
- "description": "The debug adapter supports the delayed loading of parts of the stack, which requires that both the 'startFrame' and 'levels' arguments and an optional 'totalFrames' result of the 'StackTrace' request are supported."
- },
- "supportsLoadedSourcesRequest": {
- "type": "boolean",
- "description": "The debug adapter supports the 'loadedSources' request."
+ "description": "The debug adapter supports the delayed loading of parts of the stack, which requires that both the `startFrame` and `levels` arguments and the `totalFrames` result of the `stackTrace` request are supported.",
},
+ "supportsLoadedSourcesRequest": {"type": "boolean", "description": "The debug adapter supports the `loadedSources` request."},
"supportsLogPoints": {
"type": "boolean",
- "description": "The debug adapter supports logpoints by interpreting the 'logMessage' attribute of the SourceBreakpoint."
- },
- "supportsTerminateThreadsRequest": {
- "type": "boolean",
- "description": "The debug adapter supports the 'terminateThreads' request."
- },
- "supportsSetExpression": {
- "type": "boolean",
- "description": "The debug adapter supports the 'setExpression' request."
- },
- "supportsTerminateRequest": {
- "type": "boolean",
- "description": "The debug adapter supports the 'terminate' request."
- },
- "supportsDataBreakpoints": {
- "type": "boolean",
- "description": "The debug adapter supports data breakpoints."
- },
- "supportsReadMemoryRequest": {
- "type": "boolean",
- "description": "The debug adapter supports the 'readMemory' request."
- },
- "supportsWriteMemoryRequest": {
- "type": "boolean",
- "description": "The debug adapter supports the 'writeMemory' request."
- },
- "supportsDisassembleRequest": {
- "type": "boolean",
- "description": "The debug adapter supports the 'disassemble' request."
- },
- "supportsCancelRequest": {
- "type": "boolean",
- "description": "The debug adapter supports the 'cancel' request."
- },
+ "description": "The debug adapter supports log points by interpreting the `logMessage` attribute of the `SourceBreakpoint`.",
+ },
+ "supportsTerminateThreadsRequest": {"type": "boolean", "description": "The debug adapter supports the `terminateThreads` request."},
+ "supportsSetExpression": {"type": "boolean", "description": "The debug adapter supports the `setExpression` request."},
+ "supportsTerminateRequest": {"type": "boolean", "description": "The debug adapter supports the `terminate` request."},
+ "supportsDataBreakpoints": {"type": "boolean", "description": "The debug adapter supports data breakpoints."},
+ "supportsReadMemoryRequest": {"type": "boolean", "description": "The debug adapter supports the `readMemory` request."},
+ "supportsWriteMemoryRequest": {"type": "boolean", "description": "The debug adapter supports the `writeMemory` request."},
+ "supportsDisassembleRequest": {"type": "boolean", "description": "The debug adapter supports the `disassemble` request."},
+ "supportsCancelRequest": {"type": "boolean", "description": "The debug adapter supports the `cancel` request."},
"supportsBreakpointLocationsRequest": {
"type": "boolean",
- "description": "The debug adapter supports the 'breakpointLocations' request."
+ "description": "The debug adapter supports the `breakpointLocations` request.",
},
"supportsClipboardContext": {
"type": "boolean",
- "description": "The debug adapter supports the 'clipboard' context value in the 'evaluate' request."
+ "description": "The debug adapter supports the `clipboard` context value in the `evaluate` request.",
},
"supportsSteppingGranularity": {
"type": "boolean",
- "description": "The debug adapter supports stepping granularities (argument 'granularity') for the stepping requests."
+ "description": "The debug adapter supports stepping granularities (argument `granularity`) for the stepping requests.",
},
"supportsInstructionBreakpoints": {
"type": "boolean",
- "description": "The debug adapter supports adding breakpoints based on instruction references."
+ "description": "The debug adapter supports adding breakpoints based on instruction references.",
},
"supportsExceptionFilterOptions": {
"type": "boolean",
- "description": "The debug adapter supports 'filterOptions' as an argument on the 'setExceptionBreakpoints' request."
+ "description": "The debug adapter supports `filterOptions` as an argument on the `setExceptionBreakpoints` request.",
},
"supportsSingleThreadExecutionRequests": {
"type": "boolean",
- "description": "The debug adapter supports the 'singleThread' property on the execution requests ('continue', 'next', 'stepIn', 'stepOut', 'reverseContinue', 'stepBack')."
- }
+ "description": "The debug adapter supports the `singleThread` property on the execution requests (`continue`, `next`, `stepIn`, `stepOut`, `reverseContinue`, `stepBack`).",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
-
- def __init__(self, supportsConfigurationDoneRequest=None, supportsFunctionBreakpoints=None, supportsConditionalBreakpoints=None, supportsHitConditionalBreakpoints=None, supportsEvaluateForHovers=None, exceptionBreakpointFilters=None, supportsStepBack=None, supportsSetVariable=None, supportsRestartFrame=None, supportsGotoTargetsRequest=None, supportsStepInTargetsRequest=None, supportsCompletionsRequest=None, completionTriggerCharacters=None, supportsModulesRequest=None, additionalModuleColumns=None, supportedChecksumAlgorithms=None, supportsRestartRequest=None, supportsExceptionOptions=None, supportsValueFormattingOptions=None, supportsExceptionInfoRequest=None, supportTerminateDebuggee=None, supportSuspendDebuggee=None, supportsDelayedStackTraceLoading=None, supportsLoadedSourcesRequest=None, supportsLogPoints=None, supportsTerminateThreadsRequest=None, supportsSetExpression=None, supportsTerminateRequest=None, supportsDataBreakpoints=None, supportsReadMemoryRequest=None, supportsWriteMemoryRequest=None, supportsDisassembleRequest=None, supportsCancelRequest=None, supportsBreakpointLocationsRequest=None, supportsClipboardContext=None, supportsSteppingGranularity=None, supportsInstructionBreakpoints=None, supportsExceptionFilterOptions=None, supportsSingleThreadExecutionRequests=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
- """
- :param boolean supportsConfigurationDoneRequest: The debug adapter supports the 'configurationDone' request.
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(
+ self,
+ supportsConfigurationDoneRequest=None,
+ supportsFunctionBreakpoints=None,
+ supportsConditionalBreakpoints=None,
+ supportsHitConditionalBreakpoints=None,
+ supportsEvaluateForHovers=None,
+ exceptionBreakpointFilters=None,
+ supportsStepBack=None,
+ supportsSetVariable=None,
+ supportsRestartFrame=None,
+ supportsGotoTargetsRequest=None,
+ supportsStepInTargetsRequest=None,
+ supportsCompletionsRequest=None,
+ completionTriggerCharacters=None,
+ supportsModulesRequest=None,
+ additionalModuleColumns=None,
+ supportedChecksumAlgorithms=None,
+ supportsRestartRequest=None,
+ supportsExceptionOptions=None,
+ supportsValueFormattingOptions=None,
+ supportsExceptionInfoRequest=None,
+ supportTerminateDebuggee=None,
+ supportSuspendDebuggee=None,
+ supportsDelayedStackTraceLoading=None,
+ supportsLoadedSourcesRequest=None,
+ supportsLogPoints=None,
+ supportsTerminateThreadsRequest=None,
+ supportsSetExpression=None,
+ supportsTerminateRequest=None,
+ supportsDataBreakpoints=None,
+ supportsReadMemoryRequest=None,
+ supportsWriteMemoryRequest=None,
+ supportsDisassembleRequest=None,
+ supportsCancelRequest=None,
+ supportsBreakpointLocationsRequest=None,
+ supportsClipboardContext=None,
+ supportsSteppingGranularity=None,
+ supportsInstructionBreakpoints=None,
+ supportsExceptionFilterOptions=None,
+ supportsSingleThreadExecutionRequests=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
+ """
+ :param boolean supportsConfigurationDoneRequest: The debug adapter supports the `configurationDone` request.
:param boolean supportsFunctionBreakpoints: The debug adapter supports function breakpoints.
:param boolean supportsConditionalBreakpoints: The debug adapter supports conditional breakpoints.
:param boolean supportsHitConditionalBreakpoints: The debug adapter supports breakpoints that break execution after a specified number of hits.
- :param boolean supportsEvaluateForHovers: The debug adapter supports a (side effect free) evaluate request for data hovers.
- :param array exceptionBreakpointFilters: Available exception filter options for the 'setExceptionBreakpoints' request.
- :param boolean supportsStepBack: The debug adapter supports stepping back via the 'stepBack' and 'reverseContinue' requests.
+ :param boolean supportsEvaluateForHovers: The debug adapter supports a (side effect free) `evaluate` request for data hovers.
+ :param array exceptionBreakpointFilters: Available exception filter options for the `setExceptionBreakpoints` request.
+ :param boolean supportsStepBack: The debug adapter supports stepping back via the `stepBack` and `reverseContinue` requests.
:param boolean supportsSetVariable: The debug adapter supports setting a variable to a value.
:param boolean supportsRestartFrame: The debug adapter supports restarting a frame.
- :param boolean supportsGotoTargetsRequest: The debug adapter supports the 'gotoTargets' request.
- :param boolean supportsStepInTargetsRequest: The debug adapter supports the 'stepInTargets' request.
- :param boolean supportsCompletionsRequest: The debug adapter supports the 'completions' request.
- :param array completionTriggerCharacters: The set of characters that should trigger completion in a REPL. If not specified, the UI should assume the '.' character.
- :param boolean supportsModulesRequest: The debug adapter supports the 'modules' request.
+ :param boolean supportsGotoTargetsRequest: The debug adapter supports the `gotoTargets` request.
+ :param boolean supportsStepInTargetsRequest: The debug adapter supports the `stepInTargets` request.
+ :param boolean supportsCompletionsRequest: The debug adapter supports the `completions` request.
+ :param array completionTriggerCharacters: The set of characters that should trigger completion in a REPL. If not specified, the UI should assume the `.` character.
+ :param boolean supportsModulesRequest: The debug adapter supports the `modules` request.
:param array additionalModuleColumns: The set of additional module information exposed by the debug adapter.
:param array supportedChecksumAlgorithms: Checksum algorithms supported by the debug adapter.
- :param boolean supportsRestartRequest: The debug adapter supports the 'restart' request. In this case a client should not implement 'restart' by terminating and relaunching the adapter but by calling the RestartRequest.
- :param boolean supportsExceptionOptions: The debug adapter supports 'exceptionOptions' on the setExceptionBreakpoints request.
- :param boolean supportsValueFormattingOptions: The debug adapter supports a 'format' attribute on the stackTraceRequest, variablesRequest, and evaluateRequest.
- :param boolean supportsExceptionInfoRequest: The debug adapter supports the 'exceptionInfo' request.
- :param boolean supportTerminateDebuggee: The debug adapter supports the 'terminateDebuggee' attribute on the 'disconnect' request.
- :param boolean supportSuspendDebuggee: The debug adapter supports the 'suspendDebuggee' attribute on the 'disconnect' request.
- :param boolean supportsDelayedStackTraceLoading: The debug adapter supports the delayed loading of parts of the stack, which requires that both the 'startFrame' and 'levels' arguments and an optional 'totalFrames' result of the 'StackTrace' request are supported.
- :param boolean supportsLoadedSourcesRequest: The debug adapter supports the 'loadedSources' request.
- :param boolean supportsLogPoints: The debug adapter supports logpoints by interpreting the 'logMessage' attribute of the SourceBreakpoint.
- :param boolean supportsTerminateThreadsRequest: The debug adapter supports the 'terminateThreads' request.
- :param boolean supportsSetExpression: The debug adapter supports the 'setExpression' request.
- :param boolean supportsTerminateRequest: The debug adapter supports the 'terminate' request.
+ :param boolean supportsRestartRequest: The debug adapter supports the `restart` request. In this case a client should not implement `restart` by terminating and relaunching the adapter but by calling the `restart` request.
+ :param boolean supportsExceptionOptions: The debug adapter supports `exceptionOptions` on the `setExceptionBreakpoints` request.
+ :param boolean supportsValueFormattingOptions: The debug adapter supports a `format` attribute on the `stackTrace`, `variables`, and `evaluate` requests.
+ :param boolean supportsExceptionInfoRequest: The debug adapter supports the `exceptionInfo` request.
+ :param boolean supportTerminateDebuggee: The debug adapter supports the `terminateDebuggee` attribute on the `disconnect` request.
+ :param boolean supportSuspendDebuggee: The debug adapter supports the `suspendDebuggee` attribute on the `disconnect` request.
+ :param boolean supportsDelayedStackTraceLoading: The debug adapter supports the delayed loading of parts of the stack, which requires that both the `startFrame` and `levels` arguments and the `totalFrames` result of the `stackTrace` request are supported.
+ :param boolean supportsLoadedSourcesRequest: The debug adapter supports the `loadedSources` request.
+ :param boolean supportsLogPoints: The debug adapter supports log points by interpreting the `logMessage` attribute of the `SourceBreakpoint`.
+ :param boolean supportsTerminateThreadsRequest: The debug adapter supports the `terminateThreads` request.
+ :param boolean supportsSetExpression: The debug adapter supports the `setExpression` request.
+ :param boolean supportsTerminateRequest: The debug adapter supports the `terminate` request.
:param boolean supportsDataBreakpoints: The debug adapter supports data breakpoints.
- :param boolean supportsReadMemoryRequest: The debug adapter supports the 'readMemory' request.
- :param boolean supportsWriteMemoryRequest: The debug adapter supports the 'writeMemory' request.
- :param boolean supportsDisassembleRequest: The debug adapter supports the 'disassemble' request.
- :param boolean supportsCancelRequest: The debug adapter supports the 'cancel' request.
- :param boolean supportsBreakpointLocationsRequest: The debug adapter supports the 'breakpointLocations' request.
- :param boolean supportsClipboardContext: The debug adapter supports the 'clipboard' context value in the 'evaluate' request.
- :param boolean supportsSteppingGranularity: The debug adapter supports stepping granularities (argument 'granularity') for the stepping requests.
+ :param boolean supportsReadMemoryRequest: The debug adapter supports the `readMemory` request.
+ :param boolean supportsWriteMemoryRequest: The debug adapter supports the `writeMemory` request.
+ :param boolean supportsDisassembleRequest: The debug adapter supports the `disassemble` request.
+ :param boolean supportsCancelRequest: The debug adapter supports the `cancel` request.
+ :param boolean supportsBreakpointLocationsRequest: The debug adapter supports the `breakpointLocations` request.
+ :param boolean supportsClipboardContext: The debug adapter supports the `clipboard` context value in the `evaluate` request.
+ :param boolean supportsSteppingGranularity: The debug adapter supports stepping granularities (argument `granularity`) for the stepping requests.
:param boolean supportsInstructionBreakpoints: The debug adapter supports adding breakpoints based on instruction references.
- :param boolean supportsExceptionFilterOptions: The debug adapter supports 'filterOptions' as an argument on the 'setExceptionBreakpoints' request.
- :param boolean supportsSingleThreadExecutionRequests: The debug adapter supports the 'singleThread' property on the execution requests ('continue', 'next', 'stepIn', 'stepOut', 'reverseContinue', 'stepBack').
+ :param boolean supportsExceptionFilterOptions: The debug adapter supports `filterOptions` as an argument on the `setExceptionBreakpoints` request.
+ :param boolean supportsSingleThreadExecutionRequests: The debug adapter supports the `singleThread` property on the execution requests (`continue`, `next`, `stepIn`, `stepOut`, `reverseContinue`, `stepBack`).
"""
self.supportsConfigurationDoneRequest = supportsConfigurationDoneRequest
self.supportsFunctionBreakpoints = supportsFunctionBreakpoints
@@ -12761,7 +11143,6 @@ def __init__(self, supportsConfigurationDoneRequest=None, supportsFunctionBreakp
self.supportsSingleThreadExecutionRequests = supportsSingleThreadExecutionRequests
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
supportsConfigurationDoneRequest = self.supportsConfigurationDoneRequest
supportsFunctionBreakpoints = self.supportsFunctionBreakpoints
@@ -12810,86 +11191,97 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
supportsInstructionBreakpoints = self.supportsInstructionBreakpoints
supportsExceptionFilterOptions = self.supportsExceptionFilterOptions
supportsSingleThreadExecutionRequests = self.supportsSingleThreadExecutionRequests
- dct = {
- }
+ dct = {}
if supportsConfigurationDoneRequest is not None:
- dct['supportsConfigurationDoneRequest'] = supportsConfigurationDoneRequest
+ dct["supportsConfigurationDoneRequest"] = supportsConfigurationDoneRequest
if supportsFunctionBreakpoints is not None:
- dct['supportsFunctionBreakpoints'] = supportsFunctionBreakpoints
+ dct["supportsFunctionBreakpoints"] = supportsFunctionBreakpoints
if supportsConditionalBreakpoints is not None:
- dct['supportsConditionalBreakpoints'] = supportsConditionalBreakpoints
+ dct["supportsConditionalBreakpoints"] = supportsConditionalBreakpoints
if supportsHitConditionalBreakpoints is not None:
- dct['supportsHitConditionalBreakpoints'] = supportsHitConditionalBreakpoints
+ dct["supportsHitConditionalBreakpoints"] = supportsHitConditionalBreakpoints
if supportsEvaluateForHovers is not None:
- dct['supportsEvaluateForHovers'] = supportsEvaluateForHovers
+ dct["supportsEvaluateForHovers"] = supportsEvaluateForHovers
if exceptionBreakpointFilters is not None:
- dct['exceptionBreakpointFilters'] = [ExceptionBreakpointsFilter.update_dict_ids_to_dap(o) for o in exceptionBreakpointFilters] if (update_ids_to_dap and exceptionBreakpointFilters) else exceptionBreakpointFilters
+ dct["exceptionBreakpointFilters"] = (
+ [ExceptionBreakpointsFilter.update_dict_ids_to_dap(o) for o in exceptionBreakpointFilters]
+ if (update_ids_to_dap and exceptionBreakpointFilters)
+ else exceptionBreakpointFilters
+ )
if supportsStepBack is not None:
- dct['supportsStepBack'] = supportsStepBack
+ dct["supportsStepBack"] = supportsStepBack
if supportsSetVariable is not None:
- dct['supportsSetVariable'] = supportsSetVariable
+ dct["supportsSetVariable"] = supportsSetVariable
if supportsRestartFrame is not None:
- dct['supportsRestartFrame'] = supportsRestartFrame
+ dct["supportsRestartFrame"] = supportsRestartFrame
if supportsGotoTargetsRequest is not None:
- dct['supportsGotoTargetsRequest'] = supportsGotoTargetsRequest
+ dct["supportsGotoTargetsRequest"] = supportsGotoTargetsRequest
if supportsStepInTargetsRequest is not None:
- dct['supportsStepInTargetsRequest'] = supportsStepInTargetsRequest
+ dct["supportsStepInTargetsRequest"] = supportsStepInTargetsRequest
if supportsCompletionsRequest is not None:
- dct['supportsCompletionsRequest'] = supportsCompletionsRequest
+ dct["supportsCompletionsRequest"] = supportsCompletionsRequest
if completionTriggerCharacters is not None:
- dct['completionTriggerCharacters'] = completionTriggerCharacters
+ dct["completionTriggerCharacters"] = completionTriggerCharacters
if supportsModulesRequest is not None:
- dct['supportsModulesRequest'] = supportsModulesRequest
+ dct["supportsModulesRequest"] = supportsModulesRequest
if additionalModuleColumns is not None:
- dct['additionalModuleColumns'] = [ColumnDescriptor.update_dict_ids_to_dap(o) for o in additionalModuleColumns] if (update_ids_to_dap and additionalModuleColumns) else additionalModuleColumns
+ dct["additionalModuleColumns"] = (
+ [ColumnDescriptor.update_dict_ids_to_dap(o) for o in additionalModuleColumns]
+ if (update_ids_to_dap and additionalModuleColumns)
+ else additionalModuleColumns
+ )
if supportedChecksumAlgorithms is not None:
- dct['supportedChecksumAlgorithms'] = [ChecksumAlgorithm.update_dict_ids_to_dap(o) for o in supportedChecksumAlgorithms] if (update_ids_to_dap and supportedChecksumAlgorithms) else supportedChecksumAlgorithms
+ dct["supportedChecksumAlgorithms"] = (
+ [ChecksumAlgorithm.update_dict_ids_to_dap(o) for o in supportedChecksumAlgorithms]
+ if (update_ids_to_dap and supportedChecksumAlgorithms)
+ else supportedChecksumAlgorithms
+ )
if supportsRestartRequest is not None:
- dct['supportsRestartRequest'] = supportsRestartRequest
+ dct["supportsRestartRequest"] = supportsRestartRequest
if supportsExceptionOptions is not None:
- dct['supportsExceptionOptions'] = supportsExceptionOptions
+ dct["supportsExceptionOptions"] = supportsExceptionOptions
if supportsValueFormattingOptions is not None:
- dct['supportsValueFormattingOptions'] = supportsValueFormattingOptions
+ dct["supportsValueFormattingOptions"] = supportsValueFormattingOptions
if supportsExceptionInfoRequest is not None:
- dct['supportsExceptionInfoRequest'] = supportsExceptionInfoRequest
+ dct["supportsExceptionInfoRequest"] = supportsExceptionInfoRequest
if supportTerminateDebuggee is not None:
- dct['supportTerminateDebuggee'] = supportTerminateDebuggee
+ dct["supportTerminateDebuggee"] = supportTerminateDebuggee
if supportSuspendDebuggee is not None:
- dct['supportSuspendDebuggee'] = supportSuspendDebuggee
+ dct["supportSuspendDebuggee"] = supportSuspendDebuggee
if supportsDelayedStackTraceLoading is not None:
- dct['supportsDelayedStackTraceLoading'] = supportsDelayedStackTraceLoading
+ dct["supportsDelayedStackTraceLoading"] = supportsDelayedStackTraceLoading
if supportsLoadedSourcesRequest is not None:
- dct['supportsLoadedSourcesRequest'] = supportsLoadedSourcesRequest
+ dct["supportsLoadedSourcesRequest"] = supportsLoadedSourcesRequest
if supportsLogPoints is not None:
- dct['supportsLogPoints'] = supportsLogPoints
+ dct["supportsLogPoints"] = supportsLogPoints
if supportsTerminateThreadsRequest is not None:
- dct['supportsTerminateThreadsRequest'] = supportsTerminateThreadsRequest
+ dct["supportsTerminateThreadsRequest"] = supportsTerminateThreadsRequest
if supportsSetExpression is not None:
- dct['supportsSetExpression'] = supportsSetExpression
+ dct["supportsSetExpression"] = supportsSetExpression
if supportsTerminateRequest is not None:
- dct['supportsTerminateRequest'] = supportsTerminateRequest
+ dct["supportsTerminateRequest"] = supportsTerminateRequest
if supportsDataBreakpoints is not None:
- dct['supportsDataBreakpoints'] = supportsDataBreakpoints
+ dct["supportsDataBreakpoints"] = supportsDataBreakpoints
if supportsReadMemoryRequest is not None:
- dct['supportsReadMemoryRequest'] = supportsReadMemoryRequest
+ dct["supportsReadMemoryRequest"] = supportsReadMemoryRequest
if supportsWriteMemoryRequest is not None:
- dct['supportsWriteMemoryRequest'] = supportsWriteMemoryRequest
+ dct["supportsWriteMemoryRequest"] = supportsWriteMemoryRequest
if supportsDisassembleRequest is not None:
- dct['supportsDisassembleRequest'] = supportsDisassembleRequest
+ dct["supportsDisassembleRequest"] = supportsDisassembleRequest
if supportsCancelRequest is not None:
- dct['supportsCancelRequest'] = supportsCancelRequest
+ dct["supportsCancelRequest"] = supportsCancelRequest
if supportsBreakpointLocationsRequest is not None:
- dct['supportsBreakpointLocationsRequest'] = supportsBreakpointLocationsRequest
+ dct["supportsBreakpointLocationsRequest"] = supportsBreakpointLocationsRequest
if supportsClipboardContext is not None:
- dct['supportsClipboardContext'] = supportsClipboardContext
+ dct["supportsClipboardContext"] = supportsClipboardContext
if supportsSteppingGranularity is not None:
- dct['supportsSteppingGranularity'] = supportsSteppingGranularity
+ dct["supportsSteppingGranularity"] = supportsSteppingGranularity
if supportsInstructionBreakpoints is not None:
- dct['supportsInstructionBreakpoints'] = supportsInstructionBreakpoints
+ dct["supportsInstructionBreakpoints"] = supportsInstructionBreakpoints
if supportsExceptionFilterOptions is not None:
- dct['supportsExceptionFilterOptions'] = supportsExceptionFilterOptions
+ dct["supportsExceptionFilterOptions"] = supportsExceptionFilterOptions
if supportsSingleThreadExecutionRequests is not None:
- dct['supportsSingleThreadExecutionRequests'] = supportsSingleThreadExecutionRequests
+ dct["supportsSingleThreadExecutionRequests"] = supportsSingleThreadExecutionRequests
dct.update(self.kwargs)
return dct
@@ -12897,8 +11289,8 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class ExceptionBreakpointsFilter(BaseSchema):
"""
- An ExceptionBreakpointsFilter is shown in the UI as an filter option for configuring how exceptions
- are dealt with.
+ An `ExceptionBreakpointsFilter` is shown in the UI as an filter option for configuring how
+ exceptions are dealt with.
Note: automatically generated code. Do not edit manually.
"""
@@ -12906,41 +11298,45 @@ class ExceptionBreakpointsFilter(BaseSchema):
__props__ = {
"filter": {
"type": "string",
- "description": "The internal ID of the filter option. This value is passed to the 'setExceptionBreakpoints' request."
- },
- "label": {
- "type": "string",
- "description": "The name of the filter option. This will be shown in the UI."
+ "description": "The internal ID of the filter option. This value is passed to the `setExceptionBreakpoints` request.",
},
+ "label": {"type": "string", "description": "The name of the filter option. This is shown in the UI."},
"description": {
"type": "string",
- "description": "An optional help text providing additional information about the exception filter. This string is typically shown as a hover and must be translated."
- },
- "default": {
- "type": "boolean",
- "description": "Initial value of the filter option. If not specified a value 'false' is assumed."
+ "description": "A help text providing additional information about the exception filter. This string is typically shown as a hover and can be translated.",
},
+ "default": {"type": "boolean", "description": "Initial value of the filter option. If not specified a value false is assumed."},
"supportsCondition": {
"type": "boolean",
- "description": "Controls whether a condition can be specified for this filter option. If false or missing, a condition can not be set."
+ "description": "Controls whether a condition can be specified for this filter option. If false or missing, a condition can not be set.",
},
"conditionDescription": {
"type": "string",
- "description": "An optional help text providing information about the condition. This string is shown as the placeholder text for a text box and must be translated."
- }
+ "description": "A help text providing information about the condition. This string is shown as the placeholder text for a text box and can be translated.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
-
- def __init__(self, filter, label, description=None, default=None, supportsCondition=None, conditionDescription=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
- """
- :param string filter: The internal ID of the filter option. This value is passed to the 'setExceptionBreakpoints' request.
- :param string label: The name of the filter option. This will be shown in the UI.
- :param string description: An optional help text providing additional information about the exception filter. This string is typically shown as a hover and must be translated.
- :param boolean default: Initial value of the filter option. If not specified a value 'false' is assumed.
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(
+ self,
+ filter,
+ label,
+ description=None,
+ default=None,
+ supportsCondition=None,
+ conditionDescription=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
+ """
+ :param string filter: The internal ID of the filter option. This value is passed to the `setExceptionBreakpoints` request.
+ :param string label: The name of the filter option. This is shown in the UI.
+ :param string description: A help text providing additional information about the exception filter. This string is typically shown as a hover and can be translated.
+ :param boolean default: Initial value of the filter option. If not specified a value false is assumed.
:param boolean supportsCondition: Controls whether a condition can be specified for this filter option. If false or missing, a condition can not be set.
- :param string conditionDescription: An optional help text providing information about the condition. This string is shown as the placeholder text for a text box and must be translated.
+ :param string conditionDescription: A help text providing information about the condition. This string is shown as the placeholder text for a text box and can be translated.
"""
self.filter = filter
self.label = label
@@ -12950,7 +11346,6 @@ def __init__(self, filter, label, description=None, default=None, supportsCondit
self.conditionDescription = conditionDescription
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
filter = self.filter # noqa (assign to builtin)
label = self.label
@@ -12959,17 +11354,17 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
supportsCondition = self.supportsCondition
conditionDescription = self.conditionDescription
dct = {
- 'filter': filter,
- 'label': label,
+ "filter": filter,
+ "label": label,
}
if description is not None:
- dct['description'] = description
+ dct["description"] = description
if default is not None:
- dct['default'] = default
+ dct["default"] = default
if supportsCondition is not None:
- dct['supportsCondition'] = supportsCondition
+ dct["supportsCondition"] = supportsCondition
if conditionDescription is not None:
- dct['conditionDescription'] = conditionDescription
+ dct["conditionDescription"] = conditionDescription
dct.update(self.kwargs)
return dct
@@ -12985,65 +11380,55 @@ class Message(BaseSchema):
__props__ = {
"id": {
"type": "integer",
- "description": "Unique identifier for the message."
+ "description": "Unique (within a debug adapter implementation) identifier for the message. The purpose of these error IDs is to help extension authors that have the requirement that every user visible error message needs a corresponding error number, so that users or customer support can find information about the specific error more easily.",
},
"format": {
"type": "string",
- "description": "A format string for the message. Embedded variables have the form '{name}'.\nIf variable name starts with an underscore character, the variable does not contain user data (PII) and can be safely used for telemetry purposes."
+ "description": "A format string for the message. Embedded variables have the form `{name}`.\nIf variable name starts with an underscore character, the variable does not contain user data (PII) and can be safely used for telemetry purposes.",
},
"variables": {
"type": "object",
"description": "An object used as a dictionary for looking up the variables in the format string.",
- "additionalProperties": {
- "type": "string",
- "description": "Values must be strings."
- }
- },
- "sendTelemetry": {
- "type": "boolean",
- "description": "If true send to telemetry."
- },
- "showUser": {
- "type": "boolean",
- "description": "If true show user."
+ "additionalProperties": {"type": "string", "description": "All dictionary values must be strings."},
},
- "url": {
- "type": "string",
- "description": "An optional url where additional information about this message can be found."
- },
- "urlLabel": {
- "type": "string",
- "description": "An optional label that is presented to the user as the UI for opening the url."
- }
+ "sendTelemetry": {"type": "boolean", "description": "If True send to telemetry."},
+ "showUser": {"type": "boolean", "description": "If True show user."},
+ "url": {"type": "string", "description": "A url where additional information about this message can be found."},
+ "urlLabel": {"type": "string", "description": "A label that is presented to the user as the UI for opening the url."},
}
- __refs__ = set(['variables'])
+ __refs__ = set(["variables"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
- def __init__(self, id, format, variables=None, sendTelemetry=None, showUser=None, url=None, urlLabel=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ def __init__(
+ self, id, format, variables=None, sendTelemetry=None, showUser=None, url=None, urlLabel=None, update_ids_from_dap=False, **kwargs
+ ): # noqa (update_ids_from_dap may be unused)
"""
- :param integer id: Unique identifier for the message.
- :param string format: A format string for the message. Embedded variables have the form '{name}'.
+ :param integer id: Unique (within a debug adapter implementation) identifier for the message. The purpose of these error IDs is to help extension authors that have the requirement that every user visible error message needs a corresponding error number, so that users or customer support can find information about the specific error more easily.
+ :param string format: A format string for the message. Embedded variables have the form `{name}`.
If variable name starts with an underscore character, the variable does not contain user data (PII) and can be safely used for telemetry purposes.
:param MessageVariables variables: An object used as a dictionary for looking up the variables in the format string.
:param boolean sendTelemetry: If true send to telemetry.
:param boolean showUser: If true show user.
- :param string url: An optional url where additional information about this message can be found.
- :param string urlLabel: An optional label that is presented to the user as the UI for opening the url.
+ :param string url: A url where additional information about this message can be found.
+ :param string urlLabel: A label that is presented to the user as the UI for opening the url.
"""
self.id = id
self.format = format
if variables is None:
self.variables = MessageVariables()
else:
- self.variables = MessageVariables(update_ids_from_dap=update_ids_from_dap, **variables) if variables.__class__ != MessageVariables else variables
+ self.variables = (
+ MessageVariables(update_ids_from_dap=update_ids_from_dap, **variables)
+ if variables.__class__ != MessageVariables
+ else variables
+ )
self.sendTelemetry = sendTelemetry
self.showUser = showUser
self.url = url
self.urlLabel = urlLabel
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
id = self.id # noqa (assign to builtin)
format = self.format # noqa (assign to builtin)
@@ -13053,19 +11438,19 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
url = self.url
urlLabel = self.urlLabel
dct = {
- 'id': id,
- 'format': format,
+ "id": id,
+ "format": format,
}
if variables is not None:
- dct['variables'] = variables.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["variables"] = variables.to_dict(update_ids_to_dap=update_ids_to_dap)
if sendTelemetry is not None:
- dct['sendTelemetry'] = sendTelemetry
+ dct["sendTelemetry"] = sendTelemetry
if showUser is not None:
- dct['showUser'] = showUser
+ dct["showUser"] = showUser
if url is not None:
- dct['url'] = url
+ dct["url"] = url
if urlLabel is not None:
- dct['urlLabel'] = urlLabel
+ dct["urlLabel"] = urlLabel
dct.update(self.kwargs)
return dct
@@ -13074,89 +11459,77 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
class Module(BaseSchema):
"""
A Module object represents a row in the modules view.
-
- Two attributes are mandatory: an id identifies a module in the modules view and is used in a
- ModuleEvent for identifying a module for adding, updating or deleting.
-
- The name is used to minimally render the module in the UI.
-
-
- Additional attributes can be added to the module. They will show up in the module View if they have
- a corresponding ColumnDescriptor.
-
-
+
+ The `id` attribute identifies a module in the modules view and is used in a `module` event for
+ identifying a module for adding, updating or deleting.
+
+ The `name` attribute is used to minimally render the module in the UI.
+
+
+ Additional attributes can be added to the module. They show up in the module view if they have a
+ corresponding `ColumnDescriptor`.
+
+
To avoid an unnecessary proliferation of additional attributes with similar semantics but different
- names
-
- we recommend to re-use attributes from the 'recommended' list below first, and only introduce new
- attributes if nothing appropriate could be found.
+ names, we recommend to re-use attributes from the 'recommended' list below first, and only introduce
+ new attributes if nothing appropriate could be found.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
- "id": {
- "type": [
- "integer",
- "string"
- ],
- "description": "Unique identifier for the module."
- },
- "name": {
- "type": "string",
- "description": "A name of the module."
- },
+ "id": {"type": ["integer", "string"], "description": "Unique identifier for the module."},
+ "name": {"type": "string", "description": "A name of the module."},
"path": {
"type": "string",
- "description": "optional but recommended attributes.\nalways try to use these first before introducing additional attributes.\n\nLogical full path to the module. The exact definition is implementation defined, but usually this would be a full path to the on-disk file for the module."
- },
- "isOptimized": {
- "type": "boolean",
- "description": "True if the module is optimized."
+ "description": "Logical full path to the module. The exact definition is implementation defined, but usually this would be a full path to the on-disk file for the module.",
},
+ "isOptimized": {"type": "boolean", "description": "True if the module is optimized."},
"isUserCode": {
"type": "boolean",
- "description": "True if the module is considered 'user code' by a debugger that supports 'Just My Code'."
- },
- "version": {
- "type": "string",
- "description": "Version of Module."
+ "description": "True if the module is considered 'user code' by a debugger that supports 'Just My Code'.",
},
+ "version": {"type": "string", "description": "Version of Module."},
"symbolStatus": {
"type": "string",
- "description": "User understandable description of if symbols were found for the module (ex: 'Symbols Loaded', 'Symbols not found', etc."
+ "description": "User-understandable description of if symbols were found for the module (ex: 'Symbols Loaded', 'Symbols not found', etc.)",
},
"symbolFilePath": {
"type": "string",
- "description": "Logical full path to the symbol file. The exact definition is implementation defined."
- },
- "dateTimeStamp": {
- "type": "string",
- "description": "Module created or modified."
+ "description": "Logical full path to the symbol file. The exact definition is implementation defined.",
},
- "addressRange": {
- "type": "string",
- "description": "Address range covered by this module."
- }
+ "dateTimeStamp": {"type": "string", "description": "Module created or modified, encoded as a RFC 3339 timestamp."},
+ "addressRange": {"type": "string", "description": "Address range covered by this module."},
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
-
- def __init__(self, id, name, path=None, isOptimized=None, isUserCode=None, version=None, symbolStatus=None, symbolFilePath=None, dateTimeStamp=None, addressRange=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(
+ self,
+ id,
+ name,
+ path=None,
+ isOptimized=None,
+ isUserCode=None,
+ version=None,
+ symbolStatus=None,
+ symbolFilePath=None,
+ dateTimeStamp=None,
+ addressRange=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
"""
:param ['integer', 'string'] id: Unique identifier for the module.
:param string name: A name of the module.
- :param string path: optional but recommended attributes.
- always try to use these first before introducing additional attributes.
-
- Logical full path to the module. The exact definition is implementation defined, but usually this would be a full path to the on-disk file for the module.
+ :param string path: Logical full path to the module. The exact definition is implementation defined, but usually this would be a full path to the on-disk file for the module.
:param boolean isOptimized: True if the module is optimized.
:param boolean isUserCode: True if the module is considered 'user code' by a debugger that supports 'Just My Code'.
:param string version: Version of Module.
- :param string symbolStatus: User understandable description of if symbols were found for the module (ex: 'Symbols Loaded', 'Symbols not found', etc.
+ :param string symbolStatus: User-understandable description of if symbols were found for the module (ex: 'Symbols Loaded', 'Symbols not found', etc.)
:param string symbolFilePath: Logical full path to the symbol file. The exact definition is implementation defined.
- :param string dateTimeStamp: Module created or modified.
+ :param string dateTimeStamp: Module created or modified, encoded as a RFC 3339 timestamp.
:param string addressRange: Address range covered by this module.
"""
self.id = id
@@ -13171,7 +11544,6 @@ def __init__(self, id, name, path=None, isOptimized=None, isUserCode=None, versi
self.addressRange = addressRange
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
id = self.id # noqa (assign to builtin)
name = self.name
@@ -13184,25 +11556,25 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
dateTimeStamp = self.dateTimeStamp
addressRange = self.addressRange
dct = {
- 'id': id,
- 'name': name,
+ "id": id,
+ "name": name,
}
if path is not None:
- dct['path'] = path
+ dct["path"] = path
if isOptimized is not None:
- dct['isOptimized'] = isOptimized
+ dct["isOptimized"] = isOptimized
if isUserCode is not None:
- dct['isUserCode'] = isUserCode
+ dct["isUserCode"] = isUserCode
if version is not None:
- dct['version'] = version
+ dct["version"] = version
if symbolStatus is not None:
- dct['symbolStatus'] = symbolStatus
+ dct["symbolStatus"] = symbolStatus
if symbolFilePath is not None:
- dct['symbolFilePath'] = symbolFilePath
+ dct["symbolFilePath"] = symbolFilePath
if dateTimeStamp is not None:
- dct['dateTimeStamp'] = dateTimeStamp
+ dct["dateTimeStamp"] = dateTimeStamp
if addressRange is not None:
- dct['addressRange'] = addressRange
+ dct["addressRange"] = addressRange
dct.update(self.kwargs)
return dct
@@ -13210,54 +11582,40 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class ColumnDescriptor(BaseSchema):
"""
- A ColumnDescriptor specifies what module attribute to show in a column of the ModulesView, how to
+ A `ColumnDescriptor` specifies what module attribute to show in a column of the modules view, how to
format it,
-
+
and what the column's label should be.
-
+
It is only used if the underlying UI actually supports this level of customization.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
- "attributeName": {
- "type": "string",
- "description": "Name of the attribute rendered in this column."
- },
- "label": {
- "type": "string",
- "description": "Header UI label of column."
- },
+ "attributeName": {"type": "string", "description": "Name of the attribute rendered in this column."},
+ "label": {"type": "string", "description": "Header UI label of column."},
"format": {
"type": "string",
- "description": "Format to use for the rendered values in this column. TBD how the format strings looks like."
+ "description": "Format to use for the rendered values in this column. TBD how the format strings looks like.",
},
"type": {
"type": "string",
- "enum": [
- "string",
- "number",
- "boolean",
- "unixTimestampUTC"
- ],
- "description": "Datatype of values in this column. Defaults to 'string' if not specified."
+ "enum": ["string", "number", "boolean", "unixTimestampUTC"],
+ "description": "Datatype of values in this column. Defaults to `string` if not specified.",
},
- "width": {
- "type": "integer",
- "description": "Width of this column in characters (hint only)."
- }
+ "width": {"type": "integer", "description": "Width of this column in characters (hint only)."},
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, attributeName, label, format=None, type=None, width=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param string attributeName: Name of the attribute rendered in this column.
:param string label: Header UI label of column.
:param string format: Format to use for the rendered values in this column. TBD how the format strings looks like.
- :param string type: Datatype of values in this column. Defaults to 'string' if not specified.
+ :param string type: Datatype of values in this column. Defaults to `string` if not specified.
:param integer width: Width of this column in characters (hint only).
"""
self.attributeName = attributeName
@@ -13267,7 +11625,6 @@ def __init__(self, attributeName, label, format=None, type=None, width=None, upd
self.width = width
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
attributeName = self.attributeName
label = self.label
@@ -13275,60 +11632,15 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
type = self.type # noqa (assign to builtin)
width = self.width
dct = {
- 'attributeName': attributeName,
- 'label': label,
+ "attributeName": attributeName,
+ "label": label,
}
if format is not None:
- dct['format'] = format
+ dct["format"] = format
if type is not None:
- dct['type'] = type
+ dct["type"] = type
if width is not None:
- dct['width'] = width
- dct.update(self.kwargs)
- return dct
-
-
-@register
-class ModulesViewDescriptor(BaseSchema):
- """
- The ModulesViewDescriptor is the container for all declarative configuration options of a
- ModuleView.
-
- For now it only specifies the columns to be shown in the modules view.
-
- Note: automatically generated code. Do not edit manually.
- """
-
- __props__ = {
- "columns": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/ColumnDescriptor"
- }
- }
- }
- __refs__ = set()
-
- __slots__ = list(__props__.keys()) + ['kwargs']
-
- def __init__(self, columns, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
- """
- :param array columns:
- """
- self.columns = columns
- if update_ids_from_dap and self.columns:
- for o in self.columns:
- ColumnDescriptor.update_dict_ids_from_dap(o)
- self.kwargs = kwargs
-
-
- def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
- columns = self.columns
- if columns and hasattr(columns[0], "to_dict"):
- columns = [x.to_dict() for x in columns]
- dct = {
- 'columns': [ColumnDescriptor.update_dict_ids_to_dap(o) for o in columns] if (update_ids_to_dap and columns) else columns,
- }
+ dct["width"] = width
dct.update(self.kwargs)
return dct
@@ -13342,35 +11654,28 @@ class Thread(BaseSchema):
"""
__props__ = {
- "id": {
- "type": "integer",
- "description": "Unique identifier for the thread."
- },
- "name": {
- "type": "string",
- "description": "A name of the thread."
- }
+ "id": {"type": "integer", "description": "Unique identifier for the thread."},
+ "name": {"type": "string", "description": "The name of the thread."},
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, id, name, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param integer id: Unique identifier for the thread.
- :param string name: A name of the thread.
+ :param string name: The name of the thread.
"""
self.id = id
self.name = name
if update_ids_from_dap:
self.id = self._translate_id_from_dap(self.id)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'id' in dct:
- dct['id'] = cls._translate_id_from_dap(dct['id'])
+ if "id" in dct:
+ dct["id"] = cls._translate_id_from_dap(dct["id"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -13380,25 +11685,25 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if id is not None:
id = self._translate_id_to_dap(id) # noqa (assign to builtin)
dct = {
- 'id': id,
- 'name': name,
+ "id": id,
+ "name": name,
}
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'id' in dct:
- dct['id'] = cls._translate_id_to_dap(dct['id'])
+ if "id" in dct:
+ dct["id"] = cls._translate_id_to_dap(dct["id"])
return dct
@register
class Source(BaseSchema):
"""
- A Source is a descriptor for source code.
-
- It is returned from the debug adapter as part of a StackFrame and it is used by clients when
+ A `Source` is a descriptor for source code.
+
+ It is returned from the debug adapter as part of a `StackFrame` and it is used by clients when
specifying breakpoints.
Note: automatically generated code. Do not edit manually.
@@ -13407,74 +11712,70 @@ class Source(BaseSchema):
__props__ = {
"name": {
"type": "string",
- "description": "The short name of the source. Every source returned from the debug adapter has a name.\nWhen sending a source to the debug adapter this name is optional."
+ "description": "The short name of the source. Every source returned from the debug adapter has a name.\nWhen sending a source to the debug adapter this name is optional.",
},
"path": {
"type": "string",
- "description": "The path of the source to be shown in the UI.\nIt is only used to locate and load the content of the source if no sourceReference is specified (or its value is 0)."
+ "description": "The path of the source to be shown in the UI.\nIt is only used to locate and load the content of the source if no `sourceReference` is specified (or its value is 0).",
},
"sourceReference": {
"type": "integer",
- "description": "If sourceReference > 0 the contents of the source must be retrieved through the SourceRequest (even if a path is specified).\nA sourceReference is only valid for a session, so it must not be used to persist a source.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "If the value > 0 the contents of the source must be retrieved through the `source` request (even if a path is specified).\nSince a `sourceReference` is only valid for a session, it can not be used to persist a source.\nThe value should be less than or equal to 2147483647 (2^31-1).",
},
"presentationHint": {
"type": "string",
- "description": "An optional hint for how to present the source in the UI.\nA value of 'deemphasize' can be used to indicate that the source is not available or that it is skipped on stepping.",
- "enum": [
- "normal",
- "emphasize",
- "deemphasize"
- ]
+ "description": "A hint for how to present the source in the UI.\nA value of `deemphasize` can be used to indicate that the source is not available or that it is skipped on stepping.",
+ "enum": ["normal", "emphasize", "deemphasize"],
},
"origin": {
"type": "string",
- "description": "The (optional) origin of this source: possible values 'internal module', 'inlined content from source map', etc."
+ "description": "The origin of this source. For example, 'internal module', 'inlined content from source map', etc.",
},
"sources": {
"type": "array",
- "items": {
- "$ref": "#/definitions/Source"
- },
- "description": "An optional list of sources that are related to this source. These may be the source that generated this source."
+ "items": {"$ref": "#/definitions/Source"},
+ "description": "A list of sources that are related to this source. These may be the source that generated this source.",
},
"adapterData": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Optional data that a debug adapter might want to loop through the client.\nThe client should leave the data intact and persist it across sessions. The client should not interpret the data."
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Additional data that a debug adapter might want to loop through the client.\nThe client should leave the data intact and persist it across sessions. The client should not interpret the data.",
},
"checksums": {
"type": "array",
- "items": {
- "$ref": "#/definitions/Checksum"
- },
- "description": "The checksums associated with this file."
- }
+ "items": {"$ref": "#/definitions/Checksum"},
+ "description": "The checksums associated with this file.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
-
- def __init__(self, name=None, path=None, sourceReference=None, presentationHint=None, origin=None, sources=None, adapterData=None, checksums=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(
+ self,
+ name=None,
+ path=None,
+ sourceReference=None,
+ presentationHint=None,
+ origin=None,
+ sources=None,
+ adapterData=None,
+ checksums=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
"""
:param string name: The short name of the source. Every source returned from the debug adapter has a name.
When sending a source to the debug adapter this name is optional.
:param string path: The path of the source to be shown in the UI.
- It is only used to locate and load the content of the source if no sourceReference is specified (or its value is 0).
- :param integer sourceReference: If sourceReference > 0 the contents of the source must be retrieved through the SourceRequest (even if a path is specified).
- A sourceReference is only valid for a session, so it must not be used to persist a source.
+ It is only used to locate and load the content of the source if no `sourceReference` is specified (or its value is 0).
+ :param integer sourceReference: If the value > 0 the contents of the source must be retrieved through the `source` request (even if a path is specified).
+ Since a `sourceReference` is only valid for a session, it can not be used to persist a source.
The value should be less than or equal to 2147483647 (2^31-1).
- :param string presentationHint: An optional hint for how to present the source in the UI.
- A value of 'deemphasize' can be used to indicate that the source is not available or that it is skipped on stepping.
- :param string origin: The (optional) origin of this source: possible values 'internal module', 'inlined content from source map', etc.
- :param array sources: An optional list of sources that are related to this source. These may be the source that generated this source.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] adapterData: Optional data that a debug adapter might want to loop through the client.
+ :param string presentationHint: A hint for how to present the source in the UI.
+ A value of `deemphasize` can be used to indicate that the source is not available or that it is skipped on stepping.
+ :param string origin: The origin of this source. For example, 'internal module', 'inlined content from source map', etc.
+ :param array sources: A list of sources that are related to this source. These may be the source that generated this source.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] adapterData: Additional data that a debug adapter might want to loop through the client.
The client should leave the data intact and persist it across sessions. The client should not interpret the data.
:param array checksums: The checksums associated with this file.
"""
@@ -13494,7 +11795,6 @@ def __init__(self, name=None, path=None, sourceReference=None, presentationHint=
Checksum.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
name = self.name
path = self.path
@@ -13508,24 +11808,23 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
checksums = self.checksums
if checksums and hasattr(checksums[0], "to_dict"):
checksums = [x.to_dict() for x in checksums]
- dct = {
- }
+ dct = {}
if name is not None:
- dct['name'] = name
+ dct["name"] = name
if path is not None:
- dct['path'] = path
+ dct["path"] = path
if sourceReference is not None:
- dct['sourceReference'] = sourceReference
+ dct["sourceReference"] = sourceReference
if presentationHint is not None:
- dct['presentationHint'] = presentationHint
+ dct["presentationHint"] = presentationHint
if origin is not None:
- dct['origin'] = origin
+ dct["origin"] = origin
if sources is not None:
- dct['sources'] = [Source.update_dict_ids_to_dap(o) for o in sources] if (update_ids_to_dap and sources) else sources
+ dct["sources"] = [Source.update_dict_ids_to_dap(o) for o in sources] if (update_ids_to_dap and sources) else sources
if adapterData is not None:
- dct['adapterData'] = adapterData
+ dct["adapterData"] = adapterData
if checksums is not None:
- dct['checksums'] = [Checksum.update_dict_ids_to_dap(o) for o in checksums] if (update_ids_to_dap and checksums) else checksums
+ dct["checksums"] = [Checksum.update_dict_ids_to_dap(o) for o in checksums] if (update_ids_to_dap and checksums) else checksums
dct.update(self.kwargs)
return dct
@@ -13541,76 +11840,72 @@ class StackFrame(BaseSchema):
__props__ = {
"id": {
"type": "integer",
- "description": "An identifier for the stack frame. It must be unique across all threads.\nThis id can be used to retrieve the scopes of the frame with the 'scopesRequest' or to restart the execution of a stackframe."
- },
- "name": {
- "type": "string",
- "description": "The name of the stack frame, typically a method name."
- },
- "source": {
- "description": "The optional source of the frame.",
- "type": "Source"
+ "description": "An identifier for the stack frame. It must be unique across all threads.\nThis id can be used to retrieve the scopes of the frame with the `scopes` request or to restart the execution of a stack frame.",
},
+ "name": {"type": "string", "description": "The name of the stack frame, typically a method name."},
+ "source": {"description": "The source of the frame.", "type": "Source"},
"line": {
"type": "integer",
- "description": "The line within the file of the frame. If source is null or doesn't exist, line is 0 and must be ignored."
+ "description": "The line within the source of the frame. If the source attribute is missing or doesn't exist, `line` is 0 and should be ignored by the client.",
},
"column": {
"type": "integer",
- "description": "The column within the line. If source is null or doesn't exist, column is 0 and must be ignored."
- },
- "endLine": {
- "type": "integer",
- "description": "An optional end line of the range covered by the stack frame."
+ "description": "Start position of the range covered by the stack frame. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If attribute `source` is missing or doesn't exist, `column` is 0 and should be ignored by the client.",
},
+ "endLine": {"type": "integer", "description": "The end line of the range covered by the stack frame."},
"endColumn": {
"type": "integer",
- "description": "An optional end column of the range covered by the stack frame."
+ "description": "End position of the range covered by the stack frame. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.",
},
"canRestart": {
"type": "boolean",
- "description": "Indicates whether this frame can be restarted with the 'restart' request. Clients should only use this if the debug adapter supports the 'restart' request (capability 'supportsRestartRequest' is true)."
+ "description": "Indicates whether this frame can be restarted with the `restart` request. Clients should only use this if the debug adapter supports the `restart` request and the corresponding capability `supportsRestartRequest` is True. If a debug adapter has this capability, then `canRestart` defaults to `True` if the property is absent.",
},
"instructionPointerReference": {
"type": "string",
- "description": "Optional memory reference for the current instruction pointer in this frame."
- },
- "moduleId": {
- "type": [
- "integer",
- "string"
- ],
- "description": "The module associated with this frame, if any."
+ "description": "A memory reference for the current instruction pointer in this frame.",
},
+ "moduleId": {"type": ["integer", "string"], "description": "The module associated with this frame, if any."},
"presentationHint": {
"type": "string",
- "enum": [
- "normal",
- "label",
- "subtle"
- ],
- "description": "An optional hint for how to present this frame in the UI.\nA value of 'label' can be used to indicate that the frame is an artificial frame that is used as a visual label or separator. A value of 'subtle' can be used to change the appearance of a frame in a 'subtle' way."
- }
+ "enum": ["normal", "label", "subtle"],
+ "description": "A hint for how to present this frame in the UI.\nA value of `label` can be used to indicate that the frame is an artificial frame that is used as a visual label or separator. A value of `subtle` can be used to change the appearance of a frame in a 'subtle' way.",
+ },
}
- __refs__ = set(['source'])
-
- __slots__ = list(__props__.keys()) + ['kwargs']
-
- def __init__(self, id, name, line, column, source=None, endLine=None, endColumn=None, canRestart=None, instructionPointerReference=None, moduleId=None, presentationHint=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ __refs__ = set(["source"])
+
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(
+ self,
+ id,
+ name,
+ line,
+ column,
+ source=None,
+ endLine=None,
+ endColumn=None,
+ canRestart=None,
+ instructionPointerReference=None,
+ moduleId=None,
+ presentationHint=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
"""
:param integer id: An identifier for the stack frame. It must be unique across all threads.
- This id can be used to retrieve the scopes of the frame with the 'scopesRequest' or to restart the execution of a stackframe.
+ This id can be used to retrieve the scopes of the frame with the `scopes` request or to restart the execution of a stack frame.
:param string name: The name of the stack frame, typically a method name.
- :param integer line: The line within the file of the frame. If source is null or doesn't exist, line is 0 and must be ignored.
- :param integer column: The column within the line. If source is null or doesn't exist, column is 0 and must be ignored.
- :param Source source: The optional source of the frame.
- :param integer endLine: An optional end line of the range covered by the stack frame.
- :param integer endColumn: An optional end column of the range covered by the stack frame.
- :param boolean canRestart: Indicates whether this frame can be restarted with the 'restart' request. Clients should only use this if the debug adapter supports the 'restart' request (capability 'supportsRestartRequest' is true).
- :param string instructionPointerReference: Optional memory reference for the current instruction pointer in this frame.
+ :param integer line: The line within the source of the frame. If the source attribute is missing or doesn't exist, `line` is 0 and should be ignored by the client.
+ :param integer column: Start position of the range covered by the stack frame. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If attribute `source` is missing or doesn't exist, `column` is 0 and should be ignored by the client.
+ :param Source source: The source of the frame.
+ :param integer endLine: The end line of the range covered by the stack frame.
+ :param integer endColumn: End position of the range covered by the stack frame. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.
+ :param boolean canRestart: Indicates whether this frame can be restarted with the `restart` request. Clients should only use this if the debug adapter supports the `restart` request and the corresponding capability `supportsRestartRequest` is true. If a debug adapter has this capability, then `canRestart` defaults to `true` if the property is absent.
+ :param string instructionPointerReference: A memory reference for the current instruction pointer in this frame.
:param ['integer', 'string'] moduleId: The module associated with this frame, if any.
- :param string presentationHint: An optional hint for how to present this frame in the UI.
- A value of 'label' can be used to indicate that the frame is an artificial frame that is used as a visual label or separator. A value of 'subtle' can be used to change the appearance of a frame in a 'subtle' way.
+ :param string presentationHint: A hint for how to present this frame in the UI.
+ A value of `label` can be used to indicate that the frame is an artificial frame that is used as a visual label or separator. A value of `subtle` can be used to change the appearance of a frame in a 'subtle' way.
"""
self.id = id
self.name = name
@@ -13619,7 +11914,7 @@ def __init__(self, id, name, line, column, source=None, endLine=None, endColumn=
if source is None:
self.source = Source()
else:
- self.source = Source(update_ids_from_dap=update_ids_from_dap, **source) if source.__class__ != Source else source
+ self.source = Source(update_ids_from_dap=update_ids_from_dap, **source) if source.__class__ != Source else source
self.endLine = endLine
self.endColumn = endColumn
self.canRestart = canRestart
@@ -13629,12 +11924,11 @@ def __init__(self, id, name, line, column, source=None, endLine=None, endColumn=
if update_ids_from_dap:
self.id = self._translate_id_from_dap(self.id)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'id' in dct:
- dct['id'] = cls._translate_id_from_dap(dct['id'])
+ if "id" in dct:
+ dct["id"] = cls._translate_id_from_dap(dct["id"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -13653,40 +11947,40 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if id is not None:
id = self._translate_id_to_dap(id) # noqa (assign to builtin)
dct = {
- 'id': id,
- 'name': name,
- 'line': line,
- 'column': column,
+ "id": id,
+ "name": name,
+ "line": line,
+ "column": column,
}
if source is not None:
- dct['source'] = source.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["source"] = source.to_dict(update_ids_to_dap=update_ids_to_dap)
if endLine is not None:
- dct['endLine'] = endLine
+ dct["endLine"] = endLine
if endColumn is not None:
- dct['endColumn'] = endColumn
+ dct["endColumn"] = endColumn
if canRestart is not None:
- dct['canRestart'] = canRestart
+ dct["canRestart"] = canRestart
if instructionPointerReference is not None:
- dct['instructionPointerReference'] = instructionPointerReference
+ dct["instructionPointerReference"] = instructionPointerReference
if moduleId is not None:
- dct['moduleId'] = moduleId
+ dct["moduleId"] = moduleId
if presentationHint is not None:
- dct['presentationHint'] = presentationHint
+ dct["presentationHint"] = presentationHint
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'id' in dct:
- dct['id'] = cls._translate_id_to_dap(dct['id'])
+ if "id" in dct:
+ dct["id"] = cls._translate_id_to_dap(dct["id"])
return dct
@register
class Scope(BaseSchema):
"""
- A Scope is a named container for variables. Optionally a scope can map to a source or a range within
- a source.
+ A `Scope` is a named container for variables. Optionally a scope can map to a source or a range
+ within a source.
Note: automatically generated code. Do not edit manually.
"""
@@ -13694,78 +11988,80 @@ class Scope(BaseSchema):
__props__ = {
"name": {
"type": "string",
- "description": "Name of the scope such as 'Arguments', 'Locals', or 'Registers'. This string is shown in the UI as is and can be translated."
+ "description": "Name of the scope such as 'Arguments', 'Locals', or 'Registers'. This string is shown in the UI as is and can be translated.",
},
"presentationHint": {
"type": "string",
- "description": "An optional hint for how to present this scope in the UI. If this attribute is missing, the scope is shown with a generic UI.",
- "_enum": [
- "arguments",
- "locals",
- "registers"
- ],
+ "description": "A hint for how to present this scope in the UI. If this attribute is missing, the scope is shown with a generic UI.",
+ "_enum": ["arguments", "locals", "registers"],
"enumDescriptions": [
"Scope contains method arguments.",
"Scope contains local variables.",
- "Scope contains registers. Only a single 'registers' scope should be returned from a 'scopes' request."
- ]
+ "Scope contains registers. Only a single `registers` scope should be returned from a `scopes` request.",
+ ],
},
"variablesReference": {
"type": "integer",
- "description": "The variables of this scope can be retrieved by passing the value of variablesReference to the VariablesRequest."
+ "description": "The variables of this scope can be retrieved by passing the value of `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.",
},
"namedVariables": {
"type": "integer",
- "description": "The number of named variables in this scope.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks."
+ "description": "The number of named variables in this scope.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.",
},
"indexedVariables": {
"type": "integer",
- "description": "The number of indexed variables in this scope.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks."
+ "description": "The number of indexed variables in this scope.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.",
},
"expensive": {
"type": "boolean",
- "description": "If true, the number of variables in this scope is large or expensive to retrieve."
- },
- "source": {
- "description": "Optional source for this scope.",
- "type": "Source"
- },
- "line": {
- "type": "integer",
- "description": "Optional start line of the range covered by this scope."
+ "description": "If True, the number of variables in this scope is large or expensive to retrieve.",
},
+ "source": {"description": "The source for this scope.", "type": "Source"},
+ "line": {"type": "integer", "description": "The start line of the range covered by this scope."},
"column": {
"type": "integer",
- "description": "Optional start column of the range covered by this scope."
- },
- "endLine": {
- "type": "integer",
- "description": "Optional end line of the range covered by this scope."
+ "description": "Start position of the range covered by the scope. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.",
},
+ "endLine": {"type": "integer", "description": "The end line of the range covered by this scope."},
"endColumn": {
"type": "integer",
- "description": "Optional end column of the range covered by this scope."
- }
+ "description": "End position of the range covered by the scope. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.",
+ },
}
- __refs__ = set(['source'])
-
- __slots__ = list(__props__.keys()) + ['kwargs']
-
- def __init__(self, name, variablesReference, expensive, presentationHint=None, namedVariables=None, indexedVariables=None, source=None, line=None, column=None, endLine=None, endColumn=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ __refs__ = set(["source"])
+
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(
+ self,
+ name,
+ variablesReference,
+ expensive,
+ presentationHint=None,
+ namedVariables=None,
+ indexedVariables=None,
+ source=None,
+ line=None,
+ column=None,
+ endLine=None,
+ endColumn=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
"""
:param string name: Name of the scope such as 'Arguments', 'Locals', or 'Registers'. This string is shown in the UI as is and can be translated.
- :param integer variablesReference: The variables of this scope can be retrieved by passing the value of variablesReference to the VariablesRequest.
+ :param integer variablesReference: The variables of this scope can be retrieved by passing the value of `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.
:param boolean expensive: If true, the number of variables in this scope is large or expensive to retrieve.
- :param string presentationHint: An optional hint for how to present this scope in the UI. If this attribute is missing, the scope is shown with a generic UI.
+ :param string presentationHint: A hint for how to present this scope in the UI. If this attribute is missing, the scope is shown with a generic UI.
:param integer namedVariables: The number of named variables in this scope.
- The client can use this optional information to present the variables in a paged UI and fetch them in chunks.
+ The client can use this information to present the variables in a paged UI and fetch them in chunks.
:param integer indexedVariables: The number of indexed variables in this scope.
- The client can use this optional information to present the variables in a paged UI and fetch them in chunks.
- :param Source source: Optional source for this scope.
- :param integer line: Optional start line of the range covered by this scope.
- :param integer column: Optional start column of the range covered by this scope.
- :param integer endLine: Optional end line of the range covered by this scope.
- :param integer endColumn: Optional end column of the range covered by this scope.
+ The client can use this information to present the variables in a paged UI and fetch them in chunks.
+ :param Source source: The source for this scope.
+ :param integer line: The start line of the range covered by this scope.
+ :param integer column: Start position of the range covered by the scope. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.
+ :param integer endLine: The end line of the range covered by this scope.
+ :param integer endColumn: End position of the range covered by the scope. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.
"""
self.name = name
self.variablesReference = variablesReference
@@ -13776,7 +12072,7 @@ def __init__(self, name, variablesReference, expensive, presentationHint=None, n
if source is None:
self.source = Source()
else:
- self.source = Source(update_ids_from_dap=update_ids_from_dap, **source) if source.__class__ != Source else source
+ self.source = Source(update_ids_from_dap=update_ids_from_dap, **source) if source.__class__ != Source else source
self.line = line
self.column = column
self.endLine = endLine
@@ -13784,12 +12080,11 @@ def __init__(self, name, variablesReference, expensive, presentationHint=None, n
if update_ids_from_dap:
self.variablesReference = self._translate_id_from_dap(self.variablesReference)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'variablesReference' in dct:
- dct['variablesReference'] = cls._translate_id_from_dap(dct['variablesReference'])
+ if "variablesReference" in dct:
+ dct["variablesReference"] = cls._translate_id_from_dap(dct["variablesReference"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -13808,33 +12103,33 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if variablesReference is not None:
variablesReference = self._translate_id_to_dap(variablesReference)
dct = {
- 'name': name,
- 'variablesReference': variablesReference,
- 'expensive': expensive,
+ "name": name,
+ "variablesReference": variablesReference,
+ "expensive": expensive,
}
if presentationHint is not None:
- dct['presentationHint'] = presentationHint
+ dct["presentationHint"] = presentationHint
if namedVariables is not None:
- dct['namedVariables'] = namedVariables
+ dct["namedVariables"] = namedVariables
if indexedVariables is not None:
- dct['indexedVariables'] = indexedVariables
+ dct["indexedVariables"] = indexedVariables
if source is not None:
- dct['source'] = source.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["source"] = source.to_dict(update_ids_to_dap=update_ids_to_dap)
if line is not None:
- dct['line'] = line
+ dct["line"] = line
if column is not None:
- dct['column'] = column
+ dct["column"] = column
if endLine is not None:
- dct['endLine'] = endLine
+ dct["endLine"] = endLine
if endColumn is not None:
- dct['endColumn'] = endColumn
+ dct["endColumn"] = endColumn
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'variablesReference' in dct:
- dct['variablesReference'] = cls._translate_id_to_dap(dct['variablesReference'])
+ if "variablesReference" in dct:
+ dct["variablesReference"] = cls._translate_id_to_dap(dct["variablesReference"])
return dct
@@ -13842,82 +12137,95 @@ def update_dict_ids_to_dap(cls, dct):
class Variable(BaseSchema):
"""
A Variable is a name/value pair.
-
- Optionally a variable can have a 'type' that is shown if space permits or when hovering over the
- variable's name.
-
- An optional 'kind' is used to render additional properties of the variable, e.g. different icons can
- be used to indicate that a variable is public or private.
-
+
+ The `type` attribute is shown if space permits or when hovering over the variable's name.
+
+ The `kind` attribute is used to render additional properties of the variable, e.g. different icons
+ can be used to indicate that a variable is public or private.
+
If the value is structured (has children), a handle is provided to retrieve the children with the
- VariablesRequest.
-
- If the number of named or indexed children is large, the numbers should be returned via the optional
- 'namedVariables' and 'indexedVariables' attributes.
-
- The client can use this optional information to present the children in a paged UI and fetch them in
- chunks.
+ `variables` request.
+
+ If the number of named or indexed children is large, the numbers should be returned via the
+ `namedVariables` and `indexedVariables` attributes.
+
+ The client can use this information to present the children in a paged UI and fetch them in chunks.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
- "name": {
- "type": "string",
- "description": "The variable's name."
- },
+ "name": {"type": "string", "description": "The variable's name."},
"value": {
"type": "string",
- "description": "The variable's value. This can be a multi-line text, e.g. for a function the body of a function."
+ "description": "The variable's value.\nThis can be a multi-line text, e.g. for a function the body of a function.\nFor structured variables (which do not have a simple value), it is recommended to provide a one-line representation of the structured object. This helps to identify the structured object in the collapsed state when its children are not yet visible.\nAn empty string can be used if no value should be shown in the UI.",
},
"type": {
"type": "string",
- "description": "The type of the variable's value. Typically shown in the UI when hovering over the value.\nThis attribute should only be returned by a debug adapter if the client has passed the value true for the 'supportsVariableType' capability of the 'initialize' request."
+ "description": "The type of the variable's value. Typically shown in the UI when hovering over the value.\nThis attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is True.",
},
"presentationHint": {
"description": "Properties of a variable that can be used to determine how to render the variable in the UI.",
- "type": "VariablePresentationHint"
+ "type": "VariablePresentationHint",
},
"evaluateName": {
"type": "string",
- "description": "Optional evaluatable name of this variable which can be passed to the 'EvaluateRequest' to fetch the variable's value."
+ "description": "The evaluatable name of this variable which can be passed to the `evaluate` request to fetch the variable's value.",
},
"variablesReference": {
"type": "integer",
- "description": "If variablesReference is > 0, the variable is structured and its children can be retrieved by passing variablesReference to the VariablesRequest."
+ "description": "If `variablesReference` is > 0, the variable is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.",
},
"namedVariables": {
"type": "integer",
- "description": "The number of named child variables.\nThe client can use this optional information to present the children in a paged UI and fetch them in chunks."
+ "description": "The number of named child variables.\nThe client can use this information to present the children in a paged UI and fetch them in chunks.",
},
"indexedVariables": {
"type": "integer",
- "description": "The number of indexed child variables.\nThe client can use this optional information to present the children in a paged UI and fetch them in chunks."
+ "description": "The number of indexed child variables.\nThe client can use this information to present the children in a paged UI and fetch them in chunks.",
},
"memoryReference": {
"type": "string",
- "description": "Optional memory reference for the variable if the variable represents executable code, such as a function pointer.\nThis attribute is only required if the client has passed the value true for the 'supportsMemoryReferences' capability of the 'initialize' request."
- }
+ "description": "A memory reference associated with this variable.\nFor pointer type variables, this is generally a reference to the memory address contained in the pointer.\nFor executable data, this reference may later be used in a `disassemble` request.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is True.",
+ },
}
- __refs__ = set(['presentationHint'])
-
- __slots__ = list(__props__.keys()) + ['kwargs']
-
- def __init__(self, name, value, variablesReference, type=None, presentationHint=None, evaluateName=None, namedVariables=None, indexedVariables=None, memoryReference=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ __refs__ = set(["presentationHint"])
+
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(
+ self,
+ name,
+ value,
+ variablesReference,
+ type=None,
+ presentationHint=None,
+ evaluateName=None,
+ namedVariables=None,
+ indexedVariables=None,
+ memoryReference=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
"""
:param string name: The variable's name.
- :param string value: The variable's value. This can be a multi-line text, e.g. for a function the body of a function.
- :param integer variablesReference: If variablesReference is > 0, the variable is structured and its children can be retrieved by passing variablesReference to the VariablesRequest.
+ :param string value: The variable's value.
+ This can be a multi-line text, e.g. for a function the body of a function.
+ For structured variables (which do not have a simple value), it is recommended to provide a one-line representation of the structured object. This helps to identify the structured object in the collapsed state when its children are not yet visible.
+ An empty string can be used if no value should be shown in the UI.
+ :param integer variablesReference: If `variablesReference` is > 0, the variable is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.
:param string type: The type of the variable's value. Typically shown in the UI when hovering over the value.
- This attribute should only be returned by a debug adapter if the client has passed the value true for the 'supportsVariableType' capability of the 'initialize' request.
+ This attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is true.
:param VariablePresentationHint presentationHint: Properties of a variable that can be used to determine how to render the variable in the UI.
- :param string evaluateName: Optional evaluatable name of this variable which can be passed to the 'EvaluateRequest' to fetch the variable's value.
+ :param string evaluateName: The evaluatable name of this variable which can be passed to the `evaluate` request to fetch the variable's value.
:param integer namedVariables: The number of named child variables.
- The client can use this optional information to present the children in a paged UI and fetch them in chunks.
+ The client can use this information to present the children in a paged UI and fetch them in chunks.
:param integer indexedVariables: The number of indexed child variables.
- The client can use this optional information to present the children in a paged UI and fetch them in chunks.
- :param string memoryReference: Optional memory reference for the variable if the variable represents executable code, such as a function pointer.
- This attribute is only required if the client has passed the value true for the 'supportsMemoryReferences' capability of the 'initialize' request.
+ The client can use this information to present the children in a paged UI and fetch them in chunks.
+ :param string memoryReference: A memory reference associated with this variable.
+ For pointer type variables, this is generally a reference to the memory address contained in the pointer.
+ For executable data, this reference may later be used in a `disassemble` request.
+ This attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is true.
"""
self.name = name
self.value = value
@@ -13926,7 +12234,11 @@ def __init__(self, name, value, variablesReference, type=None, presentationHint=
if presentationHint is None:
self.presentationHint = VariablePresentationHint()
else:
- self.presentationHint = VariablePresentationHint(update_ids_from_dap=update_ids_from_dap, **presentationHint) if presentationHint.__class__ != VariablePresentationHint else presentationHint
+ self.presentationHint = (
+ VariablePresentationHint(update_ids_from_dap=update_ids_from_dap, **presentationHint)
+ if presentationHint.__class__ != VariablePresentationHint
+ else presentationHint
+ )
self.evaluateName = evaluateName
self.namedVariables = namedVariables
self.indexedVariables = indexedVariables
@@ -13934,12 +12246,11 @@ def __init__(self, name, value, variablesReference, type=None, presentationHint=
if update_ids_from_dap:
self.variablesReference = self._translate_id_from_dap(self.variablesReference)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'variablesReference' in dct:
- dct['variablesReference'] = cls._translate_id_from_dap(dct['variablesReference'])
+ if "variablesReference" in dct:
+ dct["variablesReference"] = cls._translate_id_from_dap(dct["variablesReference"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -13956,37 +12267,36 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if variablesReference is not None:
variablesReference = self._translate_id_to_dap(variablesReference)
dct = {
- 'name': name,
- 'value': value,
- 'variablesReference': variablesReference,
+ "name": name,
+ "value": value,
+ "variablesReference": variablesReference,
}
if type is not None:
- dct['type'] = type
+ dct["type"] = type
if presentationHint is not None:
- dct['presentationHint'] = presentationHint.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["presentationHint"] = presentationHint.to_dict(update_ids_to_dap=update_ids_to_dap)
if evaluateName is not None:
- dct['evaluateName'] = evaluateName
+ dct["evaluateName"] = evaluateName
if namedVariables is not None:
- dct['namedVariables'] = namedVariables
+ dct["namedVariables"] = namedVariables
if indexedVariables is not None:
- dct['indexedVariables'] = indexedVariables
+ dct["indexedVariables"] = indexedVariables
if memoryReference is not None:
- dct['memoryReference'] = memoryReference
+ dct["memoryReference"] = memoryReference
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'variablesReference' in dct:
- dct['variablesReference'] = cls._translate_id_to_dap(dct['variablesReference'])
+ if "variablesReference" in dct:
+ dct["variablesReference"] = cls._translate_id_to_dap(dct["variablesReference"])
return dct
@register
class VariablePresentationHint(BaseSchema):
"""
- Optional properties of a variable that can be used to determine how to render the variable in the
- UI.
+ Properties of a variable that can be used to determine how to render the variable in the UI.
Note: automatically generated code. Do not edit manually.
"""
@@ -14006,7 +12316,7 @@ class VariablePresentationHint(BaseSchema):
"interface",
"mostDerivedClass",
"virtual",
- "dataBreakpoint"
+ "dataBreakpoint",
],
"enumDescriptions": [
"Indicates that the object is a property.",
@@ -14018,9 +12328,9 @@ class VariablePresentationHint(BaseSchema):
"Indicates that the object is an inner class.",
"Indicates that the object is an interface.",
"Indicates that the object is the most derived class.",
- "Indicates that the object is virtual, that means it is a synthetic object introducedby the\nadapter for rendering purposes, e.g. an index range for large arrays.",
- "Deprecated: Indicates that a data breakpoint is registered for the object. The 'hasDataBreakpoint' attribute should generally be used instead."
- ]
+ "Indicates that the object is virtual, that means it is a synthetic object introduced by the adapter for rendering purposes, e.g. an index range for large arrays.",
+ "Deprecated: Indicates that a data breakpoint is registered for the object. The `hasDataBreakpoint` attribute should generally be used instead.",
+ ],
},
"attributes": {
"description": "Set of attributes represented as an array of strings. Before introducing additional values, try to use the listed values.",
@@ -14035,62 +12345,65 @@ class VariablePresentationHint(BaseSchema):
"hasObjectId",
"canHaveObjectId",
"hasSideEffects",
- "hasDataBreakpoint"
+ "hasDataBreakpoint",
],
"enumDescriptions": [
"Indicates that the object is static.",
"Indicates that the object is a constant.",
"Indicates that the object is read only.",
"Indicates that the object is a raw string.",
- "Indicates that the object can have an Object ID created for it.",
- "Indicates that the object has an Object ID associated with it.",
+ "Indicates that the object can have an Object ID created for it. This is a vestigial attribute that is used by some clients; 'Object ID's are not specified in the protocol.",
+ "Indicates that the object has an Object ID associated with it. This is a vestigial attribute that is used by some clients; 'Object ID's are not specified in the protocol.",
"Indicates that the evaluation had side effects.",
- "Indicates that the object has its value tracked by a data breakpoint."
- ]
- }
+ "Indicates that the object has its value tracked by a data breakpoint.",
+ ],
+ },
},
"visibility": {
"description": "Visibility of variable. Before introducing additional values, try to use the listed values.",
"type": "string",
- "_enum": [
- "public",
- "private",
- "protected",
- "internal",
- "final"
- ]
- }
+ "_enum": ["public", "private", "protected", "internal", "final"],
+ },
+ "lazy": {
+ "description": "If True, clients can present the variable with a UI that supports a specific gesture to trigger its evaluation.\nThis mechanism can be used for properties that require executing code when retrieving their value and where the code execution can be expensive and/or produce side-effects. A typical example are properties based on a getter function.\nPlease note that in addition to the `lazy` flag, the variable's `variablesReference` is expected to refer to a variable that will provide the value through another `variable` request.",
+ "type": "boolean",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
- def __init__(self, kind=None, attributes=None, visibility=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ def __init__(self, kind=None, attributes=None, visibility=None, lazy=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param string kind: The kind of variable. Before introducing additional values, try to use the listed values.
:param array attributes: Set of attributes represented as an array of strings. Before introducing additional values, try to use the listed values.
:param string visibility: Visibility of variable. Before introducing additional values, try to use the listed values.
+ :param boolean lazy: If true, clients can present the variable with a UI that supports a specific gesture to trigger its evaluation.
+ This mechanism can be used for properties that require executing code when retrieving their value and where the code execution can be expensive and/or produce side-effects. A typical example are properties based on a getter function.
+ Please note that in addition to the `lazy` flag, the variable's `variablesReference` is expected to refer to a variable that will provide the value through another `variable` request.
"""
self.kind = kind
self.attributes = attributes
self.visibility = visibility
+ self.lazy = lazy
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
kind = self.kind
attributes = self.attributes
if attributes and hasattr(attributes[0], "to_dict"):
attributes = [x.to_dict() for x in attributes]
visibility = self.visibility
- dct = {
- }
+ lazy = self.lazy
+ dct = {}
if kind is not None:
- dct['kind'] = kind
+ dct["kind"] = kind
if attributes is not None:
- dct['attributes'] = attributes
+ dct["attributes"] = attributes
if visibility is not None:
- dct['visibility'] = visibility
+ dct["visibility"] = visibility
+ if lazy is not None:
+ dct["lazy"] = lazy
dct.update(self.kwargs)
return dct
@@ -14098,39 +12411,33 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class BreakpointLocation(BaseSchema):
"""
- Properties of a breakpoint location returned from the 'breakpointLocations' request.
+ Properties of a breakpoint location returned from the `breakpointLocations` request.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
- "line": {
- "type": "integer",
- "description": "Start line of breakpoint location."
- },
+ "line": {"type": "integer", "description": "Start line of breakpoint location."},
"column": {
"type": "integer",
- "description": "Optional start column of breakpoint location."
- },
- "endLine": {
- "type": "integer",
- "description": "Optional end line of breakpoint location if the location covers a range."
+ "description": "The start position of a breakpoint location. Position is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.",
},
+ "endLine": {"type": "integer", "description": "The end line of breakpoint location if the location covers a range."},
"endColumn": {
"type": "integer",
- "description": "Optional end column of breakpoint location if the location covers a range."
- }
+ "description": "The end position of a breakpoint location (if the location covers a range). Position is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, line, column=None, endLine=None, endColumn=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param integer line: Start line of breakpoint location.
- :param integer column: Optional start column of breakpoint location.
- :param integer endLine: Optional end line of breakpoint location if the location covers a range.
- :param integer endColumn: Optional end column of breakpoint location if the location covers a range.
+ :param integer column: The start position of a breakpoint location. Position is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.
+ :param integer endLine: The end line of breakpoint location if the location covers a range.
+ :param integer endColumn: The end position of a breakpoint location (if the location covers a range). Position is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.
"""
self.line = line
self.column = column
@@ -14138,21 +12445,20 @@ def __init__(self, line, column=None, endLine=None, endColumn=None, update_ids_f
self.endColumn = endColumn
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
line = self.line
column = self.column
endLine = self.endLine
endColumn = self.endColumn
dct = {
- 'line': line,
+ "line": line,
}
if column is not None:
- dct['column'] = column
+ dct["column"] = column
if endLine is not None:
- dct['endLine'] = endLine
+ dct["endLine"] = endLine
if endColumn is not None:
- dct['endColumn'] = endColumn
+ dct["endColumn"] = endColumn
dct.update(self.kwargs)
return dct
@@ -14160,49 +12466,48 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class SourceBreakpoint(BaseSchema):
"""
- Properties of a breakpoint or logpoint passed to the setBreakpoints request.
+ Properties of a breakpoint or logpoint passed to the `setBreakpoints` request.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
- "line": {
- "type": "integer",
- "description": "The source line of the breakpoint or logpoint."
- },
+ "line": {"type": "integer", "description": "The source line of the breakpoint or logpoint."},
"column": {
"type": "integer",
- "description": "An optional source column of the breakpoint."
+ "description": "Start position within source line of the breakpoint or logpoint. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.",
},
"condition": {
"type": "string",
- "description": "An optional expression for conditional breakpoints.\nIt is only honored by a debug adapter if the capability 'supportsConditionalBreakpoints' is true."
+ "description": "The expression for conditional breakpoints.\nIt is only honored by a debug adapter if the corresponding capability `supportsConditionalBreakpoints` is True.",
},
"hitCondition": {
"type": "string",
- "description": "An optional expression that controls how many hits of the breakpoint are ignored.\nThe backend is expected to interpret the expression as needed.\nThe attribute is only honored by a debug adapter if the capability 'supportsHitConditionalBreakpoints' is true."
+ "description": "The expression that controls how many hits of the breakpoint are ignored.\nThe debug adapter is expected to interpret the expression as needed.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsHitConditionalBreakpoints` is True.\nIf both this property and `condition` are specified, `hitCondition` should be evaluated only if the `condition` is met, and the debug adapter should stop only if both conditions are met.",
},
"logMessage": {
"type": "string",
- "description": "If this attribute exists and is non-empty, the backend must not 'break' (stop)\nbut log the message instead. Expressions within {} are interpolated.\nThe attribute is only honored by a debug adapter if the capability 'supportsLogPoints' is true."
- }
+ "description": "If this attribute exists and is non-empty, the debug adapter must not 'break' (stop)\nbut log the message instead. Expressions within `{}` are interpolated.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsLogPoints` is True.\nIf either `hitCondition` or `condition` is specified, then the message should only be logged if those conditions are met.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, line, column=None, condition=None, hitCondition=None, logMessage=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param integer line: The source line of the breakpoint or logpoint.
- :param integer column: An optional source column of the breakpoint.
- :param string condition: An optional expression for conditional breakpoints.
- It is only honored by a debug adapter if the capability 'supportsConditionalBreakpoints' is true.
- :param string hitCondition: An optional expression that controls how many hits of the breakpoint are ignored.
- The backend is expected to interpret the expression as needed.
- The attribute is only honored by a debug adapter if the capability 'supportsHitConditionalBreakpoints' is true.
- :param string logMessage: If this attribute exists and is non-empty, the backend must not 'break' (stop)
- but log the message instead. Expressions within {} are interpolated.
- The attribute is only honored by a debug adapter if the capability 'supportsLogPoints' is true.
+ :param integer column: Start position within source line of the breakpoint or logpoint. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.
+ :param string condition: The expression for conditional breakpoints.
+ It is only honored by a debug adapter if the corresponding capability `supportsConditionalBreakpoints` is true.
+ :param string hitCondition: The expression that controls how many hits of the breakpoint are ignored.
+ The debug adapter is expected to interpret the expression as needed.
+ The attribute is only honored by a debug adapter if the corresponding capability `supportsHitConditionalBreakpoints` is true.
+ If both this property and `condition` are specified, `hitCondition` should be evaluated only if the `condition` is met, and the debug adapter should stop only if both conditions are met.
+ :param string logMessage: If this attribute exists and is non-empty, the debug adapter must not 'break' (stop)
+ but log the message instead. Expressions within `{}` are interpolated.
+ The attribute is only honored by a debug adapter if the corresponding capability `supportsLogPoints` is true.
+ If either `hitCondition` or `condition` is specified, then the message should only be logged if those conditions are met.
"""
self.line = line
self.column = column
@@ -14211,7 +12516,6 @@ def __init__(self, line, column=None, condition=None, hitCondition=None, logMess
self.logMessage = logMessage
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
line = self.line
column = self.column
@@ -14219,16 +12523,16 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
hitCondition = self.hitCondition
logMessage = self.logMessage
dct = {
- 'line': line,
+ "line": line,
}
if column is not None:
- dct['column'] = column
+ dct["column"] = column
if condition is not None:
- dct['condition'] = condition
+ dct["condition"] = condition
if hitCondition is not None:
- dct['hitCondition'] = hitCondition
+ dct["hitCondition"] = hitCondition
if logMessage is not None:
- dct['logMessage'] = logMessage
+ dct["logMessage"] = logMessage
dct.update(self.kwargs)
return dct
@@ -14236,55 +12540,51 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class FunctionBreakpoint(BaseSchema):
"""
- Properties of a breakpoint passed to the setFunctionBreakpoints request.
+ Properties of a breakpoint passed to the `setFunctionBreakpoints` request.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
- "name": {
- "type": "string",
- "description": "The name of the function."
- },
+ "name": {"type": "string", "description": "The name of the function."},
"condition": {
"type": "string",
- "description": "An optional expression for conditional breakpoints.\nIt is only honored by a debug adapter if the capability 'supportsConditionalBreakpoints' is true."
+ "description": "An expression for conditional breakpoints.\nIt is only honored by a debug adapter if the corresponding capability `supportsConditionalBreakpoints` is True.",
},
"hitCondition": {
"type": "string",
- "description": "An optional expression that controls how many hits of the breakpoint are ignored.\nThe backend is expected to interpret the expression as needed.\nThe attribute is only honored by a debug adapter if the capability 'supportsHitConditionalBreakpoints' is true."
- }
+ "description": "An expression that controls how many hits of the breakpoint are ignored.\nThe debug adapter is expected to interpret the expression as needed.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsHitConditionalBreakpoints` is True.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, name, condition=None, hitCondition=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param string name: The name of the function.
- :param string condition: An optional expression for conditional breakpoints.
- It is only honored by a debug adapter if the capability 'supportsConditionalBreakpoints' is true.
- :param string hitCondition: An optional expression that controls how many hits of the breakpoint are ignored.
- The backend is expected to interpret the expression as needed.
- The attribute is only honored by a debug adapter if the capability 'supportsHitConditionalBreakpoints' is true.
+ :param string condition: An expression for conditional breakpoints.
+ It is only honored by a debug adapter if the corresponding capability `supportsConditionalBreakpoints` is true.
+ :param string hitCondition: An expression that controls how many hits of the breakpoint are ignored.
+ The debug adapter is expected to interpret the expression as needed.
+ The attribute is only honored by a debug adapter if the corresponding capability `supportsHitConditionalBreakpoints` is true.
"""
self.name = name
self.condition = condition
self.hitCondition = hitCondition
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
name = self.name
condition = self.condition
hitCondition = self.hitCondition
dct = {
- 'name': name,
+ "name": name,
}
if condition is not None:
- dct['condition'] = condition
+ dct["condition"] = condition
if hitCondition is not None:
- dct['hitCondition'] = hitCondition
+ dct["hitCondition"] = hitCondition
dct.update(self.kwargs)
return dct
@@ -14297,28 +12597,24 @@ class DataBreakpointAccessType(BaseSchema):
Note: automatically generated code. Do not edit manually.
"""
- READ = 'read'
- WRITE = 'write'
- READWRITE = 'readWrite'
+ READ = "read"
+ WRITE = "write"
+ READWRITE = "readWrite"
- VALID_VALUES = set(['read', 'write', 'readWrite'])
+ VALID_VALUES = set(["read", "write", "readWrite"])
__props__ = {}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
- """
-
- """
-
- self.kwargs = kwargs
+ """ """
+ self.kwargs = kwargs
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
- dct = {
- }
+ dct = {}
dct.update(self.kwargs)
return dct
@@ -14326,7 +12622,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class DataBreakpoint(BaseSchema):
"""
- Properties of a data breakpoint passed to the setDataBreakpoints request.
+ Properties of a data breakpoint passed to the `setDataBreakpoints` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -14334,32 +12630,26 @@ class DataBreakpoint(BaseSchema):
__props__ = {
"dataId": {
"type": "string",
- "description": "An id representing the data. This id is returned from the dataBreakpointInfo request."
- },
- "accessType": {
- "description": "The access type of the data.",
- "type": "DataBreakpointAccessType"
- },
- "condition": {
- "type": "string",
- "description": "An optional expression for conditional breakpoints."
+ "description": "An id representing the data. This id is returned from the `dataBreakpointInfo` request.",
},
+ "accessType": {"description": "The access type of the data.", "type": "DataBreakpointAccessType"},
+ "condition": {"type": "string", "description": "An expression for conditional breakpoints."},
"hitCondition": {
"type": "string",
- "description": "An optional expression that controls how many hits of the breakpoint are ignored.\nThe backend is expected to interpret the expression as needed."
- }
+ "description": "An expression that controls how many hits of the breakpoint are ignored.\nThe debug adapter is expected to interpret the expression as needed.",
+ },
}
- __refs__ = set(['accessType'])
+ __refs__ = set(["accessType"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, dataId, accessType=None, condition=None, hitCondition=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string dataId: An id representing the data. This id is returned from the dataBreakpointInfo request.
+ :param string dataId: An id representing the data. This id is returned from the `dataBreakpointInfo` request.
:param DataBreakpointAccessType accessType: The access type of the data.
- :param string condition: An optional expression for conditional breakpoints.
- :param string hitCondition: An optional expression that controls how many hits of the breakpoint are ignored.
- The backend is expected to interpret the expression as needed.
+ :param string condition: An expression for conditional breakpoints.
+ :param string hitCondition: An expression that controls how many hits of the breakpoint are ignored.
+ The debug adapter is expected to interpret the expression as needed.
"""
self.dataId = dataId
if accessType is not None:
@@ -14369,21 +12659,20 @@ def __init__(self, dataId, accessType=None, condition=None, hitCondition=None, u
self.hitCondition = hitCondition
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
dataId = self.dataId
accessType = self.accessType
condition = self.condition
hitCondition = self.hitCondition
dct = {
- 'dataId': dataId,
+ "dataId": dataId,
}
if accessType is not None:
- dct['accessType'] = accessType
+ dct["accessType"] = accessType
if condition is not None:
- dct['condition'] = condition
+ dct["condition"] = condition
if hitCondition is not None:
- dct['hitCondition'] = hitCondition
+ dct["hitCondition"] = hitCondition
dct.update(self.kwargs)
return dct
@@ -14391,7 +12680,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class InstructionBreakpoint(BaseSchema):
"""
- Properties of a breakpoint passed to the setInstructionBreakpoints request
+ Properties of a breakpoint passed to the `setInstructionBreakpoints` request
Note: automatically generated code. Do not edit manually.
"""
@@ -14399,36 +12688,33 @@ class InstructionBreakpoint(BaseSchema):
__props__ = {
"instructionReference": {
"type": "string",
- "description": "The instruction reference of the breakpoint.\nThis should be a memory or instruction pointer reference from an EvaluateResponse, Variable, StackFrame, GotoTarget, or Breakpoint."
- },
- "offset": {
- "type": "integer",
- "description": "An optional offset from the instruction reference.\nThis can be negative."
+ "description": "The instruction reference of the breakpoint.\nThis should be a memory or instruction pointer reference from an `EvaluateResponse`, `Variable`, `StackFrame`, `GotoTarget`, or `Breakpoint`.",
},
+ "offset": {"type": "integer", "description": "The offset from the instruction reference in bytes.\nThis can be negative."},
"condition": {
"type": "string",
- "description": "An optional expression for conditional breakpoints.\nIt is only honored by a debug adapter if the capability 'supportsConditionalBreakpoints' is true."
+ "description": "An expression for conditional breakpoints.\nIt is only honored by a debug adapter if the corresponding capability `supportsConditionalBreakpoints` is True.",
},
"hitCondition": {
"type": "string",
- "description": "An optional expression that controls how many hits of the breakpoint are ignored.\nThe backend is expected to interpret the expression as needed.\nThe attribute is only honored by a debug adapter if the capability 'supportsHitConditionalBreakpoints' is true."
- }
+ "description": "An expression that controls how many hits of the breakpoint are ignored.\nThe debug adapter is expected to interpret the expression as needed.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsHitConditionalBreakpoints` is True.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, instructionReference, offset=None, condition=None, hitCondition=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param string instructionReference: The instruction reference of the breakpoint.
- This should be a memory or instruction pointer reference from an EvaluateResponse, Variable, StackFrame, GotoTarget, or Breakpoint.
- :param integer offset: An optional offset from the instruction reference.
+ This should be a memory or instruction pointer reference from an `EvaluateResponse`, `Variable`, `StackFrame`, `GotoTarget`, or `Breakpoint`.
+ :param integer offset: The offset from the instruction reference in bytes.
This can be negative.
- :param string condition: An optional expression for conditional breakpoints.
- It is only honored by a debug adapter if the capability 'supportsConditionalBreakpoints' is true.
- :param string hitCondition: An optional expression that controls how many hits of the breakpoint are ignored.
- The backend is expected to interpret the expression as needed.
- The attribute is only honored by a debug adapter if the capability 'supportsHitConditionalBreakpoints' is true.
+ :param string condition: An expression for conditional breakpoints.
+ It is only honored by a debug adapter if the corresponding capability `supportsConditionalBreakpoints` is true.
+ :param string hitCondition: An expression that controls how many hits of the breakpoint are ignored.
+ The debug adapter is expected to interpret the expression as needed.
+ The attribute is only honored by a debug adapter if the corresponding capability `supportsHitConditionalBreakpoints` is true.
"""
self.instructionReference = instructionReference
self.offset = offset
@@ -14436,21 +12722,20 @@ def __init__(self, instructionReference, offset=None, condition=None, hitConditi
self.hitCondition = hitCondition
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
instructionReference = self.instructionReference
offset = self.offset
condition = self.condition
hitCondition = self.hitCondition
dct = {
- 'instructionReference': instructionReference,
+ "instructionReference": instructionReference,
}
if offset is not None:
- dct['offset'] = offset
+ dct["offset"] = offset
if condition is not None:
- dct['condition'] = condition
+ dct["condition"] = condition
if hitCondition is not None:
- dct['hitCondition'] = hitCondition
+ dct["hitCondition"] = hitCondition
dct.update(self.kwargs)
return dct
@@ -14458,8 +12743,8 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class Breakpoint(BaseSchema):
"""
- Information about a Breakpoint created in setBreakpoints, setFunctionBreakpoints,
- setInstructionBreakpoints, or setDataBreakpoints.
+ Information about a breakpoint created in `setBreakpoints`, `setFunctionBreakpoints`,
+ `setInstructionBreakpoints`, or `setDataBreakpoints` requests.
Note: automatically generated code. Do not edit manually.
"""
@@ -14467,64 +12752,73 @@ class Breakpoint(BaseSchema):
__props__ = {
"id": {
"type": "integer",
- "description": "An optional identifier for the breakpoint. It is needed if breakpoint events are used to update or remove breakpoints."
+ "description": "The identifier for the breakpoint. It is needed if breakpoint events are used to update or remove breakpoints.",
},
"verified": {
"type": "boolean",
- "description": "If true breakpoint could be set (but not necessarily at the desired location)."
+ "description": "If True, the breakpoint could be set (but not necessarily at the desired location).",
},
"message": {
"type": "string",
- "description": "An optional message about the state of the breakpoint.\nThis is shown to the user and can be used to explain why a breakpoint could not be verified."
- },
- "source": {
- "description": "The source where the breakpoint is located.",
- "type": "Source"
- },
- "line": {
- "type": "integer",
- "description": "The start line of the actual range covered by the breakpoint."
+ "description": "A message about the state of the breakpoint.\nThis is shown to the user and can be used to explain why a breakpoint could not be verified.",
},
+ "source": {"description": "The source where the breakpoint is located.", "type": "Source"},
+ "line": {"type": "integer", "description": "The start line of the actual range covered by the breakpoint."},
"column": {
"type": "integer",
- "description": "An optional start column of the actual range covered by the breakpoint."
- },
- "endLine": {
- "type": "integer",
- "description": "An optional end line of the actual range covered by the breakpoint."
+ "description": "Start position of the source range covered by the breakpoint. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.",
},
+ "endLine": {"type": "integer", "description": "The end line of the actual range covered by the breakpoint."},
"endColumn": {
"type": "integer",
- "description": "An optional end column of the actual range covered by the breakpoint.\nIf no end line is given, then the end column is assumed to be in the start line."
+ "description": "End position of the source range covered by the breakpoint. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.\nIf no end line is given, then the end column is assumed to be in the start line.",
},
- "instructionReference": {
+ "instructionReference": {"type": "string", "description": "A memory reference to where the breakpoint is set."},
+ "offset": {"type": "integer", "description": "The offset from the instruction reference.\nThis can be negative."},
+ "reason": {
"type": "string",
- "description": "An optional memory reference to where the breakpoint is set."
+ "description": "A machine-readable explanation of why a breakpoint may not be verified. If a breakpoint is verified or a specific reason is not known, the adapter should omit this property. Possible values include:\n\n- `pending`: Indicates a breakpoint might be verified in the future, but the adapter cannot verify it in the current state.\n - `failed`: Indicates a breakpoint was not able to be verified, and the adapter does not believe it can be verified without intervention.",
+ "enum": ["pending", "failed"],
},
- "offset": {
- "type": "integer",
- "description": "An optional offset from the instruction reference.\nThis can be negative."
- }
}
- __refs__ = set(['source'])
-
- __slots__ = list(__props__.keys()) + ['kwargs']
-
- def __init__(self, verified, id=None, message=None, source=None, line=None, column=None, endLine=None, endColumn=None, instructionReference=None, offset=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
- """
- :param boolean verified: If true breakpoint could be set (but not necessarily at the desired location).
- :param integer id: An optional identifier for the breakpoint. It is needed if breakpoint events are used to update or remove breakpoints.
- :param string message: An optional message about the state of the breakpoint.
+ __refs__ = set(["source"])
+
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(
+ self,
+ verified,
+ id=None,
+ message=None,
+ source=None,
+ line=None,
+ column=None,
+ endLine=None,
+ endColumn=None,
+ instructionReference=None,
+ offset=None,
+ reason=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
+ """
+ :param boolean verified: If true, the breakpoint could be set (but not necessarily at the desired location).
+ :param integer id: The identifier for the breakpoint. It is needed if breakpoint events are used to update or remove breakpoints.
+ :param string message: A message about the state of the breakpoint.
This is shown to the user and can be used to explain why a breakpoint could not be verified.
:param Source source: The source where the breakpoint is located.
:param integer line: The start line of the actual range covered by the breakpoint.
- :param integer column: An optional start column of the actual range covered by the breakpoint.
- :param integer endLine: An optional end line of the actual range covered by the breakpoint.
- :param integer endColumn: An optional end column of the actual range covered by the breakpoint.
+ :param integer column: Start position of the source range covered by the breakpoint. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.
+ :param integer endLine: The end line of the actual range covered by the breakpoint.
+ :param integer endColumn: End position of the source range covered by the breakpoint. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.
If no end line is given, then the end column is assumed to be in the start line.
- :param string instructionReference: An optional memory reference to where the breakpoint is set.
- :param integer offset: An optional offset from the instruction reference.
+ :param string instructionReference: A memory reference to where the breakpoint is set.
+ :param integer offset: The offset from the instruction reference.
This can be negative.
+ :param string reason: A machine-readable explanation of why a breakpoint may not be verified. If a breakpoint is verified or a specific reason is not known, the adapter should omit this property. Possible values include:
+
+ - `pending`: Indicates a breakpoint might be verified in the future, but the adapter cannot verify it in the current state.
+ - `failed`: Indicates a breakpoint was not able to be verified, and the adapter does not believe it can be verified without intervention.
"""
self.verified = verified
self.id = id
@@ -14532,16 +12826,16 @@ def __init__(self, verified, id=None, message=None, source=None, line=None, colu
if source is None:
self.source = Source()
else:
- self.source = Source(update_ids_from_dap=update_ids_from_dap, **source) if source.__class__ != Source else source
+ self.source = Source(update_ids_from_dap=update_ids_from_dap, **source) if source.__class__ != Source else source
self.line = line
self.column = column
self.endLine = endLine
self.endColumn = endColumn
self.instructionReference = instructionReference
self.offset = offset
+ self.reason = reason
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
verified = self.verified
id = self.id # noqa (assign to builtin)
@@ -14553,27 +12847,30 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
endColumn = self.endColumn
instructionReference = self.instructionReference
offset = self.offset
+ reason = self.reason
dct = {
- 'verified': verified,
+ "verified": verified,
}
if id is not None:
- dct['id'] = id
+ dct["id"] = id
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if source is not None:
- dct['source'] = source.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["source"] = source.to_dict(update_ids_to_dap=update_ids_to_dap)
if line is not None:
- dct['line'] = line
+ dct["line"] = line
if column is not None:
- dct['column'] = column
+ dct["column"] = column
if endLine is not None:
- dct['endLine'] = endLine
+ dct["endLine"] = endLine
if endColumn is not None:
- dct['endColumn'] = endColumn
+ dct["endColumn"] = endColumn
if instructionReference is not None:
- dct['instructionReference'] = instructionReference
+ dct["instructionReference"] = instructionReference
if offset is not None:
- dct['offset'] = offset
+ dct["offset"] = offset
+ if reason is not None:
+ dct["reason"] = reason
dct.update(self.kwargs)
return dct
@@ -14581,33 +12878,29 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class SteppingGranularity(BaseSchema):
"""
- The granularity of one 'step' in the stepping requests 'next', 'stepIn', 'stepOut', and 'stepBack'.
+ The granularity of one 'step' in the stepping requests `next`, `stepIn`, `stepOut`, and `stepBack`.
Note: automatically generated code. Do not edit manually.
"""
- STATEMENT = 'statement'
- LINE = 'line'
- INSTRUCTION = 'instruction'
+ STATEMENT = "statement"
+ LINE = "line"
+ INSTRUCTION = "instruction"
- VALID_VALUES = set(['statement', 'line', 'instruction'])
+ VALID_VALUES = set(["statement", "line", "instruction"])
__props__ = {}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
- """
-
- """
-
- self.kwargs = kwargs
+ """ """
+ self.kwargs = kwargs
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
- dct = {
- }
+ dct = {}
dct.update(self.kwargs)
return dct
@@ -14615,43 +12908,66 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class StepInTarget(BaseSchema):
"""
- A StepInTarget can be used in the 'stepIn' request and determines into which single target the
- stepIn request should step.
+ A `StepInTarget` can be used in the `stepIn` request and determines into which single target the
+ `stepIn` request should step.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
- "id": {
+ "id": {"type": "integer", "description": "Unique identifier for a step-in target."},
+ "label": {"type": "string", "description": "The name of the step-in target (shown in the UI)."},
+ "line": {"type": "integer", "description": "The line of the step-in target."},
+ "column": {
"type": "integer",
- "description": "Unique identifier for a stepIn target."
+ "description": "Start position of the range covered by the step in target. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.",
+ },
+ "endLine": {"type": "integer", "description": "The end line of the range covered by the step-in target."},
+ "endColumn": {
+ "type": "integer",
+ "description": "End position of the range covered by the step in target. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.",
},
- "label": {
- "type": "string",
- "description": "The name of the stepIn target (shown in the UI)."
- }
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
- def __init__(self, id, label, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ def __init__(self, id, label, line=None, column=None, endLine=None, endColumn=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param integer id: Unique identifier for a stepIn target.
- :param string label: The name of the stepIn target (shown in the UI).
+ :param integer id: Unique identifier for a step-in target.
+ :param string label: The name of the step-in target (shown in the UI).
+ :param integer line: The line of the step-in target.
+ :param integer column: Start position of the range covered by the step in target. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.
+ :param integer endLine: The end line of the range covered by the step-in target.
+ :param integer endColumn: End position of the range covered by the step in target. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.
"""
self.id = id
self.label = label
+ self.line = line
+ self.column = column
+ self.endLine = endLine
+ self.endColumn = endColumn
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
id = self.id # noqa (assign to builtin)
label = self.label
+ line = self.line
+ column = self.column
+ endLine = self.endLine
+ endColumn = self.endColumn
dct = {
- 'id': id,
- 'label': label,
+ "id": id,
+ "label": label,
}
+ if line is not None:
+ dct["line"] = line
+ if column is not None:
+ dct["column"] = column
+ if endLine is not None:
+ dct["endLine"] = endLine
+ if endColumn is not None:
+ dct["endColumn"] = endColumn
dct.update(self.kwargs)
return dct
@@ -14659,56 +12975,49 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class GotoTarget(BaseSchema):
"""
- A GotoTarget describes a code location that can be used as a target in the 'goto' request.
-
- The possible goto targets can be determined via the 'gotoTargets' request.
+ A `GotoTarget` describes a code location that can be used as a target in the `goto` request.
+
+ The possible goto targets can be determined via the `gotoTargets` request.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
- "id": {
- "type": "integer",
- "description": "Unique identifier for a goto target. This is used in the goto request."
- },
- "label": {
- "type": "string",
- "description": "The name of the goto target (shown in the UI)."
- },
- "line": {
- "type": "integer",
- "description": "The line of the goto target."
- },
- "column": {
- "type": "integer",
- "description": "An optional column of the goto target."
- },
- "endLine": {
- "type": "integer",
- "description": "An optional end line of the range covered by the goto target."
- },
- "endColumn": {
- "type": "integer",
- "description": "An optional end column of the range covered by the goto target."
- },
+ "id": {"type": "integer", "description": "Unique identifier for a goto target. This is used in the `goto` request."},
+ "label": {"type": "string", "description": "The name of the goto target (shown in the UI)."},
+ "line": {"type": "integer", "description": "The line of the goto target."},
+ "column": {"type": "integer", "description": "The column of the goto target."},
+ "endLine": {"type": "integer", "description": "The end line of the range covered by the goto target."},
+ "endColumn": {"type": "integer", "description": "The end column of the range covered by the goto target."},
"instructionPointerReference": {
"type": "string",
- "description": "Optional memory reference for the instruction pointer value represented by this target."
- }
+ "description": "A memory reference for the instruction pointer value represented by this target.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
-
- def __init__(self, id, label, line, column=None, endLine=None, endColumn=None, instructionPointerReference=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
- """
- :param integer id: Unique identifier for a goto target. This is used in the goto request.
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(
+ self,
+ id,
+ label,
+ line,
+ column=None,
+ endLine=None,
+ endColumn=None,
+ instructionPointerReference=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
+ """
+ :param integer id: Unique identifier for a goto target. This is used in the `goto` request.
:param string label: The name of the goto target (shown in the UI).
:param integer line: The line of the goto target.
- :param integer column: An optional column of the goto target.
- :param integer endLine: An optional end line of the range covered by the goto target.
- :param integer endColumn: An optional end column of the range covered by the goto target.
- :param string instructionPointerReference: Optional memory reference for the instruction pointer value represented by this target.
+ :param integer column: The column of the goto target.
+ :param integer endLine: The end line of the range covered by the goto target.
+ :param integer endColumn: The end column of the range covered by the goto target.
+ :param string instructionPointerReference: A memory reference for the instruction pointer value represented by this target.
"""
self.id = id
self.label = label
@@ -14719,7 +13028,6 @@ def __init__(self, id, label, line, column=None, endLine=None, endColumn=None, i
self.instructionPointerReference = instructionPointerReference
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
id = self.id # noqa (assign to builtin)
label = self.label
@@ -14729,18 +13037,18 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
endColumn = self.endColumn
instructionPointerReference = self.instructionPointerReference
dct = {
- 'id': id,
- 'label': label,
- 'line': line,
+ "id": id,
+ "label": label,
+ "line": line,
}
if column is not None:
- dct['column'] = column
+ dct["column"] = column
if endLine is not None:
- dct['endLine'] = endLine
+ dct["endLine"] = endLine
if endColumn is not None:
- dct['endColumn'] = endColumn
+ dct["endColumn"] = endColumn
if instructionPointerReference is not None:
- dct['instructionPointerReference'] = instructionPointerReference
+ dct["instructionPointerReference"] = instructionPointerReference
dct.update(self.kwargs)
return dct
@@ -14748,7 +13056,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class CompletionItem(BaseSchema):
"""
- CompletionItems are the suggestions returned from the CompletionsRequest.
+ `CompletionItems` are the suggestions returned from the `completions` request.
Note: automatically generated code. Do not edit manually.
"""
@@ -14756,61 +13064,71 @@ class CompletionItem(BaseSchema):
__props__ = {
"label": {
"type": "string",
- "description": "The label of this completion item. By default this is also the text that is inserted when selecting this completion."
+ "description": "The label of this completion item. By default this is also the text that is inserted when selecting this completion.",
},
- "text": {
+ "text": {"type": "string", "description": "If text is returned and not an empty string, then it is inserted instead of the label."},
+ "sortText": {
"type": "string",
- "description": "If text is not falsy then it is inserted instead of the label."
+ "description": "A string that should be used when comparing this item with other items. If not returned or an empty string, the `label` is used instead.",
},
- "sortText": {
+ "detail": {
"type": "string",
- "description": "A string that should be used when comparing this item with other items. When `falsy` the label is used."
+ "description": "A human-readable string with additional information about this item, like type or symbol information.",
},
"type": {
"description": "The item's type. Typically the client uses this information to render the item in the UI with an icon.",
- "type": "CompletionItemType"
+ "type": "CompletionItemType",
},
"start": {
"type": "integer",
- "description": "This value determines the location (in the CompletionsRequest's 'text' attribute) where the completion text is added.\nIf missing the text is added at the location specified by the CompletionsRequest's 'column' attribute."
+ "description": "Start position (within the `text` attribute of the `completions` request) where the completion text is added. The position is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If the start position is omitted the text is added at the location specified by the `column` attribute of the `completions` request.",
},
"length": {
"type": "integer",
- "description": "This value determines how many characters are overwritten by the completion text.\nIf missing the value 0 is assumed which results in the completion text being inserted."
+ "description": "Length determines how many characters are overwritten by the completion text and it is measured in UTF-16 code units. If missing the value 0 is assumed which results in the completion text being inserted.",
},
"selectionStart": {
"type": "integer",
- "description": "Determines the start of the new selection after the text has been inserted (or replaced).\nThe start position must in the range 0 and length of the completion text.\nIf omitted the selection starts at the end of the completion text."
+ "description": "Determines the start of the new selection after the text has been inserted (or replaced). `selectionStart` is measured in UTF-16 code units and must be in the range 0 and length of the completion text. If omitted the selection starts at the end of the completion text.",
},
"selectionLength": {
"type": "integer",
- "description": "Determines the length of the new selection after the text has been inserted (or replaced).\nThe selection can not extend beyond the bounds of the completion text.\nIf omitted the length is assumed to be 0."
- }
+ "description": "Determines the length of the new selection after the text has been inserted (or replaced) and it is measured in UTF-16 code units. The selection can not extend beyond the bounds of the completion text. If omitted the length is assumed to be 0.",
+ },
}
- __refs__ = set(['type'])
-
- __slots__ = list(__props__.keys()) + ['kwargs']
-
- def __init__(self, label, text=None, sortText=None, type=None, start=None, length=None, selectionStart=None, selectionLength=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ __refs__ = set(["type"])
+
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(
+ self,
+ label,
+ text=None,
+ sortText=None,
+ detail=None,
+ type=None,
+ start=None,
+ length=None,
+ selectionStart=None,
+ selectionLength=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
"""
:param string label: The label of this completion item. By default this is also the text that is inserted when selecting this completion.
- :param string text: If text is not falsy then it is inserted instead of the label.
- :param string sortText: A string that should be used when comparing this item with other items. When `falsy` the label is used.
+ :param string text: If text is returned and not an empty string, then it is inserted instead of the label.
+ :param string sortText: A string that should be used when comparing this item with other items. If not returned or an empty string, the `label` is used instead.
+ :param string detail: A human-readable string with additional information about this item, like type or symbol information.
:param CompletionItemType type: The item's type. Typically the client uses this information to render the item in the UI with an icon.
- :param integer start: This value determines the location (in the CompletionsRequest's 'text' attribute) where the completion text is added.
- If missing the text is added at the location specified by the CompletionsRequest's 'column' attribute.
- :param integer length: This value determines how many characters are overwritten by the completion text.
- If missing the value 0 is assumed which results in the completion text being inserted.
- :param integer selectionStart: Determines the start of the new selection after the text has been inserted (or replaced).
- The start position must in the range 0 and length of the completion text.
- If omitted the selection starts at the end of the completion text.
- :param integer selectionLength: Determines the length of the new selection after the text has been inserted (or replaced).
- The selection can not extend beyond the bounds of the completion text.
- If omitted the length is assumed to be 0.
+ :param integer start: Start position (within the `text` attribute of the `completions` request) where the completion text is added. The position is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If the start position is omitted the text is added at the location specified by the `column` attribute of the `completions` request.
+ :param integer length: Length determines how many characters are overwritten by the completion text and it is measured in UTF-16 code units. If missing the value 0 is assumed which results in the completion text being inserted.
+ :param integer selectionStart: Determines the start of the new selection after the text has been inserted (or replaced). `selectionStart` is measured in UTF-16 code units and must be in the range 0 and length of the completion text. If omitted the selection starts at the end of the completion text.
+ :param integer selectionLength: Determines the length of the new selection after the text has been inserted (or replaced) and it is measured in UTF-16 code units. The selection can not extend beyond the bounds of the completion text. If omitted the length is assumed to be 0.
"""
self.label = label
self.text = text
self.sortText = sortText
+ self.detail = detail
if type is not None:
assert type in CompletionItemType.VALID_VALUES
self.type = type
@@ -14820,33 +13138,35 @@ def __init__(self, label, text=None, sortText=None, type=None, start=None, lengt
self.selectionLength = selectionLength
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
label = self.label
text = self.text
sortText = self.sortText
+ detail = self.detail
type = self.type # noqa (assign to builtin)
start = self.start
length = self.length
selectionStart = self.selectionStart
selectionLength = self.selectionLength
dct = {
- 'label': label,
+ "label": label,
}
if text is not None:
- dct['text'] = text
+ dct["text"] = text
if sortText is not None:
- dct['sortText'] = sortText
+ dct["sortText"] = sortText
+ if detail is not None:
+ dct["detail"] = detail
if type is not None:
- dct['type'] = type
+ dct["type"] = type
if start is not None:
- dct['start'] = start
+ dct["start"] = start
if length is not None:
- dct['length'] = length
+ dct["length"] = length
if selectionStart is not None:
- dct['selectionStart'] = selectionStart
+ dct["selectionStart"] = selectionStart
if selectionLength is not None:
- dct['selectionLength'] = selectionLength
+ dct["selectionLength"] = selectionLength
dct.update(self.kwargs)
return dct
@@ -14860,44 +13180,62 @@ class CompletionItemType(BaseSchema):
Note: automatically generated code. Do not edit manually.
"""
- METHOD = 'method'
- FUNCTION = 'function'
- CONSTRUCTOR = 'constructor'
- FIELD = 'field'
- VARIABLE = 'variable'
- CLASS = 'class'
- INTERFACE = 'interface'
- MODULE = 'module'
- PROPERTY = 'property'
- UNIT = 'unit'
- VALUE = 'value'
- ENUM = 'enum'
- KEYWORD = 'keyword'
- SNIPPET = 'snippet'
- TEXT = 'text'
- COLOR = 'color'
- FILE = 'file'
- REFERENCE = 'reference'
- CUSTOMCOLOR = 'customcolor'
-
- VALID_VALUES = set(['method', 'function', 'constructor', 'field', 'variable', 'class', 'interface', 'module', 'property', 'unit', 'value', 'enum', 'keyword', 'snippet', 'text', 'color', 'file', 'reference', 'customcolor'])
+ METHOD = "method"
+ FUNCTION = "function"
+ CONSTRUCTOR = "constructor"
+ FIELD = "field"
+ VARIABLE = "variable"
+ CLASS = "class"
+ INTERFACE = "interface"
+ MODULE = "module"
+ PROPERTY = "property"
+ UNIT = "unit"
+ VALUE = "value"
+ ENUM = "enum"
+ KEYWORD = "keyword"
+ SNIPPET = "snippet"
+ TEXT = "text"
+ COLOR = "color"
+ FILE = "file"
+ REFERENCE = "reference"
+ CUSTOMCOLOR = "customcolor"
+
+ VALID_VALUES = set(
+ [
+ "method",
+ "function",
+ "constructor",
+ "field",
+ "variable",
+ "class",
+ "interface",
+ "module",
+ "property",
+ "unit",
+ "value",
+ "enum",
+ "keyword",
+ "snippet",
+ "text",
+ "color",
+ "file",
+ "reference",
+ "customcolor",
+ ]
+ )
__props__ = {}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
- """
-
- """
-
- self.kwargs = kwargs
+ """ """
+ self.kwargs = kwargs
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
- dct = {
- }
+ dct = {}
dct.update(self.kwargs)
return dct
@@ -14910,29 +13248,25 @@ class ChecksumAlgorithm(BaseSchema):
Note: automatically generated code. Do not edit manually.
"""
- MD5 = 'MD5'
- SHA1 = 'SHA1'
- SHA256 = 'SHA256'
- TIMESTAMP = 'timestamp'
+ MD5 = "MD5"
+ SHA1 = "SHA1"
+ SHA256 = "SHA256"
+ TIMESTAMP = "timestamp"
- VALID_VALUES = set(['MD5', 'SHA1', 'SHA256', 'timestamp'])
+ VALID_VALUES = set(["MD5", "SHA1", "SHA256", "timestamp"])
__props__ = {}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
- """
-
- """
-
- self.kwargs = kwargs
+ """ """
+ self.kwargs = kwargs
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
- dct = {
- }
+ dct = {}
dct.update(self.kwargs)
return dct
@@ -14946,23 +13280,17 @@ class Checksum(BaseSchema):
"""
__props__ = {
- "algorithm": {
- "description": "The algorithm used to calculate this checksum.",
- "type": "ChecksumAlgorithm"
- },
- "checksum": {
- "type": "string",
- "description": "Value of the checksum."
- }
+ "algorithm": {"description": "The algorithm used to calculate this checksum.", "type": "ChecksumAlgorithm"},
+ "checksum": {"type": "string", "description": "Value of the checksum, encoded as a hexadecimal value."},
}
- __refs__ = set(['algorithm'])
+ __refs__ = set(["algorithm"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, algorithm, checksum, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param ChecksumAlgorithm algorithm: The algorithm used to calculate this checksum.
- :param string checksum: Value of the checksum.
+ :param string checksum: Value of the checksum, encoded as a hexadecimal value.
"""
if algorithm is not None:
assert algorithm in ChecksumAlgorithm.VALID_VALUES
@@ -14970,13 +13298,12 @@ def __init__(self, algorithm, checksum, update_ids_from_dap=False, **kwargs): #
self.checksum = checksum
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
algorithm = self.algorithm
checksum = self.checksum
dct = {
- 'algorithm': algorithm,
- 'checksum': checksum,
+ "algorithm": algorithm,
+ "checksum": checksum,
}
dct.update(self.kwargs)
return dct
@@ -14990,15 +13317,10 @@ class ValueFormat(BaseSchema):
Note: automatically generated code. Do not edit manually.
"""
- __props__ = {
- "hex": {
- "type": "boolean",
- "description": "Display the value in hex."
- }
- }
+ __props__ = {"hex": {"type": "boolean", "description": "Display the value in hex."}}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, hex=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -15007,13 +13329,11 @@ def __init__(self, hex=None, update_ids_from_dap=False, **kwargs): # noqa (upda
self.hex = hex
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
hex = self.hex # noqa (assign to builtin)
- dct = {
- }
+ dct = {}
if hex is not None:
- dct['hex'] = hex
+ dct["hex"] = hex
dct.update(self.kwargs)
return dct
@@ -15027,44 +13347,35 @@ class StackFrameFormat(BaseSchema):
"""
__props__ = {
- "hex": {
- "type": "boolean",
- "description": "Display the value in hex."
- },
- "parameters": {
- "type": "boolean",
- "description": "Displays parameters for the stack frame."
- },
- "parameterTypes": {
- "type": "boolean",
- "description": "Displays the types of parameters for the stack frame."
- },
- "parameterNames": {
- "type": "boolean",
- "description": "Displays the names of parameters for the stack frame."
- },
- "parameterValues": {
- "type": "boolean",
- "description": "Displays the values of parameters for the stack frame."
- },
- "line": {
- "type": "boolean",
- "description": "Displays the line number of the stack frame."
- },
- "module": {
- "type": "boolean",
- "description": "Displays the module of the stack frame."
- },
+ "hex": {"type": "boolean", "description": "Display the value in hex."},
+ "parameters": {"type": "boolean", "description": "Displays parameters for the stack frame."},
+ "parameterTypes": {"type": "boolean", "description": "Displays the types of parameters for the stack frame."},
+ "parameterNames": {"type": "boolean", "description": "Displays the names of parameters for the stack frame."},
+ "parameterValues": {"type": "boolean", "description": "Displays the values of parameters for the stack frame."},
+ "line": {"type": "boolean", "description": "Displays the line number of the stack frame."},
+ "module": {"type": "boolean", "description": "Displays the module of the stack frame."},
"includeAll": {
"type": "boolean",
- "description": "Includes all stack frames, including those the debug adapter might otherwise hide."
- }
+ "description": "Includes all stack frames, including those the debug adapter might otherwise hide.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
-
- def __init__(self, hex=None, parameters=None, parameterTypes=None, parameterNames=None, parameterValues=None, line=None, module=None, includeAll=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(
+ self,
+ hex=None,
+ parameters=None,
+ parameterTypes=None,
+ parameterNames=None,
+ parameterValues=None,
+ line=None,
+ module=None,
+ includeAll=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
"""
:param boolean hex: Display the value in hex.
:param boolean parameters: Displays parameters for the stack frame.
@@ -15085,7 +13396,6 @@ def __init__(self, hex=None, parameters=None, parameterTypes=None, parameterName
self.includeAll = includeAll
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
hex = self.hex # noqa (assign to builtin)
parameters = self.parameters
@@ -15095,24 +13405,23 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
line = self.line
module = self.module
includeAll = self.includeAll
- dct = {
- }
+ dct = {}
if hex is not None:
- dct['hex'] = hex
+ dct["hex"] = hex
if parameters is not None:
- dct['parameters'] = parameters
+ dct["parameters"] = parameters
if parameterTypes is not None:
- dct['parameterTypes'] = parameterTypes
+ dct["parameterTypes"] = parameterTypes
if parameterNames is not None:
- dct['parameterNames'] = parameterNames
+ dct["parameterNames"] = parameterNames
if parameterValues is not None:
- dct['parameterValues'] = parameterValues
+ dct["parameterValues"] = parameterValues
if line is not None:
- dct['line'] = line
+ dct["line"] = line
if module is not None:
- dct['module'] = module
+ dct["module"] = module
if includeAll is not None:
- dct['includeAll'] = includeAll
+ dct["includeAll"] = includeAll
dct.update(self.kwargs)
return dct
@@ -15120,45 +13429,41 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class ExceptionFilterOptions(BaseSchema):
"""
- An ExceptionFilterOptions is used to specify an exception filter together with a condition for the
- setExceptionsFilter request.
+ An `ExceptionFilterOptions` is used to specify an exception filter together with a condition for the
+ `setExceptionBreakpoints` request.
Note: automatically generated code. Do not edit manually.
"""
__props__ = {
- "filterId": {
- "type": "string",
- "description": "ID of an exception filter returned by the 'exceptionBreakpointFilters' capability."
- },
+ "filterId": {"type": "string", "description": "ID of an exception filter returned by the `exceptionBreakpointFilters` capability."},
"condition": {
"type": "string",
- "description": "An optional expression for conditional exceptions.\nThe exception will break into the debugger if the result of the condition is true."
- }
+ "description": "An expression for conditional exceptions.\nThe exception breaks into the debugger if the result of the condition is True.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, filterId, condition=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string filterId: ID of an exception filter returned by the 'exceptionBreakpointFilters' capability.
- :param string condition: An optional expression for conditional exceptions.
- The exception will break into the debugger if the result of the condition is true.
+ :param string filterId: ID of an exception filter returned by the `exceptionBreakpointFilters` capability.
+ :param string condition: An expression for conditional exceptions.
+ The exception breaks into the debugger if the result of the condition is true.
"""
self.filterId = filterId
self.condition = condition
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
filterId = self.filterId
condition = self.condition
dct = {
- 'filterId': filterId,
+ "filterId": filterId,
}
if condition is not None:
- dct['condition'] = condition
+ dct["condition"] = condition
dct.update(self.kwargs)
return dct
@@ -15166,7 +13471,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class ExceptionOptions(BaseSchema):
"""
- An ExceptionOptions assigns configuration options to a set of exceptions.
+ An `ExceptionOptions` assigns configuration options to a set of exceptions.
Note: automatically generated code. Do not edit manually.
"""
@@ -15174,24 +13479,19 @@ class ExceptionOptions(BaseSchema):
__props__ = {
"path": {
"type": "array",
- "items": {
- "$ref": "#/definitions/ExceptionPathSegment"
- },
- "description": "A path that selects a single or multiple exceptions in a tree. If 'path' is missing, the whole tree is selected.\nBy convention the first segment of the path is a category that is used to group exceptions in the UI."
+ "items": {"$ref": "#/definitions/ExceptionPathSegment"},
+ "description": "A path that selects a single or multiple exceptions in a tree. If `path` is missing, the whole tree is selected.\nBy convention the first segment of the path is a category that is used to group exceptions in the UI.",
},
- "breakMode": {
- "description": "Condition when a thrown exception should result in a break.",
- "type": "ExceptionBreakMode"
- }
+ "breakMode": {"description": "Condition when a thrown exception should result in a break.", "type": "ExceptionBreakMode"},
}
- __refs__ = set(['breakMode'])
+ __refs__ = set(["breakMode"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, breakMode, path=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param ExceptionBreakMode breakMode: Condition when a thrown exception should result in a break.
- :param array path: A path that selects a single or multiple exceptions in a tree. If 'path' is missing, the whole tree is selected.
+ :param array path: A path that selects a single or multiple exceptions in a tree. If `path` is missing, the whole tree is selected.
By convention the first segment of the path is a category that is used to group exceptions in the UI.
"""
if breakMode is not None:
@@ -15203,17 +13503,16 @@ def __init__(self, breakMode, path=None, update_ids_from_dap=False, **kwargs):
ExceptionPathSegment.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
breakMode = self.breakMode
path = self.path
if path and hasattr(path[0], "to_dict"):
path = [x.to_dict() for x in path]
dct = {
- 'breakMode': breakMode,
+ "breakMode": breakMode,
}
if path is not None:
- dct['path'] = [ExceptionPathSegment.update_dict_ids_to_dap(o) for o in path] if (update_ids_to_dap and path) else path
+ dct["path"] = [ExceptionPathSegment.update_dict_ids_to_dap(o) for o in path] if (update_ids_to_dap and path) else path
dct.update(self.kwargs)
return dct
@@ -15222,41 +13521,37 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
class ExceptionBreakMode(BaseSchema):
"""
This enumeration defines all possible conditions when a thrown exception should result in a break.
-
+
never: never breaks,
-
+
always: always breaks,
-
+
unhandled: breaks when exception unhandled,
-
+
userUnhandled: breaks if the exception is not handled by user code.
Note: automatically generated code. Do not edit manually.
"""
- NEVER = 'never'
- ALWAYS = 'always'
- UNHANDLED = 'unhandled'
- USERUNHANDLED = 'userUnhandled'
+ NEVER = "never"
+ ALWAYS = "always"
+ UNHANDLED = "unhandled"
+ USERUNHANDLED = "userUnhandled"
- VALID_VALUES = set(['never', 'always', 'unhandled', 'userUnhandled'])
+ VALID_VALUES = set(["never", "always", "unhandled", "userUnhandled"])
__props__ = {}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
- """
-
- """
-
- self.kwargs = kwargs
+ """ """
+ self.kwargs = kwargs
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
- dct = {
- }
+ dct = {}
dct.update(self.kwargs)
return dct
@@ -15264,13 +13559,11 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class ExceptionPathSegment(BaseSchema):
"""
- An ExceptionPathSegment represents a segment in a path that is used to match leafs or nodes in a
+ An `ExceptionPathSegment` represents a segment in a path that is used to match leafs or nodes in a
tree of exceptions.
-
- If a segment consists of more than one name, it matches the names provided if 'negate' is false or
- missing or
-
- it matches anything except the names provided if 'negate' is true.
+
+ If a segment consists of more than one name, it matches the names provided if `negate` is false or
+ missing, or it matches anything except the names provided if `negate` is true.
Note: automatically generated code. Do not edit manually.
"""
@@ -15278,40 +13571,37 @@ class ExceptionPathSegment(BaseSchema):
__props__ = {
"negate": {
"type": "boolean",
- "description": "If false or missing this segment matches the names provided, otherwise it matches anything except the names provided."
+ "description": "If false or missing this segment matches the names provided, otherwise it matches anything except the names provided.",
},
"names": {
"type": "array",
- "items": {
- "type": "string"
- },
- "description": "Depending on the value of 'negate' the names that should match or not match."
- }
+ "items": {"type": "string"},
+ "description": "Depending on the value of `negate` the names that should match or not match.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, names, negate=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param array names: Depending on the value of 'negate' the names that should match or not match.
+ :param array names: Depending on the value of `negate` the names that should match or not match.
:param boolean negate: If false or missing this segment matches the names provided, otherwise it matches anything except the names provided.
"""
self.names = names
self.negate = negate
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
names = self.names
if names and hasattr(names[0], "to_dict"):
names = [x.to_dict() for x in names]
negate = self.negate
dct = {
- 'names': names,
+ "names": names,
}
if negate is not None:
- dct['negate'] = negate
+ dct["negate"] = negate
dct.update(self.kwargs)
return dct
@@ -15325,44 +13615,40 @@ class ExceptionDetails(BaseSchema):
"""
__props__ = {
- "message": {
- "type": "string",
- "description": "Message contained in the exception."
- },
- "typeName": {
- "type": "string",
- "description": "Short type name of the exception object."
- },
- "fullTypeName": {
- "type": "string",
- "description": "Fully-qualified type name of the exception object."
- },
+ "message": {"type": "string", "description": "Message contained in the exception."},
+ "typeName": {"type": "string", "description": "Short type name of the exception object."},
+ "fullTypeName": {"type": "string", "description": "Fully-qualified type name of the exception object."},
"evaluateName": {
"type": "string",
- "description": "Optional expression that can be evaluated in the current scope to obtain the exception object."
- },
- "stackTrace": {
- "type": "string",
- "description": "Stack trace at the time the exception was thrown."
+ "description": "An expression that can be evaluated in the current scope to obtain the exception object.",
},
+ "stackTrace": {"type": "string", "description": "Stack trace at the time the exception was thrown."},
"innerException": {
"type": "array",
- "items": {
- "$ref": "#/definitions/ExceptionDetails"
- },
- "description": "Details of the exception contained by this exception, if any."
- }
+ "items": {"$ref": "#/definitions/ExceptionDetails"},
+ "description": "Details of the exception contained by this exception, if any.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
- def __init__(self, message=None, typeName=None, fullTypeName=None, evaluateName=None, stackTrace=None, innerException=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ def __init__(
+ self,
+ message=None,
+ typeName=None,
+ fullTypeName=None,
+ evaluateName=None,
+ stackTrace=None,
+ innerException=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
"""
:param string message: Message contained in the exception.
:param string typeName: Short type name of the exception object.
:param string fullTypeName: Fully-qualified type name of the exception object.
- :param string evaluateName: Optional expression that can be evaluated in the current scope to obtain the exception object.
+ :param string evaluateName: An expression that can be evaluated in the current scope to obtain the exception object.
:param string stackTrace: Stack trace at the time the exception was thrown.
:param array innerException: Details of the exception contained by this exception, if any.
"""
@@ -15377,7 +13663,6 @@ def __init__(self, message=None, typeName=None, fullTypeName=None, evaluateName=
ExceptionDetails.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
message = self.message
typeName = self.typeName
@@ -15387,20 +13672,23 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
innerException = self.innerException
if innerException and hasattr(innerException[0], "to_dict"):
innerException = [x.to_dict() for x in innerException]
- dct = {
- }
+ dct = {}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if typeName is not None:
- dct['typeName'] = typeName
+ dct["typeName"] = typeName
if fullTypeName is not None:
- dct['fullTypeName'] = fullTypeName
+ dct["fullTypeName"] = fullTypeName
if evaluateName is not None:
- dct['evaluateName'] = evaluateName
+ dct["evaluateName"] = evaluateName
if stackTrace is not None:
- dct['stackTrace'] = stackTrace
+ dct["stackTrace"] = stackTrace
if innerException is not None:
- dct['innerException'] = [ExceptionDetails.update_dict_ids_to_dap(o) for o in innerException] if (update_ids_to_dap and innerException) else innerException
+ dct["innerException"] = (
+ [ExceptionDetails.update_dict_ids_to_dap(o) for o in innerException]
+ if (update_ids_to_dap and innerException)
+ else innerException
+ )
dct.update(self.kwargs)
return dct
@@ -15416,50 +13704,54 @@ class DisassembledInstruction(BaseSchema):
__props__ = {
"address": {
"type": "string",
- "description": "The address of the instruction. Treated as a hex value if prefixed with '0x', or as a decimal value otherwise."
+ "description": "The address of the instruction. Treated as a hex value if prefixed with `0x`, or as a decimal value otherwise.",
},
"instructionBytes": {
"type": "string",
- "description": "Optional raw bytes representing the instruction and its operands, in an implementation-defined format."
+ "description": "Raw bytes representing the instruction and its operands, in an implementation-defined format.",
},
"instruction": {
"type": "string",
- "description": "Text representing the instruction and its operands, in an implementation-defined format."
- },
- "symbol": {
- "type": "string",
- "description": "Name of the symbol that corresponds with the location of this instruction, if any."
+ "description": "Text representing the instruction and its operands, in an implementation-defined format.",
},
+ "symbol": {"type": "string", "description": "Name of the symbol that corresponds with the location of this instruction, if any."},
"location": {
"description": "Source location that corresponds to this instruction, if any.\nShould always be set (if available) on the first instruction returned,\nbut can be omitted afterwards if this instruction maps to the same source file as the previous instruction.",
- "type": "Source"
- },
- "line": {
- "type": "integer",
- "description": "The line within the source location that corresponds to this instruction, if any."
- },
- "column": {
- "type": "integer",
- "description": "The column within the line that corresponds to this instruction, if any."
+ "type": "Source",
},
- "endLine": {
- "type": "integer",
- "description": "The end line of the range that corresponds to this instruction, if any."
+ "line": {"type": "integer", "description": "The line within the source location that corresponds to this instruction, if any."},
+ "column": {"type": "integer", "description": "The column within the line that corresponds to this instruction, if any."},
+ "endLine": {"type": "integer", "description": "The end line of the range that corresponds to this instruction, if any."},
+ "endColumn": {"type": "integer", "description": "The end column of the range that corresponds to this instruction, if any."},
+ "presentationHint": {
+ "type": "string",
+ "description": "A hint for how to present the instruction in the UI.\n\nA value of `invalid` may be used to indicate this instruction is 'filler' and cannot be reached by the program. For example, unreadable memory addresses may be presented is 'invalid.'",
+ "enum": ["normal", "invalid"],
},
- "endColumn": {
- "type": "integer",
- "description": "The end column of the range that corresponds to this instruction, if any."
- }
}
- __refs__ = set(['location'])
-
- __slots__ = list(__props__.keys()) + ['kwargs']
-
- def __init__(self, address, instruction, instructionBytes=None, symbol=None, location=None, line=None, column=None, endLine=None, endColumn=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
- """
- :param string address: The address of the instruction. Treated as a hex value if prefixed with '0x', or as a decimal value otherwise.
+ __refs__ = set(["location"])
+
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(
+ self,
+ address,
+ instruction,
+ instructionBytes=None,
+ symbol=None,
+ location=None,
+ line=None,
+ column=None,
+ endLine=None,
+ endColumn=None,
+ presentationHint=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
+ """
+ :param string address: The address of the instruction. Treated as a hex value if prefixed with `0x`, or as a decimal value otherwise.
:param string instruction: Text representing the instruction and its operands, in an implementation-defined format.
- :param string instructionBytes: Optional raw bytes representing the instruction and its operands, in an implementation-defined format.
+ :param string instructionBytes: Raw bytes representing the instruction and its operands, in an implementation-defined format.
:param string symbol: Name of the symbol that corresponds with the location of this instruction, if any.
:param Source location: Source location that corresponds to this instruction, if any.
Should always be set (if available) on the first instruction returned,
@@ -15468,6 +13760,9 @@ def __init__(self, address, instruction, instructionBytes=None, symbol=None, loc
:param integer column: The column within the line that corresponds to this instruction, if any.
:param integer endLine: The end line of the range that corresponds to this instruction, if any.
:param integer endColumn: The end column of the range that corresponds to this instruction, if any.
+ :param string presentationHint: A hint for how to present the instruction in the UI.
+
+ A value of `invalid` may be used to indicate this instruction is 'filler' and cannot be reached by the program. For example, unreadable memory addresses may be presented is 'invalid.'
"""
self.address = address
self.instruction = instruction
@@ -15476,14 +13771,14 @@ def __init__(self, address, instruction, instructionBytes=None, symbol=None, loc
if location is None:
self.location = Source()
else:
- self.location = Source(update_ids_from_dap=update_ids_from_dap, **location) if location.__class__ != Source else location
+ self.location = Source(update_ids_from_dap=update_ids_from_dap, **location) if location.__class__ != Source else location
self.line = line
self.column = column
self.endLine = endLine
self.endColumn = endColumn
+ self.presentationHint = presentationHint
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
address = self.address
instruction = self.instruction
@@ -15494,24 +13789,27 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
column = self.column
endLine = self.endLine
endColumn = self.endColumn
+ presentationHint = self.presentationHint
dct = {
- 'address': address,
- 'instruction': instruction,
+ "address": address,
+ "instruction": instruction,
}
if instructionBytes is not None:
- dct['instructionBytes'] = instructionBytes
+ dct["instructionBytes"] = instructionBytes
if symbol is not None:
- dct['symbol'] = symbol
+ dct["symbol"] = symbol
if location is not None:
- dct['location'] = location.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["location"] = location.to_dict(update_ids_to_dap=update_ids_to_dap)
if line is not None:
- dct['line'] = line
+ dct["line"] = line
if column is not None:
- dct['column'] = column
+ dct["column"] = column
if endLine is not None:
- dct['endLine'] = endLine
+ dct["endLine"] = endLine
if endColumn is not None:
- dct['endColumn'] = endColumn
+ dct["endColumn"] = endColumn
+ if presentationHint is not None:
+ dct["presentationHint"] = presentationHint
dct.update(self.kwargs)
return dct
@@ -15519,7 +13817,7 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
@register
class InvalidatedAreas(BaseSchema):
"""
- Logical areas that can be invalidated by the 'invalidated' event.
+ Logical areas that can be invalidated by the `invalidated` event.
Note: automatically generated code. Do not edit manually.
"""
@@ -15527,24 +13825,20 @@ class InvalidatedAreas(BaseSchema):
__props__ = {}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
- """
-
- """
-
- self.kwargs = kwargs
+ """ """
+ self.kwargs = kwargs
- def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
- dct = {
- }
+ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
+ dct = {}
dct.update(self.kwargs)
return dct
-@register_request('setDebuggerProperty')
+@register_request("setDebuggerProperty")
@register
class SetDebuggerPropertyRequest(BaseSchema):
"""
@@ -15556,55 +13850,46 @@ class SetDebuggerPropertyRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "command": {
- "type": "string",
- "enum": [
- "setDebuggerProperty"
- ]
- },
- "arguments": {
- "type": "SetDebuggerPropertyArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["setDebuggerProperty"]},
+ "arguments": {"type": "SetDebuggerPropertyArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param SetDebuggerPropertyArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param SetDebuggerPropertyArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'setDebuggerProperty'
+ self.type = "request"
+ self.command = "setDebuggerProperty"
if arguments is None:
self.arguments = SetDebuggerPropertyArguments()
else:
- self.arguments = SetDebuggerPropertyArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != SetDebuggerPropertyArguments else arguments
+ self.arguments = (
+ SetDebuggerPropertyArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != SetDebuggerPropertyArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -15619,48 +13904,43 @@ class SetDebuggerPropertyArguments(BaseSchema):
"""
__props__ = {
- "ideOS": {
- "type": [
- "string"
- ],
- "description": "OS where the ide is running. Supported values [Windows, Linux]"
- },
+ "ideOS": {"type": ["string"], "description": "OS where the ide is running. Supported values [Windows, Linux]"},
"dontTraceStartPatterns": {
- "type": [
- "array"
- ],
- "description": "Patterns to match with the start of the file paths. Matching paths will be added to a list of file where trace is ignored."
+ "type": ["array"],
+ "description": "Patterns to match with the start of the file paths. Matching paths will be added to a list of file where trace is ignored.",
},
"dontTraceEndPatterns": {
- "type": [
- "array"
- ],
- "description": "Patterns to match with the end of the file paths. Matching paths will be added to a list of file where trace is ignored."
+ "type": ["array"],
+ "description": "Patterns to match with the end of the file paths. Matching paths will be added to a list of file where trace is ignored.",
},
"skipSuspendOnBreakpointException": {
- "type": [
- "array"
- ],
- "description": "List of exceptions that should be skipped when doing condition evaluations."
+ "type": ["array"],
+ "description": "List of exceptions that should be skipped when doing condition evaluations.",
},
"skipPrintBreakpointException": {
- "type": [
- "array"
- ],
- "description": "List of exceptions that should skip printing to stderr when doing condition evaluations."
+ "type": ["array"],
+ "description": "List of exceptions that should skip printing to stderr when doing condition evaluations.",
},
"multiThreadsSingleNotification": {
- "type": [
- "boolean"
- ],
- "description": "If false then a notification is generated for each thread event. If true a single event is gnenerated, and all threads follow that behavior."
- }
+ "type": ["boolean"],
+ "description": "If false then a notification is generated for each thread event. If True a single event is gnenerated, and all threads follow that behavior.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
- def __init__(self, ideOS=None, dontTraceStartPatterns=None, dontTraceEndPatterns=None, skipSuspendOnBreakpointException=None, skipPrintBreakpointException=None, multiThreadsSingleNotification=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ def __init__(
+ self,
+ ideOS=None,
+ dontTraceStartPatterns=None,
+ dontTraceEndPatterns=None,
+ skipSuspendOnBreakpointException=None,
+ skipPrintBreakpointException=None,
+ multiThreadsSingleNotification=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
"""
:param ['string'] ideOS: OS where the ide is running. Supported values [Windows, Linux]
:param ['array'] dontTraceStartPatterns: Patterns to match with the start of the file paths. Matching paths will be added to a list of file where trace is ignored.
@@ -15677,7 +13957,6 @@ def __init__(self, ideOS=None, dontTraceStartPatterns=None, dontTraceEndPatterns
self.multiThreadsSingleNotification = multiThreadsSingleNotification
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
ideOS = self.ideOS
dontTraceStartPatterns = self.dontTraceStartPatterns
@@ -15685,25 +13964,24 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
skipSuspendOnBreakpointException = self.skipSuspendOnBreakpointException
skipPrintBreakpointException = self.skipPrintBreakpointException
multiThreadsSingleNotification = self.multiThreadsSingleNotification
- dct = {
- }
+ dct = {}
if ideOS is not None:
- dct['ideOS'] = ideOS
+ dct["ideOS"] = ideOS
if dontTraceStartPatterns is not None:
- dct['dontTraceStartPatterns'] = dontTraceStartPatterns
+ dct["dontTraceStartPatterns"] = dontTraceStartPatterns
if dontTraceEndPatterns is not None:
- dct['dontTraceEndPatterns'] = dontTraceEndPatterns
+ dct["dontTraceEndPatterns"] = dontTraceEndPatterns
if skipSuspendOnBreakpointException is not None:
- dct['skipSuspendOnBreakpointException'] = skipSuspendOnBreakpointException
+ dct["skipSuspendOnBreakpointException"] = skipSuspendOnBreakpointException
if skipPrintBreakpointException is not None:
- dct['skipPrintBreakpointException'] = skipPrintBreakpointException
+ dct["skipPrintBreakpointException"] = skipPrintBreakpointException
if multiThreadsSingleNotification is not None:
- dct['multiThreadsSingleNotification'] = multiThreadsSingleNotification
+ dct["multiThreadsSingleNotification"] = multiThreadsSingleNotification
dct.update(self.kwargs)
return dct
-@register_response('setDebuggerProperty')
+@register_response("setDebuggerProperty")
@register
class SetDebuggerPropertyResponse(BaseSchema):
"""
@@ -15716,68 +13994,45 @@ class SetDebuggerPropertyResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Contains request result if success is true and optional error details if success is false."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Contains request result if success is True and error details if success is false.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and optional error details if success is false.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -15786,7 +14041,6 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -15796,21 +14050,21 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_event('pydevdInputRequested')
+@register_event("pydevdInputRequested")
@register
class PydevdInputRequestedEvent(BaseSchema):
"""
@@ -15822,82 +14076,63 @@ class PydevdInputRequestedEvent(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "event"
- ]
- },
- "event": {
- "type": "string",
- "enum": [
- "pydevdInputRequested"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["event"]},
+ "event": {"type": "string", "enum": ["pydevdInputRequested"]},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Event-specific information."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Event-specific information.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, seq=-1, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string event:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string event:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
:param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Event-specific information.
"""
- self.type = 'event'
- self.event = 'pydevdInputRequested'
+ self.type = "event"
+ self.event = "pydevdInputRequested"
self.seq = seq
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
event = self.event
seq = self.seq
body = self.body
dct = {
- 'type': type,
- 'event': event,
- 'seq': seq,
+ "type": type,
+ "event": event,
+ "seq": seq,
}
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
-@register_request('setPydevdSourceMap')
+@register_request("setPydevdSourceMap")
@register
class SetPydevdSourceMapRequest(BaseSchema):
"""
Sets multiple PydevdSourceMap for a single source and clears all previous PydevdSourceMap in that
source.
-
+
i.e.: Maps paths and lines in a 1:N mapping (use case: map a single file in the IDE to multiple
IPython cells).
-
+
To clear all PydevdSourceMap for a source, specify an empty array.
-
+
Interaction with breakpoints: When a new mapping is sent, breakpoints that match the source (or
previously matched a source) are reapplied.
-
+
Interaction with launch pathMapping: both mappings are independent. This mapping is applied after
the launch pathMapping.
@@ -15907,55 +14142,46 @@ class SetPydevdSourceMapRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "setPydevdSourceMap"
- ]
- },
- "arguments": {
- "type": "SetPydevdSourceMapArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["setPydevdSourceMap"]},
+ "arguments": {"type": "SetPydevdSourceMapArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param SetPydevdSourceMapArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param SetPydevdSourceMapArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'setPydevdSourceMap'
+ self.type = "request"
+ self.command = "setPydevdSourceMap"
if arguments is None:
self.arguments = SetPydevdSourceMapArguments()
else:
- self.arguments = SetPydevdSourceMapArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != SetPydevdSourceMapArguments else arguments
+ self.arguments = (
+ SetPydevdSourceMapArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != SetPydevdSourceMapArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -15972,19 +14198,17 @@ class SetPydevdSourceMapArguments(BaseSchema):
__props__ = {
"source": {
"description": "The source location of the PydevdSourceMap; 'source.path' must be specified (e.g.: for an ipython notebook this could be something as /home/notebook/note.py).",
- "type": "Source"
+ "type": "Source",
},
"pydevdSourceMaps": {
"type": "array",
- "items": {
- "$ref": "#/definitions/PydevdSourceMap"
- },
- "description": "The PydevdSourceMaps to be set to the given source (provide an empty array to clear the source mappings for a given path)."
- }
+ "items": {"$ref": "#/definitions/PydevdSourceMap"},
+ "description": "The PydevdSourceMaps to be set to the given source (provide an empty array to clear the source mappings for a given path).",
+ },
}
- __refs__ = set(['source'])
+ __refs__ = set(["source"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, source, pydevdSourceMaps=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -15994,29 +14218,32 @@ def __init__(self, source, pydevdSourceMaps=None, update_ids_from_dap=False, **k
if source is None:
self.source = Source()
else:
- self.source = Source(update_ids_from_dap=update_ids_from_dap, **source) if source.__class__ != Source else source
+ self.source = Source(update_ids_from_dap=update_ids_from_dap, **source) if source.__class__ != Source else source
self.pydevdSourceMaps = pydevdSourceMaps
if update_ids_from_dap and self.pydevdSourceMaps:
for o in self.pydevdSourceMaps:
PydevdSourceMap.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
source = self.source
pydevdSourceMaps = self.pydevdSourceMaps
if pydevdSourceMaps and hasattr(pydevdSourceMaps[0], "to_dict"):
pydevdSourceMaps = [x.to_dict() for x in pydevdSourceMaps]
dct = {
- 'source': source.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "source": source.to_dict(update_ids_to_dap=update_ids_to_dap),
}
if pydevdSourceMaps is not None:
- dct['pydevdSourceMaps'] = [PydevdSourceMap.update_dict_ids_to_dap(o) for o in pydevdSourceMaps] if (update_ids_to_dap and pydevdSourceMaps) else pydevdSourceMaps
+ dct["pydevdSourceMaps"] = (
+ [PydevdSourceMap.update_dict_ids_to_dap(o) for o in pydevdSourceMaps]
+ if (update_ids_to_dap and pydevdSourceMaps)
+ else pydevdSourceMaps
+ )
dct.update(self.kwargs)
return dct
-@register_response('setPydevdSourceMap')
+@register_response("setPydevdSourceMap")
@register
class SetPydevdSourceMapResponse(BaseSchema):
"""
@@ -16029,68 +14256,45 @@ class SetPydevdSourceMapResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Contains request result if success is true and optional error details if success is false."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Contains request result if success is True and error details if success is false.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, seq=-1, message=None, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and optional error details if success is false.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
@@ -16099,7 +14303,6 @@ def __init__(self, request_seq, success, command, seq=-1, message=None, body=Non
self.body = body
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -16109,16 +14312,16 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
body = self.body
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if body is not None:
- dct['body'] = body
+ dct["body"] = body
dct.update(self.kwargs)
return dct
@@ -16134,24 +14337,21 @@ class PydevdSourceMap(BaseSchema):
__props__ = {
"line": {
"type": "integer",
- "description": "The local line to which the mapping should map to (e.g.: for an ipython notebook this would be the first line of the cell in the file)."
- },
- "endLine": {
- "type": "integer",
- "description": "The end line."
+ "description": "The local line to which the mapping should map to (e.g.: for an ipython notebook this would be the first line of the cell in the file).",
},
+ "endLine": {"type": "integer", "description": "The end line."},
"runtimeSource": {
"description": "The path that the user has remotely -- 'source.path' must be specified (e.g.: for an ipython notebook this could be something as '')",
- "type": "Source"
+ "type": "Source",
},
"runtimeLine": {
"type": "integer",
- "description": "The remote line to which the mapping should map to (e.g.: for an ipython notebook this would be always 1 as it'd map the start of the cell)."
- }
+ "description": "The remote line to which the mapping should map to (e.g.: for an ipython notebook this would be always 1 as it'd map the start of the cell).",
+ },
}
- __refs__ = set(['runtimeSource'])
+ __refs__ = set(["runtimeSource"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, line, endLine, runtimeSource, runtimeLine, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -16165,27 +14365,28 @@ def __init__(self, line, endLine, runtimeSource, runtimeLine, update_ids_from_da
if runtimeSource is None:
self.runtimeSource = Source()
else:
- self.runtimeSource = Source(update_ids_from_dap=update_ids_from_dap, **runtimeSource) if runtimeSource.__class__ != Source else runtimeSource
+ self.runtimeSource = (
+ Source(update_ids_from_dap=update_ids_from_dap, **runtimeSource) if runtimeSource.__class__ != Source else runtimeSource
+ )
self.runtimeLine = runtimeLine
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
line = self.line
endLine = self.endLine
runtimeSource = self.runtimeSource
runtimeLine = self.runtimeLine
dct = {
- 'line': line,
- 'endLine': endLine,
- 'runtimeSource': runtimeSource.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'runtimeLine': runtimeLine,
+ "line": line,
+ "endLine": endLine,
+ "runtimeSource": runtimeSource.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "runtimeLine": runtimeLine,
}
dct.update(self.kwargs)
return dct
-@register_request('pydevdSystemInfo')
+@register_request("pydevdSystemInfo")
@register
class PydevdSystemInfoRequest(BaseSchema):
"""
@@ -16197,57 +14398,48 @@ class PydevdSystemInfoRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "command": {
- "type": "string",
- "enum": [
- "pydevdSystemInfo"
- ]
- },
- "arguments": {
- "type": "PydevdSystemInfoArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["pydevdSystemInfo"]},
+ "arguments": {"type": "PydevdSystemInfoArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param PydevdSystemInfoArguments arguments:
+ :param string type:
+ :param string command:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param PydevdSystemInfoArguments arguments:
"""
- self.type = 'request'
- self.command = 'pydevdSystemInfo'
+ self.type = "request"
+ self.command = "pydevdSystemInfo"
self.seq = seq
if arguments is None:
self.arguments = PydevdSystemInfoArguments()
else:
- self.arguments = PydevdSystemInfoArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != PydevdSystemInfoArguments else arguments
+ self.arguments = (
+ PydevdSystemInfoArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != PydevdSystemInfoArguments
+ else arguments
+ )
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
seq = self.seq
arguments = self.arguments
dct = {
- 'type': type,
- 'command': command,
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "seq": seq,
}
if arguments is not None:
- dct['arguments'] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["arguments"] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
return dct
@@ -16263,24 +14455,20 @@ class PydevdSystemInfoArguments(BaseSchema):
__props__ = {}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
- """
-
- """
-
- self.kwargs = kwargs
+ """ """
+ self.kwargs = kwargs
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
- dct = {
- }
+ dct = {}
dct.update(self.kwargs)
return dct
-@register_response('pydevdSystemInfo')
+@register_response("pydevdSystemInfo")
@register
class PydevdSystemInfoResponse(BaseSchema):
"""
@@ -16292,95 +14480,72 @@ class PydevdSystemInfoResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
"python": {
"$ref": "#/definitions/PydevdPythonInfo",
- "description": "Information about the python version running in the current process."
+ "description": "Information about the python version running in the current process.",
},
"platform": {
"$ref": "#/definitions/PydevdPlatformInfo",
- "description": "Information about the plarforn on which the current process is running."
- },
- "process": {
- "$ref": "#/definitions/PydevdProcessInfo",
- "description": "Information about the current process."
+ "description": "Information about the plarforn on which the current process is running.",
},
- "pydevd": {
- "$ref": "#/definitions/PydevdInfo",
- "description": "Information about pydevd."
- }
+ "process": {"$ref": "#/definitions/PydevdProcessInfo", "description": "Information about the current process."},
+ "pydevd": {"$ref": "#/definitions/PydevdInfo", "description": "Information about pydevd."},
},
- "required": [
- "python",
- "platform",
- "process",
- "pydevd"
- ]
- }
+ "required": ["python", "platform", "process", "pydevd"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param PydevdSystemInfoResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param PydevdSystemInfoResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = PydevdSystemInfoResponseBody()
else:
- self.body = PydevdSystemInfoResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != PydevdSystemInfoResponseBody else body
+ self.body = (
+ PydevdSystemInfoResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != PydevdSystemInfoResponseBody
+ else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -16390,15 +14555,15 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
@@ -16414,16 +14579,16 @@ class PydevdPythonInfo(BaseSchema):
__props__ = {
"version": {
"type": "string",
- "description": "Python version as a string in semver format: ..."
+ "description": "Python version as a string in semver format: ...",
},
"implementation": {
"description": "Python version as a string in this format ...",
- "type": "PydevdPythonImplementationInfo"
- }
+ "type": "PydevdPythonImplementationInfo",
+ },
}
- __refs__ = set(['implementation'])
+ __refs__ = set(["implementation"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, version=None, implementation=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -16434,19 +14599,21 @@ def __init__(self, version=None, implementation=None, update_ids_from_dap=False,
if implementation is None:
self.implementation = PydevdPythonImplementationInfo()
else:
- self.implementation = PydevdPythonImplementationInfo(update_ids_from_dap=update_ids_from_dap, **implementation) if implementation.__class__ != PydevdPythonImplementationInfo else implementation
+ self.implementation = (
+ PydevdPythonImplementationInfo(update_ids_from_dap=update_ids_from_dap, **implementation)
+ if implementation.__class__ != PydevdPythonImplementationInfo
+ else implementation
+ )
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
version = self.version
implementation = self.implementation
- dct = {
- }
+ dct = {}
if version is not None:
- dct['version'] = version
+ dct["version"] = version
if implementation is not None:
- dct['implementation'] = implementation.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["implementation"] = implementation.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
return dct
@@ -16460,22 +14627,16 @@ class PydevdPythonImplementationInfo(BaseSchema):
"""
__props__ = {
- "name": {
- "type": "string",
- "description": "Python implementation name."
- },
+ "name": {"type": "string", "description": "Python implementation name."},
"version": {
"type": "string",
- "description": "Python version as a string in semver format: ..."
+ "description": "Python version as a string in semver format: ...",
},
- "description": {
- "type": "string",
- "description": "Optional description for this python implementation."
- }
+ "description": {"type": "string", "description": "Optional description for this python implementation."},
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, name=None, version=None, description=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -16488,19 +14649,17 @@ def __init__(self, name=None, version=None, description=None, update_ids_from_da
self.description = description
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
name = self.name
version = self.version
description = self.description
- dct = {
- }
+ dct = {}
if name is not None:
- dct['name'] = name
+ dct["name"] = name
if version is not None:
- dct['version'] = version
+ dct["version"] = version
if description is not None:
- dct['description'] = description
+ dct["description"] = description
dct.update(self.kwargs)
return dct
@@ -16513,15 +14672,10 @@ class PydevdPlatformInfo(BaseSchema):
Note: automatically generated code. Do not edit manually.
"""
- __props__ = {
- "name": {
- "type": "string",
- "description": "Name of the platform as returned by 'sys.platform'."
- }
- }
+ __props__ = {"name": {"type": "string", "description": "Name of the platform as returned by 'sys.platform'."}}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, name=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -16530,13 +14684,11 @@ def __init__(self, name=None, update_ids_from_dap=False, **kwargs): # noqa (upd
self.name = name
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
name = self.name
- dct = {
- }
+ dct = {}
if name is not None:
- dct['name'] = name
+ dct["name"] = name
dct.update(self.kwargs)
return dct
@@ -16550,26 +14702,14 @@ class PydevdProcessInfo(BaseSchema):
"""
__props__ = {
- "pid": {
- "type": "integer",
- "description": "Process ID for the current process."
- },
- "ppid": {
- "type": "integer",
- "description": "Parent Process ID for the current process."
- },
- "executable": {
- "type": "string",
- "description": "Path to the executable as returned by 'sys.executable'."
- },
- "bitness": {
- "type": "integer",
- "description": "Integer value indicating the bitness of the current process."
- }
+ "pid": {"type": "integer", "description": "Process ID for the current process."},
+ "ppid": {"type": "integer", "description": "Parent Process ID for the current process."},
+ "executable": {"type": "string", "description": "Path to the executable as returned by 'sys.executable'."},
+ "bitness": {"type": "integer", "description": "Integer value indicating the bitness of the current process."},
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, pid=None, ppid=None, executable=None, bitness=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -16584,22 +14724,20 @@ def __init__(self, pid=None, ppid=None, executable=None, bitness=None, update_id
self.bitness = bitness
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
pid = self.pid
ppid = self.ppid
executable = self.executable
bitness = self.bitness
- dct = {
- }
+ dct = {}
if pid is not None:
- dct['pid'] = pid
+ dct["pid"] = pid
if ppid is not None:
- dct['ppid'] = ppid
+ dct["ppid"] = ppid
if executable is not None:
- dct['executable'] = executable
+ dct["executable"] = executable
if bitness is not None:
- dct['bitness'] = bitness
+ dct["bitness"] = bitness
dct.update(self.kwargs)
return dct
@@ -16613,18 +14751,12 @@ class PydevdInfo(BaseSchema):
"""
__props__ = {
- "usingCython": {
- "type": "boolean",
- "description": "Specifies whether the cython native module is being used."
- },
- "usingFrameEval": {
- "type": "boolean",
- "description": "Specifies whether the frame eval native module is being used."
- }
+ "usingCython": {"type": "boolean", "description": "Specifies whether the cython native module is being used."},
+ "usingFrameEval": {"type": "boolean", "description": "Specifies whether the frame eval native module is being used."},
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, usingCython=None, usingFrameEval=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -16635,21 +14767,19 @@ def __init__(self, usingCython=None, usingFrameEval=None, update_ids_from_dap=Fa
self.usingFrameEval = usingFrameEval
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
usingCython = self.usingCython
usingFrameEval = self.usingFrameEval
- dct = {
- }
+ dct = {}
if usingCython is not None:
- dct['usingCython'] = usingCython
+ dct["usingCython"] = usingCython
if usingFrameEval is not None:
- dct['usingFrameEval'] = usingFrameEval
+ dct["usingFrameEval"] = usingFrameEval
dct.update(self.kwargs)
return dct
-@register_request('pydevdAuthorize')
+@register_request("pydevdAuthorize")
@register
class PydevdAuthorizeRequest(BaseSchema):
"""
@@ -16661,55 +14791,46 @@ class PydevdAuthorizeRequest(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "request"
- ]
- },
- "command": {
- "type": "string",
- "enum": [
- "pydevdAuthorize"
- ]
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
- "arguments": {
- "type": "PydevdAuthorizeArguments"
- }
+ "type": {"type": "string", "enum": ["request"]},
+ "command": {"type": "string", "enum": ["pydevdAuthorize"]},
+ "arguments": {"type": "PydevdAuthorizeArguments"},
}
- __refs__ = set(['arguments'])
+ __refs__ = set(["arguments"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
- :param string command:
- :param PydevdAuthorizeArguments arguments:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
+ :param string type:
+ :param string command:
+ :param PydevdAuthorizeArguments arguments:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
"""
- self.type = 'request'
- self.command = 'pydevdAuthorize'
+ self.type = "request"
+ self.command = "pydevdAuthorize"
if arguments is None:
self.arguments = PydevdAuthorizeArguments()
else:
- self.arguments = PydevdAuthorizeArguments(update_ids_from_dap=update_ids_from_dap, **arguments) if arguments.__class__ != PydevdAuthorizeArguments else arguments
+ self.arguments = (
+ PydevdAuthorizeArguments(update_ids_from_dap=update_ids_from_dap, **arguments)
+ if arguments.__class__ != PydevdAuthorizeArguments
+ else arguments
+ )
self.seq = seq
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
command = self.command
arguments = self.arguments
seq = self.seq
dct = {
- 'type': type,
- 'command': command,
- 'arguments': arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "command": command,
+ "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
dct.update(self.kwargs)
return dct
@@ -16723,15 +14844,10 @@ class PydevdAuthorizeArguments(BaseSchema):
Note: automatically generated code. Do not edit manually.
"""
- __props__ = {
- "debugServerAccessToken": {
- "type": "string",
- "description": "The access token to access the debug server."
- }
- }
+ __props__ = {"debugServerAccessToken": {"type": "string", "description": "The access token to access the debug server."}}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, debugServerAccessToken=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -16740,18 +14856,16 @@ def __init__(self, debugServerAccessToken=None, update_ids_from_dap=False, **kwa
self.debugServerAccessToken = debugServerAccessToken
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
debugServerAccessToken = self.debugServerAccessToken
- dct = {
- }
+ dct = {}
if debugServerAccessToken is not None:
- dct['debugServerAccessToken'] = debugServerAccessToken
+ dct["debugServerAccessToken"] = debugServerAccessToken
dct.update(self.kwargs)
return dct
-@register_response('pydevdAuthorize')
+@register_response("pydevdAuthorize")
@register
class PydevdAuthorizeResponse(BaseSchema):
"""
@@ -16763,80 +14877,63 @@ class PydevdAuthorizeResponse(BaseSchema):
__props__ = {
"seq": {
"type": "integer",
- "description": "Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request."
- },
- "type": {
- "type": "string",
- "enum": [
- "response"
- ]
- },
- "request_seq": {
- "type": "integer",
- "description": "Sequence number of the corresponding request."
+ "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.",
},
+ "type": {"type": "string", "enum": ["response"]},
+ "request_seq": {"type": "integer", "description": "Sequence number of the corresponding request."},
"success": {
"type": "boolean",
- "description": "Outcome of the request.\nIf true, the request was successful and the 'body' attribute may contain the result of the request.\nIf the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error')."
- },
- "command": {
- "type": "string",
- "description": "The command requested."
+ "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).",
},
+ "command": {"type": "string", "description": "The command requested."},
"message": {
"type": "string",
- "description": "Contains the raw error in short form if 'success' is false.\nThis raw error might be interpreted by the frontend and is not shown in the UI.\nSome predefined values exist.",
- "_enum": [
- "cancelled"
- ],
- "enumDescriptions": [
- "request was cancelled."
- ]
+ "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.",
+ "_enum": ["cancelled", "notStopped"],
+ "enumDescriptions": ["the request was cancelled.", "the request may be retried once the adapter is in a 'stopped' state."],
},
"body": {
"type": "object",
"properties": {
- "clientAccessToken": {
- "type": "string",
- "description": "The access token to access the client (i.e.: usually the IDE)."
- }
+ "clientAccessToken": {"type": "string", "description": "The access token to access the client (i.e.: usually the IDE)."}
},
- "required": [
- "clientAccessToken"
- ]
- }
+ "required": ["clientAccessToken"],
+ },
}
- __refs__ = set(['body'])
+ __refs__ = set(["body"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, request_seq, success, command, body, seq=-1, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string type:
+ :param string type:
:param integer request_seq: Sequence number of the corresponding request.
:param boolean success: Outcome of the request.
- If true, the request was successful and the 'body' attribute may contain the result of the request.
- If the value is false, the attribute 'message' contains the error in short form and the 'body' may contain additional information (see 'ErrorResponse.body.error').
+ If true, the request was successful and the `body` attribute may contain the result of the request.
+ If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).
:param string command: The command requested.
- :param PydevdAuthorizeResponseBody body:
- :param integer seq: Sequence number (also known as message ID). For protocol messages of type 'request' this ID can be used to cancel the request.
- :param string message: Contains the raw error in short form if 'success' is false.
- This raw error might be interpreted by the frontend and is not shown in the UI.
+ :param PydevdAuthorizeResponseBody body:
+ :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.
+ :param string message: Contains the raw error in short form if `success` is false.
+ This raw error might be interpreted by the client and is not shown in the UI.
Some predefined values exist.
"""
- self.type = 'response'
+ self.type = "response"
self.request_seq = request_seq
self.success = success
self.command = command
if body is None:
self.body = PydevdAuthorizeResponseBody()
else:
- self.body = PydevdAuthorizeResponseBody(update_ids_from_dap=update_ids_from_dap, **body) if body.__class__ != PydevdAuthorizeResponseBody else body
+ self.body = (
+ PydevdAuthorizeResponseBody(update_ids_from_dap=update_ids_from_dap, **body)
+ if body.__class__ != PydevdAuthorizeResponseBody
+ else body
+ )
self.seq = seq
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
type = self.type # noqa (assign to builtin)
request_seq = self.request_seq
@@ -16846,15 +14943,15 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
seq = self.seq
message = self.message
dct = {
- 'type': type,
- 'request_seq': request_seq,
- 'success': success,
- 'command': command,
- 'body': body.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'seq': seq,
+ "type": type,
+ "request_seq": request_seq,
+ "success": success,
+ "command": command,
+ "body": body.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "seq": seq,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
@@ -16867,33 +14964,26 @@ class ErrorResponseBody(BaseSchema):
Note: automatically generated code. Do not edit manually.
"""
- __props__ = {
- "error": {
- "description": "An optional, structured error message.",
- "type": "Message"
- }
- }
- __refs__ = set(['error'])
+ __props__ = {"error": {"description": "A structured error message.", "type": "Message"}}
+ __refs__ = set(["error"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, error=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param Message error: An optional, structured error message.
+ :param Message error: A structured error message.
"""
if error is None:
self.error = Message()
else:
- self.error = Message(update_ids_from_dap=update_ids_from_dap, **error) if error.__class__ != Message else error
+ self.error = Message(update_ids_from_dap=update_ids_from_dap, **error) if error.__class__ != Message else error
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
error = self.error
- dct = {
- }
+ dct = {}
if error is not None:
- dct['error'] = error.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["error"] = error.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
return dct
@@ -16909,7 +14999,7 @@ class StoppedEventBody(BaseSchema):
__props__ = {
"reason": {
"type": "string",
- "description": "The reason for the event.\nFor backward compatibility this string is shown in the UI if the 'description' attribute is missing (but it must not be translated).",
+ "description": "The reason for the event.\nFor backward compatibility this string is shown in the UI if the `description` attribute is missing (but it must not be translated).",
"_enum": [
"step",
"breakpoint",
@@ -16919,53 +15009,59 @@ class StoppedEventBody(BaseSchema):
"goto",
"function breakpoint",
"data breakpoint",
- "instruction breakpoint"
- ]
+ "instruction breakpoint",
+ ],
},
"description": {
"type": "string",
- "description": "The full reason for the event, e.g. 'Paused on exception'. This string is shown in the UI as is and must be translated."
- },
- "threadId": {
- "type": "integer",
- "description": "The thread which was stopped."
+ "description": "The full reason for the event, e.g. 'Paused on exception'. This string is shown in the UI as is and can be translated.",
},
+ "threadId": {"type": "integer", "description": "The thread which was stopped."},
"preserveFocusHint": {
"type": "boolean",
- "description": "A value of true hints to the frontend that this event should not change the focus."
+ "description": "A value of True hints to the client that this event should not change the focus.",
},
"text": {
"type": "string",
- "description": "Additional information. E.g. if reason is 'exception', text contains the exception name. This string is shown in the UI."
+ "description": "Additional information. E.g. if reason is `exception`, text contains the exception name. This string is shown in the UI.",
},
"allThreadsStopped": {
"type": "boolean",
- "description": "If 'allThreadsStopped' is true, a debug adapter can announce that all threads have stopped.\n- The client should use this information to enable that all threads can be expanded to access their stacktraces.\n- If the attribute is missing or false, only the thread with the given threadId can be expanded."
+ "description": "If `allThreadsStopped` is True, a debug adapter can announce that all threads have stopped.\n- The client should use this information to enable that all threads can be expanded to access their stacktraces.\n- If the attribute is missing or false, only the thread with the given `threadId` can be expanded.",
},
"hitBreakpointIds": {
"type": "array",
- "items": {
- "type": "integer"
- },
- "description": "Ids of the breakpoints that triggered the event. In most cases there will be only a single breakpoint but here are some examples for multiple breakpoints:\n- Different types of breakpoints map to the same location.\n- Multiple source breakpoints get collapsed to the same instruction by the compiler/runtime.\n- Multiple function breakpoints with different function names map to the same location."
- }
+ "items": {"type": "integer"},
+ "description": "Ids of the breakpoints that triggered the event. In most cases there is only a single breakpoint but here are some examples for multiple breakpoints:\n- Different types of breakpoints map to the same location.\n- Multiple source breakpoints get collapsed to the same instruction by the compiler/runtime.\n- Multiple function breakpoints with different function names map to the same location.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
-
- def __init__(self, reason, description=None, threadId=None, preserveFocusHint=None, text=None, allThreadsStopped=None, hitBreakpointIds=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(
+ self,
+ reason,
+ description=None,
+ threadId=None,
+ preserveFocusHint=None,
+ text=None,
+ allThreadsStopped=None,
+ hitBreakpointIds=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
"""
:param string reason: The reason for the event.
- For backward compatibility this string is shown in the UI if the 'description' attribute is missing (but it must not be translated).
- :param string description: The full reason for the event, e.g. 'Paused on exception'. This string is shown in the UI as is and must be translated.
+ For backward compatibility this string is shown in the UI if the `description` attribute is missing (but it must not be translated).
+ :param string description: The full reason for the event, e.g. 'Paused on exception'. This string is shown in the UI as is and can be translated.
:param integer threadId: The thread which was stopped.
- :param boolean preserveFocusHint: A value of true hints to the frontend that this event should not change the focus.
- :param string text: Additional information. E.g. if reason is 'exception', text contains the exception name. This string is shown in the UI.
- :param boolean allThreadsStopped: If 'allThreadsStopped' is true, a debug adapter can announce that all threads have stopped.
+ :param boolean preserveFocusHint: A value of true hints to the client that this event should not change the focus.
+ :param string text: Additional information. E.g. if reason is `exception`, text contains the exception name. This string is shown in the UI.
+ :param boolean allThreadsStopped: If `allThreadsStopped` is true, a debug adapter can announce that all threads have stopped.
- The client should use this information to enable that all threads can be expanded to access their stacktraces.
- - If the attribute is missing or false, only the thread with the given threadId can be expanded.
- :param array hitBreakpointIds: Ids of the breakpoints that triggered the event. In most cases there will be only a single breakpoint but here are some examples for multiple breakpoints:
+ - If the attribute is missing or false, only the thread with the given `threadId` can be expanded.
+ :param array hitBreakpointIds: Ids of the breakpoints that triggered the event. In most cases there is only a single breakpoint but here are some examples for multiple breakpoints:
- Different types of breakpoints map to the same location.
- Multiple source breakpoints get collapsed to the same instruction by the compiler/runtime.
- Multiple function breakpoints with different function names map to the same location.
@@ -16980,12 +15076,11 @@ def __init__(self, reason, description=None, threadId=None, preserveFocusHint=No
if update_ids_from_dap:
self.threadId = self._translate_id_from_dap(self.threadId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_from_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_from_dap(dct["threadId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -17002,27 +15097,27 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if threadId is not None:
threadId = self._translate_id_to_dap(threadId)
dct = {
- 'reason': reason,
+ "reason": reason,
}
if description is not None:
- dct['description'] = description
+ dct["description"] = description
if threadId is not None:
- dct['threadId'] = threadId
+ dct["threadId"] = threadId
if preserveFocusHint is not None:
- dct['preserveFocusHint'] = preserveFocusHint
+ dct["preserveFocusHint"] = preserveFocusHint
if text is not None:
- dct['text'] = text
+ dct["text"] = text
if allThreadsStopped is not None:
- dct['allThreadsStopped'] = allThreadsStopped
+ dct["allThreadsStopped"] = allThreadsStopped
if hitBreakpointIds is not None:
- dct['hitBreakpointIds'] = hitBreakpointIds
+ dct["hitBreakpointIds"] = hitBreakpointIds
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_to_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_to_dap(dct["threadId"])
return dct
@@ -17035,35 +15130,31 @@ class ContinuedEventBody(BaseSchema):
"""
__props__ = {
- "threadId": {
- "type": "integer",
- "description": "The thread which was continued."
- },
+ "threadId": {"type": "integer", "description": "The thread which was continued."},
"allThreadsContinued": {
"type": "boolean",
- "description": "If 'allThreadsContinued' is true, a debug adapter can announce that all threads have continued."
- }
+ "description": "If `allThreadsContinued` is True, a debug adapter can announce that all threads have continued.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, threadId, allThreadsContinued=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param integer threadId: The thread which was continued.
- :param boolean allThreadsContinued: If 'allThreadsContinued' is true, a debug adapter can announce that all threads have continued.
+ :param boolean allThreadsContinued: If `allThreadsContinued` is true, a debug adapter can announce that all threads have continued.
"""
self.threadId = threadId
self.allThreadsContinued = allThreadsContinued
if update_ids_from_dap:
self.threadId = self._translate_id_from_dap(self.threadId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_from_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_from_dap(dct["threadId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -17073,17 +15164,17 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if threadId is not None:
threadId = self._translate_id_to_dap(threadId)
dct = {
- 'threadId': threadId,
+ "threadId": threadId,
}
if allThreadsContinued is not None:
- dct['allThreadsContinued'] = allThreadsContinued
+ dct["allThreadsContinued"] = allThreadsContinued
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_to_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_to_dap(dct["threadId"])
return dct
@@ -17095,15 +15186,10 @@ class ExitedEventBody(BaseSchema):
Note: automatically generated code. Do not edit manually.
"""
- __props__ = {
- "exitCode": {
- "type": "integer",
- "description": "The exit code returned from the debuggee."
- }
- }
+ __props__ = {"exitCode": {"type": "integer", "description": "The exit code returned from the debuggee."}}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, exitCode, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -17112,11 +15198,10 @@ def __init__(self, exitCode, update_ids_from_dap=False, **kwargs): # noqa (upda
self.exitCode = exitCode
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
exitCode = self.exitCode
dct = {
- 'exitCode': exitCode,
+ "exitCode": exitCode,
}
dct.update(self.kwargs)
return dct
@@ -17132,37 +15217,27 @@ class TerminatedEventBody(BaseSchema):
__props__ = {
"restart": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "A debug adapter may set 'restart' to true (or to an arbitrary object) to request that the front end restarts the session.\nThe value is not interpreted by the client and passed unmodified as an attribute '__restart' to the 'launch' and 'attach' requests."
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "A debug adapter may set `restart` to True (or to an arbitrary object) to request that the client restarts the session.\nThe value is not interpreted by the client and passed unmodified as an attribute `__restart` to the `launch` and `attach` requests.",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, restart=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] restart: A debug adapter may set 'restart' to true (or to an arbitrary object) to request that the front end restarts the session.
- The value is not interpreted by the client and passed unmodified as an attribute '__restart' to the 'launch' and 'attach' requests.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] restart: A debug adapter may set `restart` to true (or to an arbitrary object) to request that the client restarts the session.
+ The value is not interpreted by the client and passed unmodified as an attribute `__restart` to the `launch` and `attach` requests.
"""
self.restart = restart
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
restart = self.restart
- dct = {
- }
+ dct = {}
if restart is not None:
- dct['restart'] = restart
+ dct["restart"] = restart
dct.update(self.kwargs)
return dct
@@ -17176,22 +15251,12 @@ class ThreadEventBody(BaseSchema):
"""
__props__ = {
- "reason": {
- "type": "string",
- "description": "The reason for the event.",
- "_enum": [
- "started",
- "exited"
- ]
- },
- "threadId": {
- "type": "integer",
- "description": "The identifier of the thread."
- }
+ "reason": {"type": "string", "description": "The reason for the event.", "_enum": ["started", "exited"]},
+ "threadId": {"type": "integer", "description": "The identifier of the thread."},
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, reason, threadId, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -17203,12 +15268,11 @@ def __init__(self, reason, threadId, update_ids_from_dap=False, **kwargs): # no
if update_ids_from_dap:
self.threadId = self._translate_id_from_dap(self.threadId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_from_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_from_dap(dct["threadId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -17218,16 +15282,16 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if threadId is not None:
threadId = self._translate_id_to_dap(threadId)
dct = {
- 'reason': reason,
- 'threadId': threadId,
+ "reason": reason,
+ "threadId": threadId,
}
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_to_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_to_dap(dct["threadId"])
return dct
@@ -17242,83 +15306,68 @@ class OutputEventBody(BaseSchema):
__props__ = {
"category": {
"type": "string",
- "description": "The output category. If not specified or if the category is not understand by the client, 'console' is assumed.",
- "_enum": [
- "console",
- "important",
- "stdout",
- "stderr",
- "telemetry"
- ],
+ "description": "The output category. If not specified or if the category is not understood by the client, `console` is assumed.",
+ "_enum": ["console", "important", "stdout", "stderr", "telemetry"],
"enumDescriptions": [
"Show the output in the client's default message UI, e.g. a 'debug console'. This category should only be used for informational output from the debugger (as opposed to the debuggee).",
- "A hint for the client to show the ouput in the client's UI for important and highly visible information, e.g. as a popup notification. This category should only be used for important messages from the debugger (as opposed to the debuggee). Since this category value is a hint, clients might ignore the hint and assume the 'console' category.",
+ "A hint for the client to show the output in the client's UI for important and highly visible information, e.g. as a popup notification. This category should only be used for important messages from the debugger (as opposed to the debuggee). Since this category value is a hint, clients might ignore the hint and assume the `console` category.",
"Show the output as normal program output from the debuggee.",
"Show the output as error program output from the debuggee.",
- "Send the output to telemetry instead of showing it to the user."
- ]
- },
- "output": {
- "type": "string",
- "description": "The output to report."
+ "Send the output to telemetry instead of showing it to the user.",
+ ],
},
+ "output": {"type": "string", "description": "The output to report."},
"group": {
"type": "string",
"description": "Support for keeping an output log organized by grouping related messages.",
- "enum": [
- "start",
- "startCollapsed",
- "end"
- ],
+ "enum": ["start", "startCollapsed", "end"],
"enumDescriptions": [
- "Start a new group in expanded mode. Subsequent output events are members of the group and should be shown indented.\nThe 'output' attribute becomes the name of the group and is not indented.",
- "Start a new group in collapsed mode. Subsequent output events are members of the group and should be shown indented (as soon as the group is expanded).\nThe 'output' attribute becomes the name of the group and is not indented.",
- "End the current group and decreases the indentation of subsequent output events.\nA non empty 'output' attribute is shown as the unindented end of the group."
- ]
+ "Start a new group in expanded mode. Subsequent output events are members of the group and should be shown indented.\nThe `output` attribute becomes the name of the group and is not indented.",
+ "Start a new group in collapsed mode. Subsequent output events are members of the group and should be shown indented (as soon as the group is expanded).\nThe `output` attribute becomes the name of the group and is not indented.",
+ "End the current group and decrease the indentation of subsequent output events.\nA non-empty `output` attribute is shown as the unindented end of the group.",
+ ],
},
"variablesReference": {
"type": "integer",
- "description": "If an attribute 'variablesReference' exists and its value is > 0, the output contains objects which can be retrieved by passing 'variablesReference' to the 'variables' request. The value should be less than or equal to 2147483647 (2^31-1)."
- },
- "source": {
- "description": "An optional source location where the output was produced.",
- "type": "Source"
- },
- "line": {
- "type": "integer",
- "description": "An optional source location line where the output was produced."
+ "description": "If an attribute `variablesReference` exists and its value is > 0, the output contains objects which can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.",
},
+ "source": {"description": "The source location where the output was produced.", "type": "Source"},
+ "line": {"type": "integer", "description": "The source location's line where the output was produced."},
"column": {
"type": "integer",
- "description": "An optional source location column where the output was produced."
+ "description": "The position in `line` where the output was produced. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.",
},
"data": {
- "type": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ],
- "description": "Optional data to report. For the 'telemetry' category the data will be sent to telemetry, for the other categories the data is shown in JSON format."
- }
+ "type": ["array", "boolean", "integer", "null", "number", "object", "string"],
+ "description": "Additional data to report. For the `telemetry` category the data is sent to telemetry, for the other categories the data is shown in JSON format.",
+ },
}
- __refs__ = set(['source'])
-
- __slots__ = list(__props__.keys()) + ['kwargs']
-
- def __init__(self, output, category=None, group=None, variablesReference=None, source=None, line=None, column=None, data=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ __refs__ = set(["source"])
+
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(
+ self,
+ output,
+ category=None,
+ group=None,
+ variablesReference=None,
+ source=None,
+ line=None,
+ column=None,
+ data=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
"""
:param string output: The output to report.
- :param string category: The output category. If not specified or if the category is not understand by the client, 'console' is assumed.
+ :param string category: The output category. If not specified or if the category is not understood by the client, `console` is assumed.
:param string group: Support for keeping an output log organized by grouping related messages.
- :param integer variablesReference: If an attribute 'variablesReference' exists and its value is > 0, the output contains objects which can be retrieved by passing 'variablesReference' to the 'variables' request. The value should be less than or equal to 2147483647 (2^31-1).
- :param Source source: An optional source location where the output was produced.
- :param integer line: An optional source location line where the output was produced.
- :param integer column: An optional source location column where the output was produced.
- :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] data: Optional data to report. For the 'telemetry' category the data will be sent to telemetry, for the other categories the data is shown in JSON format.
+ :param integer variablesReference: If an attribute `variablesReference` exists and its value is > 0, the output contains objects which can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.
+ :param Source source: The source location where the output was produced.
+ :param integer line: The source location's line where the output was produced.
+ :param integer column: The position in `line` where the output was produced. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.
+ :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] data: Additional data to report. For the `telemetry` category the data is sent to telemetry, for the other categories the data is shown in JSON format.
"""
self.output = output
self.category = category
@@ -17327,19 +15376,18 @@ def __init__(self, output, category=None, group=None, variablesReference=None, s
if source is None:
self.source = Source()
else:
- self.source = Source(update_ids_from_dap=update_ids_from_dap, **source) if source.__class__ != Source else source
+ self.source = Source(update_ids_from_dap=update_ids_from_dap, **source) if source.__class__ != Source else source
self.line = line
self.column = column
self.data = data
if update_ids_from_dap:
self.variablesReference = self._translate_id_from_dap(self.variablesReference)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'variablesReference' in dct:
- dct['variablesReference'] = cls._translate_id_from_dap(dct['variablesReference'])
+ if "variablesReference" in dct:
+ dct["variablesReference"] = cls._translate_id_from_dap(dct["variablesReference"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -17355,29 +15403,29 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if variablesReference is not None:
variablesReference = self._translate_id_to_dap(variablesReference)
dct = {
- 'output': output,
+ "output": output,
}
if category is not None:
- dct['category'] = category
+ dct["category"] = category
if group is not None:
- dct['group'] = group
+ dct["group"] = group
if variablesReference is not None:
- dct['variablesReference'] = variablesReference
+ dct["variablesReference"] = variablesReference
if source is not None:
- dct['source'] = source.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["source"] = source.to_dict(update_ids_to_dap=update_ids_to_dap)
if line is not None:
- dct['line'] = line
+ dct["line"] = line
if column is not None:
- dct['column'] = column
+ dct["column"] = column
if data is not None:
- dct['data'] = data
+ dct["data"] = data
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'variablesReference' in dct:
- dct['variablesReference'] = cls._translate_id_to_dap(dct['variablesReference'])
+ if "variablesReference" in dct:
+ dct["variablesReference"] = cls._translate_id_to_dap(dct["variablesReference"])
return dct
@@ -17390,43 +15438,36 @@ class BreakpointEventBody(BaseSchema):
"""
__props__ = {
- "reason": {
- "type": "string",
- "description": "The reason for the event.",
- "_enum": [
- "changed",
- "new",
- "removed"
- ]
- },
+ "reason": {"type": "string", "description": "The reason for the event.", "_enum": ["changed", "new", "removed"]},
"breakpoint": {
- "description": "The 'id' attribute is used to find the target breakpoint and the other attributes are used as the new values.",
- "type": "Breakpoint"
- }
+ "description": "The `id` attribute is used to find the target breakpoint, the other attributes are used as the new values.",
+ "type": "Breakpoint",
+ },
}
- __refs__ = set(['breakpoint'])
+ __refs__ = set(["breakpoint"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, reason, breakpoint, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param string reason: The reason for the event.
- :param Breakpoint breakpoint: The 'id' attribute is used to find the target breakpoint and the other attributes are used as the new values.
+ :param Breakpoint breakpoint: The `id` attribute is used to find the target breakpoint, the other attributes are used as the new values.
"""
self.reason = reason
if breakpoint is None:
self.breakpoint = Breakpoint()
else:
- self.breakpoint = Breakpoint(update_ids_from_dap=update_ids_from_dap, **breakpoint) if breakpoint.__class__ != Breakpoint else breakpoint
+ self.breakpoint = (
+ Breakpoint(update_ids_from_dap=update_ids_from_dap, **breakpoint) if breakpoint.__class__ != Breakpoint else breakpoint
+ )
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
reason = self.reason
breakpoint = self.breakpoint # noqa (assign to builtin)
dct = {
- 'reason': reason,
- 'breakpoint': breakpoint.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "reason": reason,
+ "breakpoint": breakpoint.to_dict(update_ids_to_dap=update_ids_to_dap),
}
dct.update(self.kwargs)
return dct
@@ -17440,44 +15481,35 @@ class ModuleEventBody(BaseSchema):
Note: automatically generated code. Do not edit manually.
"""
- __props__ = {
- "reason": {
- "type": "string",
- "description": "The reason for the event.",
- "enum": [
- "new",
- "changed",
- "removed"
- ]
- },
+ __props__ = {
+ "reason": {"type": "string", "description": "The reason for the event.", "enum": ["new", "changed", "removed"]},
"module": {
- "description": "The new, changed, or removed module. In case of 'removed' only the module id is used.",
- "type": "Module"
- }
+ "description": "The new, changed, or removed module. In case of `removed` only the module id is used.",
+ "type": "Module",
+ },
}
- __refs__ = set(['module'])
+ __refs__ = set(["module"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, reason, module, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param string reason: The reason for the event.
- :param Module module: The new, changed, or removed module. In case of 'removed' only the module id is used.
+ :param Module module: The new, changed, or removed module. In case of `removed` only the module id is used.
"""
self.reason = reason
if module is None:
self.module = Module()
else:
- self.module = Module(update_ids_from_dap=update_ids_from_dap, **module) if module.__class__ != Module else module
+ self.module = Module(update_ids_from_dap=update_ids_from_dap, **module) if module.__class__ != Module else module
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
reason = self.reason
module = self.module
dct = {
- 'reason': reason,
- 'module': module.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "reason": reason,
+ "module": module.to_dict(update_ids_to_dap=update_ids_to_dap),
}
dct.update(self.kwargs)
return dct
@@ -17492,23 +15524,12 @@ class LoadedSourceEventBody(BaseSchema):
"""
__props__ = {
- "reason": {
- "type": "string",
- "description": "The reason for the event.",
- "enum": [
- "new",
- "changed",
- "removed"
- ]
- },
- "source": {
- "description": "The new, changed, or removed source.",
- "type": "Source"
- }
+ "reason": {"type": "string", "description": "The reason for the event.", "enum": ["new", "changed", "removed"]},
+ "source": {"description": "The new, changed, or removed source.", "type": "Source"},
}
- __refs__ = set(['source'])
+ __refs__ = set(["source"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, reason, source, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -17519,16 +15540,15 @@ def __init__(self, reason, source, update_ids_from_dap=False, **kwargs): # noqa
if source is None:
self.source = Source()
else:
- self.source = Source(update_ids_from_dap=update_ids_from_dap, **source) if source.__class__ != Source else source
+ self.source = Source(update_ids_from_dap=update_ids_from_dap, **source) if source.__class__ != Source else source
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
reason = self.reason
source = self.source
dct = {
- 'reason': reason,
- 'source': source.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "reason": reason,
+ "source": source.to_dict(update_ids_to_dap=update_ids_to_dap),
}
dct.update(self.kwargs)
return dct
@@ -17545,43 +15565,38 @@ class ProcessEventBody(BaseSchema):
__props__ = {
"name": {
"type": "string",
- "description": "The logical name of the process. This is usually the full path to process's executable file. Example: /home/example/myproj/program.js."
+ "description": "The logical name of the process. This is usually the full path to process's executable file. Example: /home/example/myproj/program.js.",
},
"systemProcessId": {
"type": "integer",
- "description": "The system process id of the debugged process. This property will be missing for non-system processes."
- },
- "isLocalProcess": {
- "type": "boolean",
- "description": "If true, the process is running on the same computer as the debug adapter."
+ "description": "The system process id of the debugged process. This property is missing for non-system processes.",
},
+ "isLocalProcess": {"type": "boolean", "description": "If True, the process is running on the same computer as the debug adapter."},
"startMethod": {
"type": "string",
- "enum": [
- "launch",
- "attach",
- "attachForSuspendedLaunch"
- ],
+ "enum": ["launch", "attach", "attachForSuspendedLaunch"],
"description": "Describes how the debug engine started debugging this process.",
"enumDescriptions": [
"Process was launched under the debugger.",
"Debugger attached to an existing process.",
- "A project launcher component has launched a new process in a suspended state and then asked the debugger to attach."
- ]
+ "A project launcher component has launched a new process in a suspended state and then asked the debugger to attach.",
+ ],
},
"pointerSize": {
"type": "integer",
- "description": "The size of a pointer or address for this process, in bits. This value may be used by clients when formatting addresses for display."
- }
+ "description": "The size of a pointer or address for this process, in bits. This value may be used by clients when formatting addresses for display.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
- def __init__(self, name, systemProcessId=None, isLocalProcess=None, startMethod=None, pointerSize=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ def __init__(
+ self, name, systemProcessId=None, isLocalProcess=None, startMethod=None, pointerSize=None, update_ids_from_dap=False, **kwargs
+ ): # noqa (update_ids_from_dap may be unused)
"""
:param string name: The logical name of the process. This is usually the full path to process's executable file. Example: /home/example/myproj/program.js.
- :param integer systemProcessId: The system process id of the debugged process. This property will be missing for non-system processes.
+ :param integer systemProcessId: The system process id of the debugged process. This property is missing for non-system processes.
:param boolean isLocalProcess: If true, the process is running on the same computer as the debug adapter.
:param string startMethod: Describes how the debug engine started debugging this process.
:param integer pointerSize: The size of a pointer or address for this process, in bits. This value may be used by clients when formatting addresses for display.
@@ -17593,7 +15608,6 @@ def __init__(self, name, systemProcessId=None, isLocalProcess=None, startMethod=
self.pointerSize = pointerSize
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
name = self.name
systemProcessId = self.systemProcessId
@@ -17601,16 +15615,16 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
startMethod = self.startMethod
pointerSize = self.pointerSize
dct = {
- 'name': name,
+ "name": name,
}
if systemProcessId is not None:
- dct['systemProcessId'] = systemProcessId
+ dct["systemProcessId"] = systemProcessId
if isLocalProcess is not None:
- dct['isLocalProcess'] = isLocalProcess
+ dct["isLocalProcess"] = isLocalProcess
if startMethod is not None:
- dct['startMethod'] = startMethod
+ dct["startMethod"] = startMethod
if pointerSize is not None:
- dct['pointerSize'] = pointerSize
+ dct["pointerSize"] = pointerSize
dct.update(self.kwargs)
return dct
@@ -17623,15 +15637,10 @@ class CapabilitiesEventBody(BaseSchema):
Note: automatically generated code. Do not edit manually.
"""
- __props__ = {
- "capabilities": {
- "description": "The set of updated capabilities.",
- "type": "Capabilities"
- }
- }
- __refs__ = set(['capabilities'])
+ __props__ = {"capabilities": {"description": "The set of updated capabilities.", "type": "Capabilities"}}
+ __refs__ = set(["capabilities"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, capabilities, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -17640,14 +15649,17 @@ def __init__(self, capabilities, update_ids_from_dap=False, **kwargs): # noqa (
if capabilities is None:
self.capabilities = Capabilities()
else:
- self.capabilities = Capabilities(update_ids_from_dap=update_ids_from_dap, **capabilities) if capabilities.__class__ != Capabilities else capabilities
+ self.capabilities = (
+ Capabilities(update_ids_from_dap=update_ids_from_dap, **capabilities)
+ if capabilities.__class__ != Capabilities
+ else capabilities
+ )
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
capabilities = self.capabilities
dct = {
- 'capabilities': capabilities.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "capabilities": capabilities.to_dict(update_ids_to_dap=update_ids_to_dap),
}
dct.update(self.kwargs)
return dct
@@ -17664,46 +15676,44 @@ class ProgressStartEventBody(BaseSchema):
__props__ = {
"progressId": {
"type": "string",
- "description": "An ID that must be used in subsequent 'progressUpdate' and 'progressEnd' events to make them refer to the same progress reporting.\nIDs must be unique within a debug session."
+ "description": "An ID that can be used in subsequent `progressUpdate` and `progressEnd` events to make them refer to the same progress reporting.\nIDs must be unique within a debug session.",
},
"title": {
"type": "string",
- "description": "Mandatory (short) title of the progress reporting. Shown in the UI to describe the long running operation."
+ "description": "Short title of the progress reporting. Shown in the UI to describe the long running operation.",
},
"requestId": {
"type": "integer",
- "description": "The request ID that this progress report is related to. If specified a debug adapter is expected to emit\nprogress events for the long running request until the request has been either completed or cancelled.\nIf the request ID is omitted, the progress report is assumed to be related to some general activity of the debug adapter."
+ "description": "The request ID that this progress report is related to. If specified a debug adapter is expected to emit progress events for the long running request until the request has been either completed or cancelled.\nIf the request ID is omitted, the progress report is assumed to be related to some general activity of the debug adapter.",
},
"cancellable": {
"type": "boolean",
- "description": "If true, the request that reports progress may be canceled with a 'cancel' request.\nSo this property basically controls whether the client should use UX that supports cancellation.\nClients that don't support cancellation are allowed to ignore the setting."
- },
- "message": {
- "type": "string",
- "description": "Optional, more detailed progress message."
+ "description": "If True, the request that reports progress may be cancelled with a `cancel` request.\nSo this property basically controls whether the client should use UX that supports cancellation.\nClients that don't support cancellation are allowed to ignore the setting.",
},
+ "message": {"type": "string", "description": "More detailed progress message."},
"percentage": {
"type": "number",
- "description": "Optional progress percentage to display (value range: 0 to 100). If omitted no percentage will be shown."
- }
+ "description": "Progress percentage to display (value range: 0 to 100). If omitted no percentage is shown.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
- def __init__(self, progressId, title, requestId=None, cancellable=None, message=None, percentage=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ def __init__(
+ self, progressId, title, requestId=None, cancellable=None, message=None, percentage=None, update_ids_from_dap=False, **kwargs
+ ): # noqa (update_ids_from_dap may be unused)
"""
- :param string progressId: An ID that must be used in subsequent 'progressUpdate' and 'progressEnd' events to make them refer to the same progress reporting.
+ :param string progressId: An ID that can be used in subsequent `progressUpdate` and `progressEnd` events to make them refer to the same progress reporting.
IDs must be unique within a debug session.
- :param string title: Mandatory (short) title of the progress reporting. Shown in the UI to describe the long running operation.
- :param integer requestId: The request ID that this progress report is related to. If specified a debug adapter is expected to emit
- progress events for the long running request until the request has been either completed or cancelled.
+ :param string title: Short title of the progress reporting. Shown in the UI to describe the long running operation.
+ :param integer requestId: The request ID that this progress report is related to. If specified a debug adapter is expected to emit progress events for the long running request until the request has been either completed or cancelled.
If the request ID is omitted, the progress report is assumed to be related to some general activity of the debug adapter.
- :param boolean cancellable: If true, the request that reports progress may be canceled with a 'cancel' request.
+ :param boolean cancellable: If true, the request that reports progress may be cancelled with a `cancel` request.
So this property basically controls whether the client should use UX that supports cancellation.
Clients that don't support cancellation are allowed to ignore the setting.
- :param string message: Optional, more detailed progress message.
- :param number percentage: Optional progress percentage to display (value range: 0 to 100). If omitted no percentage will be shown.
+ :param string message: More detailed progress message.
+ :param number percentage: Progress percentage to display (value range: 0 to 100). If omitted no percentage is shown.
"""
self.progressId = progressId
self.title = title
@@ -17713,7 +15723,6 @@ def __init__(self, progressId, title, requestId=None, cancellable=None, message=
self.percentage = percentage
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
progressId = self.progressId
title = self.title
@@ -17722,17 +15731,17 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
message = self.message
percentage = self.percentage
dct = {
- 'progressId': progressId,
- 'title': title,
+ "progressId": progressId,
+ "title": title,
}
if requestId is not None:
- dct['requestId'] = requestId
+ dct["requestId"] = requestId
if cancellable is not None:
- dct['cancellable'] = cancellable
+ dct["cancellable"] = cancellable
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if percentage is not None:
- dct['percentage'] = percentage
+ dct["percentage"] = percentage
dct.update(self.kwargs)
return dct
@@ -17746,46 +15755,39 @@ class ProgressUpdateEventBody(BaseSchema):
"""
__props__ = {
- "progressId": {
- "type": "string",
- "description": "The ID that was introduced in the initial 'progressStart' event."
- },
- "message": {
- "type": "string",
- "description": "Optional, more detailed progress message. If omitted, the previous message (if any) is used."
- },
+ "progressId": {"type": "string", "description": "The ID that was introduced in the initial `progressStart` event."},
+ "message": {"type": "string", "description": "More detailed progress message. If omitted, the previous message (if any) is used."},
"percentage": {
"type": "number",
- "description": "Optional progress percentage to display (value range: 0 to 100). If omitted no percentage will be shown."
- }
+ "description": "Progress percentage to display (value range: 0 to 100). If omitted no percentage is shown.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, progressId, message=None, percentage=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string progressId: The ID that was introduced in the initial 'progressStart' event.
- :param string message: Optional, more detailed progress message. If omitted, the previous message (if any) is used.
- :param number percentage: Optional progress percentage to display (value range: 0 to 100). If omitted no percentage will be shown.
+ :param string progressId: The ID that was introduced in the initial `progressStart` event.
+ :param string message: More detailed progress message. If omitted, the previous message (if any) is used.
+ :param number percentage: Progress percentage to display (value range: 0 to 100). If omitted no percentage is shown.
"""
self.progressId = progressId
self.message = message
self.percentage = percentage
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
progressId = self.progressId
message = self.message
percentage = self.percentage
dct = {
- 'progressId': progressId,
+ "progressId": progressId,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
if percentage is not None:
- dct['percentage'] = percentage
+ dct["percentage"] = percentage
dct.update(self.kwargs)
return dct
@@ -17799,37 +15801,30 @@ class ProgressEndEventBody(BaseSchema):
"""
__props__ = {
- "progressId": {
- "type": "string",
- "description": "The ID that was introduced in the initial 'ProgressStartEvent'."
- },
- "message": {
- "type": "string",
- "description": "Optional, more detailed progress message. If omitted, the previous message (if any) is used."
- }
+ "progressId": {"type": "string", "description": "The ID that was introduced in the initial `ProgressStartEvent`."},
+ "message": {"type": "string", "description": "More detailed progress message. If omitted, the previous message (if any) is used."},
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, progressId, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param string progressId: The ID that was introduced in the initial 'ProgressStartEvent'.
- :param string message: Optional, more detailed progress message. If omitted, the previous message (if any) is used.
+ :param string progressId: The ID that was introduced in the initial `ProgressStartEvent`.
+ :param string message: More detailed progress message. If omitted, the previous message (if any) is used.
"""
self.progressId = progressId
self.message = message
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
progressId = self.progressId
message = self.message
dct = {
- 'progressId': progressId,
+ "progressId": progressId,
}
if message is not None:
- dct['message'] = message
+ dct["message"] = message
dct.update(self.kwargs)
return dct
@@ -17845,29 +15840,24 @@ class InvalidatedEventBody(BaseSchema):
__props__ = {
"areas": {
"type": "array",
- "description": "Optional set of logical areas that got invalidated. This property has a hint characteristic: a client can only be expected to make a 'best effort' in honouring the areas but there are no guarantees. If this property is missing, empty, or if values are not understand the client should assume a single value 'all'.",
- "items": {
- "$ref": "#/definitions/InvalidatedAreas"
- }
- },
- "threadId": {
- "type": "integer",
- "description": "If specified, the client only needs to refetch data related to this thread."
+ "description": "Set of logical areas that got invalidated. This property has a hint characteristic: a client can only be expected to make a 'best effort' in honoring the areas but there are no guarantees. If this property is missing, empty, or if values are not understood, the client should assume a single value `all`.",
+ "items": {"$ref": "#/definitions/InvalidatedAreas"},
},
+ "threadId": {"type": "integer", "description": "If specified, the client only needs to refetch data related to this thread."},
"stackFrameId": {
"type": "integer",
- "description": "If specified, the client only needs to refetch data related to this stack frame (and the 'threadId' is ignored)."
- }
+ "description": "If specified, the client only needs to refetch data related to this stack frame (and the `threadId` is ignored).",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, areas=None, threadId=None, stackFrameId=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param array areas: Optional set of logical areas that got invalidated. This property has a hint characteristic: a client can only be expected to make a 'best effort' in honouring the areas but there are no guarantees. If this property is missing, empty, or if values are not understand the client should assume a single value 'all'.
+ :param array areas: Set of logical areas that got invalidated. This property has a hint characteristic: a client can only be expected to make a 'best effort' in honoring the areas but there are no guarantees. If this property is missing, empty, or if values are not understood, the client should assume a single value `all`.
:param integer threadId: If specified, the client only needs to refetch data related to this thread.
- :param integer stackFrameId: If specified, the client only needs to refetch data related to this stack frame (and the 'threadId' is ignored).
+ :param integer stackFrameId: If specified, the client only needs to refetch data related to this stack frame (and the `threadId` is ignored).
"""
self.areas = areas
if update_ids_from_dap and self.areas:
@@ -17878,12 +15868,11 @@ def __init__(self, areas=None, threadId=None, stackFrameId=None, update_ids_from
if update_ids_from_dap:
self.threadId = self._translate_id_from_dap(self.threadId)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_from_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_from_dap(dct["threadId"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -17895,21 +15884,20 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if update_ids_to_dap:
if threadId is not None:
threadId = self._translate_id_to_dap(threadId)
- dct = {
- }
+ dct = {}
if areas is not None:
- dct['areas'] = [InvalidatedAreas.update_dict_ids_to_dap(o) for o in areas] if (update_ids_to_dap and areas) else areas
+ dct["areas"] = [InvalidatedAreas.update_dict_ids_to_dap(o) for o in areas] if (update_ids_to_dap and areas) else areas
if threadId is not None:
- dct['threadId'] = threadId
+ dct["threadId"] = threadId
if stackFrameId is not None:
- dct['stackFrameId'] = stackFrameId
+ dct["stackFrameId"] = stackFrameId
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'threadId' in dct:
- dct['threadId'] = cls._translate_id_to_dap(dct['threadId'])
+ if "threadId" in dct:
+ dct["threadId"] = cls._translate_id_to_dap(dct["threadId"])
return dct
@@ -17922,22 +15910,13 @@ class MemoryEventBody(BaseSchema):
"""
__props__ = {
- "memoryReference": {
- "type": "string",
- "description": "Memory reference of a memory range that has been updated."
- },
- "offset": {
- "type": "integer",
- "description": "Starting offset in bytes where memory has been updated. Can be negative."
- },
- "count": {
- "type": "integer",
- "description": "Number of bytes updated."
- }
+ "memoryReference": {"type": "string", "description": "Memory reference of a memory range that has been updated."},
+ "offset": {"type": "integer", "description": "Starting offset in bytes where memory has been updated. Can be negative."},
+ "count": {"type": "integer", "description": "Number of bytes updated."},
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, memoryReference, offset, count, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -17950,15 +15929,14 @@ def __init__(self, memoryReference, offset, count, update_ids_from_dap=False, **
self.count = count
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
memoryReference = self.memoryReference
offset = self.offset
count = self.count
dct = {
- 'memoryReference': memoryReference,
- 'offset': offset,
- 'count': count,
+ "memoryReference": memoryReference,
+ "offset": offset,
+ "count": count,
}
dct.update(self.kwargs)
return dct
@@ -17975,19 +15953,15 @@ class RunInTerminalRequestArgumentsEnv(BaseSchema):
__props__ = {}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
- """
-
- """
-
- self.kwargs = kwargs
+ """ """
+ self.kwargs = kwargs
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
- dct = {
- }
+ dct = {}
dct.update(self.kwargs)
return dct
@@ -18001,18 +15975,15 @@ class RunInTerminalResponseBody(BaseSchema):
"""
__props__ = {
- "processId": {
- "type": "integer",
- "description": "The process ID. The value should be less than or equal to 2147483647 (2^31-1)."
- },
+ "processId": {"type": "integer", "description": "The process ID. The value should be less than or equal to 2147483647 (2^31-1)."},
"shellProcessId": {
"type": "integer",
- "description": "The process ID of the terminal shell. The value should be less than or equal to 2147483647 (2^31-1)."
- }
+ "description": "The process ID of the terminal shell. The value should be less than or equal to 2147483647 (2^31-1).",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, processId=None, shellProcessId=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -18023,16 +15994,38 @@ def __init__(self, processId=None, shellProcessId=None, update_ids_from_dap=Fals
self.shellProcessId = shellProcessId
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
processId = self.processId
shellProcessId = self.shellProcessId
- dct = {
- }
+ dct = {}
if processId is not None:
- dct['processId'] = processId
+ dct["processId"] = processId
if shellProcessId is not None:
- dct['shellProcessId'] = shellProcessId
+ dct["shellProcessId"] = shellProcessId
+ dct.update(self.kwargs)
+ return dct
+
+
+@register
+class StartDebuggingRequestArgumentsConfiguration(BaseSchema):
+ """
+ "configuration" of StartDebuggingRequestArguments
+
+ Note: automatically generated code. Do not edit manually.
+ """
+
+ __props__ = {}
+ __refs__ = set()
+
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ """ """
+
+ self.kwargs = kwargs
+
+ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
+ dct = {}
dct.update(self.kwargs)
return dct
@@ -18048,15 +16041,13 @@ class BreakpointLocationsResponseBody(BaseSchema):
__props__ = {
"breakpoints": {
"type": "array",
- "items": {
- "$ref": "#/definitions/BreakpointLocation"
- },
- "description": "Sorted set of possible breakpoint locations."
+ "items": {"$ref": "#/definitions/BreakpointLocation"},
+ "description": "Sorted set of possible breakpoint locations.",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -18068,13 +16059,14 @@ def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (u
BreakpointLocation.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
breakpoints = self.breakpoints
if breakpoints and hasattr(breakpoints[0], "to_dict"):
breakpoints = [x.to_dict() for x in breakpoints]
dct = {
- 'breakpoints': [BreakpointLocation.update_dict_ids_to_dap(o) for o in breakpoints] if (update_ids_to_dap and breakpoints) else breakpoints,
+ "breakpoints": [BreakpointLocation.update_dict_ids_to_dap(o) for o in breakpoints]
+ if (update_ids_to_dap and breakpoints)
+ else breakpoints,
}
dct.update(self.kwargs)
return dct
@@ -18091,20 +16083,18 @@ class SetBreakpointsResponseBody(BaseSchema):
__props__ = {
"breakpoints": {
"type": "array",
- "items": {
- "$ref": "#/definitions/Breakpoint"
- },
- "description": "Information about the breakpoints.\nThe array elements are in the same order as the elements of the 'breakpoints' (or the deprecated 'lines') array in the arguments."
+ "items": {"$ref": "#/definitions/Breakpoint"},
+ "description": "Information about the breakpoints.\nThe array elements are in the same order as the elements of the `breakpoints` (or the deprecated `lines`) array in the arguments.",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param array breakpoints: Information about the breakpoints.
- The array elements are in the same order as the elements of the 'breakpoints' (or the deprecated 'lines') array in the arguments.
+ The array elements are in the same order as the elements of the `breakpoints` (or the deprecated `lines`) array in the arguments.
"""
self.breakpoints = breakpoints
if update_ids_from_dap and self.breakpoints:
@@ -18112,13 +16102,14 @@ def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (u
Breakpoint.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
breakpoints = self.breakpoints
if breakpoints and hasattr(breakpoints[0], "to_dict"):
breakpoints = [x.to_dict() for x in breakpoints]
dct = {
- 'breakpoints': [Breakpoint.update_dict_ids_to_dap(o) for o in breakpoints] if (update_ids_to_dap and breakpoints) else breakpoints,
+ "breakpoints": [Breakpoint.update_dict_ids_to_dap(o) for o in breakpoints]
+ if (update_ids_to_dap and breakpoints)
+ else breakpoints,
}
dct.update(self.kwargs)
return dct
@@ -18135,19 +16126,17 @@ class SetFunctionBreakpointsResponseBody(BaseSchema):
__props__ = {
"breakpoints": {
"type": "array",
- "items": {
- "$ref": "#/definitions/Breakpoint"
- },
- "description": "Information about the breakpoints. The array elements correspond to the elements of the 'breakpoints' array."
+ "items": {"$ref": "#/definitions/Breakpoint"},
+ "description": "Information about the breakpoints. The array elements correspond to the elements of the `breakpoints` array.",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param array breakpoints: Information about the breakpoints. The array elements correspond to the elements of the 'breakpoints' array.
+ :param array breakpoints: Information about the breakpoints. The array elements correspond to the elements of the `breakpoints` array.
"""
self.breakpoints = breakpoints
if update_ids_from_dap and self.breakpoints:
@@ -18155,13 +16144,14 @@ def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (u
Breakpoint.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
breakpoints = self.breakpoints
if breakpoints and hasattr(breakpoints[0], "to_dict"):
breakpoints = [x.to_dict() for x in breakpoints]
dct = {
- 'breakpoints': [Breakpoint.update_dict_ids_to_dap(o) for o in breakpoints] if (update_ids_to_dap and breakpoints) else breakpoints,
+ "breakpoints": [Breakpoint.update_dict_ids_to_dap(o) for o in breakpoints]
+ if (update_ids_to_dap and breakpoints)
+ else breakpoints,
}
dct.update(self.kwargs)
return dct
@@ -18178,20 +16168,18 @@ class SetExceptionBreakpointsResponseBody(BaseSchema):
__props__ = {
"breakpoints": {
"type": "array",
- "items": {
- "$ref": "#/definitions/Breakpoint"
- },
- "description": "Information about the exception breakpoints or filters.\nThe breakpoints returned are in the same order as the elements of the 'filters', 'filterOptions', 'exceptionOptions' arrays in the arguments. If both 'filters' and 'filterOptions' are given, the returned array must start with 'filters' information first, followed by 'filterOptions' information."
+ "items": {"$ref": "#/definitions/Breakpoint"},
+ "description": "Information about the exception breakpoints or filters.\nThe breakpoints returned are in the same order as the elements of the `filters`, `filterOptions`, `exceptionOptions` arrays in the arguments. If both `filters` and `filterOptions` are given, the returned array must start with `filters` information first, followed by `filterOptions` information.",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, breakpoints=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param array breakpoints: Information about the exception breakpoints or filters.
- The breakpoints returned are in the same order as the elements of the 'filters', 'filterOptions', 'exceptionOptions' arrays in the arguments. If both 'filters' and 'filterOptions' are given, the returned array must start with 'filters' information first, followed by 'filterOptions' information.
+ The breakpoints returned are in the same order as the elements of the `filters`, `filterOptions`, `exceptionOptions` arrays in the arguments. If both `filters` and `filterOptions` are given, the returned array must start with `filters` information first, followed by `filterOptions` information.
"""
self.breakpoints = breakpoints
if update_ids_from_dap and self.breakpoints:
@@ -18199,15 +16187,15 @@ def __init__(self, breakpoints=None, update_ids_from_dap=False, **kwargs): # no
Breakpoint.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
breakpoints = self.breakpoints
if breakpoints and hasattr(breakpoints[0], "to_dict"):
breakpoints = [x.to_dict() for x in breakpoints]
- dct = {
- }
+ dct = {}
if breakpoints is not None:
- dct['breakpoints'] = [Breakpoint.update_dict_ids_to_dap(o) for o in breakpoints] if (update_ids_to_dap and breakpoints) else breakpoints
+ dct["breakpoints"] = (
+ [Breakpoint.update_dict_ids_to_dap(o) for o in breakpoints] if (update_ids_to_dap and breakpoints) else breakpoints
+ )
dct.update(self.kwargs)
return dct
@@ -18222,38 +16210,33 @@ class DataBreakpointInfoResponseBody(BaseSchema):
__props__ = {
"dataId": {
- "type": [
- "string",
- "null"
- ],
- "description": "An identifier for the data on which a data breakpoint can be registered with the setDataBreakpoints request or null if no data breakpoint is available."
+ "type": ["string", "null"],
+ "description": "An identifier for the data on which a data breakpoint can be registered with the `setDataBreakpoints` request or null if no data breakpoint is available. If a `variablesReference` or `frameId` is passed, the `dataId` is valid in the current suspended state, otherwise it's valid indefinitely. See 'Lifetime of Object References' in the Overview section for details. Breakpoints set using the `dataId` in the `setDataBreakpoints` request may outlive the lifetime of the associated `dataId`.",
},
"description": {
"type": "string",
- "description": "UI string that describes on what data the breakpoint is set on or why a data breakpoint is not available."
+ "description": "UI string that describes on what data the breakpoint is set on or why a data breakpoint is not available.",
},
"accessTypes": {
"type": "array",
- "items": {
- "$ref": "#/definitions/DataBreakpointAccessType"
- },
- "description": "Optional attribute listing the available access types for a potential data breakpoint. A UI frontend could surface this information."
+ "items": {"$ref": "#/definitions/DataBreakpointAccessType"},
+ "description": "Attribute lists the available access types for a potential data breakpoint. A UI client could surface this information.",
},
"canPersist": {
"type": "boolean",
- "description": "Optional attribute indicating that a potential data breakpoint could be persisted across sessions."
- }
+ "description": "Attribute indicates that a potential data breakpoint could be persisted across sessions.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, dataId, description, accessTypes=None, canPersist=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param ['string', 'null'] dataId: An identifier for the data on which a data breakpoint can be registered with the setDataBreakpoints request or null if no data breakpoint is available.
+ :param ['string', 'null'] dataId: An identifier for the data on which a data breakpoint can be registered with the `setDataBreakpoints` request or null if no data breakpoint is available. If a `variablesReference` or `frameId` is passed, the `dataId` is valid in the current suspended state, otherwise it's valid indefinitely. See 'Lifetime of Object References' in the Overview section for details. Breakpoints set using the `dataId` in the `setDataBreakpoints` request may outlive the lifetime of the associated `dataId`.
:param string description: UI string that describes on what data the breakpoint is set on or why a data breakpoint is not available.
- :param array accessTypes: Optional attribute listing the available access types for a potential data breakpoint. A UI frontend could surface this information.
- :param boolean canPersist: Optional attribute indicating that a potential data breakpoint could be persisted across sessions.
+ :param array accessTypes: Attribute lists the available access types for a potential data breakpoint. A UI client could surface this information.
+ :param boolean canPersist: Attribute indicates that a potential data breakpoint could be persisted across sessions.
"""
self.dataId = dataId
self.description = description
@@ -18264,7 +16247,6 @@ def __init__(self, dataId, description, accessTypes=None, canPersist=None, updat
self.canPersist = canPersist
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
dataId = self.dataId
description = self.description
@@ -18273,13 +16255,17 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
accessTypes = [x.to_dict() for x in accessTypes]
canPersist = self.canPersist
dct = {
- 'dataId': dataId,
- 'description': description,
+ "dataId": dataId,
+ "description": description,
}
if accessTypes is not None:
- dct['accessTypes'] = [DataBreakpointAccessType.update_dict_ids_to_dap(o) for o in accessTypes] if (update_ids_to_dap and accessTypes) else accessTypes
+ dct["accessTypes"] = (
+ [DataBreakpointAccessType.update_dict_ids_to_dap(o) for o in accessTypes]
+ if (update_ids_to_dap and accessTypes)
+ else accessTypes
+ )
if canPersist is not None:
- dct['canPersist'] = canPersist
+ dct["canPersist"] = canPersist
dct.update(self.kwargs)
return dct
@@ -18295,19 +16281,17 @@ class SetDataBreakpointsResponseBody(BaseSchema):
__props__ = {
"breakpoints": {
"type": "array",
- "items": {
- "$ref": "#/definitions/Breakpoint"
- },
- "description": "Information about the data breakpoints. The array elements correspond to the elements of the input argument 'breakpoints' array."
+ "items": {"$ref": "#/definitions/Breakpoint"},
+ "description": "Information about the data breakpoints. The array elements correspond to the elements of the input argument `breakpoints` array.",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param array breakpoints: Information about the data breakpoints. The array elements correspond to the elements of the input argument 'breakpoints' array.
+ :param array breakpoints: Information about the data breakpoints. The array elements correspond to the elements of the input argument `breakpoints` array.
"""
self.breakpoints = breakpoints
if update_ids_from_dap and self.breakpoints:
@@ -18315,13 +16299,14 @@ def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (u
Breakpoint.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
breakpoints = self.breakpoints
if breakpoints and hasattr(breakpoints[0], "to_dict"):
breakpoints = [x.to_dict() for x in breakpoints]
dct = {
- 'breakpoints': [Breakpoint.update_dict_ids_to_dap(o) for o in breakpoints] if (update_ids_to_dap and breakpoints) else breakpoints,
+ "breakpoints": [Breakpoint.update_dict_ids_to_dap(o) for o in breakpoints]
+ if (update_ids_to_dap and breakpoints)
+ else breakpoints,
}
dct.update(self.kwargs)
return dct
@@ -18338,19 +16323,17 @@ class SetInstructionBreakpointsResponseBody(BaseSchema):
__props__ = {
"breakpoints": {
"type": "array",
- "items": {
- "$ref": "#/definitions/Breakpoint"
- },
- "description": "Information about the breakpoints. The array elements correspond to the elements of the 'breakpoints' array."
+ "items": {"$ref": "#/definitions/Breakpoint"},
+ "description": "Information about the breakpoints. The array elements correspond to the elements of the `breakpoints` array.",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param array breakpoints: Information about the breakpoints. The array elements correspond to the elements of the 'breakpoints' array.
+ :param array breakpoints: Information about the breakpoints. The array elements correspond to the elements of the `breakpoints` array.
"""
self.breakpoints = breakpoints
if update_ids_from_dap and self.breakpoints:
@@ -18358,13 +16341,14 @@ def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (u
Breakpoint.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
breakpoints = self.breakpoints
if breakpoints and hasattr(breakpoints[0], "to_dict"):
breakpoints = [x.to_dict() for x in breakpoints]
dct = {
- 'breakpoints': [Breakpoint.update_dict_ids_to_dap(o) for o in breakpoints] if (update_ids_to_dap and breakpoints) else breakpoints,
+ "breakpoints": [Breakpoint.update_dict_ids_to_dap(o) for o in breakpoints]
+ if (update_ids_to_dap and breakpoints)
+ else breakpoints,
}
dct.update(self.kwargs)
return dct
@@ -18381,27 +16365,25 @@ class ContinueResponseBody(BaseSchema):
__props__ = {
"allThreadsContinued": {
"type": "boolean",
- "description": "The value true (or a missing property) signals to the client that all threads have been resumed. The value false must be returned if not all threads were resumed."
+ "description": "The value True (or a missing property) signals to the client that all threads have been resumed. The value false indicates that not all threads were resumed.",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, allThreadsContinued=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param boolean allThreadsContinued: The value true (or a missing property) signals to the client that all threads have been resumed. The value false must be returned if not all threads were resumed.
+ :param boolean allThreadsContinued: The value true (or a missing property) signals to the client that all threads have been resumed. The value false indicates that not all threads were resumed.
"""
self.allThreadsContinued = allThreadsContinued
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
allThreadsContinued = self.allThreadsContinued
- dct = {
- }
+ dct = {}
if allThreadsContinued is not None:
- dct['allThreadsContinued'] = allThreadsContinued
+ dct["allThreadsContinued"] = allThreadsContinued
dct.update(self.kwargs)
return dct
@@ -18417,25 +16399,23 @@ class StackTraceResponseBody(BaseSchema):
__props__ = {
"stackFrames": {
"type": "array",
- "items": {
- "$ref": "#/definitions/StackFrame"
- },
- "description": "The frames of the stackframe. If the array has length zero, there are no stackframes available.\nThis means that there is no location information available."
+ "items": {"$ref": "#/definitions/StackFrame"},
+ "description": "The frames of the stack frame. If the array has length zero, there are no stack frames available.\nThis means that there is no location information available.",
},
"totalFrames": {
"type": "integer",
- "description": "The total number of frames available in the stack. If omitted or if totalFrames is larger than the available frames, a client is expected to request frames until a request returns less frames than requested (which indicates the end of the stack). Returning monotonically increasing totalFrames values for subsequent requests can be used to enforce paging in the client."
- }
+ "description": "The total number of frames available in the stack. If omitted or if `totalFrames` is larger than the available frames, a client is expected to request frames until a request returns less frames than requested (which indicates the end of the stack). Returning monotonically increasing `totalFrames` values for subsequent requests can be used to enforce paging in the client.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, stackFrames, totalFrames=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param array stackFrames: The frames of the stackframe. If the array has length zero, there are no stackframes available.
+ :param array stackFrames: The frames of the stack frame. If the array has length zero, there are no stack frames available.
This means that there is no location information available.
- :param integer totalFrames: The total number of frames available in the stack. If omitted or if totalFrames is larger than the available frames, a client is expected to request frames until a request returns less frames than requested (which indicates the end of the stack). Returning monotonically increasing totalFrames values for subsequent requests can be used to enforce paging in the client.
+ :param integer totalFrames: The total number of frames available in the stack. If omitted or if `totalFrames` is larger than the available frames, a client is expected to request frames until a request returns less frames than requested (which indicates the end of the stack). Returning monotonically increasing `totalFrames` values for subsequent requests can be used to enforce paging in the client.
"""
self.stackFrames = stackFrames
if update_ids_from_dap and self.stackFrames:
@@ -18444,17 +16424,18 @@ def __init__(self, stackFrames, totalFrames=None, update_ids_from_dap=False, **k
self.totalFrames = totalFrames
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
stackFrames = self.stackFrames
if stackFrames and hasattr(stackFrames[0], "to_dict"):
stackFrames = [x.to_dict() for x in stackFrames]
totalFrames = self.totalFrames
dct = {
- 'stackFrames': [StackFrame.update_dict_ids_to_dap(o) for o in stackFrames] if (update_ids_to_dap and stackFrames) else stackFrames,
+ "stackFrames": [StackFrame.update_dict_ids_to_dap(o) for o in stackFrames]
+ if (update_ids_to_dap and stackFrames)
+ else stackFrames,
}
if totalFrames is not None:
- dct['totalFrames'] = totalFrames
+ dct["totalFrames"] = totalFrames
dct.update(self.kwargs)
return dct
@@ -18470,19 +16451,17 @@ class ScopesResponseBody(BaseSchema):
__props__ = {
"scopes": {
"type": "array",
- "items": {
- "$ref": "#/definitions/Scope"
- },
- "description": "The scopes of the stackframe. If the array has length zero, there are no scopes available."
+ "items": {"$ref": "#/definitions/Scope"},
+ "description": "The scopes of the stack frame. If the array has length zero, there are no scopes available.",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, scopes, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param array scopes: The scopes of the stackframe. If the array has length zero, there are no scopes available.
+ :param array scopes: The scopes of the stack frame. If the array has length zero, there are no scopes available.
"""
self.scopes = scopes
if update_ids_from_dap and self.scopes:
@@ -18490,13 +16469,12 @@ def __init__(self, scopes, update_ids_from_dap=False, **kwargs): # noqa (update
Scope.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
scopes = self.scopes
if scopes and hasattr(scopes[0], "to_dict"):
scopes = [x.to_dict() for x in scopes]
dct = {
- 'scopes': [Scope.update_dict_ids_to_dap(o) for o in scopes] if (update_ids_to_dap and scopes) else scopes,
+ "scopes": [Scope.update_dict_ids_to_dap(o) for o in scopes] if (update_ids_to_dap and scopes) else scopes,
}
dct.update(self.kwargs)
return dct
@@ -18513,15 +16491,13 @@ class VariablesResponseBody(BaseSchema):
__props__ = {
"variables": {
"type": "array",
- "items": {
- "$ref": "#/definitions/Variable"
- },
- "description": "All (or a range) of variables for the given variable reference."
+ "items": {"$ref": "#/definitions/Variable"},
+ "description": "All (or a range) of variables for the given variable reference.",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, variables, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -18533,13 +16509,12 @@ def __init__(self, variables, update_ids_from_dap=False, **kwargs): # noqa (upd
Variable.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
variables = self.variables
if variables and hasattr(variables[0], "to_dict"):
variables = [x.to_dict() for x in variables]
dct = {
- 'variables': [Variable.update_dict_ids_to_dap(o) for o in variables] if (update_ids_to_dap and variables) else variables,
+ "variables": [Variable.update_dict_ids_to_dap(o) for o in variables] if (update_ids_to_dap and variables) else variables,
}
dct.update(self.kwargs)
return dct
@@ -18554,58 +16529,68 @@ class SetVariableResponseBody(BaseSchema):
"""
__props__ = {
- "value": {
- "type": "string",
- "description": "The new value of the variable."
- },
- "type": {
- "type": "string",
- "description": "The type of the new value. Typically shown in the UI when hovering over the value."
- },
+ "value": {"type": "string", "description": "The new value of the variable."},
+ "type": {"type": "string", "description": "The type of the new value. Typically shown in the UI when hovering over the value."},
"variablesReference": {
"type": "integer",
- "description": "If variablesReference is > 0, the new value is structured and its children can be retrieved by passing variablesReference to the VariablesRequest.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "If `variablesReference` is > 0, the new value is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.",
},
"namedVariables": {
"type": "integer",
- "description": "The number of named child variables.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "The number of named child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).",
},
"indexedVariables": {
"type": "integer",
- "description": "The number of indexed child variables.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
- }
+ "description": "The number of indexed child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).",
+ },
+ "memoryReference": {
+ "type": "string",
+ "description": "A memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is True.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
- def __init__(self, value, type=None, variablesReference=None, namedVariables=None, indexedVariables=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ def __init__(
+ self,
+ value,
+ type=None,
+ variablesReference=None,
+ namedVariables=None,
+ indexedVariables=None,
+ memoryReference=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
"""
:param string value: The new value of the variable.
:param string type: The type of the new value. Typically shown in the UI when hovering over the value.
- :param integer variablesReference: If variablesReference is > 0, the new value is structured and its children can be retrieved by passing variablesReference to the VariablesRequest.
- The value should be less than or equal to 2147483647 (2^31-1).
+ :param integer variablesReference: If `variablesReference` is > 0, the new value is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.
:param integer namedVariables: The number of named child variables.
- The client can use this optional information to present the variables in a paged UI and fetch them in chunks.
+ The client can use this information to present the variables in a paged UI and fetch them in chunks.
The value should be less than or equal to 2147483647 (2^31-1).
:param integer indexedVariables: The number of indexed child variables.
- The client can use this optional information to present the variables in a paged UI and fetch them in chunks.
+ The client can use this information to present the variables in a paged UI and fetch them in chunks.
The value should be less than or equal to 2147483647 (2^31-1).
+ :param string memoryReference: A memory reference to a location appropriate for this result.
+ For pointer type eval results, this is generally a reference to the memory address contained in the pointer.
+ This attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is true.
"""
self.value = value
self.type = type
self.variablesReference = variablesReference
self.namedVariables = namedVariables
self.indexedVariables = indexedVariables
+ self.memoryReference = memoryReference
if update_ids_from_dap:
self.variablesReference = self._translate_id_from_dap(self.variablesReference)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'variablesReference' in dct:
- dct['variablesReference'] = cls._translate_id_from_dap(dct['variablesReference'])
+ if "variablesReference" in dct:
+ dct["variablesReference"] = cls._translate_id_from_dap(dct["variablesReference"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -18614,27 +16599,30 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
variablesReference = self.variablesReference
namedVariables = self.namedVariables
indexedVariables = self.indexedVariables
+ memoryReference = self.memoryReference
if update_ids_to_dap:
if variablesReference is not None:
variablesReference = self._translate_id_to_dap(variablesReference)
dct = {
- 'value': value,
+ "value": value,
}
if type is not None:
- dct['type'] = type
+ dct["type"] = type
if variablesReference is not None:
- dct['variablesReference'] = variablesReference
+ dct["variablesReference"] = variablesReference
if namedVariables is not None:
- dct['namedVariables'] = namedVariables
+ dct["namedVariables"] = namedVariables
if indexedVariables is not None:
- dct['indexedVariables'] = indexedVariables
+ dct["indexedVariables"] = indexedVariables
+ if memoryReference is not None:
+ dct["memoryReference"] = memoryReference
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'variablesReference' in dct:
- dct['variablesReference'] = cls._translate_id_to_dap(dct['variablesReference'])
+ if "variablesReference" in dct:
+ dct["variablesReference"] = cls._translate_id_to_dap(dct["variablesReference"])
return dct
@@ -18647,37 +16635,30 @@ class SourceResponseBody(BaseSchema):
"""
__props__ = {
- "content": {
- "type": "string",
- "description": "Content of the source reference."
- },
- "mimeType": {
- "type": "string",
- "description": "Optional content type (mime type) of the source."
- }
+ "content": {"type": "string", "description": "Content of the source reference."},
+ "mimeType": {"type": "string", "description": "Content type (MIME type) of the source."},
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, content, mimeType=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param string content: Content of the source reference.
- :param string mimeType: Optional content type (mime type) of the source.
+ :param string mimeType: Content type (MIME type) of the source.
"""
self.content = content
self.mimeType = mimeType
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
content = self.content
mimeType = self.mimeType
dct = {
- 'content': content,
+ "content": content,
}
if mimeType is not None:
- dct['mimeType'] = mimeType
+ dct["mimeType"] = mimeType
dct.update(self.kwargs)
return dct
@@ -18690,18 +16671,10 @@ class ThreadsResponseBody(BaseSchema):
Note: automatically generated code. Do not edit manually.
"""
- __props__ = {
- "threads": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/Thread"
- },
- "description": "All threads."
- }
- }
+ __props__ = {"threads": {"type": "array", "items": {"$ref": "#/definitions/Thread"}, "description": "All threads."}}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, threads, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -18713,13 +16686,12 @@ def __init__(self, threads, update_ids_from_dap=False, **kwargs): # noqa (updat
Thread.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
threads = self.threads
if threads and hasattr(threads[0], "to_dict"):
threads = [x.to_dict() for x in threads]
dct = {
- 'threads': [Thread.update_dict_ids_to_dap(o) for o in threads] if (update_ids_to_dap and threads) else threads,
+ "threads": [Thread.update_dict_ids_to_dap(o) for o in threads] if (update_ids_to_dap and threads) else threads,
}
dct.update(self.kwargs)
return dct
@@ -18734,21 +16706,12 @@ class ModulesResponseBody(BaseSchema):
"""
__props__ = {
- "modules": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/Module"
- },
- "description": "All modules or range of modules."
- },
- "totalModules": {
- "type": "integer",
- "description": "The total number of modules available."
- }
+ "modules": {"type": "array", "items": {"$ref": "#/definitions/Module"}, "description": "All modules or range of modules."},
+ "totalModules": {"type": "integer", "description": "The total number of modules available."},
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, modules, totalModules=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -18762,17 +16725,16 @@ def __init__(self, modules, totalModules=None, update_ids_from_dap=False, **kwar
self.totalModules = totalModules
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
modules = self.modules
if modules and hasattr(modules[0], "to_dict"):
modules = [x.to_dict() for x in modules]
totalModules = self.totalModules
dct = {
- 'modules': [Module.update_dict_ids_to_dap(o) for o in modules] if (update_ids_to_dap and modules) else modules,
+ "modules": [Module.update_dict_ids_to_dap(o) for o in modules] if (update_ids_to_dap and modules) else modules,
}
if totalModules is not None:
- dct['totalModules'] = totalModules
+ dct["totalModules"] = totalModules
dct.update(self.kwargs)
return dct
@@ -18785,18 +16747,10 @@ class LoadedSourcesResponseBody(BaseSchema):
Note: automatically generated code. Do not edit manually.
"""
- __props__ = {
- "sources": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/Source"
- },
- "description": "Set of loaded sources."
- }
- }
+ __props__ = {"sources": {"type": "array", "items": {"$ref": "#/definitions/Source"}, "description": "Set of loaded sources."}}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, sources, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -18808,13 +16762,12 @@ def __init__(self, sources, update_ids_from_dap=False, **kwargs): # noqa (updat
Source.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
sources = self.sources
if sources and hasattr(sources[0], "to_dict"):
sources = [x.to_dict() for x in sources]
dct = {
- 'sources': [Source.update_dict_ids_to_dap(o) for o in sources] if (update_ids_to_dap and sources) else sources,
+ "sources": [Source.update_dict_ids_to_dap(o) for o in sources] if (update_ids_to_dap and sources) else sources,
}
dct.update(self.kwargs)
return dct
@@ -18829,56 +16782,63 @@ class EvaluateResponseBody(BaseSchema):
"""
__props__ = {
- "result": {
- "type": "string",
- "description": "The result of the evaluate request."
- },
+ "result": {"type": "string", "description": "The result of the evaluate request."},
"type": {
"type": "string",
- "description": "The optional type of the evaluate result.\nThis attribute should only be returned by a debug adapter if the client has passed the value true for the 'supportsVariableType' capability of the 'initialize' request."
+ "description": "The type of the evaluate result.\nThis attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is True.",
},
"presentationHint": {
- "description": "Properties of a evaluate result that can be used to determine how to render the result in the UI.",
- "type": "VariablePresentationHint"
+ "description": "Properties of an evaluate result that can be used to determine how to render the result in the UI.",
+ "type": "VariablePresentationHint",
},
"variablesReference": {
"type": "integer",
- "description": "If variablesReference is > 0, the evaluate result is structured and its children can be retrieved by passing variablesReference to the VariablesRequest.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "If `variablesReference` is > 0, the evaluate result is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.",
},
"namedVariables": {
"type": "integer",
- "description": "The number of named child variables.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "The number of named child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).",
},
"indexedVariables": {
"type": "integer",
- "description": "The number of indexed child variables.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "The number of indexed child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).",
},
"memoryReference": {
"type": "string",
- "description": "Optional memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute should be returned by a debug adapter if the client has passed the value true for the 'supportsMemoryReferences' capability of the 'initialize' request."
- }
+ "description": "A memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is True.",
+ },
}
- __refs__ = set(['presentationHint'])
-
- __slots__ = list(__props__.keys()) + ['kwargs']
-
- def __init__(self, result, variablesReference, type=None, presentationHint=None, namedVariables=None, indexedVariables=None, memoryReference=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ __refs__ = set(["presentationHint"])
+
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(
+ self,
+ result,
+ variablesReference,
+ type=None,
+ presentationHint=None,
+ namedVariables=None,
+ indexedVariables=None,
+ memoryReference=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
"""
:param string result: The result of the evaluate request.
- :param integer variablesReference: If variablesReference is > 0, the evaluate result is structured and its children can be retrieved by passing variablesReference to the VariablesRequest.
- The value should be less than or equal to 2147483647 (2^31-1).
- :param string type: The optional type of the evaluate result.
- This attribute should only be returned by a debug adapter if the client has passed the value true for the 'supportsVariableType' capability of the 'initialize' request.
- :param VariablePresentationHint presentationHint: Properties of a evaluate result that can be used to determine how to render the result in the UI.
+ :param integer variablesReference: If `variablesReference` is > 0, the evaluate result is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.
+ :param string type: The type of the evaluate result.
+ This attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is true.
+ :param VariablePresentationHint presentationHint: Properties of an evaluate result that can be used to determine how to render the result in the UI.
:param integer namedVariables: The number of named child variables.
- The client can use this optional information to present the variables in a paged UI and fetch them in chunks.
+ The client can use this information to present the variables in a paged UI and fetch them in chunks.
The value should be less than or equal to 2147483647 (2^31-1).
:param integer indexedVariables: The number of indexed child variables.
- The client can use this optional information to present the variables in a paged UI and fetch them in chunks.
+ The client can use this information to present the variables in a paged UI and fetch them in chunks.
The value should be less than or equal to 2147483647 (2^31-1).
- :param string memoryReference: Optional memory reference to a location appropriate for this result.
+ :param string memoryReference: A memory reference to a location appropriate for this result.
For pointer type eval results, this is generally a reference to the memory address contained in the pointer.
- This attribute should be returned by a debug adapter if the client has passed the value true for the 'supportsMemoryReferences' capability of the 'initialize' request.
+ This attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is true.
"""
self.result = result
self.variablesReference = variablesReference
@@ -18886,19 +16846,22 @@ def __init__(self, result, variablesReference, type=None, presentationHint=None,
if presentationHint is None:
self.presentationHint = VariablePresentationHint()
else:
- self.presentationHint = VariablePresentationHint(update_ids_from_dap=update_ids_from_dap, **presentationHint) if presentationHint.__class__ != VariablePresentationHint else presentationHint
+ self.presentationHint = (
+ VariablePresentationHint(update_ids_from_dap=update_ids_from_dap, **presentationHint)
+ if presentationHint.__class__ != VariablePresentationHint
+ else presentationHint
+ )
self.namedVariables = namedVariables
self.indexedVariables = indexedVariables
self.memoryReference = memoryReference
if update_ids_from_dap:
self.variablesReference = self._translate_id_from_dap(self.variablesReference)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'variablesReference' in dct:
- dct['variablesReference'] = cls._translate_id_from_dap(dct['variablesReference'])
+ if "variablesReference" in dct:
+ dct["variablesReference"] = cls._translate_id_from_dap(dct["variablesReference"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -18913,26 +16876,26 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
if variablesReference is not None:
variablesReference = self._translate_id_to_dap(variablesReference)
dct = {
- 'result': result,
- 'variablesReference': variablesReference,
+ "result": result,
+ "variablesReference": variablesReference,
}
if type is not None:
- dct['type'] = type
+ dct["type"] = type
if presentationHint is not None:
- dct['presentationHint'] = presentationHint.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["presentationHint"] = presentationHint.to_dict(update_ids_to_dap=update_ids_to_dap)
if namedVariables is not None:
- dct['namedVariables'] = namedVariables
+ dct["namedVariables"] = namedVariables
if indexedVariables is not None:
- dct['indexedVariables'] = indexedVariables
+ dct["indexedVariables"] = indexedVariables
if memoryReference is not None:
- dct['memoryReference'] = memoryReference
+ dct["memoryReference"] = memoryReference
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'variablesReference' in dct:
- dct['variablesReference'] = cls._translate_id_to_dap(dct['variablesReference'])
+ if "variablesReference" in dct:
+ dct["variablesReference"] = cls._translate_id_to_dap(dct["variablesReference"])
return dct
@@ -18945,68 +16908,86 @@ class SetExpressionResponseBody(BaseSchema):
"""
__props__ = {
- "value": {
- "type": "string",
- "description": "The new value of the expression."
- },
+ "value": {"type": "string", "description": "The new value of the expression."},
"type": {
"type": "string",
- "description": "The optional type of the value.\nThis attribute should only be returned by a debug adapter if the client has passed the value true for the 'supportsVariableType' capability of the 'initialize' request."
+ "description": "The type of the value.\nThis attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is True.",
},
"presentationHint": {
"description": "Properties of a value that can be used to determine how to render the result in the UI.",
- "type": "VariablePresentationHint"
+ "type": "VariablePresentationHint",
},
"variablesReference": {
"type": "integer",
- "description": "If variablesReference is > 0, the value is structured and its children can be retrieved by passing variablesReference to the VariablesRequest.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "If `variablesReference` is > 0, the evaluate result is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.",
},
"namedVariables": {
"type": "integer",
- "description": "The number of named child variables.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
+ "description": "The number of named child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).",
},
"indexedVariables": {
"type": "integer",
- "description": "The number of indexed child variables.\nThe client can use this optional information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)."
- }
+ "description": "The number of indexed child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).",
+ },
+ "memoryReference": {
+ "type": "string",
+ "description": "A memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is True.",
+ },
}
- __refs__ = set(['presentationHint'])
-
- __slots__ = list(__props__.keys()) + ['kwargs']
-
- def __init__(self, value, type=None, presentationHint=None, variablesReference=None, namedVariables=None, indexedVariables=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
+ __refs__ = set(["presentationHint"])
+
+ __slots__ = list(__props__.keys()) + ["kwargs"]
+
+ def __init__(
+ self,
+ value,
+ type=None,
+ presentationHint=None,
+ variablesReference=None,
+ namedVariables=None,
+ indexedVariables=None,
+ memoryReference=None,
+ update_ids_from_dap=False,
+ **kwargs,
+ ): # noqa (update_ids_from_dap may be unused)
"""
:param string value: The new value of the expression.
- :param string type: The optional type of the value.
- This attribute should only be returned by a debug adapter if the client has passed the value true for the 'supportsVariableType' capability of the 'initialize' request.
+ :param string type: The type of the value.
+ This attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is true.
:param VariablePresentationHint presentationHint: Properties of a value that can be used to determine how to render the result in the UI.
- :param integer variablesReference: If variablesReference is > 0, the value is structured and its children can be retrieved by passing variablesReference to the VariablesRequest.
- The value should be less than or equal to 2147483647 (2^31-1).
+ :param integer variablesReference: If `variablesReference` is > 0, the evaluate result is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.
:param integer namedVariables: The number of named child variables.
- The client can use this optional information to present the variables in a paged UI and fetch them in chunks.
+ The client can use this information to present the variables in a paged UI and fetch them in chunks.
The value should be less than or equal to 2147483647 (2^31-1).
:param integer indexedVariables: The number of indexed child variables.
- The client can use this optional information to present the variables in a paged UI and fetch them in chunks.
+ The client can use this information to present the variables in a paged UI and fetch them in chunks.
The value should be less than or equal to 2147483647 (2^31-1).
+ :param string memoryReference: A memory reference to a location appropriate for this result.
+ For pointer type eval results, this is generally a reference to the memory address contained in the pointer.
+ This attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is true.
"""
self.value = value
self.type = type
if presentationHint is None:
self.presentationHint = VariablePresentationHint()
else:
- self.presentationHint = VariablePresentationHint(update_ids_from_dap=update_ids_from_dap, **presentationHint) if presentationHint.__class__ != VariablePresentationHint else presentationHint
+ self.presentationHint = (
+ VariablePresentationHint(update_ids_from_dap=update_ids_from_dap, **presentationHint)
+ if presentationHint.__class__ != VariablePresentationHint
+ else presentationHint
+ )
self.variablesReference = variablesReference
self.namedVariables = namedVariables
self.indexedVariables = indexedVariables
+ self.memoryReference = memoryReference
if update_ids_from_dap:
self.variablesReference = self._translate_id_from_dap(self.variablesReference)
self.kwargs = kwargs
-
-
+
@classmethod
def update_dict_ids_from_dap(cls, dct):
- if 'variablesReference' in dct:
- dct['variablesReference'] = cls._translate_id_from_dap(dct['variablesReference'])
+ if "variablesReference" in dct:
+ dct["variablesReference"] = cls._translate_id_from_dap(dct["variablesReference"])
return dct
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
@@ -19016,29 +16997,32 @@ def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be un
variablesReference = self.variablesReference
namedVariables = self.namedVariables
indexedVariables = self.indexedVariables
+ memoryReference = self.memoryReference
if update_ids_to_dap:
if variablesReference is not None:
variablesReference = self._translate_id_to_dap(variablesReference)
dct = {
- 'value': value,
+ "value": value,
}
if type is not None:
- dct['type'] = type
+ dct["type"] = type
if presentationHint is not None:
- dct['presentationHint'] = presentationHint.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["presentationHint"] = presentationHint.to_dict(update_ids_to_dap=update_ids_to_dap)
if variablesReference is not None:
- dct['variablesReference'] = variablesReference
+ dct["variablesReference"] = variablesReference
if namedVariables is not None:
- dct['namedVariables'] = namedVariables
+ dct["namedVariables"] = namedVariables
if indexedVariables is not None:
- dct['indexedVariables'] = indexedVariables
+ dct["indexedVariables"] = indexedVariables
+ if memoryReference is not None:
+ dct["memoryReference"] = memoryReference
dct.update(self.kwargs)
- return dct
-
+ return dct
+
@classmethod
def update_dict_ids_to_dap(cls, dct):
- if 'variablesReference' in dct:
- dct['variablesReference'] = cls._translate_id_to_dap(dct['variablesReference'])
+ if "variablesReference" in dct:
+ dct["variablesReference"] = cls._translate_id_to_dap(dct["variablesReference"])
return dct
@@ -19053,19 +17037,17 @@ class StepInTargetsResponseBody(BaseSchema):
__props__ = {
"targets": {
"type": "array",
- "items": {
- "$ref": "#/definitions/StepInTarget"
- },
- "description": "The possible stepIn targets of the specified source location."
+ "items": {"$ref": "#/definitions/StepInTarget"},
+ "description": "The possible step-in targets of the specified source location.",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, targets, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param array targets: The possible stepIn targets of the specified source location.
+ :param array targets: The possible step-in targets of the specified source location.
"""
self.targets = targets
if update_ids_from_dap and self.targets:
@@ -19073,13 +17055,12 @@ def __init__(self, targets, update_ids_from_dap=False, **kwargs): # noqa (updat
StepInTarget.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
targets = self.targets
if targets and hasattr(targets[0], "to_dict"):
targets = [x.to_dict() for x in targets]
dct = {
- 'targets': [StepInTarget.update_dict_ids_to_dap(o) for o in targets] if (update_ids_to_dap and targets) else targets,
+ "targets": [StepInTarget.update_dict_ids_to_dap(o) for o in targets] if (update_ids_to_dap and targets) else targets,
}
dct.update(self.kwargs)
return dct
@@ -19096,15 +17077,13 @@ class GotoTargetsResponseBody(BaseSchema):
__props__ = {
"targets": {
"type": "array",
- "items": {
- "$ref": "#/definitions/GotoTarget"
- },
- "description": "The possible goto targets of the specified location."
+ "items": {"$ref": "#/definitions/GotoTarget"},
+ "description": "The possible goto targets of the specified location.",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, targets, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -19116,13 +17095,12 @@ def __init__(self, targets, update_ids_from_dap=False, **kwargs): # noqa (updat
GotoTarget.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
targets = self.targets
if targets and hasattr(targets[0], "to_dict"):
targets = [x.to_dict() for x in targets]
dct = {
- 'targets': [GotoTarget.update_dict_ids_to_dap(o) for o in targets] if (update_ids_to_dap and targets) else targets,
+ "targets": [GotoTarget.update_dict_ids_to_dap(o) for o in targets] if (update_ids_to_dap and targets) else targets,
}
dct.update(self.kwargs)
return dct
@@ -19137,17 +17115,11 @@ class CompletionsResponseBody(BaseSchema):
"""
__props__ = {
- "targets": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/CompletionItem"
- },
- "description": "The possible completions for ."
- }
+ "targets": {"type": "array", "items": {"$ref": "#/definitions/CompletionItem"}, "description": "The possible completions for ."}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, targets, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -19159,13 +17131,12 @@ def __init__(self, targets, update_ids_from_dap=False, **kwargs): # noqa (updat
CompletionItem.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
targets = self.targets
if targets and hasattr(targets[0], "to_dict"):
targets = [x.to_dict() for x in targets]
dct = {
- 'targets': [CompletionItem.update_dict_ids_to_dap(o) for o in targets] if (update_ids_to_dap and targets) else targets,
+ "targets": [CompletionItem.update_dict_ids_to_dap(o) for o in targets] if (update_ids_to_dap and targets) else targets,
}
dct.update(self.kwargs)
return dct
@@ -19180,32 +17151,20 @@ class ExceptionInfoResponseBody(BaseSchema):
"""
__props__ = {
- "exceptionId": {
- "type": "string",
- "description": "ID of the exception that was thrown."
- },
- "description": {
- "type": "string",
- "description": "Descriptive text for the exception provided by the debug adapter."
- },
- "breakMode": {
- "description": "Mode that caused the exception notification to be raised.",
- "type": "ExceptionBreakMode"
- },
- "details": {
- "description": "Detailed information about the exception.",
- "type": "ExceptionDetails"
- }
+ "exceptionId": {"type": "string", "description": "ID of the exception that was thrown."},
+ "description": {"type": "string", "description": "Descriptive text for the exception."},
+ "breakMode": {"description": "Mode that caused the exception notification to be raised.", "type": "ExceptionBreakMode"},
+ "details": {"description": "Detailed information about the exception.", "type": "ExceptionDetails"},
}
- __refs__ = set(['breakMode', 'details'])
+ __refs__ = set(["breakMode", "details"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, exceptionId, breakMode, description=None, details=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param string exceptionId: ID of the exception that was thrown.
:param ExceptionBreakMode breakMode: Mode that caused the exception notification to be raised.
- :param string description: Descriptive text for the exception provided by the debug adapter.
+ :param string description: Descriptive text for the exception.
:param ExceptionDetails details: Detailed information about the exception.
"""
self.exceptionId = exceptionId
@@ -19216,23 +17175,24 @@ def __init__(self, exceptionId, breakMode, description=None, details=None, updat
if details is None:
self.details = ExceptionDetails()
else:
- self.details = ExceptionDetails(update_ids_from_dap=update_ids_from_dap, **details) if details.__class__ != ExceptionDetails else details
+ self.details = (
+ ExceptionDetails(update_ids_from_dap=update_ids_from_dap, **details) if details.__class__ != ExceptionDetails else details
+ )
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
exceptionId = self.exceptionId
breakMode = self.breakMode
description = self.description
details = self.details
dct = {
- 'exceptionId': exceptionId,
- 'breakMode': breakMode,
+ "exceptionId": exceptionId,
+ "breakMode": breakMode,
}
if description is not None:
- dct['description'] = description
+ dct["description"] = description
if details is not None:
- dct['details'] = details.to_dict(update_ids_to_dap=update_ids_to_dap)
+ dct["details"] = details.to_dict(update_ids_to_dap=update_ids_to_dap)
dct.update(self.kwargs)
return dct
@@ -19248,46 +17208,45 @@ class ReadMemoryResponseBody(BaseSchema):
__props__ = {
"address": {
"type": "string",
- "description": "The address of the first byte of data returned.\nTreated as a hex value if prefixed with '0x', or as a decimal value otherwise."
+ "description": "The address of the first byte of data returned.\nTreated as a hex value if prefixed with `0x`, or as a decimal value otherwise.",
},
"unreadableBytes": {
"type": "integer",
- "description": "The number of unreadable bytes encountered after the last successfully read byte.\nThis can be used to determine the number of bytes that must be skipped before a subsequent 'readMemory' request will succeed."
+ "description": "The number of unreadable bytes encountered after the last successfully read byte.\nThis can be used to determine the number of bytes that should be skipped before a subsequent `readMemory` request succeeds.",
},
"data": {
"type": "string",
- "description": "The bytes read from memory, encoded using base64."
- }
+ "description": "The bytes read from memory, encoded using base64. If the decoded length of `data` is less than the requested `count` in the original `readMemory` request, and `unreadableBytes` is zero or omitted, then the client should assume it's reached the end of readable memory.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, address, unreadableBytes=None, data=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
:param string address: The address of the first byte of data returned.
- Treated as a hex value if prefixed with '0x', or as a decimal value otherwise.
+ Treated as a hex value if prefixed with `0x`, or as a decimal value otherwise.
:param integer unreadableBytes: The number of unreadable bytes encountered after the last successfully read byte.
- This can be used to determine the number of bytes that must be skipped before a subsequent 'readMemory' request will succeed.
- :param string data: The bytes read from memory, encoded using base64.
+ This can be used to determine the number of bytes that should be skipped before a subsequent `readMemory` request succeeds.
+ :param string data: The bytes read from memory, encoded using base64. If the decoded length of `data` is less than the requested `count` in the original `readMemory` request, and `unreadableBytes` is zero or omitted, then the client should assume it's reached the end of readable memory.
"""
self.address = address
self.unreadableBytes = unreadableBytes
self.data = data
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
address = self.address
unreadableBytes = self.unreadableBytes
data = self.data
dct = {
- 'address': address,
+ "address": address,
}
if unreadableBytes is not None:
- dct['unreadableBytes'] = unreadableBytes
+ dct["unreadableBytes"] = unreadableBytes
if data is not None:
- dct['data'] = data
+ dct["data"] = data
dct.update(self.kwargs)
return dct
@@ -19303,36 +17262,34 @@ class WriteMemoryResponseBody(BaseSchema):
__props__ = {
"offset": {
"type": "integer",
- "description": "Optional property that should be returned when 'allowPartial' is true to indicate the offset of the first byte of data successfully written. Can be negative."
+ "description": "Property that should be returned when `allowPartial` is True to indicate the offset of the first byte of data successfully written. Can be negative.",
},
"bytesWritten": {
"type": "integer",
- "description": "Optional property that should be returned when 'allowPartial' is true to indicate the number of bytes starting from address that were successfully written."
- }
+ "description": "Property that should be returned when `allowPartial` is True to indicate the number of bytes starting from address that were successfully written.",
+ },
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, offset=None, bytesWritten=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
- :param integer offset: Optional property that should be returned when 'allowPartial' is true to indicate the offset of the first byte of data successfully written. Can be negative.
- :param integer bytesWritten: Optional property that should be returned when 'allowPartial' is true to indicate the number of bytes starting from address that were successfully written.
+ :param integer offset: Property that should be returned when `allowPartial` is true to indicate the offset of the first byte of data successfully written. Can be negative.
+ :param integer bytesWritten: Property that should be returned when `allowPartial` is true to indicate the number of bytes starting from address that were successfully written.
"""
self.offset = offset
self.bytesWritten = bytesWritten
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
offset = self.offset
bytesWritten = self.bytesWritten
- dct = {
- }
+ dct = {}
if offset is not None:
- dct['offset'] = offset
+ dct["offset"] = offset
if bytesWritten is not None:
- dct['bytesWritten'] = bytesWritten
+ dct["bytesWritten"] = bytesWritten
dct.update(self.kwargs)
return dct
@@ -19348,15 +17305,13 @@ class DisassembleResponseBody(BaseSchema):
__props__ = {
"instructions": {
"type": "array",
- "items": {
- "$ref": "#/definitions/DisassembledInstruction"
- },
- "description": "The list of disassembled instructions."
+ "items": {"$ref": "#/definitions/DisassembledInstruction"},
+ "description": "The list of disassembled instructions.",
}
}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, instructions, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -19368,13 +17323,14 @@ def __init__(self, instructions, update_ids_from_dap=False, **kwargs): # noqa (
DisassembledInstruction.update_dict_ids_from_dap(o)
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
instructions = self.instructions
if instructions and hasattr(instructions[0], "to_dict"):
instructions = [x.to_dict() for x in instructions]
dct = {
- 'instructions': [DisassembledInstruction.update_dict_ids_to_dap(o) for o in instructions] if (update_ids_to_dap and instructions) else instructions,
+ "instructions": [DisassembledInstruction.update_dict_ids_to_dap(o) for o in instructions]
+ if (update_ids_to_dap and instructions)
+ else instructions,
}
dct.update(self.kwargs)
return dct
@@ -19391,19 +17347,15 @@ class MessageVariables(BaseSchema):
__props__ = {}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
- """
-
- """
-
- self.kwargs = kwargs
+ """ """
+ self.kwargs = kwargs
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
- dct = {
- }
+ dct = {}
dct.update(self.kwargs)
return dct
@@ -19417,26 +17369,17 @@ class PydevdSystemInfoResponseBody(BaseSchema):
"""
__props__ = {
- "python": {
- "description": "Information about the python version running in the current process.",
- "type": "PydevdPythonInfo"
- },
+ "python": {"description": "Information about the python version running in the current process.", "type": "PydevdPythonInfo"},
"platform": {
"description": "Information about the plarforn on which the current process is running.",
- "type": "PydevdPlatformInfo"
+ "type": "PydevdPlatformInfo",
},
- "process": {
- "description": "Information about the current process.",
- "type": "PydevdProcessInfo"
- },
- "pydevd": {
- "description": "Information about pydevd.",
- "type": "PydevdInfo"
- }
+ "process": {"description": "Information about the current process.", "type": "PydevdProcessInfo"},
+ "pydevd": {"description": "Information about pydevd.", "type": "PydevdInfo"},
}
- __refs__ = set(['python', 'platform', 'process', 'pydevd'])
+ __refs__ = set(["python", "platform", "process", "pydevd"])
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, python, platform, process, pydevd, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -19448,32 +17391,39 @@ def __init__(self, python, platform, process, pydevd, update_ids_from_dap=False,
if python is None:
self.python = PydevdPythonInfo()
else:
- self.python = PydevdPythonInfo(update_ids_from_dap=update_ids_from_dap, **python) if python.__class__ != PydevdPythonInfo else python
+ self.python = (
+ PydevdPythonInfo(update_ids_from_dap=update_ids_from_dap, **python) if python.__class__ != PydevdPythonInfo else python
+ )
if platform is None:
self.platform = PydevdPlatformInfo()
else:
- self.platform = PydevdPlatformInfo(update_ids_from_dap=update_ids_from_dap, **platform) if platform.__class__ != PydevdPlatformInfo else platform
+ self.platform = (
+ PydevdPlatformInfo(update_ids_from_dap=update_ids_from_dap, **platform)
+ if platform.__class__ != PydevdPlatformInfo
+ else platform
+ )
if process is None:
self.process = PydevdProcessInfo()
else:
- self.process = PydevdProcessInfo(update_ids_from_dap=update_ids_from_dap, **process) if process.__class__ != PydevdProcessInfo else process
+ self.process = (
+ PydevdProcessInfo(update_ids_from_dap=update_ids_from_dap, **process) if process.__class__ != PydevdProcessInfo else process
+ )
if pydevd is None:
self.pydevd = PydevdInfo()
else:
- self.pydevd = PydevdInfo(update_ids_from_dap=update_ids_from_dap, **pydevd) if pydevd.__class__ != PydevdInfo else pydevd
+ self.pydevd = PydevdInfo(update_ids_from_dap=update_ids_from_dap, **pydevd) if pydevd.__class__ != PydevdInfo else pydevd
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
python = self.python
platform = self.platform
process = self.process
pydevd = self.pydevd
dct = {
- 'python': python.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'platform': platform.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'process': process.to_dict(update_ids_to_dap=update_ids_to_dap),
- 'pydevd': pydevd.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "python": python.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "platform": platform.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "process": process.to_dict(update_ids_to_dap=update_ids_to_dap),
+ "pydevd": pydevd.to_dict(update_ids_to_dap=update_ids_to_dap),
}
dct.update(self.kwargs)
return dct
@@ -19487,15 +17437,10 @@ class PydevdAuthorizeResponseBody(BaseSchema):
Note: automatically generated code. Do not edit manually.
"""
- __props__ = {
- "clientAccessToken": {
- "type": "string",
- "description": "The access token to access the client (i.e.: usually the IDE)."
- }
- }
+ __props__ = {"clientAccessToken": {"type": "string", "description": "The access token to access the client (i.e.: usually the IDE)."}}
__refs__ = set()
- __slots__ = list(__props__.keys()) + ['kwargs']
+ __slots__ = list(__props__.keys()) + ["kwargs"]
def __init__(self, clientAccessToken, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused)
"""
@@ -19504,11 +17449,10 @@ def __init__(self, clientAccessToken, update_ids_from_dap=False, **kwargs): # n
self.clientAccessToken = clientAccessToken
self.kwargs = kwargs
-
def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)
clientAccessToken = self.clientAccessToken
dct = {
- 'clientAccessToken': clientAccessToken,
+ "clientAccessToken": clientAccessToken,
}
dct.update(self.kwargs)
return dct
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py
index 28b729266..b3dda5ad8 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py
@@ -3,12 +3,12 @@
from _pydevd_bundle.pydevd_constants import ForkSafeLock
_pid = os.getpid()
-_pid_msg = '%s: ' % (_pid,)
+_pid_msg = "%s: " % (_pid,)
_debug_lock = ForkSafeLock()
DEBUG = False
-DEBUG_FILE = os.path.join(os.path.dirname(__file__), '__debug_output__.txt')
+DEBUG_FILE = os.path.join(os.path.dirname(__file__), "__debug_output__.txt")
def debug(msg):
@@ -16,15 +16,15 @@ def debug(msg):
with _debug_lock:
_pid_prefix = _pid_msg
if isinstance(msg, bytes):
- _pid_prefix = _pid_prefix.encode('utf-8')
+ _pid_prefix = _pid_prefix.encode("utf-8")
- if not msg.endswith(b'\r') and not msg.endswith(b'\n'):
- msg += b'\n'
- mode = 'a+b'
+ if not msg.endswith(b"\r") and not msg.endswith(b"\n"):
+ msg += b"\n"
+ mode = "a+b"
else:
- if not msg.endswith('\r') and not msg.endswith('\n'):
- msg += '\n'
- mode = 'a+'
+ if not msg.endswith("\r") and not msg.endswith("\n"):
+ msg += "\n"
+ mode = "a+"
with open(DEBUG_FILE, mode) as stream:
stream.write(_pid_prefix)
stream.write(msg)
@@ -36,11 +36,10 @@ def debug_exception(msg=None):
debug(msg)
with _debug_lock:
-
- with open(DEBUG_FILE, 'a+') as stream:
+ with open(DEBUG_FILE, "a+") as stream:
_pid_prefix = _pid_msg
if isinstance(msg, bytes):
- _pid_prefix = _pid_prefix.encode('utf-8')
+ _pid_prefix = _pid_prefix.encode("utf-8")
stream.write(_pid_prefix)
traceback.print_exc(file=stream)
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py
index e6ba30023..760036e0b 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py
@@ -76,8 +76,7 @@
import __future__
-_features = [getattr(__future__, fname)
- for fname in __future__.all_feature_names]
+_features = [getattr(__future__, fname) for fname in __future__.all_feature_names]
__all__ = ["compile_command", "Compile", "CommandCompiler"]
@@ -88,7 +87,7 @@ def _maybe_compile(compiler, source, filename, symbol):
# Check for source consisting of only blank lines and comments
for line in source.split("\n"):
line = line.strip()
- if line and line[0] != '#':
+ if line and line[0] != "#":
break # Leave it alone
else:
if symbol != "eval":
@@ -157,6 +156,7 @@ def __init__(self):
try:
from ast import PyCF_ALLOW_TOP_LEVEL_AWAIT
+
self.flags |= PyCF_ALLOW_TOP_LEVEL_AWAIT
except:
pass
@@ -176,7 +176,9 @@ class CommandCompiler:
the instance 'remembers' and compiles all subsequent program texts
with the statement in force."""
- def __init__(self,):
+ def __init__(
+ self,
+ ):
self.compiler = Compile()
def __call__(self, source, filename="", symbol="single"):
@@ -200,6 +202,7 @@ def __call__(self, source, filename="", symbol="single"):
"""
return _maybe_compile(self.compiler, source, filename, symbol)
+
# END --------------------------- from codeop import CommandCompiler, compile_command
# END --------------------------- from codeop import CommandCompiler, compile_command
# END --------------------------- from codeop import CommandCompiler, compile_command
@@ -207,14 +210,12 @@ def __call__(self, source, filename="", symbol="single"):
# END --------------------------- from codeop import CommandCompiler, compile_command
-__all__ = ["InteractiveInterpreter", "InteractiveConsole", "interact",
- "compile_command"]
+__all__ = ["InteractiveInterpreter", "InteractiveConsole", "interact", "compile_command"]
from _pydev_bundle._pydev_saved_modules import threading
class _EvalAwaitInNewEventLoop(threading.Thread):
-
def __init__(self, compiled, updated_globals, updated_locals):
threading.Thread.__init__(self)
self.daemon = True
@@ -232,6 +233,7 @@ async def _async_func(self):
def run(self):
try:
import asyncio
+
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
self.evaluated_value = asyncio.run(self._async_func())
@@ -315,7 +317,7 @@ def runcode(self, code):
"""
try:
is_async = False
- if hasattr(inspect, 'CO_COROUTINE'):
+ if hasattr(inspect, "CO_COROUTINE"):
is_async = inspect.CO_COROUTINE & code.co_flags == inspect.CO_COROUTINE
if is_async:
@@ -362,7 +364,7 @@ def showsyntaxerror(self, filename=None):
sys.last_value = value
if sys.excepthook is sys.__excepthook__:
lines = traceback.format_exception_only(type, value)
- self.write(''.join(lines))
+ self.write("".join(lines))
else:
# If someone has set sys.excepthook, we let that take precedence
# over self.write
@@ -381,7 +383,7 @@ def showtraceback(self):
try:
lines = traceback.format_exception(ei[0], ei[1], last_tb.tb_next)
if sys.excepthook is sys.__excepthook__:
- self.write(''.join(lines))
+ self.write("".join(lines))
else:
# If someone has set sys.excepthook, we let that take precedence
# over self.write
@@ -451,9 +453,7 @@ def interact(self, banner=None, exitmsg=None):
sys.ps2 = "... "
cprt = 'Type "help", "copyright", "credits" or "license" for more information.'
if banner is None:
- self.write("Python %s on %s\n%s\n(%s)\n" %
- (sys.version, sys.platform, cprt,
- self.__class__.__name__))
+ self.write("Python %s on %s\n%s\n(%s)\n" % (sys.version, sys.platform, cprt, self.__class__.__name__))
elif banner:
self.write("%s\n" % str(banner))
more = 0
@@ -475,9 +475,9 @@ def interact(self, banner=None, exitmsg=None):
self.resetbuffer()
more = 0
if exitmsg is None:
- self.write('now exiting %s...\n' % self.__class__.__name__)
- elif exitmsg != '':
- self.write('%s\n' % exitmsg)
+ self.write("now exiting %s...\n" % self.__class__.__name__)
+ elif exitmsg != "":
+ self.write("%s\n" % exitmsg)
def push(self, line):
"""Push a line to the interpreter.
@@ -544,11 +544,10 @@ def interact(banner=None, readfunc=None, local=None, exitmsg=None):
import argparse
parser = argparse.ArgumentParser()
- parser.add_argument('-q', action='store_true',
- help="don't print version and copyright messages")
+ parser.add_argument("-q", action="store_true", help="don't print version and copyright messages")
args = parser.parse_args()
if args.q or sys.flags.quiet:
- banner = ''
+ banner = ""
else:
banner = None
interact(banner)
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py
index ac866735b..8bfb1e4c0 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py
@@ -1,19 +1,41 @@
# Defines which version of the PyDBAdditionalThreadInfo we'll use.
-from _pydevd_bundle.pydevd_constants import ENV_FALSE_LOWER_VALUES, USE_CYTHON_FLAG, \
- ENV_TRUE_LOWER_VALUES
+from _pydevd_bundle.pydevd_constants import ENV_FALSE_LOWER_VALUES, USE_CYTHON_FLAG, ENV_TRUE_LOWER_VALUES
if USE_CYTHON_FLAG in ENV_TRUE_LOWER_VALUES:
# We must import the cython version if forcing cython
- from _pydevd_bundle.pydevd_cython_wrapper import PyDBAdditionalThreadInfo, set_additional_thread_info, _set_additional_thread_info_lock # @UnusedImport
+ from _pydevd_bundle.pydevd_cython_wrapper import (
+ PyDBAdditionalThreadInfo,
+ set_additional_thread_info,
+ _set_additional_thread_info_lock, # @UnusedImport
+ any_thread_stepping,
+ remove_additional_info,
+ ) # @UnusedImport
elif USE_CYTHON_FLAG in ENV_FALSE_LOWER_VALUES:
# Use the regular version if not forcing cython
- from _pydevd_bundle.pydevd_additional_thread_info_regular import PyDBAdditionalThreadInfo, set_additional_thread_info, _set_additional_thread_info_lock # @UnusedImport @Reimport
+ from _pydevd_bundle.pydevd_additional_thread_info_regular import (
+ PyDBAdditionalThreadInfo,
+ set_additional_thread_info,
+ _set_additional_thread_info_lock, # @UnusedImport @Reimport
+ any_thread_stepping,
+ remove_additional_info,
+ ) # @UnusedImport @Reimport
else:
# Regular: use fallback if not found (message is already given elsewhere).
try:
- from _pydevd_bundle.pydevd_cython_wrapper import PyDBAdditionalThreadInfo, set_additional_thread_info, _set_additional_thread_info_lock
+ from _pydevd_bundle.pydevd_cython_wrapper import (
+ PyDBAdditionalThreadInfo,
+ set_additional_thread_info,
+ _set_additional_thread_info_lock,
+ any_thread_stepping,
+ remove_additional_info,
+ )
except ImportError:
- from _pydevd_bundle.pydevd_additional_thread_info_regular import PyDBAdditionalThreadInfo, set_additional_thread_info, _set_additional_thread_info_lock # @UnusedImport
-
+ from _pydevd_bundle.pydevd_additional_thread_info_regular import (
+ PyDBAdditionalThreadInfo,
+ set_additional_thread_info,
+ _set_additional_thread_info_lock, # @UnusedImport
+ any_thread_stepping,
+ remove_additional_info,
+ ) # @UnusedImport
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py
index 2ed13138f..0d437ec4e 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py
@@ -1,62 +1,70 @@
-from _pydevd_bundle.pydevd_constants import (STATE_RUN, PYTHON_SUSPEND, SUPPORT_GEVENT, ForkSafeLock,
- _current_frames)
+from _pydevd_bundle.pydevd_constants import (
+ STATE_RUN,
+ PYTHON_SUSPEND,
+ SUPPORT_GEVENT,
+ ForkSafeLock,
+ _current_frames,
+ STATE_SUSPEND,
+ get_global_debugger,
+ get_thread_id,
+)
from _pydev_bundle import pydev_log
-# IFDEF CYTHON
-# pydev_log.debug("Using Cython speedups")
-# ELSE
-from _pydevd_bundle.pydevd_frame import PyDBFrame
-# ENDIF
+from _pydev_bundle._pydev_saved_modules import threading
+import weakref
version = 11
-#=======================================================================================================================
+# =======================================================================================================================
# PyDBAdditionalThreadInfo
-#=======================================================================================================================
+# =======================================================================================================================
+# fmt: off
# IFDEF CYTHON
# cdef class PyDBAdditionalThreadInfo:
# ELSE
class PyDBAdditionalThreadInfo(object):
# ENDIF
+# fmt: on
# Note: the params in cython are declared in pydevd_cython.pxd.
+ # fmt: off
# IFDEF CYTHON
# ELSE
__slots__ = [
- 'pydev_state',
- 'pydev_step_stop',
- 'pydev_original_step_cmd',
- 'pydev_step_cmd',
- 'pydev_notify_kill',
- 'pydev_django_resolve_frame',
- 'pydev_call_from_jinja2',
- 'pydev_call_inside_jinja2',
- 'is_tracing',
- 'conditional_breakpoint_exception',
- 'pydev_message',
- 'suspend_type',
- 'pydev_next_line',
- 'pydev_func_name',
- 'suspended_at_unhandled',
- 'trace_suspend_type',
- 'top_level_thread_tracer_no_back_frames',
- 'top_level_thread_tracer_unhandled',
- 'thread_tracer',
- 'step_in_initial_location',
-
+ "pydev_state",
+ "pydev_step_stop",
+ "pydev_original_step_cmd",
+ "pydev_step_cmd",
+ "pydev_notify_kill",
+ "pydev_django_resolve_frame",
+ "pydev_call_from_jinja2",
+ "pydev_call_inside_jinja2",
+ "is_tracing",
+ "conditional_breakpoint_exception",
+ "pydev_message",
+ "suspend_type",
+ "pydev_next_line",
+ "pydev_func_name",
+ "suspended_at_unhandled",
+ "trace_suspend_type",
+ "top_level_thread_tracer_no_back_frames",
+ "top_level_thread_tracer_unhandled",
+ "thread_tracer",
+ "step_in_initial_location",
# Used for CMD_SMART_STEP_INTO (to know which smart step into variant to use)
- 'pydev_smart_parent_offset',
- 'pydev_smart_child_offset',
-
+ "pydev_smart_parent_offset",
+ "pydev_smart_child_offset",
# Used for CMD_SMART_STEP_INTO (list[_pydevd_bundle.pydevd_bytecode_utils.Variant])
# Filled when the cmd_get_smart_step_into_variants is requested (so, this is a copy
# of the last request for a given thread and pydev_smart_parent_offset/pydev_smart_child_offset relies on it).
- 'pydev_smart_step_into_variants',
- 'target_id_to_smart_step_into_variant',
-
- 'pydev_use_scoped_step_frame',
+ "pydev_smart_step_into_variants",
+ "target_id_to_smart_step_into_variant",
+ "pydev_use_scoped_step_frame",
+ "weak_thread",
+ "is_in_wait_loop",
]
# ENDIF
+ # fmt: on
def __init__(self):
self.pydev_state = STATE_RUN # STATE_RUN or STATE_SUSPEND
@@ -77,12 +85,12 @@ def __init__(self):
self.pydev_call_inside_jinja2 = None
self.is_tracing = 0
self.conditional_breakpoint_exception = None
- self.pydev_message = ''
+ self.pydev_message = ""
self.suspend_type = PYTHON_SUSPEND
self.pydev_next_line = -1
- self.pydev_func_name = '.invalid.' # Must match the type in cython
+ self.pydev_func_name = ".invalid." # Must match the type in cython
self.suspended_at_unhandled = False
- self.trace_suspend_type = 'trace' # 'trace' or 'frame_eval'
+ self.trace_suspend_type = "trace" # 'trace' or 'frame_eval'
self.top_level_thread_tracer_no_back_frames = []
self.top_level_thread_tracer_unhandled = None
self.thread_tracer = None
@@ -103,22 +111,80 @@ def __init__(self):
#
# See: https://github.com/microsoft/debugpy/issues/869#issuecomment-1132141003
self.pydev_use_scoped_step_frame = False
+ self.weak_thread = None
+
+ # Purpose: detect if this thread is suspended and actually in the wait loop
+ # at this time (otherwise it may be suspended but still didn't reach a point.
+ # to pause).
+ self.is_in_wait_loop = False
+
+ # fmt: off
+ # IFDEF CYTHON
+ # cpdef object _get_related_thread(self):
+ # ELSE
+ def _get_related_thread(self):
+ # ENDIF
+ # fmt: on
+ if self.pydev_notify_kill: # Already killed
+ return None
+
+ if self.weak_thread is None:
+ return None
+
+ thread = self.weak_thread()
+ if thread is None:
+ return False
+
+ if thread._is_stopped:
+ return None
+
+ if thread._ident is None: # Can this happen?
+ pydev_log.critical("thread._ident is None in _get_related_thread!")
+ return None
+
+ if threading._active.get(thread._ident) is not thread:
+ return None
+ return thread
+
+ # fmt: off
+ # IFDEF CYTHON
+ # cpdef bint _is_stepping(self):
+ # ELSE
+ def _is_stepping(self):
+ # ENDIF
+ # fmt: on
+ if self.pydev_state == STATE_RUN and self.pydev_step_cmd != -1:
+ # This means actually stepping in a step operation.
+ return True
+
+ if self.pydev_state == STATE_SUSPEND and self.is_in_wait_loop:
+ # This means stepping because it was suspended but still didn't
+ # reach a suspension point.
+ return True
+
+ return False
+
+ # fmt: off
+ # IFDEF CYTHON
+ # cpdef get_topmost_frame(self, thread):
+ # ELSE
def get_topmost_frame(self, thread):
- '''
+ # ENDIF
+ # fmt: on
+ """
Gets the topmost frame for the given thread. Note that it may be None
and callers should remove the reference to the frame as soon as possible
to avoid disturbing user code.
- '''
+ """
# sys._current_frames(): dictionary with thread id -> topmost frame
current_frames = _current_frames()
- topmost_frame = current_frames.get(thread.ident)
+ topmost_frame = current_frames.get(thread._ident)
if topmost_frame is None:
# Note: this is expected for dummy threads (so, getting the topmost frame should be
# treated as optional).
pydev_log.info(
- 'Unable to get topmost frame for thread: %s, thread.ident: %s, id(thread): %s\nCurrent frames: %s.\n'
- 'GEVENT_SUPPORT: %s',
+ "Unable to get topmost frame for thread: %s, thread.ident: %s, id(thread): %s\nCurrent frames: %s.\n" "GEVENT_SUPPORT: %s",
thread,
thread.ident,
id(thread),
@@ -128,15 +194,30 @@ def get_topmost_frame(self, thread):
return topmost_frame
+ # fmt: off
+ # IFDEF CYTHON
+ # cpdef update_stepping_info(self):
+ # ELSE
+ def update_stepping_info(self):
+ # ENDIF
+ # fmt: on
+ _update_stepping_info(self)
+
def __str__(self):
- return 'State:%s Stop:%s Cmd: %s Kill:%s' % (
- self.pydev_state, self.pydev_step_stop, self.pydev_step_cmd, self.pydev_notify_kill)
+ return "State:%s Stop:%s Cmd: %s Kill:%s" % (self.pydev_state, self.pydev_step_stop, self.pydev_step_cmd, self.pydev_notify_kill)
_set_additional_thread_info_lock = ForkSafeLock()
+_next_additional_info = [PyDBAdditionalThreadInfo()]
+# fmt: off
+# IFDEF CYTHON
+# cpdef set_additional_thread_info(thread):
+# ELSE
def set_additional_thread_info(thread):
+# ENDIF
+# fmt: on
try:
additional_info = thread.additional_info
if additional_info is None:
@@ -145,9 +226,102 @@ def set_additional_thread_info(thread):
with _set_additional_thread_info_lock:
# If it's not there, set it within a lock to avoid any racing
# conditions.
- additional_info = getattr(thread, 'additional_info', None)
+ try:
+ additional_info = thread.additional_info
+ except:
+ additional_info = None
+
if additional_info is None:
- additional_info = PyDBAdditionalThreadInfo()
- thread.additional_info = additional_info
+ # Note: don't call PyDBAdditionalThreadInfo constructor at this
+ # point as it can piggy-back into the debugger which could
+ # get here again, rather get the global ref which was pre-created
+ # and add a new entry only after we set thread.additional_info.
+ additional_info = _next_additional_info[0]
+ thread.additional_info = additional_info
+ additional_info.weak_thread = weakref.ref(thread)
+ add_additional_info(additional_info)
+ del _next_additional_info[:]
+ _next_additional_info.append(PyDBAdditionalThreadInfo())
return additional_info
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef set _all_infos
+# cdef set _infos_stepping
+# cdef object _update_infos_lock
+# ELSE
+# ENDIF
+# fmt: on
+
+_all_infos = set()
+_infos_stepping = set()
+_update_infos_lock = ForkSafeLock()
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _update_stepping_info(PyDBAdditionalThreadInfo info):
+# ELSE
+def _update_stepping_info(info):
+# ENDIF
+# fmt: on
+
+ global _infos_stepping
+ global _all_infos
+
+ with _update_infos_lock:
+ # Removes entries that are no longer valid.
+ new_all_infos = set()
+ for info in _all_infos:
+ if info._get_related_thread() is not None:
+ new_all_infos.add(info)
+ _all_infos = new_all_infos
+
+ new_stepping = set()
+ for info in _all_infos:
+ if info._is_stepping():
+ new_stepping.add(info)
+ _infos_stepping = new_stepping
+
+ py_db = get_global_debugger()
+ if py_db is not None and not py_db.pydb_disposed:
+ thread = info.weak_thread()
+ if thread is not None:
+ thread_id = get_thread_id(thread)
+ _queue, event = py_db.get_internal_queue_and_event(thread_id)
+ event.set()
+
+# fmt: off
+# IFDEF CYTHON
+# cpdef add_additional_info(PyDBAdditionalThreadInfo info):
+# ELSE
+def add_additional_info(info):
+# ENDIF
+# fmt: on
+ with _update_infos_lock:
+ _all_infos.add(info)
+ if info._is_stepping():
+ _infos_stepping.add(info)
+
+# fmt: off
+# IFDEF CYTHON
+# cpdef remove_additional_info(PyDBAdditionalThreadInfo info):
+# ELSE
+def remove_additional_info(info):
+# ENDIF
+# fmt: on
+ with _update_infos_lock:
+ _all_infos.discard(info)
+ _infos_stepping.discard(info)
+
+
+# fmt: off
+# IFDEF CYTHON
+# cpdef bint any_thread_stepping():
+# ELSE
+def any_thread_stepping():
+# ENDIF
+# fmt: on
+ return bool(_infos_stepping)
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py
index 0b21c59b8..c8b2100c0 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py
@@ -5,17 +5,44 @@
from _pydev_bundle._pydev_saved_modules import threading
from _pydevd_bundle import pydevd_utils, pydevd_source_mapping
from _pydevd_bundle.pydevd_additional_thread_info import set_additional_thread_info
-from _pydevd_bundle.pydevd_comm import (InternalGetThreadStack, internal_get_completions,
- InternalSetNextStatementThread, internal_reload_code,
- InternalGetVariable, InternalGetArray, InternalLoadFullValue,
- internal_get_description, internal_get_frame, internal_evaluate_expression, InternalConsoleExec,
- internal_get_variable_json, internal_change_variable, internal_change_variable_json,
- internal_evaluate_expression_json, internal_set_expression_json, internal_get_exception_details_json,
- internal_step_in_thread, internal_smart_step_into)
-from _pydevd_bundle.pydevd_comm_constants import (CMD_THREAD_SUSPEND, file_system_encoding,
- CMD_STEP_INTO_MY_CODE, CMD_STOP_ON_START, CMD_SMART_STEP_INTO)
-from _pydevd_bundle.pydevd_constants import (get_current_thread_id, set_protocol, get_protocol,
- HTTP_JSON_PROTOCOL, JSON_PROTOCOL, DebugInfoHolder, IS_WINDOWS)
+from _pydevd_bundle.pydevd_comm import (
+ InternalGetThreadStack,
+ internal_get_completions,
+ InternalSetNextStatementThread,
+ internal_reload_code,
+ InternalGetVariable,
+ InternalGetArray,
+ InternalLoadFullValue,
+ internal_get_description,
+ internal_get_frame,
+ internal_evaluate_expression,
+ InternalConsoleExec,
+ internal_get_variable_json,
+ internal_change_variable,
+ internal_change_variable_json,
+ internal_evaluate_expression_json,
+ internal_set_expression_json,
+ internal_get_exception_details_json,
+ internal_step_in_thread,
+ internal_smart_step_into,
+)
+from _pydevd_bundle.pydevd_comm_constants import (
+ CMD_THREAD_SUSPEND,
+ file_system_encoding,
+ CMD_STEP_INTO_MY_CODE,
+ CMD_STOP_ON_START,
+ CMD_SMART_STEP_INTO,
+)
+from _pydevd_bundle.pydevd_constants import (
+ get_current_thread_id,
+ set_protocol,
+ get_protocol,
+ HTTP_JSON_PROTOCOL,
+ JSON_PROTOCOL,
+ DebugInfoHolder,
+ IS_WINDOWS,
+ PYDEVD_USE_SYS_MONITORING,
+)
from _pydevd_bundle.pydevd_net_command_factory_json import NetCommandFactoryJson
from _pydevd_bundle.pydevd_net_command_factory_xml import NetCommandFactory
import pydevd_file_utils
@@ -32,6 +59,7 @@
from _pydevd_bundle.pydevd_daemon_thread import run_as_pydevd_daemon_thread
from _pydevd_bundle.pydevd_thread_lifecycle import pydevd_find_thread_by_id, resume_threads
import tokenize
+from _pydevd_sys_monitoring import pydevd_sys_monitoring
try:
import dis
@@ -47,7 +75,7 @@ def _get_code_lines(code):
path = code
with tokenize.open(path) as f:
src = f.read()
- code = compile(src, path, 'exec', 0, dont_inherit=True)
+ code = compile(src, path, "exec", 0, dont_inherit=True)
return _get_code_lines(code)
def iterate():
@@ -68,10 +96,8 @@ def iterate():
class PyDevdAPI(object):
-
class VariablePresentation(object):
-
- def __init__(self, special='group', function='group', class_='group', protected='inline'):
+ def __init__(self, special="group", function="group", class_="group", protected="inline"):
self._presentation = {
DAPGrouper.SCOPE_SPECIAL_VARS: special,
DAPGrouper.SCOPE_FUNCTION_VARS: function,
@@ -107,11 +133,11 @@ def set_protocol(self, py_db, seq, protocol):
return py_db.cmd_factory.make_protocol_set_message(seq)
def set_ide_os_and_breakpoints_by(self, py_db, seq, ide_os, breakpoints_by):
- '''
+ """
:param ide_os: 'WINDOWS' or 'UNIX'
:param breakpoints_by: 'ID' or 'LINE'
- '''
- if breakpoints_by == 'ID':
+ """
+ if breakpoints_by == "ID":
py_db._set_breakpoints_with_id = True
else:
py_db._set_breakpoints_with_id = False
@@ -121,16 +147,16 @@ def set_ide_os_and_breakpoints_by(self, py_db, seq, ide_os, breakpoints_by):
return py_db.cmd_factory.make_version_message(seq)
def set_ide_os(self, ide_os):
- '''
+ """
:param ide_os: 'WINDOWS' or 'UNIX'
- '''
+ """
pydevd_file_utils.set_ide_os(ide_os)
def set_gui_event_loop(self, py_db, gui_event_loop):
py_db._gui_event_loop = gui_event_loop
def send_error_message(self, py_db, msg):
- cmd = py_db.cmd_factory.make_warning_message('pydevd: %s\n' % (msg,))
+ cmd = py_db.cmd_factory.make_warning_message("pydevd: %s\n" % (msg,))
py_db.writer.add_command(cmd)
def set_show_return_values(self, py_db, show_return_values):
@@ -147,14 +173,14 @@ def list_threads(self, py_db, seq):
# Response is the command with the list of threads to be added to the writer thread.
return py_db.cmd_factory.make_list_threads_message(py_db, seq)
- def request_suspend_thread(self, py_db, thread_id='*'):
+ def request_suspend_thread(self, py_db, thread_id="*"):
# Yes, thread suspend is done at this point, not through an internal command.
threads = []
- suspend_all = thread_id.strip() == '*'
+ suspend_all = thread_id.strip() == "*"
if suspend_all:
threads = pydevd_utils.get_non_pydevd_threads()
- elif thread_id.startswith('__frame__:'):
+ elif thread_id.startswith("__frame__:"):
sys.stderr.write("Can't suspend tasklet: %s\n" % (thread_id,))
else:
@@ -174,40 +200,42 @@ def request_suspend_thread(self, py_db, thread_id='*'):
break
def set_enable_thread_notifications(self, py_db, enable):
- '''
+ """
When disabled, no thread notifications (for creation/removal) will be
issued until it's re-enabled.
Note that when it's re-enabled, a creation notification will be sent for
all existing threads even if it was previously sent (this is meant to
be used on disconnect/reconnect).
- '''
+ """
py_db.set_enable_thread_notifications(enable)
def request_disconnect(self, py_db, resume_threads):
self.set_enable_thread_notifications(py_db, False)
- self.remove_all_breakpoints(py_db, '*')
+ self.remove_all_breakpoints(py_db, "*")
self.remove_all_exception_breakpoints(py_db)
self.notify_disconnect(py_db)
if resume_threads:
- self.request_resume_thread(thread_id='*')
+ self.request_resume_thread(thread_id="*")
def request_resume_thread(self, thread_id):
resume_threads(thread_id)
def request_completions(self, py_db, seq, thread_id, frame_id, act_tok, line=-1, column=-1):
py_db.post_method_as_internal_command(
- thread_id, internal_get_completions, seq, thread_id, frame_id, act_tok, line=line, column=column)
+ thread_id, internal_get_completions, seq, thread_id, frame_id, act_tok, line=line, column=column
+ )
- def request_stack(self, py_db, seq, thread_id, fmt=None, timeout=.5, start_frame=0, levels=0):
+ def request_stack(self, py_db, seq, thread_id, fmt=None, timeout=0.5, start_frame=0, levels=0):
# If it's already suspended, get it right away.
internal_get_thread_stack = InternalGetThreadStack(
- seq, thread_id, py_db, set_additional_thread_info, fmt=fmt, timeout=timeout, start_frame=start_frame, levels=levels)
+ seq, thread_id, py_db, set_additional_thread_info, fmt=fmt, timeout=timeout, start_frame=start_frame, levels=levels
+ )
if internal_get_thread_stack.can_be_executed_by(get_current_thread_id(threading.current_thread())):
internal_get_thread_stack.do_it(py_db)
else:
- py_db.post_internal_command(internal_get_thread_stack, '*')
+ py_db.post_internal_command(internal_get_thread_stack, "*")
def request_exception_info_json(self, py_db, request, thread_id, thread, max_frames):
py_db.post_method_as_internal_command(
@@ -231,15 +259,16 @@ def request_step(self, py_db, thread_id, step_cmd_id):
step_cmd_id,
set_additional_thread_info=set_additional_thread_info,
)
- elif thread_id.startswith('__frame__:'):
+ elif thread_id.startswith("__frame__:"):
sys.stderr.write("Can't make tasklet step command: %s\n" % (thread_id,))
def request_smart_step_into(self, py_db, seq, thread_id, offset, child_offset):
t = pydevd_find_thread_by_id(thread_id)
if t:
py_db.post_method_as_internal_command(
- thread_id, internal_smart_step_into, thread_id, offset, child_offset, set_additional_thread_info=set_additional_thread_info)
- elif thread_id.startswith('__frame__:'):
+ thread_id, internal_smart_step_into, thread_id, offset, child_offset, set_additional_thread_info=set_additional_thread_info
+ )
+ elif thread_id.startswith("__frame__:"):
sys.stderr.write("Can't set next statement in tasklet: %s\n" % (thread_id,))
def request_smart_step_into_by_func_name(self, py_db, seq, thread_id, line, func_name):
@@ -247,7 +276,7 @@ def request_smart_step_into_by_func_name(self, py_db, seq, thread_id, line, func
self.request_set_next(py_db, seq, thread_id, CMD_SMART_STEP_INTO, None, line, func_name)
def request_set_next(self, py_db, seq, thread_id, set_next_cmd_id, original_filename, line, func_name):
- '''
+ """
set_next_cmd_id may actually be one of:
CMD_RUN_TO_LINE
@@ -261,52 +290,49 @@ def request_set_next(self, py_db, seq, thread_id, set_next_cmd_id, original_file
place (the set next just needs the line afterwards as it executes locally, but for
the Jupyter integration, the source mapping may change the actual lines and not only
the filename).
- '''
+ """
t = pydevd_find_thread_by_id(thread_id)
if t:
if original_filename is not None:
translated_filename = self.filename_to_server(original_filename) # Apply user path mapping.
- pydev_log.debug('Set next (after path translation) in: %s line: %s', translated_filename, line)
+ pydev_log.debug("Set next (after path translation) in: %s line: %s", translated_filename, line)
func_name = self.to_str(func_name)
assert translated_filename.__class__ == str # i.e.: bytes on py2 and str on py3
assert func_name.__class__ == str # i.e.: bytes on py2 and str on py3
# Apply source mapping (i.e.: ipython).
- _source_mapped_filename, new_line, multi_mapping_applied = py_db.source_mapping.map_to_server(
- translated_filename, line)
+ _source_mapped_filename, new_line, multi_mapping_applied = py_db.source_mapping.map_to_server(translated_filename, line)
if multi_mapping_applied:
- pydev_log.debug('Set next (after source mapping) in: %s line: %s', translated_filename, line)
+ pydev_log.debug("Set next (after source mapping) in: %s line: %s", translated_filename, line)
line = new_line
int_cmd = InternalSetNextStatementThread(thread_id, set_next_cmd_id, line, func_name, seq=seq)
py_db.post_internal_command(int_cmd, thread_id)
- elif thread_id.startswith('__frame__:'):
+ elif thread_id.startswith("__frame__:"):
sys.stderr.write("Can't set next statement in tasklet: %s\n" % (thread_id,))
def request_reload_code(self, py_db, seq, module_name, filename):
- '''
+ """
:param seq: if -1 no message will be sent back when the reload is done.
Note: either module_name or filename may be None (but not both at the same time).
- '''
- thread_id = '*' # Any thread
+ """
+ thread_id = "*" # Any thread
# Note: not going for the main thread because in this case it'd only do the load
# when we stopped on a breakpoint.
- py_db.post_method_as_internal_command(
- thread_id, internal_reload_code, seq, module_name, filename)
+ py_db.post_method_as_internal_command(thread_id, internal_reload_code, seq, module_name, filename)
def request_change_variable(self, py_db, seq, thread_id, frame_id, scope, attr, value):
- '''
+ """
:param scope: 'FRAME' or 'GLOBAL'
- '''
- py_db.post_method_as_internal_command(
- thread_id, internal_change_variable, seq, thread_id, frame_id, scope, attr, value)
+ """
+ py_db.post_method_as_internal_command(thread_id, internal_change_variable, seq, thread_id, frame_id, scope, attr, value)
def request_get_variable(self, py_db, seq, thread_id, frame_id, scope, attrs):
- '''
+ """
:param scope: 'FRAME' or 'GLOBAL'
- '''
+ """
int_cmd = InternalGetVariable(seq, thread_id, frame_id, scope, attrs)
py_db.post_internal_command(int_cmd, thread_id)
@@ -319,27 +345,25 @@ def request_load_full_value(self, py_db, seq, thread_id, frame_id, vars):
py_db.post_internal_command(int_cmd, thread_id)
def request_get_description(self, py_db, seq, thread_id, frame_id, expression):
- py_db.post_method_as_internal_command(
- thread_id, internal_get_description, seq, thread_id, frame_id, expression)
+ py_db.post_method_as_internal_command(thread_id, internal_get_description, seq, thread_id, frame_id, expression)
def request_get_frame(self, py_db, seq, thread_id, frame_id):
- py_db.post_method_as_internal_command(
- thread_id, internal_get_frame, seq, thread_id, frame_id)
+ py_db.post_method_as_internal_command(thread_id, internal_get_frame, seq, thread_id, frame_id)
def to_str(self, s):
- '''
+ """
-- in py3 raises an error if it's not str already.
- '''
+ """
if s.__class__ != str:
- raise AssertionError('Expected to have str on Python 3. Found: %s (%s)' % (s, s.__class__))
+ raise AssertionError("Expected to have str on Python 3. Found: %s (%s)" % (s, s.__class__))
return s
def filename_to_str(self, filename):
- '''
+ """
-- in py3 raises an error if it's not str already.
- '''
+ """
if filename.__class__ != str:
- raise AssertionError('Expected to have str on Python 3. Found: %s (%s)' % (filename, filename.__class__))
+ raise AssertionError("Expected to have str on Python 3. Found: %s (%s)" % (filename, filename.__class__))
return filename
def filename_to_server(self, filename):
@@ -348,17 +372,16 @@ def filename_to_server(self, filename):
return filename
class _DummyFrame(object):
- '''
+ """
Dummy frame to be used with PyDB.apply_files_filter (as we don't really have the
related frame as breakpoints are added before execution).
- '''
+ """
class _DummyCode(object):
-
def __init__(self, filename):
self.co_firstlineno = 1
self.co_filename = filename
- self.co_name = 'invalid func name '
+ self.co_name = "invalid func name "
def __init__(self, filename):
self.f_code = self._DummyCode(filename)
@@ -374,14 +397,13 @@ def __init__(self, filename):
ADD_BREAKPOINT_INVALID_LINE = 4
class _AddBreakpointResult(object):
-
# :see: ADD_BREAKPOINT_NO_ERROR = 0
# :see: ADD_BREAKPOINT_FILE_NOT_FOUND = 1
# :see: ADD_BREAKPOINT_FILE_EXCLUDED_BY_FILTERS = 2
# :see: ADD_BREAKPOINT_LAZY_VALIDATION = 3
# :see: ADD_BREAKPOINT_INVALID_LINE = 4
- __slots__ = ['error_code', 'breakpoint_id', 'translated_filename', 'translated_line', 'original_line']
+ __slots__ = ["error_code", "breakpoint_id", "translated_filename", "translated_line", "original_line"]
def __init__(self, breakpoint_id, translated_filename, translated_line, original_line):
self.error_code = PyDevdAPI.ADD_BREAKPOINT_NO_ERROR
@@ -391,9 +413,22 @@ def __init__(self, breakpoint_id, translated_filename, translated_line, original
self.original_line = original_line
def add_breakpoint(
- self, py_db, original_filename, breakpoint_type, breakpoint_id, line, condition, func_name,
- expression, suspend_policy, hit_condition, is_logpoint, adjust_line=False, on_changed_breakpoint_state=None):
- '''
+ self,
+ py_db,
+ original_filename,
+ breakpoint_type,
+ breakpoint_id,
+ line,
+ condition,
+ func_name,
+ expression,
+ suspend_policy,
+ hit_condition,
+ is_logpoint,
+ adjust_line=False,
+ on_changed_breakpoint_state=None,
+ ):
+ """
:param str original_filename:
Note: must be sent as it was received in the protocol. It may be translated in this
function and its final value will be available in the returned _AddBreakpointResult.
@@ -446,30 +481,41 @@ def add_breakpoint(
implementation may internally reuse the same instance multiple times).
:return _AddBreakpointResult:
- '''
- assert original_filename.__class__ == str, 'Expected str, found: %s' % (original_filename.__class__,) # i.e.: bytes on py2 and str on py3
+ """
+ assert original_filename.__class__ == str, "Expected str, found: %s" % (
+ original_filename.__class__,
+ ) # i.e.: bytes on py2 and str on py3
original_filename_normalized = pydevd_file_utils.normcase_from_client(original_filename)
- pydev_log.debug('Request for breakpoint in: %s line: %s', original_filename, line)
+ pydev_log.debug("Request for breakpoint in: %s line: %s", original_filename, line)
original_line = line
# Parameters to reapply breakpoint.
- api_add_breakpoint_params = (original_filename, breakpoint_type, breakpoint_id, line, condition, func_name,
- expression, suspend_policy, hit_condition, is_logpoint)
+ api_add_breakpoint_params = (
+ original_filename,
+ breakpoint_type,
+ breakpoint_id,
+ line,
+ condition,
+ func_name,
+ expression,
+ suspend_policy,
+ hit_condition,
+ is_logpoint,
+ )
translated_filename = self.filename_to_server(original_filename) # Apply user path mapping.
- pydev_log.debug('Breakpoint (after path translation) in: %s line: %s', translated_filename, line)
+ pydev_log.debug("Breakpoint (after path translation) in: %s line: %s", translated_filename, line)
func_name = self.to_str(func_name)
assert translated_filename.__class__ == str # i.e.: bytes on py2 and str on py3
assert func_name.__class__ == str # i.e.: bytes on py2 and str on py3
# Apply source mapping (i.e.: ipython).
- source_mapped_filename, new_line, multi_mapping_applied = py_db.source_mapping.map_to_server(
- translated_filename, line)
+ source_mapped_filename, new_line, multi_mapping_applied = py_db.source_mapping.map_to_server(translated_filename, line)
if multi_mapping_applied:
- pydev_log.debug('Breakpoint (after source mapping) in: %s line: %s', source_mapped_filename, new_line)
+ pydev_log.debug("Breakpoint (after source mapping) in: %s line: %s", source_mapped_filename, new_line)
# Note that source mapping is internal and does not change the resulting filename nor line
# (we want the outside world to see the line in the original file and not in the ipython
# cell, otherwise the editor wouldn't be correct as the returned line is the line to
@@ -485,7 +531,7 @@ def add_breakpoint(
translated_absolute_filename = pydevd_file_utils.absolute_path(translated_filename)
canonical_normalized_filename = pydevd_file_utils.canonical_normalized_path(translated_filename)
- if adjust_line and not translated_absolute_filename.startswith('<'):
+ if adjust_line and not translated_absolute_filename.startswith("<"):
# Validate file_to_line_to_breakpoints and adjust their positions.
try:
lines = sorted(_get_code_lines(translated_absolute_filename))
@@ -500,9 +546,12 @@ def add_breakpoint(
result = self._AddBreakpointResult(breakpoint_id, original_filename, line, original_line)
- py_db.api_received_breakpoints[(original_filename_normalized, breakpoint_id)] = (canonical_normalized_filename, api_add_breakpoint_params)
+ py_db.api_received_breakpoints[(original_filename_normalized, breakpoint_id)] = (
+ canonical_normalized_filename,
+ api_add_breakpoint_params,
+ )
- if not translated_absolute_filename.startswith('<'):
+ if not translated_absolute_filename.startswith("<"):
# Note: if a mapping pointed to a file starting with '<', don't validate.
if not pydevd_file_utils.exists(translated_absolute_filename):
@@ -510,10 +559,10 @@ def add_breakpoint(
return result
if (
- py_db.is_files_filter_enabled and
- not py_db.get_require_module_for_filters() and
- py_db.apply_files_filter(self._DummyFrame(translated_absolute_filename), translated_absolute_filename, False)
- ):
+ py_db.is_files_filter_enabled
+ and not py_db.get_require_module_for_filters()
+ and py_db.apply_files_filter(self._DummyFrame(translated_absolute_filename), translated_absolute_filename, False)
+ ):
# Note that if `get_require_module_for_filters()` returns False, we don't do this check.
# This is because we don't have the module name given a file at this point (in
# runtime it's gotten from the frame.f_globals).
@@ -525,9 +574,10 @@ def add_breakpoint(
# breakpoint even with the error code.
result.error_code = self.ADD_BREAKPOINT_FILE_EXCLUDED_BY_FILTERS
- if breakpoint_type == 'python-line':
+ if breakpoint_type == "python-line":
added_breakpoint = LineBreakpoint(
- breakpoint_id, line, condition, func_name, expression, suspend_policy, hit_condition=hit_condition, is_logpoint=is_logpoint)
+ breakpoint_id, line, condition, func_name, expression, suspend_policy, hit_condition=hit_condition, is_logpoint=is_logpoint
+ )
file_to_line_to_breakpoints = py_db.breakpoints
file_to_id_to_breakpoint = py_db.file_to_id_to_line_breakpoint
@@ -538,9 +588,20 @@ def add_breakpoint(
plugin = py_db.get_plugin_lazy_init()
if plugin is not None:
add_plugin_breakpoint_result = plugin.add_breakpoint(
- 'add_line_breakpoint', py_db, breakpoint_type, canonical_normalized_filename,
- breakpoint_id, line, condition, expression, func_name, hit_condition=hit_condition, is_logpoint=is_logpoint,
- add_breakpoint_result=result, on_changed_breakpoint_state=on_changed_breakpoint_state)
+ "add_line_breakpoint",
+ py_db,
+ breakpoint_type,
+ canonical_normalized_filename,
+ breakpoint_id,
+ line,
+ condition,
+ expression,
+ func_name,
+ hit_condition=hit_condition,
+ is_logpoint=is_logpoint,
+ add_breakpoint_result=result,
+ on_changed_breakpoint_state=on_changed_breakpoint_state,
+ )
if add_plugin_breakpoint_result is not None:
supported_type = True
@@ -552,7 +613,7 @@ def add_breakpoint(
if not supported_type:
raise NameError(breakpoint_type)
- pydev_log.debug('Added breakpoint:%s - line:%s - func_name:%s\n', canonical_normalized_filename, line, func_name)
+ pydev_log.debug("Added breakpoint:%s - line:%s - func_name:%s\n", canonical_normalized_filename, line, func_name)
if canonical_normalized_filename in file_to_id_to_breakpoint:
id_to_pybreakpoint = file_to_id_to_breakpoint[canonical_normalized_filename]
@@ -562,46 +623,44 @@ def add_breakpoint(
id_to_pybreakpoint[breakpoint_id] = added_breakpoint
py_db.consolidate_breakpoints(canonical_normalized_filename, id_to_pybreakpoint, file_to_line_to_breakpoints)
if py_db.plugin is not None:
- py_db.has_plugin_line_breaks = py_db.plugin.has_line_breaks()
- py_db.plugin.after_breakpoints_consolidated(py_db, canonical_normalized_filename, id_to_pybreakpoint, file_to_line_to_breakpoints)
+ py_db.has_plugin_line_breaks = py_db.plugin.has_line_breaks(py_db)
+ py_db.plugin.after_breakpoints_consolidated(
+ py_db, canonical_normalized_filename, id_to_pybreakpoint, file_to_line_to_breakpoints
+ )
py_db.on_breakpoints_changed()
return result
def reapply_breakpoints(self, py_db):
- '''
+ """
Reapplies all the received breakpoints as they were received by the API (so, new
translations are applied).
- '''
- pydev_log.debug('Reapplying breakpoints.')
+ """
+ pydev_log.debug("Reapplying breakpoints.")
values = list(py_db.api_received_breakpoints.values()) # Create a copy with items to reapply.
- self.remove_all_breakpoints(py_db, '*')
+ self.remove_all_breakpoints(py_db, "*")
for val in values:
_new_filename, api_add_breakpoint_params = val
self.add_breakpoint(py_db, *api_add_breakpoint_params)
def remove_all_breakpoints(self, py_db, received_filename):
- '''
+ """
Removes all the breakpoints from a given file or from all files if received_filename == '*'.
:param str received_filename:
Note: must be sent as it was received in the protocol. It may be translated in this
function.
- '''
+ """
assert received_filename.__class__ == str # i.e.: bytes on py2 and str on py3
changed = False
- lst = [
- py_db.file_to_id_to_line_breakpoint,
- py_db.file_to_id_to_plugin_breakpoint,
- py_db.breakpoints
- ]
- if hasattr(py_db, 'django_breakpoints'):
+ lst = [py_db.file_to_id_to_line_breakpoint, py_db.file_to_id_to_plugin_breakpoint, py_db.breakpoints]
+ if hasattr(py_db, "django_breakpoints"):
lst.append(py_db.django_breakpoints)
- if hasattr(py_db, 'jinja2_breakpoints'):
+ if hasattr(py_db, "jinja2_breakpoints"):
lst.append(py_db.jinja2_breakpoints)
- if received_filename == '*':
+ if received_filename == "*":
py_db.api_received_breakpoints.clear()
for file_to_id_to_breakpoint in lst:
@@ -631,7 +690,7 @@ def remove_all_breakpoints(self, py_db, received_filename):
py_db.on_breakpoints_changed(removed=True)
def remove_breakpoint(self, py_db, received_filename, breakpoint_type, breakpoint_id):
- '''
+ """
:param str received_filename:
Note: must be sent as it was received in the protocol. It may be translated in this
function.
@@ -640,7 +699,7 @@ def remove_breakpoint(self, py_db, received_filename, breakpoint_type, breakpoin
One of: 'python-line', 'django-line', 'jinja2-line'.
:param int breakpoint_id:
- '''
+ """
received_filename_normalized = pydevd_file_utils.normcase_from_client(received_filename)
for key, val in list(py_db.api_received_breakpoints.items()):
original_filename_normalized, existing_breakpoint_id = key
@@ -649,14 +708,13 @@ def remove_breakpoint(self, py_db, received_filename, breakpoint_type, breakpoin
del py_db.api_received_breakpoints[key]
break
else:
- pydev_log.info(
- 'Did not find breakpoint to remove: %s (breakpoint id: %s)', received_filename, breakpoint_id)
+ pydev_log.info("Did not find breakpoint to remove: %s (breakpoint id: %s)", received_filename, breakpoint_id)
file_to_id_to_breakpoint = None
received_filename = self.filename_to_server(received_filename)
canonical_normalized_filename = pydevd_file_utils.canonical_normalized_path(received_filename)
- if breakpoint_type == 'python-line':
+ if breakpoint_type == "python-line":
file_to_line_to_breakpoints = py_db.breakpoints
file_to_id_to_breakpoint = py_db.file_to_id_to_line_breakpoint
@@ -667,25 +725,33 @@ def remove_breakpoint(self, py_db, received_filename, breakpoint_type, breakpoin
file_to_line_to_breakpoints = result
if file_to_id_to_breakpoint is None:
- pydev_log.critical('Error removing breakpoint. Cannot handle breakpoint of type %s', breakpoint_type)
+ pydev_log.critical("Error removing breakpoint. Cannot handle breakpoint of type %s", breakpoint_type)
else:
try:
id_to_pybreakpoint = file_to_id_to_breakpoint.get(canonical_normalized_filename, {})
if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 1:
existing = id_to_pybreakpoint[breakpoint_id]
- pydev_log.info('Removed breakpoint:%s - line:%s - func_name:%s (id: %s)\n' % (
- canonical_normalized_filename, existing.line, existing.func_name, breakpoint_id))
+ pydev_log.info(
+ "Removed breakpoint:%s - line:%s - func_name:%s (id: %s)\n"
+ % (canonical_normalized_filename, existing.line, existing.func_name, breakpoint_id)
+ )
del id_to_pybreakpoint[breakpoint_id]
py_db.consolidate_breakpoints(canonical_normalized_filename, id_to_pybreakpoint, file_to_line_to_breakpoints)
if py_db.plugin is not None:
- py_db.has_plugin_line_breaks = py_db.plugin.has_line_breaks()
- py_db.plugin.after_breakpoints_consolidated(py_db, canonical_normalized_filename, id_to_pybreakpoint, file_to_line_to_breakpoints)
+ py_db.has_plugin_line_breaks = py_db.plugin.has_line_breaks(py_db)
+ py_db.plugin.after_breakpoints_consolidated(
+ py_db, canonical_normalized_filename, id_to_pybreakpoint, file_to_line_to_breakpoints
+ )
except KeyError:
- pydev_log.info("Error removing breakpoint: Breakpoint id not found: %s id: %s. Available ids: %s\n",
- canonical_normalized_filename, breakpoint_id, list(id_to_pybreakpoint))
+ pydev_log.info(
+ "Error removing breakpoint: Breakpoint id not found: %s id: %s. Available ids: %s\n",
+ canonical_normalized_filename,
+ breakpoint_id,
+ list(id_to_pybreakpoint),
+ )
py_db.on_breakpoints_changed(removed=True)
@@ -697,31 +763,27 @@ def set_function_breakpoints(self, py_db, function_breakpoints):
py_db.function_breakpoint_name_to_breakpoint = function_breakpoint_name_to_breakpoint
py_db.on_breakpoints_changed()
- def request_exec_or_evaluate(
- self, py_db, seq, thread_id, frame_id, expression, is_exec, trim_if_too_big, attr_to_set_result):
+ def request_exec_or_evaluate(self, py_db, seq, thread_id, frame_id, expression, is_exec, trim_if_too_big, attr_to_set_result):
py_db.post_method_as_internal_command(
- thread_id, internal_evaluate_expression,
- seq, thread_id, frame_id, expression, is_exec, trim_if_too_big, attr_to_set_result)
+ thread_id, internal_evaluate_expression, seq, thread_id, frame_id, expression, is_exec, trim_if_too_big, attr_to_set_result
+ )
- def request_exec_or_evaluate_json(
- self, py_db, request, thread_id):
- py_db.post_method_as_internal_command(
- thread_id, internal_evaluate_expression_json, request, thread_id)
+ def request_exec_or_evaluate_json(self, py_db, request, thread_id):
+ py_db.post_method_as_internal_command(thread_id, internal_evaluate_expression_json, request, thread_id)
def request_set_expression_json(self, py_db, request, thread_id):
- py_db.post_method_as_internal_command(
- thread_id, internal_set_expression_json, request, thread_id)
+ py_db.post_method_as_internal_command(thread_id, internal_set_expression_json, request, thread_id)
def request_console_exec(self, py_db, seq, thread_id, frame_id, expression):
int_cmd = InternalConsoleExec(seq, thread_id, frame_id, expression)
py_db.post_internal_command(int_cmd, thread_id)
def request_load_source(self, py_db, seq, filename):
- '''
+ """
:param str filename:
Note: must be sent as it was received in the protocol. It may be translated in this
function.
- '''
+ """
try:
filename = self.filename_to_server(filename)
assert filename.__class__ == str # i.e.: bytes on py2 and str on py3
@@ -735,13 +797,13 @@ def request_load_source(self, py_db, seq, filename):
py_db.writer.add_command(cmd)
def get_decompiled_source_from_frame_id(self, py_db, frame_id):
- '''
+ """
:param py_db:
:param frame_id:
:throws Exception:
If unable to get the frame in the currently paused frames or if some error happened
when decompiling.
- '''
+ """
variable = py_db.suspended_frames_manager.get_variable(int(frame_id))
frame = variable.value
@@ -749,7 +811,7 @@ def get_decompiled_source_from_frame_id(self, py_db, frame_id):
lines = (linecache.getline(frame.f_code.co_filename, i) for i in itertools.count(1))
lines = itertools.takewhile(bool, lines) # empty lines are '\n', EOF is ''
- source = ''.join(lines)
+ source = "".join(lines)
if not source:
source = code_to_bytecode_representation(frame.f_code)
@@ -765,17 +827,17 @@ def request_load_source_from_frame_id(self, py_db, seq, frame_id):
py_db.writer.add_command(cmd)
def add_python_exception_breakpoint(
- self,
- py_db,
- exception,
- condition,
- expression,
- notify_on_handled_exceptions,
- notify_on_unhandled_exceptions,
- notify_on_user_unhandled_exceptions,
- notify_on_first_raise_only,
- ignore_libraries,
- ):
+ self,
+ py_db,
+ exception,
+ condition,
+ expression,
+ notify_on_handled_exceptions,
+ notify_on_unhandled_exceptions,
+ notify_on_user_unhandled_exceptions,
+ notify_on_first_raise_only,
+ ignore_libraries,
+ ):
exception_breakpoint = py_db.add_break_on_exception(
exception,
condition=condition,
@@ -794,10 +856,10 @@ def add_plugins_exception_breakpoint(self, py_db, breakpoint_type, exception):
supported_type = False
plugin = py_db.get_plugin_lazy_init()
if plugin is not None:
- supported_type = plugin.add_breakpoint('add_exception_breakpoint', py_db, breakpoint_type, exception)
+ supported_type = plugin.add_breakpoint("add_exception_breakpoint", py_db, breakpoint_type, exception)
if supported_type:
- py_db.has_plugin_exception_breaks = py_db.plugin.has_exception_breaks()
+ py_db.has_plugin_exception_breaks = py_db.plugin.has_exception_breaks(py_db)
py_db.on_breakpoints_changed()
else:
raise NameError(breakpoint_type)
@@ -830,9 +892,9 @@ def remove_plugins_exception_breakpoint(self, py_db, exception_type, exception):
supported_type = plugin.remove_exception_breakpoint(py_db, exception_type, exception)
if supported_type:
- py_db.has_plugin_exception_breaks = py_db.plugin.has_exception_breaks()
+ py_db.has_plugin_exception_breaks = py_db.plugin.has_exception_breaks(py_db)
else:
- pydev_log.info('No exception of type: %s was previously registered.', exception_type)
+ pydev_log.info("No exception of type: %s was previously registered.", exception_type)
py_db.on_breakpoints_changed(removed=True)
@@ -847,9 +909,9 @@ def remove_all_exception_breakpoints(self, py_db):
py_db.on_breakpoints_changed(removed=True)
def set_project_roots(self, py_db, project_roots):
- '''
+ """
:param str project_roots:
- '''
+ """
py_db.set_project_roots(project_roots)
def set_stepping_resumes_all_threads(self, py_db, stepping_resumes_all_threads):
@@ -859,27 +921,25 @@ def set_stepping_resumes_all_threads(self, py_db, stepping_resumes_all_threads):
from _pydevd_bundle.pydevd_filtering import ExcludeFilter # noqa
def set_exclude_filters(self, py_db, exclude_filters):
- '''
+ """
:param list(PyDevdAPI.ExcludeFilter) exclude_filters:
- '''
+ """
py_db.set_exclude_filters(exclude_filters)
def set_use_libraries_filter(self, py_db, use_libraries_filter):
py_db.set_use_libraries_filter(use_libraries_filter)
def request_get_variable_json(self, py_db, request, thread_id):
- '''
+ """
:param VariablesRequest request:
- '''
- py_db.post_method_as_internal_command(
- thread_id, internal_get_variable_json, request)
+ """
+ py_db.post_method_as_internal_command(thread_id, internal_get_variable_json, request)
def request_change_variable_json(self, py_db, request, thread_id):
- '''
+ """
:param SetVariableRequest request:
- '''
- py_db.post_method_as_internal_command(
- thread_id, internal_change_variable_json, request)
+ """
+ py_db.post_method_as_internal_command(thread_id, internal_change_variable_json, request)
def set_dont_trace_start_end_patterns(self, py_db, start_patterns, end_patterns):
# Note: start/end patterns normalized internally.
@@ -889,8 +949,7 @@ def set_dont_trace_start_end_patterns(self, py_db, start_patterns, end_patterns)
# After it's set the first time, we can still change it, but we need to reset the
# related caches.
reset_caches = False
- dont_trace_start_end_patterns_previously_set = \
- py_db.dont_trace_external_files.__name__ == 'custom_dont_trace_external_files'
+ dont_trace_start_end_patterns_previously_set = py_db.dont_trace_external_files.__name__ == "custom_dont_trace_external_files"
if not dont_trace_start_end_patterns_previously_set and not start_patterns and not end_patterns:
# If it wasn't set previously and start and end patterns are empty we don't need to do anything.
@@ -899,8 +958,10 @@ def set_dont_trace_start_end_patterns(self, py_db, start_patterns, end_patterns)
if not py_db.is_cache_file_type_empty():
# i.e.: custom function set in set_dont_trace_start_end_patterns.
if dont_trace_start_end_patterns_previously_set:
- reset_caches = py_db.dont_trace_external_files.start_patterns != start_patterns or \
- py_db.dont_trace_external_files.end_patterns != end_patterns
+ reset_caches = (
+ py_db.dont_trace_external_files.start_patterns != start_patterns
+ or py_db.dont_trace_external_files.end_patterns != end_patterns
+ )
else:
reset_caches = True
@@ -919,11 +980,15 @@ def custom_dont_trace_external_files(abs_path):
def stop_on_entry(self):
main_thread = pydevd_utils.get_main_thread()
if main_thread is None:
- pydev_log.critical('Could not find main thread while setting Stop on Entry.')
+ pydev_log.critical("Could not find main thread while setting Stop on Entry.")
else:
info = set_additional_thread_info(main_thread)
info.pydev_original_step_cmd = CMD_STOP_ON_START
info.pydev_step_cmd = CMD_STEP_INTO_MY_CODE
+ info.update_stepping_info()
+ if PYDEVD_USE_SYS_MONITORING:
+ pydevd_sys_monitoring.update_monitor_events(suspend_requested=True)
+ pydevd_sys_monitoring.restart_events()
def set_ignore_system_exit_codes(self, py_db, ignore_system_exit_codes):
py_db.set_ignore_system_exit_codes(ignore_system_exit_codes)
@@ -931,7 +996,7 @@ def set_ignore_system_exit_codes(self, py_db, ignore_system_exit_codes):
SourceMappingEntry = pydevd_source_mapping.SourceMappingEntry
def set_source_mapping(self, py_db, source_filename, mapping):
- '''
+ """
:param str source_filename:
The filename for the source mapping (bytes on py2 and str on py3).
This filename will be made absolute in this function.
@@ -942,7 +1007,7 @@ def set_source_mapping(self, py_db, source_filename, mapping):
:return str:
An error message if it was not possible to set the mapping or an empty string if
everything is ok.
- '''
+ """
source_filename = self.filename_to_server(source_filename)
absolute_source_filename = pydevd_file_utils.absolute_path(source_filename)
for map_entry in mapping:
@@ -952,16 +1017,16 @@ def set_source_mapping(self, py_db, source_filename, mapping):
return error_msg
self.reapply_breakpoints(py_db)
- return ''
+ return ""
def set_variable_presentation(self, py_db, variable_presentation):
assert isinstance(variable_presentation, self.VariablePresentation)
py_db.variable_presentation = variable_presentation
def get_ppid(self):
- '''
+ """
Provides the parent pid (even for older versions of Python on Windows).
- '''
+ """
ppid = None
try:
@@ -985,7 +1050,6 @@ def _get_windows_ppid(self):
def _terminate_child_processes_windows(self, dont_terminate_child_pids):
this_pid = os.getpid()
for _ in range(50): # Try this at most 50 times before giving up.
-
# Note: we can't kill the process itself with taskkill, so, we
# list immediate children, kill that tree and then exit this process.
@@ -999,11 +1063,7 @@ def _terminate_child_processes_windows(self, dont_terminate_child_pids):
break
else:
for pid in children_pids:
- self._call(
- ['taskkill', '/F', '/PID', str(pid), '/T'],
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE
- )
+ self._call(["taskkill", "/F", "/PID", str(pid), "/T"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
del children_pids[:]
@@ -1014,22 +1074,14 @@ def list_children_and_stop_forking(initial_pid, stop=True):
children_pids = []
if stop:
# Ask to stop forking (shouldn't be called for this process, only subprocesses).
- self._call(
- ['kill', '-STOP', str(initial_pid)],
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE
- )
+ self._call(["kill", "-STOP", str(initial_pid)], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- list_popen = self._popen(
- ['pgrep', '-P', str(initial_pid)],
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE
- )
+ list_popen = self._popen(["pgrep", "-P", str(initial_pid)], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if list_popen is not None:
stdout, _ = list_popen.communicate()
for line in stdout.splitlines():
- line = line.decode('ascii').strip()
+ line = line.decode("ascii").strip()
if line:
pid = str(line)
if pid in dont_terminate_child_pids:
@@ -1042,7 +1094,6 @@ def list_children_and_stop_forking(initial_pid, stop=True):
previously_found = set()
for _ in range(50): # Try this at most 50 times before giving up.
-
children_pids = list_children_and_stop_forking(this_pid, stop=False)
found_new = False
@@ -1050,11 +1101,7 @@ def list_children_and_stop_forking(initial_pid, stop=True):
if pid not in previously_found:
found_new = True
previously_found.add(pid)
- self._call(
- ['kill', '-KILL', str(pid)],
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE
- )
+ self._call(["kill", "-KILL", str(pid)], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if not found_new:
break
@@ -1064,7 +1111,7 @@ def _popen(self, cmdline, **kwargs):
return subprocess.Popen(cmdline, **kwargs)
except:
if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 1:
- pydev_log.exception('Error running: %s' % (' '.join(cmdline)))
+ pydev_log.exception("Error running: %s" % (" ".join(cmdline)))
return None
def _call(self, cmdline, **kwargs):
@@ -1072,7 +1119,7 @@ def _call(self, cmdline, **kwargs):
subprocess.check_call(cmdline, **kwargs)
except:
if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 1:
- pydev_log.exception('Error running: %s' % (' '.join(cmdline)))
+ pydev_log.exception("Error running: %s" % (" ".join(cmdline)))
def set_terminate_child_processes(self, py_db, terminate_child_processes):
py_db.terminate_child_processes = terminate_child_processes
@@ -1081,19 +1128,19 @@ def set_terminate_keyboard_interrupt(self, py_db, terminate_keyboard_interrupt):
py_db.terminate_keyboard_interrupt = terminate_keyboard_interrupt
def terminate_process(self, py_db):
- '''
+ """
Terminates the current process (and child processes if the option to also terminate
child processes is enabled).
- '''
+ """
try:
if py_db.terminate_child_processes:
- pydev_log.debug('Terminating child processes.')
+ pydev_log.debug("Terminating child processes.")
if IS_WINDOWS:
self._terminate_child_processes_windows(py_db.dont_terminate_child_pids)
else:
self._terminate_child_processes_linux_and_mac(py_db.dont_terminate_child_pids)
finally:
- pydev_log.debug('Exiting process (os._exit(0)).')
+ pydev_log.debug("Exiting process (os._exit(0)).")
os._exit(0)
def _terminate_if_commands_processed(self, py_db):
@@ -1120,16 +1167,18 @@ def _list_ppid_and_pid():
_TH32CS_SNAPPROCESS = 0x00000002
class PROCESSENTRY32(ctypes.Structure):
- _fields_ = [("dwSize", ctypes.c_uint32),
- ("cntUsage", ctypes.c_uint32),
- ("th32ProcessID", ctypes.c_uint32),
- ("th32DefaultHeapID", ctypes.c_size_t),
- ("th32ModuleID", ctypes.c_uint32),
- ("cntThreads", ctypes.c_uint32),
- ("th32ParentProcessID", ctypes.c_uint32),
- ("pcPriClassBase", ctypes.c_long),
- ("dwFlags", ctypes.c_uint32),
- ("szExeFile", ctypes.c_char * 260)]
+ _fields_ = [
+ ("dwSize", ctypes.c_uint32),
+ ("cntUsage", ctypes.c_uint32),
+ ("th32ProcessID", ctypes.c_uint32),
+ ("th32DefaultHeapID", ctypes.c_size_t),
+ ("th32ModuleID", ctypes.c_uint32),
+ ("cntThreads", ctypes.c_uint32),
+ ("th32ParentProcessID", ctypes.c_uint32),
+ ("pcPriClassBase", ctypes.c_long),
+ ("dwFlags", ctypes.c_uint32),
+ ("szExeFile", ctypes.c_char * 260),
+ ]
kernel32 = ctypes.windll.kernel32
snapshot = kernel32.CreateToolhelp32Snapshot(_TH32CS_SNAPPROCESS, 0)
@@ -1138,7 +1187,7 @@ class PROCESSENTRY32(ctypes.Structure):
process_entry = PROCESSENTRY32()
process_entry.dwSize = ctypes.sizeof(PROCESSENTRY32)
if not kernel32.Process32First(ctypes.c_void_p(snapshot), ctypes.byref(process_entry)):
- pydev_log.critical('Process32First failed (getting process from CreateToolhelp32Snapshot).')
+ pydev_log.critical("Process32First failed (getting process from CreateToolhelp32Snapshot).")
else:
while True:
ppid_and_pids.append((process_entry.th32ParentProcessID, process_entry.th32ProcessID))
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py
index d92fccf52..7d4d02202 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py
@@ -5,7 +5,6 @@
class ExceptionBreakpoint(object):
-
def __init__(
self,
qname,
@@ -15,8 +14,8 @@ def __init__(
notify_on_unhandled_exceptions,
notify_on_user_unhandled_exceptions,
notify_on_first_raise_only,
- ignore_libraries
- ):
+ ignore_libraries,
+ ):
exctype = get_exception_class(qname)
self.qname = qname
if exctype is not None:
@@ -46,7 +45,6 @@ def handle_hit_condition(self, frame):
class LineBreakpoint(object):
-
def __init__(self, breakpoint_id, line, condition, func_name, expression, suspend_policy="NONE", hit_condition=None, is_logpoint=False):
self.breakpoint_id = breakpoint_id
self.line = line
@@ -69,7 +67,7 @@ def handle_hit_condition(self, frame):
ret = False
with self._hit_condition_lock:
self._hit_count += 1
- expr = self.hit_condition.replace('@HIT@', str(self._hit_count))
+ expr = self.hit_condition.replace("@HIT@", str(self._hit_count))
try:
ret = bool(eval(expr, frame.f_globals, frame.f_locals))
except Exception:
@@ -78,7 +76,6 @@ def handle_hit_condition(self, frame):
class FunctionBreakpoint(object):
-
def __init__(self, func_name, condition, expression, suspend_policy="NONE", hit_condition=None, is_logpoint=False):
self.condition = condition
self.func_name = func_name
@@ -99,7 +96,7 @@ def handle_hit_condition(self, frame):
ret = False
with self._hit_condition_lock:
self._hit_count += 1
- expr = self.hit_condition.replace('@HIT@', str(self._hit_count))
+ expr = self.hit_condition.replace("@HIT@", str(self._hit_count))
try:
ret = bool(eval(expr, frame.f_globals, frame.f_locals))
except Exception:
@@ -111,7 +108,7 @@ def get_exception_breakpoint(exctype, exceptions):
if not exctype:
exception_full_qname = None
else:
- exception_full_qname = str(exctype.__module__) + '.' + exctype.__name__
+ exception_full_qname = str(exctype.__module__) + "." + exctype.__name__
exc = None
if exceptions is not None:
@@ -170,9 +167,9 @@ def stop_on_unhandled_exception(py_db, thread, additional_info, arg):
try:
additional_info.pydev_message = exception_breakpoint.qname
except:
- additional_info.pydev_message = exception_breakpoint.qname.encode('utf-8')
+ additional_info.pydev_message = exception_breakpoint.qname.encode("utf-8")
- pydev_log.debug('Handling post-mortem stop on exception breakpoint %s' % (exception_breakpoint.qname,))
+ pydev_log.debug("Handling post-mortem stop on exception breakpoint %s" % (exception_breakpoint.qname,))
py_db.do_stop_on_unhandled_exception(thread, user_frame, frames_byid, arg)
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py
index e8c9f5479..8a470444a 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py
@@ -6,7 +6,7 @@
from _pydev_bundle import pydev_log
from types import CodeType
-from _pydevd_frame_eval.vendored.bytecode.instr import _Variable
+from _pydevd_frame_eval.vendored.bytecode.instr import _Variable, Label
from _pydevd_frame_eval.vendored import bytecode
from _pydevd_frame_eval.vendored.bytecode import cfg as bytecode_cfg
import dis
@@ -15,69 +15,85 @@
from _pydevd_bundle.pydevd_constants import KeyifyList, DebugInfoHolder, IS_PY311_OR_GREATER
from bisect import bisect
from collections import deque
+import traceback
# When True, throws errors on unknown bytecodes, when False, ignore those as if they didn't change the stack.
STRICT_MODE = False
+GO_INTO_INNER_CODES = True
+
DEBUG = False
-_BINARY_OPS = set([opname for opname in dis.opname if opname.startswith('BINARY_')])
+_BINARY_OPS = set([opname for opname in dis.opname if opname.startswith("BINARY_")])
_BINARY_OP_MAP = {
- 'BINARY_POWER': '__pow__',
- 'BINARY_MULTIPLY': '__mul__',
- 'BINARY_MATRIX_MULTIPLY': '__matmul__',
- 'BINARY_FLOOR_DIVIDE': '__floordiv__',
- 'BINARY_TRUE_DIVIDE': '__div__',
- 'BINARY_MODULO': '__mod__',
- 'BINARY_ADD': '__add__',
- 'BINARY_SUBTRACT': '__sub__',
- 'BINARY_LSHIFT': '__lshift__',
- 'BINARY_RSHIFT': '__rshift__',
- 'BINARY_AND': '__and__',
- 'BINARY_OR': '__or__',
- 'BINARY_XOR': '__xor__',
- 'BINARY_SUBSCR': '__getitem__',
- 'BINARY_DIVIDE': '__div__'
+ "BINARY_POWER": "__pow__",
+ "BINARY_MULTIPLY": "__mul__",
+ "BINARY_MATRIX_MULTIPLY": "__matmul__",
+ "BINARY_FLOOR_DIVIDE": "__floordiv__",
+ "BINARY_TRUE_DIVIDE": "__div__",
+ "BINARY_MODULO": "__mod__",
+ "BINARY_ADD": "__add__",
+ "BINARY_SUBTRACT": "__sub__",
+ "BINARY_LSHIFT": "__lshift__",
+ "BINARY_RSHIFT": "__rshift__",
+ "BINARY_AND": "__and__",
+ "BINARY_OR": "__or__",
+ "BINARY_XOR": "__xor__",
+ "BINARY_SUBSCR": "__getitem__",
+ "BINARY_DIVIDE": "__div__",
}
_COMP_OP_MAP = {
- '<': '__lt__',
- '<=': '__le__',
- '==': '__eq__',
- '!=': '__ne__',
- '>': '__gt__',
- '>=': '__ge__',
- 'in': '__contains__',
- 'not in': '__contains__',
+ "<": "__lt__",
+ "<=": "__le__",
+ "==": "__eq__",
+ "!=": "__ne__",
+ ">": "__gt__",
+ ">=": "__ge__",
+ "in": "__contains__",
+ "not in": "__contains__",
}
class Target(object):
- __slots__ = ['arg', 'lineno', 'offset', 'children_targets']
-
- def __init__(self, arg, lineno, offset, children_targets=()):
+ __slots__ = ["arg", "lineno", "endlineno", "startcol", "endcol", "offset", "children_targets"]
+
+ def __init__(
+ self,
+ arg,
+ lineno,
+ offset,
+ children_targets=(),
+ # These are optional (only Python 3.11 onwards).
+ endlineno=-1,
+ startcol=-1,
+ endcol=-1,
+ ):
self.arg = arg
self.lineno = lineno
+ self.endlineno = endlineno
+ self.startcol = startcol
+ self.endcol = endcol
+
self.offset = offset
self.children_targets = children_targets
def __repr__(self):
ret = []
for s in self.__slots__:
- ret.append('%s: %s' % (s, getattr(self, s)))
- return 'Target(%s)' % ', '.join(ret)
+ ret.append("%s: %s" % (s, getattr(self, s)))
+ return "Target(%s)" % ", ".join(ret)
__str__ = __repr__
class _TargetIdHashable(object):
-
def __init__(self, target):
self.target = target
def __eq__(self, other):
- if not hasattr(other, 'target'):
+ if not hasattr(other, "target"):
return
return other.target is self.target
@@ -89,9 +105,9 @@ def __hash__(self):
class _StackInterpreter(object):
- '''
+ """
Good reference: https://github.com/python/cpython/blob/fcb55c0037baab6f98f91ee38ce84b6f874f034a/Python/ceval.c
- '''
+ """
def __init__(self, bytecode):
self.bytecode = bytecode
@@ -102,38 +118,42 @@ def __init__(self, bytecode):
self.func_name_id_to_code_object = {}
def __str__(self):
- return 'Stack:\nFunction calls:\n%s\nLoad attrs:\n%s\n' % (self.function_calls, list(self.load_attrs.values()))
+ return "Stack:\nFunction calls:\n%s\nLoad attrs:\n%s\n" % (self.function_calls, list(self.load_attrs.values()))
def _getname(self, instr):
if instr.opcode in _opcode.hascompare:
cmp_op = dis.cmp_op[instr.arg]
- if cmp_op not in ('exception match', 'BAD'):
+ if cmp_op not in ("exception match", "BAD"):
return _COMP_OP_MAP.get(cmp_op, cmp_op)
return instr.arg
def _getcallname(self, instr):
- if instr.name == 'BINARY_SUBSCR':
- return '__getitem__().__call__'
- if instr.name == 'CALL_FUNCTION':
+ if instr.name == "BINARY_SUBSCR":
+ return "__getitem__().__call__"
+ if instr.name == "CALL_FUNCTION":
# Note: previously a '__call__().__call__' was returned, but this was a bit weird
# and on Python 3.9 this construct could appear for some internal things where
# it wouldn't be expected.
# Note: it'd be what we had in func()().
return None
- if instr.name == 'MAKE_FUNCTION':
- return '__func__().__call__'
- if instr.name == 'LOAD_ASSERTION_ERROR':
- return 'AssertionError'
+ if instr.name == "MAKE_FUNCTION":
+ return "__func__().__call__"
+ if instr.name == "LOAD_ASSERTION_ERROR":
+ return "AssertionError"
name = self._getname(instr)
if isinstance(name, CodeType):
name = name.co_qualname # Note: only available for Python 3.11
if isinstance(name, _Variable):
name = name.name
+ if isinstance(name, tuple):
+ # Load attr in Python 3.12 comes with (bool, name)
+ if len(name) == 2 and isinstance(name[0], bool) and isinstance(name[1], str):
+ name = name[1]
if not isinstance(name, str):
return None
- if name.endswith('>'): # xxx., xxx., ...
- return name.split('.')[-1]
+ if name.endswith(">"): # xxx., xxx., ...
+ return name.split(".")[-1]
return name
def _no_stack_change(self, instr):
@@ -203,17 +223,16 @@ def _handle_call_from_instr(self, func_name_instr, func_call_instr):
target = None
if not call_name:
pass # Ignore if we can't identify a name
- elif call_name in ('', '', '', ''):
+ elif call_name in ("", "", "", ""):
code_obj = self.func_name_id_to_code_object[_TargetIdHashable(func_name_instr)]
- if code_obj is not None:
+ if code_obj is not None and GO_INTO_INNER_CODES:
children_targets = _get_smart_step_into_targets(code_obj)
if children_targets:
# i.e.: we have targets inside of a or .
# Note that to actually match this in the debugger we need to do matches on 2 frames,
# the one with the and then the actual target inside the .
target = Target(call_name, func_name_instr.lineno, func_call_instr.offset, children_targets)
- self.function_calls.append(
- target)
+ self.function_calls.append(target)
else:
# Ok, regular call
@@ -221,7 +240,7 @@ def _handle_call_from_instr(self, func_name_instr, func_call_instr):
self.function_calls.append(target)
if DEBUG and target is not None:
- print('Created target', target)
+ print("Created target", target)
self._stack.append(func_call_instr) # Keep the func call as the result
def on_COMPARE_OP(self, instr):
@@ -235,7 +254,7 @@ def on_COMPARE_OP(self, instr):
return
cmp_op = dis.cmp_op[instr.arg]
- if cmp_op not in ('exception match', 'BAD'):
+ if cmp_op not in ("exception match", "BAD"):
self.function_calls.append(Target(self._getname(instr), instr.lineno, instr.offset))
self._stack.append(instr)
@@ -300,7 +319,7 @@ def on_MAKE_FUNCTION(self, instr):
_func_defaults = self._stack.pop()
call_name = self._getcallname(qualname)
- if call_name in ('', '', '', ''):
+ if call_name in ("", "", "", ""):
if isinstance(code_obj_instr.arg, CodeType):
self.func_name_id_to_code_object[_TargetIdHashable(qualname)] = code_obj_instr.arg
self._stack.append(qualname)
@@ -308,6 +327,9 @@ def on_MAKE_FUNCTION(self, instr):
def on_LOAD_FAST(self, instr):
self._stack.append(instr)
+ on_LOAD_FAST_AND_CLEAR = on_LOAD_FAST
+ on_LOAD_FAST_CHECK = on_LOAD_FAST
+
def on_LOAD_ASSERTION_ERROR(self, instr):
self._stack.append(instr)
@@ -321,14 +343,49 @@ def on_CALL_METHOD(self, instr):
func_name_instr = self._stack.pop()
self._handle_call_from_instr(func_name_instr, instr)
+ def on_CALL(self, instr):
+ # pop the actual args
+ for _ in range(instr.arg):
+ self._stack.pop()
+
+ func_name_instr = self._stack.pop()
+ if self._getcallname(func_name_instr) is None:
+ func_name_instr = self._stack.pop()
+
+ if self._stack:
+ peeked = self._stack[-1]
+ if peeked.name == "PUSH_NULL":
+ self._stack.pop()
+
+ self._handle_call_from_instr(func_name_instr, instr)
+
+ def on_CALL_INTRINSIC_1(self, instr):
+ try:
+ func_name_instr = self._stack.pop()
+ except IndexError:
+ return
+
+ if self._stack:
+ peeked = self._stack[-1]
+ if peeked.name == "PUSH_NULL":
+ self._stack.pop()
+
+ self._handle_call_from_instr(func_name_instr, instr)
+
def on_PUSH_NULL(self, instr):
self._stack.append(instr)
+ def on_KW_NAMES(self, instr):
+ return
+
+ def on_RETURN_CONST(self, instr):
+ return
+
def on_CALL_FUNCTION(self, instr):
arg = instr.arg
- argc = arg & 0xff # positional args
- argc += ((arg >> 8) * 2) # keyword args
+ argc = arg & 0xFF # positional args
+ argc += (arg >> 8) * 2 # keyword args
# pop the actual args
for _ in range(argc):
@@ -350,8 +407,8 @@ def on_CALL_FUNCTION_KW(self, instr):
# pop the actual args
arg = instr.arg
- argc = arg & 0xff # positional args
- argc += ((arg >> 8) * 2) # keyword args
+ argc = arg & 0xFF # positional args
+ argc += (arg >> 8) * 2 # keyword args
for _ in range(argc):
self._stack.pop()
@@ -366,8 +423,8 @@ def on_CALL_FUNCTION_VAR(self, instr):
# pop the actual args
arg = instr.arg
- argc = arg & 0xff # positional args
- argc += ((arg >> 8) * 2) # keyword args
+ argc = arg & 0xFF # positional args
+ argc += (arg >> 8) * 2 # keyword args
for _ in range(argc):
self._stack.pop()
@@ -381,8 +438,8 @@ def on_CALL_FUNCTION_VAR_KW(self, instr):
arg = instr.arg
- argc = arg & 0xff # positional args
- argc += ((arg >> 8) * 2) # keyword args
+ argc = arg & 0xFF # positional args
+ argc += (arg >> 8) * 2 # keyword args
# also pop **kwargs
self._stack.pop()
@@ -401,9 +458,9 @@ def on_CALL_FUNCTION_EX(self, instr):
func_name_instr = self._stack.pop()
self._handle_call_from_instr(func_name_instr, instr)
- on_YIELD_VALUE = _no_stack_change
on_GET_AITER = _no_stack_change
on_GET_ANEXT = _no_stack_change
+ on_END_FOR = _no_stack_change
on_END_ASYNC_FOR = _no_stack_change
on_BEFORE_ASYNC_WITH = _no_stack_change
on_SETUP_ASYNC_WITH = _no_stack_change
@@ -435,6 +492,13 @@ def on_JUMP_IF_NOT_EXC_MATCH(self, instr):
except IndexError:
return
+ def on_SWAP(self, instr):
+ i = instr.arg
+ try:
+ self._stack[-i], self._stack[-1] = self._stack[-1], self._stack[-i]
+ except:
+ pass
+
def on_ROT_TWO(self, instr):
try:
p0 = self._stack.pop()
@@ -520,6 +584,7 @@ def on_BUILD_CONST_KEY_MAP(self, instr):
self.on_POP_TOP(instr) # value
self._stack.append(instr)
+ on_YIELD_VALUE = on_POP_TOP
on_RETURN_VALUE = on_POP_TOP
on_POP_JUMP_IF_FALSE = on_POP_TOP
on_POP_JUMP_IF_TRUE = on_POP_TOP
@@ -575,6 +640,8 @@ def on_RAISE_VARARGS(self, instr):
on_POP_BLOCK = _no_stack_change
on_JUMP_FORWARD = _no_stack_change
+ on_JUMP_BACKWARD = _no_stack_change
+ on_JUMP_BACKWARD_NO_INTERRUPT = _no_stack_change
on_POP_EXCEPT = _no_stack_change
on_SETUP_EXCEPT = _no_stack_change
on_WITH_EXCEPT_START = _no_stack_change
@@ -662,6 +729,7 @@ def on_DELETE_SUBSCR(self, instr):
# some evaluation.
on_PRINT_EXPR = on_POP_TOP
+ on_LABEL = _no_stack_change
on_UNARY_POSITIVE = _no_stack_change
on_UNARY_NEGATIVE = _no_stack_change
on_UNARY_NOT = _no_stack_change
@@ -672,9 +740,9 @@ def on_DELETE_SUBSCR(self, instr):
def _get_smart_step_into_targets(code):
- '''
+ """
:return list(Target)
- '''
+ """
b = bytecode.Bytecode.from_code(code)
cfg = bytecode_cfg.ControlFlowGraph.from_bytecode(b)
@@ -682,33 +750,39 @@ def _get_smart_step_into_targets(code):
for block in cfg:
if DEBUG:
- print('\nStart block----')
+ print("\nStart block----")
stack = _StackInterpreter(block)
for instr in block:
+ if isinstance(instr, (Label,)):
+ # No name for these
+ continue
try:
- func_name = 'on_%s' % (instr.name,)
+ func_name = "on_%s" % (instr.name,)
func = getattr(stack, func_name, None)
- if DEBUG:
- if instr.name != 'CACHE': # Filter the ones we don't want to see.
- print('\nWill handle: ', instr, '>>', stack._getname(instr), '<<')
- print('Current stack:')
- for entry in stack._stack:
- print(' arg:', stack._getname(entry), '(', entry, ')')
-
if func is None:
if STRICT_MODE:
- raise AssertionError('%s not found.' % (func_name,))
+ raise AssertionError("%s not found." % (func_name,))
else:
+ if DEBUG:
+ print("Skipping: %s." % (func_name,))
+
continue
func(instr)
+
+ if DEBUG:
+ if instr.name != "CACHE": # Filter the ones we don't want to see.
+ print("\nHandled: ", instr, ">>", stack._getname(instr), "<<")
+ print("New stack:")
+ for entry in stack._stack:
+ print(" arg:", stack._getname(entry), "(", entry, ")")
except:
if STRICT_MODE:
raise # Error in strict mode.
else:
# In non-strict mode, log it (if in verbose mode) and keep on going.
if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 2:
- pydev_log.exception('Exception computing step into targets (handled).')
+ pydev_log.exception("Exception computing step into targets (handled).")
ret.extend(stack.function_calls)
# No longer considering attr loads as calls (while in theory sometimes it's possible
@@ -717,6 +791,8 @@ def _get_smart_step_into_targets(code):
# step into from stepping into properties).
# ret.extend(stack.load_attrs.values())
+ if DEBUG:
+ print("\nEnd block----")
return ret
@@ -725,12 +801,15 @@ def _get_smart_step_into_targets(code):
# to inspect the parent frame for frame.f_lasti to know where we actually are (as the
# caller name may not always match the new frame name).
class Variant(object):
- __slots__ = ['name', 'is_visited', 'line', 'offset', 'call_order', 'children_variants', 'parent']
+ __slots__ = ["name", "is_visited", "line", "offset", "call_order", "children_variants", "parent", "endlineno", "startcol", "endcol"]
- def __init__(self, name, is_visited, line, offset, call_order, children_variants=None):
+ def __init__(self, name, is_visited, line, offset, call_order, children_variants=None, endlineno=-1, startcol=-1, endcol=-1):
self.name = name
self.is_visited = is_visited
self.line = line
+ self.endlineno = endlineno
+ self.startcol = startcol
+ self.endcol = endcol
self.offset = offset
self.call_order = call_order
self.children_variants = children_variants
@@ -742,32 +821,32 @@ def __init__(self, name, is_visited, line, offset, call_order, children_variants
def __repr__(self):
ret = []
for s in self.__slots__:
- if s == 'parent':
+ if s == "parent":
try:
parent = self.parent
except AttributeError:
- ret.append('%s: ' % (s,))
+ ret.append("%s: " % (s,))
else:
if parent is None:
- ret.append('parent: None')
+ ret.append("parent: None")
else:
- ret.append('parent: %s (%s)' % (parent.name, parent.offset))
+ ret.append("parent: %s (%s)" % (parent.name, parent.offset))
continue
- if s == 'children_variants':
- ret.append('children_variants: %s' % (len(self.children_variants) if self.children_variants else 0))
+ if s == "children_variants":
+ ret.append("children_variants: %s" % (len(self.children_variants) if self.children_variants else 0))
continue
try:
- ret.append('%s: %s' % (s, getattr(self, s)))
+ ret.append("%s= %s" % (s, getattr(self, s)))
except AttributeError:
- ret.append('%s: ' % (s,))
- return 'Variant(%s)' % ', '.join(ret)
+ ret.append("%s: " % (s,))
+ return "Variant(%s)" % ", ".join(ret)
__str__ = __repr__
-def _convert_target_to_variant(target, start_line, end_line, call_order_cache, lasti, base):
+def _convert_target_to_variant(target, start_line, end_line, call_order_cache: dict, lasti: int, base: int):
name = target.arg
if not isinstance(name, str):
return
@@ -784,10 +863,21 @@ def _convert_target_to_variant(target, start_line, end_line, call_order_cache, l
children_variants = None
if children_targets:
children_variants = [
- _convert_target_to_variant(child, start_line, end_line, call_order_cache, lasti, base)
- for child in target.children_targets]
-
- return Variant(name, is_visited, target.lineno - base, target.offset, call_order, children_variants)
+ _convert_target_to_variant(child, start_line, end_line, call_order_cache, lasti, base) for child in target.children_targets
+ ]
+
+ return Variant(
+ name,
+ is_visited,
+ target.lineno - base,
+ target.offset,
+ call_order,
+ children_variants,
+ # Only really matter in Python 3.11
+ target.endlineno - base if target.endlineno >= 0 else -1,
+ target.startcol,
+ target.endcol,
+ )
def calculate_smart_step_into_variants(frame, start_line, end_line, base=0):
@@ -801,13 +891,18 @@ def calculate_smart_step_into_variants(frame, start_line, end_line, base=0):
:note: it's guaranteed that the offsets appear in order.
:raise: :py:class:`RuntimeError` if failed to parse the bytecode or if dis cannot be used.
"""
+ if IS_PY311_OR_GREATER:
+ from . import pydevd_bytecode_utils_py311
+
+ return pydevd_bytecode_utils_py311.calculate_smart_step_into_variants(frame, start_line, end_line, base)
+
variants = []
code = frame.f_code
lasti = frame.f_lasti
call_order_cache = {}
if DEBUG:
- print('dis.dis:')
+ print("dis.dis:")
if IS_PY311_OR_GREATER:
dis.dis(code, show_caches=False)
else:
@@ -834,7 +929,7 @@ def get_smart_step_into_variant_from_frame_offset(frame_f_lasti, variants):
if not variants:
return None
- i = bisect(KeyifyList(variants, lambda entry:entry.offset), frame_f_lasti)
+ i = bisect(KeyifyList(variants, lambda entry: entry.offset), frame_f_lasti)
if i == 0:
return None
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py
new file mode 100644
index 000000000..7ebaa7fb3
--- /dev/null
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py
@@ -0,0 +1,105 @@
+from _pydevd_bundle.pydevd_constants import IS_PY311_OR_GREATER
+import dis
+from types import CodeType
+from collections import namedtuple
+
+DEBUG = False
+
+_Pos = namedtuple("_Pos", "lineno endlineno startcol endcol")
+
+
+def _is_inside(item_pos: _Pos, container_pos: _Pos):
+ if item_pos.lineno < container_pos.lineno or item_pos.endlineno > container_pos.endlineno:
+ return False
+
+ if item_pos.lineno == container_pos.lineno:
+ if item_pos.startcol < container_pos.startcol:
+ return False
+
+ if item_pos.endlineno == container_pos.endlineno:
+ if item_pos.endcol > container_pos.endcol:
+ return False
+
+ # Not outside, must be inside.
+ return True
+
+
+def _get_smart_step_into_targets(code):
+ import linecache
+ from .pydevd_bytecode_utils import Target
+
+ filename = code.co_filename
+
+ targets_root = []
+ children = []
+ for instr in dis.Bytecode(code):
+ if instr.opname == "LOAD_CONST":
+ if isinstance(instr.argval, CodeType):
+ children.append(_get_smart_step_into_targets(instr.argval))
+
+ elif instr.opname in ("CALL", "CALL_INTRINSIC_1"):
+ positions = instr.positions
+ if positions.lineno is None:
+ continue
+ if positions.end_lineno is None:
+ continue
+ lines = []
+ for lineno in range(positions.lineno, positions.end_lineno + 1):
+ lines.append(linecache.getline(filename, lineno))
+
+ startcol = positions.col_offset
+ endcol = positions.end_col_offset
+
+ if positions.lineno == positions.end_lineno:
+ lines[0] = lines[0][startcol:endcol]
+ else:
+ lines[0] = lines[0][startcol:]
+ lines[-1] = lines[-1][:endcol]
+
+ pos = _Pos(positions.lineno, positions.end_lineno, startcol, endcol)
+ targets_root.append(Target("".join(lines), positions.lineno, instr.offset, [], positions.end_lineno, startcol, endcol))
+
+ for targets in children:
+ for child_target in targets:
+ pos = _Pos(child_target.lineno, child_target.endlineno, child_target.startcol, child_target.endcol)
+
+ for outer_target in targets_root:
+ outer_pos = _Pos(outer_target.lineno, outer_target.endlineno, outer_target.startcol, outer_target.endcol)
+ if _is_inside(pos, outer_pos):
+ outer_target.children_targets.append(child_target)
+ break
+ return targets_root
+
+
+def calculate_smart_step_into_variants(frame, start_line, end_line, base=0):
+ """
+ Calculate smart step into variants for the given line range.
+ :param frame:
+ :type frame: :py:class:`types.FrameType`
+ :param start_line:
+ :param end_line:
+ :return: A list of call names from the first to the last.
+ :note: it's guaranteed that the offsets appear in order.
+ :raise: :py:class:`RuntimeError` if failed to parse the bytecode or if dis cannot be used.
+ """
+ from .pydevd_bytecode_utils import _convert_target_to_variant
+
+ variants = []
+ code = frame.f_code
+ lasti = frame.f_lasti
+
+ call_order_cache = {}
+ if DEBUG:
+ print("dis.dis:")
+ if IS_PY311_OR_GREATER:
+ dis.dis(code, show_caches=False)
+ else:
+ dis.dis(code)
+
+ for target in _get_smart_step_into_targets(code):
+ variant = _convert_target_to_variant(target, start_line, end_line, call_order_cache, lasti, base)
+ if variant is None:
+ continue
+ variants.append(variant)
+
+ return variants
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py
index 40feb7675..6b6e97752 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py
@@ -15,7 +15,6 @@
class _Stack(object):
-
def __init__(self):
self._contents = []
@@ -35,9 +34,8 @@ def pop(self):
class _Token(object):
-
def __init__(self, i_line, instruction=None, tok=_SENTINEL, priority=0, after=None, end_of_line=False):
- '''
+ """
:param i_line:
:param instruction:
:param tok:
@@ -45,18 +43,18 @@ def __init__(self, i_line, instruction=None, tok=_SENTINEL, priority=0, after=No
:param after:
:param end_of_line:
Marker to signal only after all the other tokens have been written.
- '''
+ """
self.i_line = i_line
if tok is not _SENTINEL:
self.tok = tok
else:
if instruction is not None:
if inspect.iscode(instruction.argval):
- self.tok = ''
+ self.tok = ""
else:
self.tok = str(instruction.argval)
else:
- raise AssertionError('Either the tok or the instruction is needed.')
+ raise AssertionError("Either the tok or the instruction is needed.")
self.instruction = instruction
self.priority = priority
self.end_of_line = end_of_line
@@ -72,7 +70,7 @@ def mark_after(self, v):
self._after_handler_tokens.add(v)
else:
- raise AssertionError('Unhandled: %s' % (v,))
+ raise AssertionError("Unhandled: %s" % (v,))
def get_after_tokens(self):
ret = self._after_tokens.copy()
@@ -81,13 +79,12 @@ def get_after_tokens(self):
return ret
def __repr__(self):
- return 'Token(%s, after: %s)' % (self.tok, self.get_after_tokens())
+ return "Token(%s, after: %s)" % (self.tok, self.get_after_tokens())
__str__ = __repr__
class _Writer(object):
-
def __init__(self):
self.line_to_contents = {}
self.all_tokens = set()
@@ -114,7 +111,6 @@ def write(self, line, token):
class _BaseHandler(object):
-
def __init__(self, i_line, instruction, stack, writer, disassembler):
self.i_line = i_line
self.instruction = instruction
@@ -149,13 +145,11 @@ def _register(cls):
class _BasePushHandler(_BaseHandler):
-
def _handle(self):
self.stack.push(self)
class _BaseLoadHandler(_BasePushHandler):
-
def _handle(self):
_BasePushHandler._handle(self)
self.tokens = [_Token(self.i_line, self.instruction)]
@@ -188,9 +182,10 @@ class _LoadFast(_BaseLoadHandler):
@_register
class _GetIter(_BaseHandler):
- '''
+ """
Implements TOS = iter(TOS).
- '''
+ """
+
opname = "GET_ITER"
iter_target = None
@@ -202,11 +197,12 @@ def _handle(self):
@_register
class _ForIter(_BaseHandler):
- '''
+ """
TOS is an iterator. Call its __next__() method. If this yields a new value, push it on the stack
(leaving the iterator below it). If the iterator indicates it is exhausted TOS is popped, and
the byte code counter is incremented by delta.
- '''
+ """
+
opname = "FOR_ITER"
iter_in = None
@@ -216,7 +212,7 @@ def _handle(self):
self.stack.push(self)
def store_in_name(self, store_name):
- for_token = _Token(self.i_line, None, 'for ')
+ for_token = _Token(self.i_line, None, "for ")
self.tokens.append(for_token)
prev = for_token
@@ -224,7 +220,7 @@ def store_in_name(self, store_name):
self.tokens.append(t_name)
prev = t_name
- in_token = _Token(store_name.i_line, None, ' in ', after=prev)
+ in_token = _Token(store_name.i_line, None, " in ", after=prev)
self.tokens.append(in_token)
prev = in_token
@@ -236,7 +232,7 @@ def store_in_name(self, store_name):
prev = t
self.tokens.extend(self.iter_in.tokens)
- colon_token = _Token(self.i_line, None, ':', after=prev)
+ colon_token = _Token(self.i_line, None, ":", after=prev)
self.tokens.append(colon_token)
prev = for_token
@@ -245,10 +241,10 @@ def store_in_name(self, store_name):
@_register
class _StoreName(_BaseHandler):
- '''
+ """
Implements name = TOS. namei is the index of name in the attribute co_names of the code object.
The compiler tries to use STORE_FAST or STORE_GLOBAL if possible.
- '''
+ """
opname = "STORE_NAME"
@@ -264,7 +260,7 @@ def _handle(self):
line = min(line, t.i_line)
t_name = _Token(line, self.instruction)
- t_equal = _Token(line, None, '=', after=t_name)
+ t_equal = _Token(line, None, "=", after=t_name)
self.tokens.append(t_name)
self.tokens.append(t_equal)
@@ -286,7 +282,7 @@ class _ReturnValue(_BaseHandler):
def _handle(self):
v = self.stack.pop()
- return_token = _Token(self.i_line, None, 'return ', end_of_line=True)
+ return_token = _Token(self.i_line, None, "return ", end_of_line=True)
self.tokens.append(return_token)
for token in v.tokens:
token.mark_after(return_token)
@@ -324,7 +320,7 @@ def _handle(self):
for t in name.tokens:
self.tokens.append(t)
- tok_open_parens = _Token(name.i_line, None, '(', after=name)
+ tok_open_parens = _Token(name.i_line, None, "(", after=name)
self.tokens.append(tok_open_parens)
prev = tok_open_parens
@@ -337,11 +333,11 @@ def _handle(self):
prev = arg
if i > 0:
- comma_token = _Token(prev.i_line, None, ',', after=prev)
+ comma_token = _Token(prev.i_line, None, ",", after=prev)
self.tokens.append(comma_token)
prev = comma_token
- tok_close_parens = _Token(max_line, None, ')', after=prev)
+ tok_close_parens = _Token(max_line, None, ")", after=prev)
self.tokens.append(tok_close_parens)
self._write_tokens()
@@ -380,10 +376,10 @@ def _handle(self):
if self.instruction.argval & 0x01:
default_node = stack.pop()
- is_lambda = self.is_lambda = '' in [x.tok for x in self.qualified_name.tokens]
+ is_lambda = self.is_lambda = "" in [x.tok for x in self.qualified_name.tokens]
if not is_lambda:
- def_token = _Token(self.i_line, None, 'def ')
+ def_token = _Token(self.i_line, None, "def ")
self.tokens.append(def_token)
for token in self.qualified_name.tokens:
@@ -392,20 +388,22 @@ def _handle(self):
token.mark_after(def_token)
prev = token
- open_parens_token = _Token(self.i_line, None, '(', after=prev)
+ open_parens_token = _Token(self.i_line, None, "(", after=prev)
self.tokens.append(open_parens_token)
prev = open_parens_token
code = self.code.instruction.argval
if default_node:
- defaults = ([_SENTINEL] * (len(code.co_varnames) - len(default_node.instruction.argval))) + list(default_node.instruction.argval)
+ defaults = ([_SENTINEL] * (len(code.co_varnames) - len(default_node.instruction.argval))) + list(
+ default_node.instruction.argval
+ )
else:
defaults = [_SENTINEL] * len(code.co_varnames)
for i, arg in enumerate(code.co_varnames):
if i > 0:
- comma_token = _Token(prev.i_line, None, ', ', after=prev)
+ comma_token = _Token(prev.i_line, None, ", ", after=prev)
self.tokens.append(comma_token)
prev = comma_token
@@ -414,7 +412,7 @@ def _handle(self):
default = defaults[i]
if default is not _SENTINEL:
- eq_token = _Token(default_node.i_line, None, '=', after=prev)
+ eq_token = _Token(default_node.i_line, None, "=", after=prev)
self.tokens.append(eq_token)
prev = eq_token
@@ -422,7 +420,7 @@ def _handle(self):
self.tokens.append(default_token)
prev = default_token
- tok_close_parens = _Token(prev.i_line, None, '):', after=prev)
+ tok_close_parens = _Token(prev.i_line, None, "):", after=prev)
self.tokens.append(tok_close_parens)
self._write_tokens()
@@ -441,12 +439,10 @@ def _print_after_info(line_contents, stream=None):
for token in line_contents:
after_tokens = token.get_after_tokens()
if after_tokens:
- s = '%s after: %s\n' % (
- repr(token.tok),
- ('"' + '", "'.join(t.tok for t in token.get_after_tokens()) + '"'))
+ s = "%s after: %s\n" % (repr(token.tok), ('"' + '", "'.join(t.tok for t in token.get_after_tokens()) + '"'))
stream.write(s)
else:
- stream.write('%s (NO REQUISITES)' % repr(token.tok))
+ stream.write("%s (NO REQUISITES)" % repr(token.tok))
def _compose_line_contents(line_contents, previous_line_tokens):
@@ -495,13 +491,12 @@ def _compose_line_contents(line_contents, previous_line_tokens):
stream = StringIO()
_print_after_info(line_contents, stream)
- pydev_log.critical('Error. After markers are not correct:\n%s', stream.getvalue())
+ pydev_log.critical("Error. After markers are not correct:\n%s", stream.getvalue())
break
- return ''.join(lst)
+ return "".join(lst)
class _PyCodeToSource(object):
-
def __init__(self, co, memo=None):
if memo is None:
memo = {}
@@ -542,7 +537,7 @@ def build_line_to_contents(self):
def merge_code(self, code):
if DEBUG:
- print('merge code ----')
+ print("merge code ----")
# for d in dir(code):
# if not d.startswith('_'):
# print(d, getattr(code, d))
@@ -552,7 +547,7 @@ def merge_code(self, code):
lines.append(line)
self.writer.get_line(line).extend(contents)
if DEBUG:
- print('end merge code ----')
+ print("end merge code ----")
return lines
def disassemble(self):
@@ -560,14 +555,14 @@ def disassemble(self):
line_to_contents = self.build_line_to_contents()
stream = StringIO()
last_line = 0
- indent = ''
+ indent = ""
previous_line_tokens = set()
for i_line, contents in sorted(line_to_contents.items()):
while last_line < i_line - 1:
if show_lines:
- stream.write(u"%s.\n" % (last_line + 1,))
+ stream.write("%s.\n" % (last_line + 1,))
else:
- stream.write(u"\n")
+ stream.write("\n")
last_line += 1
line_contents = []
@@ -575,24 +570,24 @@ def disassemble(self):
for part in contents:
if part is INDENT_MARKER:
if DEBUG:
- print('found indent', i_line)
- indent += ' '
+ print("found indent", i_line)
+ indent += " "
continue
if part is DEDENT_MARKER:
if DEBUG:
- print('found dedent', i_line)
+ print("found dedent", i_line)
dedents_found += 1
continue
line_contents.append(part)
s = indent + _compose_line_contents(line_contents, previous_line_tokens)
if show_lines:
- stream.write(u"%s. %s\n" % (i_line, s))
+ stream.write("%s. %s\n" % (i_line, s))
else:
- stream.write(u"%s\n" % s)
+ stream.write("%s\n" % s)
if dedents_found:
- indent = indent[:-(4 * dedents_found)]
+ indent = indent[: -(4 * dedents_found)]
last_line = i_line
return stream.getvalue()
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py
index 86744d76f..2958565ae 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py
@@ -4,22 +4,20 @@
from collections import namedtuple
from _pydev_bundle import pydev_log
-from opcode import (EXTENDED_ARG, HAVE_ARGUMENT, cmp_op, hascompare, hasconst,
- hasfree, hasjrel, haslocal, hasname, opname)
+from opcode import EXTENDED_ARG, HAVE_ARGUMENT, cmp_op, hascompare, hasconst, hasfree, hasjrel, haslocal, hasname, opname
from io import StringIO
class TryExceptInfo(object):
-
def __init__(self, try_line, ignore=False):
- '''
+ """
:param try_line:
:param ignore:
Usually we should ignore any block that's not a try..except
(this can happen for finally blocks, with statements, etc, for
which we create temporary entries).
- '''
+ """
self.try_line = try_line
self.ignore = ignore
self.except_line = -1
@@ -38,29 +36,28 @@ def is_line_in_except_block(self, line):
def __str__(self):
lst = [
- '{try:',
+ "{try:",
str(self.try_line),
- ' except ',
+ " except ",
str(self.except_line),
- ' end block ',
+ " end block ",
str(self.except_end_line),
]
if self.raise_lines_in_except:
- lst.append(' raises: %s' % (', '.join(str(x) for x in self.raise_lines_in_except),))
+ lst.append(" raises: %s" % (", ".join(str(x) for x in self.raise_lines_in_except),))
- lst.append('}')
- return ''.join(lst)
+ lst.append("}")
+ return "".join(lst)
__repr__ = __str__
class ReturnInfo(object):
-
def __init__(self, return_line):
self.return_line = return_line
def __str__(self):
- return '{return: %s}' % (self.return_line,)
+ return "{return: %s}" % (self.return_line,)
__repr__ = __str__
@@ -75,15 +72,14 @@ def _get_line(op_offset_to_line, op_offset, firstlineno, search=False):
return ret
else:
op_offset -= 1
- raise AssertionError('Unable to find line for offset: %s.Info: %s' % (
- op_offset_original, op_offset_to_line))
+ raise AssertionError("Unable to find line for offset: %s.Info: %s" % (op_offset_original, op_offset_to_line))
def debug(s):
pass
-_Instruction = namedtuple('_Instruction', 'opname, opcode, starts_line, argval, is_jump_target, offset, argrepr')
+_Instruction = namedtuple("_Instruction", "opname, opcode, starts_line, argval, is_jump_target, offset, argrepr")
def _iter_as_bytecode_as_instructions_py2(co):
@@ -107,7 +103,15 @@ def _iter_as_bytecode_as_instructions_py2(co):
i = i + 1
if op < HAVE_ARGUMENT:
- yield _Instruction(curr_op_name, op, _get_line(op_offset_to_line, initial_bytecode_offset, 0), None, is_jump_target, initial_bytecode_offset, '')
+ yield _Instruction(
+ curr_op_name,
+ op,
+ _get_line(op_offset_to_line, initial_bytecode_offset, 0),
+ None,
+ is_jump_target,
+ initial_bytecode_offset,
+ "",
+ )
else:
oparg = ord(code[i]) + ord(code[i + 1]) * 256 + extended_arg
@@ -118,22 +122,78 @@ def _iter_as_bytecode_as_instructions_py2(co):
extended_arg = oparg * 65536
if op in hasconst:
- yield _Instruction(curr_op_name, op, _get_line(op_offset_to_line, initial_bytecode_offset, 0), co.co_consts[oparg], is_jump_target, initial_bytecode_offset, repr(co.co_consts[oparg]))
+ yield _Instruction(
+ curr_op_name,
+ op,
+ _get_line(op_offset_to_line, initial_bytecode_offset, 0),
+ co.co_consts[oparg],
+ is_jump_target,
+ initial_bytecode_offset,
+ repr(co.co_consts[oparg]),
+ )
elif op in hasname:
- yield _Instruction(curr_op_name, op, _get_line(op_offset_to_line, initial_bytecode_offset, 0), co.co_names[oparg], is_jump_target, initial_bytecode_offset, str(co.co_names[oparg]))
+ yield _Instruction(
+ curr_op_name,
+ op,
+ _get_line(op_offset_to_line, initial_bytecode_offset, 0),
+ co.co_names[oparg],
+ is_jump_target,
+ initial_bytecode_offset,
+ str(co.co_names[oparg]),
+ )
elif op in hasjrel:
argval = i + oparg
- yield _Instruction(curr_op_name, op, _get_line(op_offset_to_line, initial_bytecode_offset, 0), argval, is_jump_target, initial_bytecode_offset, "to " + repr(argval))
+ yield _Instruction(
+ curr_op_name,
+ op,
+ _get_line(op_offset_to_line, initial_bytecode_offset, 0),
+ argval,
+ is_jump_target,
+ initial_bytecode_offset,
+ "to " + repr(argval),
+ )
elif op in haslocal:
- yield _Instruction(curr_op_name, op, _get_line(op_offset_to_line, initial_bytecode_offset, 0), co.co_varnames[oparg], is_jump_target, initial_bytecode_offset, str(co.co_varnames[oparg]))
+ yield _Instruction(
+ curr_op_name,
+ op,
+ _get_line(op_offset_to_line, initial_bytecode_offset, 0),
+ co.co_varnames[oparg],
+ is_jump_target,
+ initial_bytecode_offset,
+ str(co.co_varnames[oparg]),
+ )
elif op in hascompare:
- yield _Instruction(curr_op_name, op, _get_line(op_offset_to_line, initial_bytecode_offset, 0), cmp_op[oparg], is_jump_target, initial_bytecode_offset, cmp_op[oparg])
+ yield _Instruction(
+ curr_op_name,
+ op,
+ _get_line(op_offset_to_line, initial_bytecode_offset, 0),
+ cmp_op[oparg],
+ is_jump_target,
+ initial_bytecode_offset,
+ cmp_op[oparg],
+ )
elif op in hasfree:
if free is None:
free = co.co_cellvars + co.co_freevars
- yield _Instruction(curr_op_name, op, _get_line(op_offset_to_line, initial_bytecode_offset, 0), free[oparg], is_jump_target, initial_bytecode_offset, str(free[oparg]))
+ yield _Instruction(
+ curr_op_name,
+ op,
+ _get_line(op_offset_to_line, initial_bytecode_offset, 0),
+ free[oparg],
+ is_jump_target,
+ initial_bytecode_offset,
+ str(free[oparg]),
+ )
else:
- yield _Instruction(curr_op_name, op, _get_line(op_offset_to_line, initial_bytecode_offset, 0), oparg, is_jump_target, initial_bytecode_offset, str(oparg))
+ yield _Instruction(
+ curr_op_name,
+ op,
+ _get_line(op_offset_to_line, initial_bytecode_offset, 0),
+ oparg,
+ is_jump_target,
+ initial_bytecode_offset,
+ str(oparg),
+ )
def iter_instructions(co):
@@ -153,7 +213,7 @@ def iter_instructions(co):
def collect_return_info(co, use_func_first_line=False):
- if not hasattr(co, 'co_lines') and not hasattr(co, 'co_lnotab'):
+ if not hasattr(co, "co_lines") and not hasattr(co, "co_lnotab"):
return []
if use_func_first_line:
@@ -165,7 +225,7 @@ def collect_return_info(co, use_func_first_line=False):
op_offset_to_line = dict(dis.findlinestarts(co))
for instruction in iter_instructions(co):
curr_op_name = instruction.opname
- if curr_op_name == 'RETURN_VALUE':
+ if curr_op_name in ("RETURN_VALUE", "RETURN_CONST"):
lst.append(ReturnInfo(_get_line(op_offset_to_line, instruction.offset, firstlineno, search=True)))
return lst
@@ -174,35 +234,36 @@ def collect_return_info(co, use_func_first_line=False):
if sys.version_info[:2] <= (3, 9):
class _TargetInfo(object):
-
def __init__(self, except_end_instruction, jump_if_not_exc_instruction=None):
self.except_end_instruction = except_end_instruction
self.jump_if_not_exc_instruction = jump_if_not_exc_instruction
def __str__(self):
- msg = ['_TargetInfo(']
+ msg = ["_TargetInfo("]
msg.append(self.except_end_instruction.opname)
if self.jump_if_not_exc_instruction:
- msg.append(' - ')
+ msg.append(" - ")
msg.append(self.jump_if_not_exc_instruction.opname)
- msg.append('(')
+ msg.append("(")
msg.append(str(self.jump_if_not_exc_instruction.argval))
- msg.append(')')
- msg.append(')')
- return ''.join(msg)
+ msg.append(")")
+ msg.append(")")
+ return "".join(msg)
def _get_except_target_info(instructions, exception_end_instruction_index, offset_to_instruction_idx):
- next_3 = [j_instruction.opname for j_instruction in instructions[exception_end_instruction_index:exception_end_instruction_index + 3]]
+ next_3 = [
+ j_instruction.opname for j_instruction in instructions[exception_end_instruction_index : exception_end_instruction_index + 3]
+ ]
# print('next_3:', [(j_instruction.opname, j_instruction.argval) for j_instruction in instructions[exception_end_instruction_index:exception_end_instruction_index + 3]])
- if next_3 == ['POP_TOP', 'POP_TOP', 'POP_TOP']: # try..except without checking exception.
+ if next_3 == ["POP_TOP", "POP_TOP", "POP_TOP"]: # try..except without checking exception.
try:
jump_instruction = instructions[exception_end_instruction_index - 1]
- if jump_instruction.opname not in ('JUMP_FORWARD', 'JUMP_ABSOLUTE'):
+ if jump_instruction.opname not in ("JUMP_FORWARD", "JUMP_ABSOLUTE"):
return None
except IndexError:
pass
- if jump_instruction.opname == 'JUMP_ABSOLUTE':
+ if jump_instruction.opname == "JUMP_ABSOLUTE":
# On latest versions of Python 3 the interpreter has a go-backwards step,
# used to show the initial line of a for/while, etc (which is this
# JUMP_ABSOLUTE)... we're not really interested in it, but rather on where
@@ -211,7 +272,7 @@ def _get_except_target_info(instructions, exception_end_instruction_index, offse
idx = offset_to_instruction_idx[except_end_instruction.argval]
# Search for the POP_EXCEPT which should be at the end of the block.
for pop_except_instruction in reversed(instructions[:idx]):
- if pop_except_instruction.opname == 'POP_EXCEPT':
+ if pop_except_instruction.opname == "POP_EXCEPT":
except_end_instruction = pop_except_instruction
return _TargetInfo(except_end_instruction)
else:
@@ -226,25 +287,25 @@ def _get_except_target_info(instructions, exception_end_instruction_index, offse
# block finishes).
except_end_instruction = instructions[i - 1]
except:
- pydev_log.critical('Error when computing try..except block end.')
+ pydev_log.critical("Error when computing try..except block end.")
return None
return _TargetInfo(except_end_instruction)
- elif next_3 and next_3[0] == 'DUP_TOP': # try..except AssertionError.
- iter_in = instructions[exception_end_instruction_index + 1:]
+ elif next_3 and next_3[0] == "DUP_TOP": # try..except AssertionError.
+ iter_in = instructions[exception_end_instruction_index + 1 :]
for j, jump_if_not_exc_instruction in enumerate(iter_in):
- if jump_if_not_exc_instruction.opname == 'JUMP_IF_NOT_EXC_MATCH':
+ if jump_if_not_exc_instruction.opname == "JUMP_IF_NOT_EXC_MATCH":
# Python 3.9
except_end_instruction = instructions[offset_to_instruction_idx[jump_if_not_exc_instruction.argval]]
return _TargetInfo(except_end_instruction, jump_if_not_exc_instruction)
- elif jump_if_not_exc_instruction.opname == 'COMPARE_OP' and jump_if_not_exc_instruction.argval == 'exception match':
+ elif jump_if_not_exc_instruction.opname == "COMPARE_OP" and jump_if_not_exc_instruction.argval == "exception match":
# Python 3.8 and before
try:
next_instruction = iter_in[j + 1]
except:
continue
- if next_instruction.opname == 'POP_JUMP_IF_FALSE':
+ if next_instruction.opname == "POP_JUMP_IF_FALSE":
except_end_instruction = instructions[offset_to_instruction_idx[next_instruction.argval]]
return _TargetInfo(except_end_instruction, next_instruction)
else:
@@ -256,7 +317,7 @@ def _get_except_target_info(instructions, exception_end_instruction_index, offse
def collect_try_except_info(co, use_func_first_line=False):
# We no longer have 'END_FINALLY', so, we need to do things differently in Python 3.9
- if not hasattr(co, 'co_lines') and not hasattr(co, 'co_lnotab'):
+ if not hasattr(co, "co_lines") and not hasattr(co, "co_lnotab"):
return []
if use_func_first_line:
@@ -277,11 +338,11 @@ def collect_try_except_info(co, use_func_first_line=False):
for i, instruction in enumerate(instructions):
curr_op_name = instruction.opname
- if curr_op_name in ('SETUP_FINALLY', 'SETUP_EXCEPT'): # SETUP_EXCEPT before Python 3.8, SETUP_FINALLY Python 3.8 onwards.
+ if curr_op_name in ("SETUP_FINALLY", "SETUP_EXCEPT"): # SETUP_EXCEPT before Python 3.8, SETUP_FINALLY Python 3.8 onwards.
exception_end_instruction_index = offset_to_instruction_idx[instruction.argval]
jump_instruction = instructions[exception_end_instruction_index - 1]
- if jump_instruction.opname not in ('JUMP_FORWARD', 'JUMP_ABSOLUTE'):
+ if jump_instruction.opname not in ("JUMP_FORWARD", "JUMP_ABSOLUTE"):
continue
except_end_instruction = None
@@ -304,66 +365,64 @@ def collect_try_except_info(co, use_func_first_line=False):
if except_end_instruction is not None:
try_except_info = TryExceptInfo(
- _get_line(op_offset_to_line, instruction.offset, firstlineno, search=True),
- ignore=False
+ _get_line(op_offset_to_line, instruction.offset, firstlineno, search=True), ignore=False
)
try_except_info.except_bytecode_offset = instruction.argval
try_except_info.except_line = _get_line(
- op_offset_to_line,
- try_except_info.except_bytecode_offset,
- firstlineno,
- search=True
+ op_offset_to_line, try_except_info.except_bytecode_offset, firstlineno, search=True
)
try_except_info.except_end_bytecode_offset = except_end_instruction.offset
try_except_info.except_end_line = _get_line(op_offset_to_line, except_end_instruction.offset, firstlineno, search=True)
try_except_info_lst.append(try_except_info)
- for raise_instruction in instructions[i:offset_to_instruction_idx[try_except_info.except_end_bytecode_offset]]:
- if raise_instruction.opname == 'RAISE_VARARGS':
+ for raise_instruction in instructions[i : offset_to_instruction_idx[try_except_info.except_end_bytecode_offset]]:
+ if raise_instruction.opname == "RAISE_VARARGS":
if raise_instruction.argval == 0:
try_except_info.raise_lines_in_except.append(
- _get_line(op_offset_to_line, raise_instruction.offset, firstlineno, search=True))
+ _get_line(op_offset_to_line, raise_instruction.offset, firstlineno, search=True)
+ )
return try_except_info_lst
elif sys.version_info[:2] == (3, 10):
class _TargetInfo(object):
-
def __init__(self, except_end_instruction, jump_if_not_exc_instruction=None):
self.except_end_instruction = except_end_instruction
self.jump_if_not_exc_instruction = jump_if_not_exc_instruction
def __str__(self):
- msg = ['_TargetInfo(']
+ msg = ["_TargetInfo("]
msg.append(self.except_end_instruction.opname)
if self.jump_if_not_exc_instruction:
- msg.append(' - ')
+ msg.append(" - ")
msg.append(self.jump_if_not_exc_instruction.opname)
- msg.append('(')
+ msg.append("(")
msg.append(str(self.jump_if_not_exc_instruction.argval))
- msg.append(')')
- msg.append(')')
- return ''.join(msg)
+ msg.append(")")
+ msg.append(")")
+ return "".join(msg)
def _get_except_target_info(instructions, exception_end_instruction_index, offset_to_instruction_idx):
- next_3 = [j_instruction.opname for j_instruction in instructions[exception_end_instruction_index:exception_end_instruction_index + 3]]
+ next_3 = [
+ j_instruction.opname for j_instruction in instructions[exception_end_instruction_index : exception_end_instruction_index + 3]
+ ]
# print('next_3:', [(j_instruction.opname, j_instruction.argval) for j_instruction in instructions[exception_end_instruction_index:exception_end_instruction_index + 3]])
- if next_3 == ['POP_TOP', 'POP_TOP', 'POP_TOP']: # try..except without checking exception.
+ if next_3 == ["POP_TOP", "POP_TOP", "POP_TOP"]: # try..except without checking exception.
# Previously there was a jump which was able to point where the exception would end. This
# is no longer true, now a bare except doesn't really have any indication in the bytecode
# where the end would be expected if the exception wasn't raised, so, we just blindly
# search for a POP_EXCEPT from the current position.
- for pop_except_instruction in instructions[exception_end_instruction_index + 3:]:
- if pop_except_instruction.opname == 'POP_EXCEPT':
+ for pop_except_instruction in instructions[exception_end_instruction_index + 3 :]:
+ if pop_except_instruction.opname == "POP_EXCEPT":
except_end_instruction = pop_except_instruction
return _TargetInfo(except_end_instruction)
- elif next_3 and next_3[0] == 'DUP_TOP': # try..except AssertionError.
- iter_in = instructions[exception_end_instruction_index + 1:]
+ elif next_3 and next_3[0] == "DUP_TOP": # try..except AssertionError.
+ iter_in = instructions[exception_end_instruction_index + 1 :]
for jump_if_not_exc_instruction in iter_in:
- if jump_if_not_exc_instruction.opname == 'JUMP_IF_NOT_EXC_MATCH':
+ if jump_if_not_exc_instruction.opname == "JUMP_IF_NOT_EXC_MATCH":
# Python 3.9
except_end_instruction = instructions[offset_to_instruction_idx[jump_if_not_exc_instruction.argval]]
return _TargetInfo(except_end_instruction, jump_if_not_exc_instruction)
@@ -376,7 +435,7 @@ def _get_except_target_info(instructions, exception_end_instruction_index, offse
def collect_try_except_info(co, use_func_first_line=False):
# We no longer have 'END_FINALLY', so, we need to do things differently in Python 3.9
- if not hasattr(co, 'co_lines') and not hasattr(co, 'co_lnotab'):
+ if not hasattr(co, "co_lines") and not hasattr(co, "co_lnotab"):
return []
if use_func_first_line:
@@ -397,11 +456,11 @@ def collect_try_except_info(co, use_func_first_line=False):
for i, instruction in enumerate(instructions):
curr_op_name = instruction.opname
- if curr_op_name == 'SETUP_FINALLY':
+ if curr_op_name == "SETUP_FINALLY":
exception_end_instruction_index = offset_to_instruction_idx[instruction.argval]
jump_instruction = instructions[exception_end_instruction_index]
- if jump_instruction.opname != 'DUP_TOP':
+ if jump_instruction.opname != "DUP_TOP":
continue
except_end_instruction = None
@@ -424,15 +483,11 @@ def collect_try_except_info(co, use_func_first_line=False):
if except_end_instruction is not None:
try_except_info = TryExceptInfo(
- _get_line(op_offset_to_line, instruction.offset, firstlineno, search=True),
- ignore=False
+ _get_line(op_offset_to_line, instruction.offset, firstlineno, search=True), ignore=False
)
try_except_info.except_bytecode_offset = instruction.argval
try_except_info.except_line = _get_line(
- op_offset_to_line,
- try_except_info.except_bytecode_offset,
- firstlineno,
- search=True
+ op_offset_to_line, try_except_info.except_bytecode_offset, firstlineno, search=True
)
try_except_info.except_end_bytecode_offset = except_end_instruction.offset
@@ -444,7 +499,7 @@ def collect_try_except_info(co, use_func_first_line=False):
except_end_line = -1
start_i = offset_to_instruction_idx[try_except_info.except_bytecode_offset]
end_i = offset_to_instruction_idx[except_end_instruction.offset]
- for instruction in instructions[start_i: end_i + 1]:
+ for instruction in instructions[start_i : end_i + 1]:
found_at_line = op_offset_to_line.get(instruction.offset)
if found_at_line is not None and found_at_line > except_end_line:
except_end_line = found_at_line
@@ -452,29 +507,30 @@ def collect_try_except_info(co, use_func_first_line=False):
try_except_info_lst.append(try_except_info)
- for raise_instruction in instructions[i:offset_to_instruction_idx[try_except_info.except_end_bytecode_offset]]:
- if raise_instruction.opname == 'RAISE_VARARGS':
+ for raise_instruction in instructions[i : offset_to_instruction_idx[try_except_info.except_end_bytecode_offset]]:
+ if raise_instruction.opname == "RAISE_VARARGS":
if raise_instruction.argval == 0:
try_except_info.raise_lines_in_except.append(
- _get_line(op_offset_to_line, raise_instruction.offset, firstlineno, search=True))
+ _get_line(op_offset_to_line, raise_instruction.offset, firstlineno, search=True)
+ )
return try_except_info_lst
elif sys.version_info[:2] >= (3, 11):
def collect_try_except_info(co, use_func_first_line=False):
- '''
+ """
Note: if the filename is available and we can get the source,
`collect_try_except_info_from_source` is preferred (this is kept as
a fallback for cases where sources aren't available).
- '''
+ """
return []
+
import ast as ast_module
class _Visitor(ast_module.NodeVisitor):
-
def __init__(self):
self.try_except_infos = []
self._stack = []
@@ -482,7 +538,7 @@ def __init__(self):
self.max_line = -1
def generic_visit(self, node):
- if hasattr(node, 'lineno'):
+ if hasattr(node, "lineno"):
if node.lineno > self.max_line:
self.max_line = node.lineno
return ast_module.NodeVisitor.generic_visit(self, node)
@@ -505,7 +561,7 @@ def visit_ExceptHandler(self, node):
info.except_line = node.lineno
self._in_except_stack.append(info)
self.generic_visit(node)
- if hasattr(node, 'end_lineno'):
+ if hasattr(node, "end_lineno"):
info.except_end_line = node.end_lineno
else:
info.except_end_line = self.max_line
@@ -515,26 +571,26 @@ def visit_ExceptHandler(self, node):
def visit_Raise(self, node):
for info in self._in_except_stack:
- if node.exc is None:
- info.raise_lines_in_except.append(node.lineno)
+ if node.exc is None:
+ info.raise_lines_in_except.append(node.lineno)
self.generic_visit(node)
else:
def visit_Raise(self, node):
for info in self._in_except_stack:
- if node.type is None and node.tback is None:
- info.raise_lines_in_except.append(node.lineno)
+ if node.type is None and node.tback is None:
+ info.raise_lines_in_except.append(node.lineno)
self.generic_visit(node)
def collect_try_except_info_from_source(filename):
- with open(filename, 'rb') as stream:
+ with open(filename, "rb") as stream:
contents = stream.read()
return collect_try_except_info_from_contents(contents, filename)
-def collect_try_except_info_from_contents(contents, filename=''):
+def collect_try_except_info_from_contents(contents, filename=""):
ast = ast_module.parse(contents, filename)
visitor = _Visitor()
visitor.visit(ast)
@@ -546,12 +602,16 @@ def collect_try_except_info_from_contents(contents, filename=''):
class _MsgPart(object):
-
def __init__(self, line, tok):
assert line >= 0
self.line = line
self.tok = tok
+ def __str__(self) -> str:
+ return "_MsgPart(line: %s tok: %s)" % (self.line, self.tok)
+
+ __repr__ = __str__
+
@classmethod
def add_to_line_to_contents(cls, obj, line_to_contents, line=None):
if isinstance(obj, (list, tuple)):
@@ -580,7 +640,6 @@ def add_to_line_to_contents(cls, obj, line_to_contents, line=None):
class _Disassembler(object):
-
def __init__(self, co, firstlineno, level=0):
self.co = co
self.firstlineno = firstlineno
@@ -611,7 +670,7 @@ def min_line(self, *args):
elif isinstance(arg, _MsgPart):
m = min(m, arg.line)
- elif hasattr(arg, 'offset'):
+ elif hasattr(arg, "offset"):
m = min(m, self.op_offset_to_line[arg.offset])
return m
@@ -624,23 +683,23 @@ def max_line(self, *args):
elif isinstance(arg, _MsgPart):
m = max(m, arg.line)
- elif hasattr(arg, 'offset'):
+ elif hasattr(arg, "offset"):
m = max(m, self.op_offset_to_line[arg.offset])
return m
def _lookahead(self):
- '''
+ """
This handles and converts some common constructs from bytecode to actual source code.
It may change the list of instructions.
- '''
+ """
msg = self._create_msg_part
found = []
fullrepr = None
# Collect all the load instructions
for next_instruction in self.instructions:
- if next_instruction.opname in ('LOAD_GLOBAL', 'LOAD_FAST', 'LOAD_CONST', 'LOAD_NAME'):
+ if next_instruction.opname in ("LOAD_GLOBAL", "LOAD_FAST", "LOAD_CONST", "LOAD_NAME"):
found.append(next_instruction)
else:
break
@@ -648,7 +707,7 @@ def _lookahead(self):
if not found:
return None
- if next_instruction.opname == 'LOAD_ATTR':
+ if next_instruction.opname == "LOAD_ATTR":
prev_instruction = found[-1]
# Remove the current LOAD_ATTR
assert self.instructions.pop(len(found)) is next_instruction
@@ -661,15 +720,11 @@ def _lookahead(self):
prev_instruction.argval,
False, # prev_instruction.is_jump_target,
prev_instruction.offset,
- (
- msg(prev_instruction),
- msg(prev_instruction, '.'),
- msg(next_instruction)
- ),
+ (msg(prev_instruction), msg(prev_instruction, "."), msg(next_instruction)),
)
return RESTART_FROM_LOOKAHEAD
- if next_instruction.opname in ('CALL_FUNCTION', 'PRECALL'):
+ if next_instruction.opname in ("CALL_FUNCTION", "PRECALL", "CALL"):
if len(found) == next_instruction.argval + 1:
force_restart = False
delta = 0
@@ -681,7 +736,7 @@ def _lookahead(self):
return None # This is odd
del_upto = delta + next_instruction.argval + 2 # +2 = NAME / CALL_FUNCTION
- if next_instruction.opname == 'PRECALL':
+ if next_instruction.opname == "PRECALL":
del_upto += 1 # Also remove the CALL right after the PRECALL.
del self.instructions[delta:del_upto]
@@ -690,31 +745,33 @@ def _lookahead(self):
args = list(found)
fullrepr = [
msg(call_func),
- msg(call_func, '('),
+ msg(call_func, "("),
]
prev = call_func
for i, arg in enumerate(args):
if i > 0:
- fullrepr.append(msg(prev, ', '))
+ fullrepr.append(msg(prev, ", "))
prev = arg
fullrepr.append(msg(arg))
- fullrepr.append(msg(prev, ')'))
+ fullrepr.append(msg(prev, ")"))
if force_restart:
- self.instructions.insert(delta, _Instruction(
- call_func.opname,
- call_func.opcode,
- call_func.starts_line,
- call_func.argval,
- False, # call_func.is_jump_target,
- call_func.offset,
- tuple(fullrepr),
- ))
+ self.instructions.insert(
+ delta,
+ _Instruction(
+ call_func.opname,
+ call_func.opcode,
+ call_func.starts_line,
+ call_func.argval,
+ False, # call_func.is_jump_target,
+ call_func.offset,
+ tuple(fullrepr),
+ ),
+ )
return RESTART_FROM_LOOKAHEAD
- elif next_instruction.opname == 'BUILD_TUPLE':
-
+ elif next_instruction.opname == "BUILD_TUPLE":
if len(found) == next_instruction.argval:
force_restart = False
delta = 0
@@ -725,7 +782,7 @@ def _lookahead(self):
else:
return None # This is odd
- del self.instructions[delta:delta + next_instruction.argval + 1] # +1 = BUILD_TUPLE
+ del self.instructions[delta : delta + next_instruction.argval + 1] # +1 = BUILD_TUPLE
found = iter(found[delta:])
@@ -737,44 +794,47 @@ def _lookahead(self):
prev = first_instruction
fullrepr = []
- fullrepr.append(msg(prev, '('))
+ fullrepr.append(msg(prev, "("))
for i, arg in enumerate(args):
if i > 0:
- fullrepr.append(msg(prev, ', '))
+ fullrepr.append(msg(prev, ", "))
prev = arg
fullrepr.append(msg(arg))
- fullrepr.append(msg(prev, ')'))
+ fullrepr.append(msg(prev, ")"))
if force_restart:
- self.instructions.insert(delta, _Instruction(
- first_instruction.opname,
- first_instruction.opcode,
- first_instruction.starts_line,
- first_instruction.argval,
- False, # first_instruction.is_jump_target,
- first_instruction.offset,
- tuple(fullrepr),
- ))
+ self.instructions.insert(
+ delta,
+ _Instruction(
+ first_instruction.opname,
+ first_instruction.opcode,
+ first_instruction.starts_line,
+ first_instruction.argval,
+ False, # first_instruction.is_jump_target,
+ first_instruction.offset,
+ tuple(fullrepr),
+ ),
+ )
return RESTART_FROM_LOOKAHEAD
if fullrepr is not None and self.instructions:
- if self.instructions[0].opname == 'POP_TOP':
+ if self.instructions[0].opname == "POP_TOP":
self.instructions.pop(0)
- if self.instructions[0].opname in ('STORE_FAST', 'STORE_NAME'):
+ if self.instructions[0].opname in ("STORE_FAST", "STORE_NAME"):
next_instruction = self.instructions.pop(0)
- return msg(next_instruction), msg(next_instruction, ' = '), fullrepr
+ return msg(next_instruction), msg(next_instruction, " = "), fullrepr
- if self.instructions[0].opname == 'RETURN_VALUE':
+ if self.instructions[0].opname == "RETURN_VALUE":
next_instruction = self.instructions.pop(0)
- return msg(next_instruction, 'return ', line=self.min_line(next_instruction, fullrepr)), fullrepr
+ return msg(next_instruction, "return ", line=self.min_line(next_instruction, fullrepr)), fullrepr
return fullrepr
def _decorate_jump_target(self, instruction, instruction_repr):
if instruction.is_jump_target:
- return ('|', str(instruction.offset), '|', instruction_repr)
+ return ("|", str(instruction.offset), "|", instruction_repr)
return instruction_repr
@@ -784,10 +844,9 @@ def _create_msg_part(self, instruction, tok=None, line=None):
line = self.op_offset_to_line[instruction.offset]
argrepr = instruction.argrepr
- if isinstance(argrepr, str) and argrepr.startswith('NULL + '):
+ if isinstance(argrepr, str) and argrepr.startswith("NULL + "):
argrepr = argrepr[7:]
- return _MsgPart(
- line, tok if tok is not None else dec(instruction, argrepr))
+ return _MsgPart(line, tok if tok is not None else dec(instruction, argrepr))
def _next_instruction_to_str(self, line_to_contents):
# indent = ''
@@ -804,51 +863,55 @@ def _next_instruction_to_str(self, line_to_contents):
instruction = self.instructions.pop(0)
- if instruction.opname in 'RESUME':
+ if instruction.opname in ("RESUME", "NULL"):
return None
- if instruction.opname in ('LOAD_GLOBAL', 'LOAD_FAST', 'LOAD_CONST', 'LOAD_NAME'):
+ if instruction.opname == "RETURN_CONST":
+ return (msg(instruction, "return ", line=self.min_line(instruction)), msg(instruction))
+
+ if instruction.opname in ("LOAD_GLOBAL", "LOAD_FAST", "LOAD_CONST", "LOAD_NAME"):
next_instruction = self.instructions[0]
- if next_instruction.opname in ('STORE_FAST', 'STORE_NAME'):
+ if next_instruction.opname in ("STORE_FAST", "STORE_NAME"):
self.instructions.pop(0)
- return (
- msg(next_instruction),
- msg(next_instruction, ' = '),
- msg(instruction))
+ return (msg(next_instruction), msg(next_instruction, " = "), msg(instruction))
- if next_instruction.opname == 'RETURN_VALUE':
+ if next_instruction.opname == "RETURN_VALUE":
self.instructions.pop(0)
- return (msg(instruction, 'return ', line=self.min_line(instruction)), msg(instruction))
+ return (msg(instruction, "return ", line=self.min_line(instruction)), msg(instruction))
- if next_instruction.opname == 'RAISE_VARARGS' and next_instruction.argval == 1:
+ if next_instruction.opname == "RAISE_VARARGS" and next_instruction.argval == 1:
self.instructions.pop(0)
- return (msg(instruction, 'raise ', line=self.min_line(instruction)), msg(instruction))
+ return (msg(instruction, "raise ", line=self.min_line(instruction)), msg(instruction))
- if instruction.opname == 'LOAD_CONST':
+ if instruction.opname == "LOAD_CONST":
if inspect.iscode(instruction.argval):
-
- code_line_to_contents = _Disassembler(
- instruction.argval, self.firstlineno, self.level + 1
- ).build_line_to_contents()
+ code_line_to_contents = _Disassembler(instruction.argval, self.firstlineno, self.level + 1).build_line_to_contents()
for contents in code_line_to_contents.values():
- contents.insert(0, ' ')
+ contents.insert(0, " ")
for line, contents in code_line_to_contents.items():
line_to_contents.setdefault(line, []).extend(contents)
- return msg(instruction, 'LOAD_CONST(code)')
+ return msg(instruction, "LOAD_CONST(code)")
- if instruction.opname == 'RAISE_VARARGS':
+ if instruction.opname == "RAISE_VARARGS":
if instruction.argval == 0:
- return msg(instruction, 'raise')
+ return msg(instruction, "raise")
- if instruction.opname == 'SETUP_FINALLY':
- return msg(instruction, ('try(', instruction.argrepr, '):'))
+ if instruction.opname == "SETUP_FINALLY":
+ return msg(instruction, ("try(", instruction.argrepr, "):"))
if instruction.argrepr:
- return msg(instruction, (instruction.opname, '(', instruction.argrepr, ')'))
+ return msg(instruction, (instruction.opname, "(", instruction.argrepr, ")"))
if instruction.argval:
- return msg(instruction, '%s{%s}' % (instruction.opname, instruction.argval,))
+ return msg(
+ instruction,
+ "%s{%s}"
+ % (
+ instruction.opname,
+ instruction.argval,
+ ),
+ )
return msg(instruction, instruction.opname)
@@ -882,22 +945,22 @@ def disassemble(self):
for line, contents in sorted(line_to_contents.items()):
while last_line < line - 1:
if show_lines:
- stream.write('%s.\n' % (last_line + 1,))
+ stream.write("%s.\n" % (last_line + 1,))
else:
- stream.write('\n')
+ stream.write("\n")
last_line += 1
if show_lines:
- stream.write('%s. ' % (line,))
+ stream.write("%s. " % (line,))
for i, content in enumerate(contents):
if content == SEPARATOR:
if i != len(contents) - 1:
- stream.write(', ')
+ stream.write(", ")
else:
stream.write(content)
- stream.write('\n')
+ stream.write("\n")
last_line = line
@@ -905,7 +968,7 @@ def disassemble(self):
def code_to_bytecode_representation(co, use_func_first_line=False):
- '''
+ """
A simple disassemble of bytecode.
It does not attempt to provide the full Python source code, rather, it provides a low-level
@@ -914,7 +977,7 @@ def code_to_bytecode_representation(co, use_func_first_line=False):
Note that it does show jump locations/targets and converts some common bytecode constructs to
Python code to make it a bit easier to understand.
- '''
+ """
# Reference for bytecodes:
# https://docs.python.org/3/library/dis.html
if use_func_first_line:
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py
index b9ac9053e..b8a3a043f 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py
@@ -1,4 +1,4 @@
-''' pydevd - a debugging daemon
+""" pydevd - a debugging daemon
This is the daemon you launch for python remote debugging.
Protocol:
@@ -61,24 +61,38 @@
* JAVA - remote debugger, the java end
* PYDB - pydevd, the python end
-'''
+"""
import linecache
import os
from _pydev_bundle.pydev_imports import _queue
-from _pydev_bundle._pydev_saved_modules import time
-from _pydev_bundle._pydev_saved_modules import threading
+from _pydev_bundle._pydev_saved_modules import time, ThreadingEvent
from _pydev_bundle._pydev_saved_modules import socket as socket_module
-from _pydevd_bundle.pydevd_constants import (DebugInfoHolder, IS_WINDOWS, IS_JYTHON, IS_WASM,
- IS_PY36_OR_GREATER, STATE_RUN, ASYNC_EVAL_TIMEOUT_SEC,
- get_global_debugger, GetGlobalDebugger, set_global_debugger, # Keep for backward compatibility @UnusedImport
- silence_warnings_decorator, filter_all_warnings, IS_PY311_OR_GREATER)
+from _pydevd_bundle.pydevd_constants import (
+ DebugInfoHolder,
+ IS_WINDOWS,
+ IS_JYTHON,
+ IS_WASM,
+ IS_PY36_OR_GREATER,
+ STATE_RUN,
+ ASYNC_EVAL_TIMEOUT_SEC,
+ get_global_debugger,
+ GetGlobalDebugger,
+ set_global_debugger, # Keep for backward compatibility @UnusedImport
+ silence_warnings_decorator,
+ filter_all_warnings,
+ IS_PY311_OR_GREATER,
+)
from _pydev_bundle.pydev_override import overrides
import weakref
from _pydev_bundle._pydev_completer import extract_token_and_qualifier
-from _pydevd_bundle._debug_adapter.pydevd_schema import VariablesResponseBody, \
- SetVariableResponseBody, StepInTarget, StepInTargetsResponseBody
+from _pydevd_bundle._debug_adapter.pydevd_schema import (
+ VariablesResponseBody,
+ SetVariableResponseBody,
+ StepInTarget,
+ StepInTargetsResponseBody,
+)
from _pydevd_bundle._debug_adapter import pydevd_base_schema, pydevd_schema
from _pydevd_bundle.pydevd_net_command import NetCommand
from _pydevd_bundle.pydevd_xml import ExceptionOnEvaluate
@@ -97,8 +111,16 @@
from _pydevd_bundle import pydevd_vm_type
import sys
import traceback
-from _pydevd_bundle.pydevd_utils import quote_smart as quote, compare_object_attrs_key, \
- notify_about_gevent_if_needed, isinstance_checked, ScopeRequest, getattr_checked, Timer
+from _pydevd_bundle.pydevd_utils import (
+ quote_smart as quote,
+ compare_object_attrs_key,
+ notify_about_gevent_if_needed,
+ isinstance_checked,
+ ScopeRequest,
+ getattr_checked,
+ Timer,
+ is_current_thread_main_thread,
+)
from _pydev_bundle import pydev_log, fsnotify
from _pydev_bundle.pydev_log import exception as pydev_log_exception
from _pydev_bundle import _pydev_completer
@@ -112,8 +134,9 @@
from _pydevd_bundle.pydevd_comm_constants import * # @UnusedWildImport
# Socket import aliases:
-AF_INET, SOCK_STREAM, SHUT_WR, SOL_SOCKET, IPPROTO_TCP, socket = (
+AF_INET, AF_INET6, SOCK_STREAM, SHUT_WR, SOL_SOCKET, IPPROTO_TCP, socket = (
socket_module.AF_INET,
+ socket_module.AF_INET6,
socket_module.SOCK_STREAM,
socket_module.SHUT_WR,
socket_module.SOL_SOCKET,
@@ -128,7 +151,7 @@
class ReaderThread(PyDBDaemonThread):
- ''' reader thread reads and dispatches commands in an infinite loop '''
+ """reader thread reads and dispatches commands in an infinite loop"""
def __init__(self, sock, py_db, PyDevJsonCommandProcessor, process_net_command, terminate_on_socket_close=True):
assert sock is not None
@@ -136,7 +159,7 @@ def __init__(self, sock, py_db, PyDevJsonCommandProcessor, process_net_command,
self.__terminate_on_socket_close = terminate_on_socket_close
self.sock = sock
- self._buffer = b''
+ self._buffer = b""
self.name = "pydevd.Reader"
self.process_net_command = process_net_command
self.process_net_command_json = PyDevJsonCommandProcessor(self._from_json).process_net_command_json
@@ -175,7 +198,7 @@ def _read(self, size):
buffer_len = len(self._buffer)
if buffer_len == size:
ret = self._buffer
- self._buffer = b''
+ self._buffer = b""
return ret
if buffer_len > size:
@@ -186,14 +209,14 @@ def _read(self, size):
try:
r = self.sock.recv(max(size - buffer_len, 1024))
except OSError:
- return b''
+ return b""
if not r:
- return b''
+ return b""
self._buffer += r
def _read_line(self):
while True:
- i = self._buffer.find(b'\n')
+ i = self._buffer.find(b"\n")
if i != -1:
i += 1 # Add the newline to the return
ret = self._buffer[:i]
@@ -203,9 +226,9 @@ def _read_line(self):
try:
r = self.sock.recv(1024)
except OSError:
- return b''
+ return b""
if not r:
- return b''
+ return b""
self._buffer += r
@overrides(PyDBDaemonThread._on_run)
@@ -222,26 +245,26 @@ def _on_run(self):
line = self._read_line()
if len(line) == 0:
- pydev_log.debug('ReaderThread: empty contents received (len(line) == 0).')
+ pydev_log.debug("ReaderThread: empty contents received (len(line) == 0).")
self._terminate_on_socket_close()
return # Finished communication.
if self._kill_received:
continue
- if line.startswith(b'Content-Length:'):
- content_len = int(line.strip().split(b':', 1)[1])
+ if line.startswith(b"Content-Length:"):
+ content_len = int(line.strip().split(b":", 1)[1])
continue
if content_len != -1:
# If we previously received a content length, read until a '\r\n'.
- if line == b'\r\n':
+ if line == b"\r\n":
json_contents = self._read(content_len)
content_len = -1
if len(json_contents) == 0:
- pydev_log.debug('ReaderThread: empty contents received (len(json_contents) == 0).')
+ pydev_log.debug("ReaderThread: empty contents received (len(json_contents) == 0).")
self._terminate_on_socket_close()
return # Finished communication.
@@ -254,13 +277,13 @@ def _on_run(self):
continue
else:
# No content len, regular line-based protocol message (remove trailing new-line).
- if line.endswith(b'\n\n'):
+ if line.endswith(b"\n\n"):
line = line[:-2]
- elif line.endswith(b'\n'):
+ elif line.endswith(b"\n"):
line = line[:-1]
- elif line.endswith(b'\r'):
+ elif line.endswith(b"\r"):
line = line[:-1]
except:
if not self._kill_received:
@@ -271,17 +294,17 @@ def _on_run(self):
# Note: the java backend is always expected to pass utf-8 encoded strings. We now work with str
# internally and thus, we may need to convert to the actual encoding where needed (i.e.: filenames
# on python 2 may need to be converted to the filesystem encoding).
- if hasattr(line, 'decode'):
- line = line.decode('utf-8')
+ if hasattr(line, "decode"):
+ line = line.decode("utf-8")
if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 3:
- pydev_log.debug('debugger: received >>%s<<\n', line)
+ pydev_log.debug("debugger: received >>%s<<\n", line)
- args = line.split('\t', 2)
+ args = line.split("\t", 2)
try:
cmd_id = int(args[0])
if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 3:
- pydev_log.debug('Received command: %s %s\n', ID_TO_MEANING.get(str(cmd_id), '???'), line)
+ pydev_log.debug("Received command: %s %s\n", ID_TO_MEANING.get(str(cmd_id), "???"), line)
self.process_command(cmd_id, int(args[1]), args[2])
except:
if sys is not None and pydev_log_exception is not None: # Could happen at interpreter shutdown
@@ -294,7 +317,7 @@ def _on_run(self):
self._terminate_on_socket_close()
finally:
- pydev_log.debug('ReaderThread: exit')
+ pydev_log.debug("ReaderThread: exit")
def _terminate_on_socket_close(self):
if self.__terminate_on_socket_close:
@@ -305,7 +328,6 @@ def process_command(self, cmd_id, seq, text):
class FSNotifyThread(PyDBDaemonThread):
-
def __init__(self, py_db, api, watch_dirs):
PyDBDaemonThread.__init__(self, py_db)
self.api = api
@@ -316,7 +338,7 @@ def __init__(self, py_db, api, watch_dirs):
@overrides(PyDBDaemonThread._on_run)
def _on_run(self):
try:
- pydev_log.info('Watching directories for code reload:\n---\n%s\n---' % ('\n'.join(sorted(self.watch_dirs))))
+ pydev_log.info("Watching directories for code reload:\n---\n%s\n---" % ("\n".join(sorted(self.watch_dirs))))
# i.e.: The first call to set_tracked_paths will do a full scan, so, do it in the thread
# too (after everything is configured).
@@ -325,12 +347,12 @@ def _on_run(self):
for change_enum, change_path in self.watcher.iter_changes():
# We're only interested in modified events
if change_enum == fsnotify.Change.modified:
- pydev_log.info('Modified: %s', change_path)
+ pydev_log.info("Modified: %s", change_path)
self.api.request_reload_code(self.py_db, -1, None, change_path)
else:
- pydev_log.info('Ignored (add or remove) change in: %s', change_path)
+ pydev_log.info("Ignored (add or remove) change in: %s", change_path)
except:
- pydev_log.exception('Error when waiting for filesystem changes in FSNotifyThread.')
+ pydev_log.exception("Error when waiting for filesystem changes in FSNotifyThread.")
@overrides(PyDBDaemonThread.do_kill_pydev_thread)
def do_kill_pydev_thread(self):
@@ -339,7 +361,7 @@ def do_kill_pydev_thread(self):
class WriterThread(PyDBDaemonThread):
- ''' writer thread writes out the commands in an infinite loop '''
+ """writer thread writes out the commands in an infinite loop"""
def __init__(self, sock, py_db, terminate_on_socket_close=True):
PyDBDaemonThread.__init__(self, py_db)
@@ -347,19 +369,19 @@ def __init__(self, sock, py_db, terminate_on_socket_close=True):
self.__terminate_on_socket_close = terminate_on_socket_close
self.name = "pydevd.Writer"
self._cmd_queue = _queue.Queue()
- if pydevd_vm_type.get_vm_type() == 'python':
+ if pydevd_vm_type.get_vm_type() == "python":
self.timeout = 0
else:
self.timeout = 0.1
def add_command(self, cmd):
- ''' cmd is NetCommand '''
+ """cmd is NetCommand"""
if not self._kill_received: # we don't take new data after everybody die
self._cmd_queue.put(cmd, False)
@overrides(PyDBDaemonThread._on_run)
def _on_run(self):
- ''' just loop and write responses '''
+ """just loop and write responses"""
try:
while True:
@@ -368,7 +390,7 @@ def _on_run(self):
cmd = self._cmd_queue.get(True, 0.1)
except _queue.Empty:
if self._kill_received:
- pydev_log.debug('WriterThread: kill_received (sock.shutdown(SHUT_WR))')
+ pydev_log.debug("WriterThread: kill_received (sock.shutdown(SHUT_WR))")
try:
self.sock.shutdown(SHUT_WR)
except:
@@ -400,7 +422,7 @@ def _on_run(self):
cmd.send(self.sock)
if cmd.id == CMD_EXIT:
- pydev_log.debug('WriterThread: CMD_EXIT received')
+ pydev_log.debug("WriterThread: CMD_EXIT received")
break
if time is None:
break # interpreter shutdown
@@ -411,7 +433,7 @@ def _on_run(self):
if DebugInfoHolder.DEBUG_TRACE_LEVEL > 0:
pydev_log_exception()
finally:
- pydev_log.debug('WriterThread: exit')
+ pydev_log.debug("WriterThread: exit")
def empty(self):
return self._cmd_queue.empty()
@@ -444,11 +466,17 @@ def create_server_socket(host, port):
def start_server(port):
- ''' binds to a port, waits for the debugger to connect '''
- s = create_server_socket(host='', port=port)
+ """binds to a port, waits for the debugger to connect"""
+ s = create_server_socket(host="", port=port)
try:
s.listen(1)
+ # Let the user know it's halted waiting for the connection.
+ host, port = s.getsockname()
+ msg = f"pydevd: waiting for connection at: {host}:{port}"
+ print(msg, file=sys.stderr)
+ pydev_log.info(msg)
+
new_socket, _addr = s.accept()
pydev_log.info("Connection accepted")
# closing server socket is not necessary but we don't need it
@@ -460,10 +488,20 @@ def start_server(port):
def start_client(host, port):
- ''' connects to a host/port '''
+ """connects to a host/port"""
pydev_log.info("Connecting to %s:%s", host, port)
- s = socket(AF_INET, SOCK_STREAM)
+ address_family = AF_INET
+ for res in socket_module.getaddrinfo(host, port, 0, SOCK_STREAM):
+ if res[0] == AF_INET:
+ address_family = res[0]
+ # Prefer IPv4 addresses for backward compat.
+ break
+ if res[0] == AF_INET6:
+ # Don't break after this - if the socket is dual-stack prefer IPv4.
+ address_family = res[0]
+
+ s = socket(address_family, SOCK_STREAM)
# Set TCP keepalive on an open socket.
# It activates after 1 second (TCP_KEEPIDLE,) of idleness,
@@ -488,11 +526,11 @@ def start_client(host, port):
try:
# 10 seconds default timeout
- timeout = int(os.environ.get('PYDEVD_CONNECT_TIMEOUT', 10))
+ timeout = int(os.environ.get("PYDEVD_CONNECT_TIMEOUT", 10))
s.settimeout(timeout)
s.connect((host, port))
s.settimeout(None) # no timeout after connected
- pydev_log.info("Connected.")
+ pydev_log.info(f"Connected to: {s}.")
return s
except:
pydev_log.exception("Could not connect to %s: %s", host, port)
@@ -504,12 +542,12 @@ def start_client(host, port):
class InternalThreadCommand(object):
- ''' internal commands are generated/executed by the debugger.
+ """internal commands are generated/executed by the debugger.
The reason for their existence is that some commands have to be executed
on specific threads. These are the InternalThreadCommands that get
get posted to PyDB.
- '''
+ """
def __init__(self, thread_id, method=None, *args, **kwargs):
self.thread_id = thread_id
@@ -518,9 +556,8 @@ def __init__(self, thread_id, method=None, *args, **kwargs):
self.kwargs = kwargs
def can_be_executed_by(self, thread_id):
- '''By default, it must be in the same thread to be executed
- '''
- return self.thread_id == thread_id or self.thread_id.endswith('|' + thread_id)
+ """By default, it must be in the same thread to be executed"""
+ return self.thread_id == thread_id or self.thread_id.endswith("|" + thread_id)
def do_it(self, dbg):
try:
@@ -533,15 +570,14 @@ def do_it(self, dbg):
self.kwargs = None
def __str__(self):
- return 'InternalThreadCommands(%s, %s, %s)' % (self.method, self.args, self.kwargs)
+ return "InternalThreadCommands(%s, %s, %s)" % (self.method, self.args, self.kwargs)
__repr__ = __str__
class InternalThreadCommandForAnyThread(InternalThreadCommand):
-
def __init__(self, thread_id, method=None, *args, **kwargs):
- assert thread_id == '*'
+ assert thread_id == "*"
InternalThreadCommand.__init__(self, thread_id, method, *args, **kwargs)
@@ -572,8 +608,8 @@ def internal_reload_code(dbg, seq, module_name, filename):
if module_name is not None:
module_name = module_name
if module_name not in sys.modules:
- if '.' in module_name:
- new_module_name = module_name.split('.')[-1]
+ if "." in module_name:
+ new_module_name = module_name.split(".")[-1]
if new_module_name in sys.modules:
module_name = new_module_name
@@ -585,9 +621,9 @@ def internal_reload_code(dbg, seq, module_name, filename):
if filename:
filename = pydevd_file_utils.normcase(filename)
for module_name, module in sys.modules.copy().items():
- f = getattr_checked(module, '__file__')
+ f = getattr_checked(module, "__file__")
if f is not None:
- if f.endswith(('.pyc', '.pyo')):
+ if f.endswith((".pyc", ".pyo")):
f = f[:-1]
if pydevd_file_utils.normcase(f) == filename:
@@ -595,11 +631,11 @@ def internal_reload_code(dbg, seq, module_name, filename):
if not modules_to_reload:
if filename and module_name:
- _send_io_message(dbg, 'code reload: Unable to find module %s to reload for path: %s\n' % (module_name, filename))
+ _send_io_message(dbg, "code reload: Unable to find module %s to reload for path: %s\n" % (module_name, filename))
elif filename:
- _send_io_message(dbg, 'code reload: Unable to find module to reload for path: %s\n' % (filename,))
+ _send_io_message(dbg, "code reload: Unable to find module to reload for path: %s\n" % (filename,))
elif module_name:
- _send_io_message(dbg, 'code reload: Unable to find module to reload: %s\n' % (module_name,))
+ _send_io_message(dbg, "code reload: Unable to find module to reload: %s\n" % (module_name,))
else:
# Too much info...
@@ -609,25 +645,25 @@ def internal_reload_code(dbg, seq, module_name, filename):
found_module_to_reload = True
if pydevd_reload.xreload(module):
- _send_io_message(dbg, 'code reload: reload finished\n')
+ _send_io_message(dbg, "code reload: reload finished\n")
else:
- _send_io_message(dbg, 'code reload: reload finished without applying any change\n')
+ _send_io_message(dbg, "code reload: reload finished without applying any change\n")
cmd = dbg.cmd_factory.make_reloaded_code_message(seq, found_module_to_reload)
dbg.writer.add_command(cmd)
except:
- pydev_log.exception('Error reloading code')
+ pydev_log.exception("Error reloading code")
class InternalGetThreadStack(InternalThreadCommand):
- '''
+ """
This command will either wait for a given thread to be paused to get its stack or will provide
it anyways after a timeout (in which case the stack will be gotten but local variables won't
be available and it'll not be possible to interact with the frame as it's not actually
stopped in a breakpoint).
- '''
+ """
- def __init__(self, seq, thread_id, py_db, set_additional_thread_info, fmt, timeout=.5, start_frame=0, levels=0):
+ def __init__(self, seq, thread_id, py_db, set_additional_thread_info, fmt, timeout=0.5, start_frame=0, levels=0):
InternalThreadCommand.__init__(self, thread_id)
self._py_db = weakref.ref(py_db)
self._timeout = time.time() + timeout
@@ -648,12 +684,20 @@ def can_be_executed_by(self, _thread_id):
py_db = self._py_db()
t = pydevd_find_thread_by_id(self.thread_id)
frame = None
- if t and not getattr(t, 'pydev_do_not_trace', None):
+ if t and not getattr(t, "pydev_do_not_trace", None):
additional_info = self._set_additional_thread_info(t)
frame = additional_info.get_topmost_frame(t)
try:
self._cmd = py_db.cmd_factory.make_get_thread_stack_message(
- py_db, self.seq, self.thread_id, frame, self._fmt, must_be_suspended=not timed_out, start_frame=self._start_frame, levels=self._levels)
+ py_db,
+ self.seq,
+ self.thread_id,
+ frame,
+ self._fmt,
+ must_be_suspended=not timed_out,
+ start_frame=self._start_frame,
+ levels=self._levels,
+ )
finally:
frame = None
t = None
@@ -675,9 +719,10 @@ def internal_step_in_thread(py_db, thread_id, cmd_id, set_additional_thread_info
info.pydev_step_cmd = cmd_id
info.pydev_step_stop = None
info.pydev_state = STATE_RUN
+ info.update_stepping_info()
if py_db.stepping_resumes_all_threads:
- resume_threads('*', except_thread=thread_to_step)
+ resume_threads("*", except_thread=thread_to_step)
def internal_smart_step_into(py_db, thread_id, offset, child_offset, set_additional_thread_info):
@@ -690,21 +735,21 @@ def internal_smart_step_into(py_db, thread_id, offset, child_offset, set_additio
info.pydev_smart_parent_offset = int(offset)
info.pydev_smart_child_offset = int(child_offset)
info.pydev_state = STATE_RUN
+ info.update_stepping_info()
if py_db.stepping_resumes_all_threads:
- resume_threads('*', except_thread=thread_to_step)
+ resume_threads("*", except_thread=thread_to_step)
class InternalSetNextStatementThread(InternalThreadCommand):
-
def __init__(self, thread_id, cmd_id, line, func_name, seq=0):
- '''
+ """
cmd_id may actually be one of:
CMD_RUN_TO_LINE
CMD_SET_NEXT_STATEMENT
CMD_SMART_STEP_INTO
- '''
+ """
self.thread_id = thread_id
self.cmd_id = cmd_id
self.line = line
@@ -725,13 +770,14 @@ def do_it(self, dbg):
info.pydev_smart_parent_offset = -1
info.pydev_smart_child_offset = -1
info.pydev_state = STATE_RUN
+ info.update_stepping_info()
@silence_warnings_decorator
def internal_get_variable_json(py_db, request):
- '''
- :param VariablesRequest request:
- '''
+ """
+ :param VariablesRequest request:
+ """
arguments = request.arguments # : :type arguments: VariablesArguments
variables_reference = arguments.variablesReference
scope = None
@@ -740,7 +786,7 @@ def internal_get_variable_json(py_db, request):
variables_reference = variables_reference.variable_reference
fmt = arguments.format
- if hasattr(fmt, 'to_dict'):
+ if hasattr(fmt, "to_dict"):
fmt = fmt.to_dict()
variables = []
@@ -755,25 +801,20 @@ def internal_get_variable_json(py_db, request):
except:
try:
exc, exc_type, tb = sys.exc_info()
- err = ''.join(traceback.format_exception(exc, exc_type, tb))
- variables = [{
- 'name': '',
- 'value': err,
- 'type': '',
- 'variablesReference': 0
- }]
+ err = "".join(traceback.format_exception(exc, exc_type, tb))
+ variables = [{"name": "", "value": err, "type": "", "variablesReference": 0}]
except:
- err = ''
+ err = ""
pydev_log.exception(err)
variables = []
body = VariablesResponseBody(variables)
- variables_response = pydevd_base_schema.build_response(request, kwargs={'body':body})
+ variables_response = pydevd_base_schema.build_response(request, kwargs={"body": body})
py_db.writer.add_command(NetCommand(CMD_RETURN, 0, variables_response, is_json=True))
class InternalGetVariable(InternalThreadCommand):
- ''' gets the value of a variable '''
+ """gets the value of a variable"""
def __init__(self, seq, thread_id, frame_id, scope, attrs):
self.sequence = seq
@@ -784,12 +825,13 @@ def __init__(self, seq, thread_id, frame_id, scope, attrs):
@silence_warnings_decorator
def do_it(self, dbg):
- ''' Converts request into python variable '''
+ """Converts request into python variable"""
try:
xml = StringIO()
xml.write("")
type_name, val_dict = pydevd_vars.resolve_compound_variable_fields(
- dbg, self.thread_id, self.frame_id, self.scope, self.attributes)
+ dbg, self.thread_id, self.frame_id, self.scope, self.attributes
+ )
if val_dict is None:
val_dict = {}
@@ -811,13 +853,11 @@ def do_it(self, dbg):
xml.close()
dbg.writer.add_command(cmd)
except Exception:
- cmd = dbg.cmd_factory.make_error_message(
- self.sequence, "Error resolving variables %s" % (get_exception_traceback_str(),))
+ cmd = dbg.cmd_factory.make_error_message(self.sequence, "Error resolving variables %s" % (get_exception_traceback_str(),))
dbg.writer.add_command(cmd)
class InternalGetArray(InternalThreadCommand):
-
def __init__(self, seq, roffset, coffset, rows, cols, format, thread_id, frame_id, scope, attrs):
self.sequence = seq
self.thread_id = thread_id
@@ -844,7 +884,7 @@ def do_it(self, dbg):
def internal_change_variable(dbg, seq, thread_id, frame_id, scope, attr, value):
- ''' Changes the value of a variable '''
+ """Changes the value of a variable"""
try:
frame = dbg.find_frame(thread_id, frame_id)
if frame is not None:
@@ -857,18 +897,20 @@ def internal_change_variable(dbg, seq, thread_id, frame_id, scope, attr, value):
cmd = dbg.cmd_factory.make_variable_changed_message(seq, xml)
dbg.writer.add_command(cmd)
except Exception:
- cmd = dbg.cmd_factory.make_error_message(seq, "Error changing variable attr:%s expression:%s traceback:%s" % (attr, value, get_exception_traceback_str()))
+ cmd = dbg.cmd_factory.make_error_message(
+ seq, "Error changing variable attr:%s expression:%s traceback:%s" % (attr, value, get_exception_traceback_str())
+ )
dbg.writer.add_command(cmd)
def internal_change_variable_json(py_db, request):
- '''
+ """
The pydevd_vars.change_attr_expression(thread_id, frame_id, attr, value, dbg) can only
deal with changing at a frame level, so, currently changing the contents of something
in a different scope is currently not supported.
:param SetVariableRequest request:
- '''
+ """
# : :type arguments: SetVariableArguments
arguments = request.arguments
variables_reference = arguments.variablesReference
@@ -878,7 +920,7 @@ def internal_change_variable_json(py_db, request):
variables_reference = variables_reference.variable_reference
fmt = arguments.format
- if hasattr(fmt, 'to_dict'):
+ if hasattr(fmt, "to_dict"):
fmt = fmt.to_dict()
try:
@@ -888,44 +930,38 @@ def internal_change_variable_json(py_db, request):
if variable is None:
_write_variable_response(
- py_db, request, value='', success=False, message='Unable to find variable container to change: %s.' % (variables_reference,))
+ py_db, request, value="", success=False, message="Unable to find variable container to change: %s." % (variables_reference,)
+ )
return
child_var = variable.change_variable(arguments.name, arguments.value, py_db, fmt=fmt)
if child_var is None:
- _write_variable_response(
- py_db, request, value='', success=False, message='Unable to change: %s.' % (arguments.name,))
+ _write_variable_response(py_db, request, value="", success=False, message="Unable to change: %s." % (arguments.name,))
return
var_data = child_var.get_var_data(fmt=fmt)
body = SetVariableResponseBody(
- value=var_data['value'],
- type=var_data['type'],
- variablesReference=var_data.get('variablesReference'),
- namedVariables=var_data.get('namedVariables'),
- indexedVariables=var_data.get('indexedVariables'),
+ value=var_data["value"],
+ type=var_data["type"],
+ variablesReference=var_data.get("variablesReference"),
+ namedVariables=var_data.get("namedVariables"),
+ indexedVariables=var_data.get("indexedVariables"),
)
- variables_response = pydevd_base_schema.build_response(request, kwargs={'body':body})
+ variables_response = pydevd_base_schema.build_response(request, kwargs={"body": body})
py_db.writer.add_command(NetCommand(CMD_RETURN, 0, variables_response, is_json=True))
def _write_variable_response(py_db, request, value, success, message):
- body = SetVariableResponseBody('')
- variables_response = pydevd_base_schema.build_response(
- request,
- kwargs={
- 'body':body,
- 'success': False,
- 'message': message
- })
+ body = SetVariableResponseBody("")
+ variables_response = pydevd_base_schema.build_response(request, kwargs={"body": body, "success": False, "message": message})
cmd = NetCommand(CMD_RETURN, 0, variables_response, is_json=True)
py_db.writer.add_command(cmd)
@silence_warnings_decorator
def internal_get_frame(dbg, seq, thread_id, frame_id):
- ''' Converts request into python variable '''
+ """Converts request into python variable"""
try:
frame = dbg.find_frame(thread_id, frame_id)
if frame is not None:
@@ -972,21 +1008,33 @@ def internal_get_smart_step_into_variants(dbg, seq, thread_id, frame_id, start_l
for child_variant in variant.children_variants:
# If there are child variants, the current one is just an intermediary, so,
# just create variants for the child (notifying properly about the parent too).
- xml += '' % (
- quote(child_variant.name),
- str(child_variant.is_visited).lower(),
- child_variant.line,
- variant.offset,
- child_variant.offset,
- child_variant.call_order,
+ xml += (
+ ''
+ % (
+ quote(child_variant.name),
+ str(child_variant.is_visited).lower(),
+ child_variant.line,
+ variant.offset,
+ child_variant.offset,
+ child_variant.call_order,
+ variant.endlineno,
+ variant.startcol,
+ variant.endcol,
+ )
)
else:
- xml += '' % (
- quote(variant.name),
- str(variant.is_visited).lower(),
- variant.line,
- variant.offset,
- variant.call_order,
+ xml += (
+ ''
+ % (
+ quote(variant.name),
+ str(variant.is_visited).lower(),
+ variant.line,
+ variant.offset,
+ variant.call_order,
+ variant.endlineno,
+ variant.startcol,
+ variant.endcol,
+ )
)
xml += ""
@@ -994,10 +1042,10 @@ def internal_get_smart_step_into_variants(dbg, seq, thread_id, frame_id, start_l
dbg.writer.add_command(cmd)
except:
# Error is expected (if `dis` module cannot be used -- i.e.: Jython).
- pydev_log.exception('Error calculating Smart Step Into Variants.')
+ pydev_log.exception("Error calculating Smart Step Into Variants.")
cmd = dbg.cmd_factory.make_error_message(
- seq, "Error getting smart step into variants for frame: %s from thread: %s"
- % (frame_id, thread_id))
+ seq, "Error getting smart step into variants for frame: %s from thread: %s" % (frame_id, thread_id)
+ )
dbg.writer.add_command(cmd)
@@ -1009,12 +1057,8 @@ def internal_get_step_in_targets_json(dbg, seq, thread_id, frame_id, request, se
if thread is None or frame is None:
body = StepInTargetsResponseBody([])
variables_response = pydevd_base_schema.build_response(
- request,
- kwargs={
- 'body': body,
- 'success': False,
- 'message': 'Thread to get step in targets seems to have resumed already.'
- })
+ request, kwargs={"body": body, "success": False, "message": "Thread to get step in targets seems to have resumed already."}
+ )
cmd = NetCommand(CMD_RETURN, 0, variables_response, is_json=True)
dbg.writer.add_command(cmd)
return
@@ -1037,7 +1081,12 @@ def internal_get_step_in_targets_json(dbg, seq, thread_id, frame_id, request, se
target_id = next(counter)
if child_variant.call_order > 1:
- targets.append(StepInTarget(id=target_id, label='%s (call %s)' % (child_variant.name, child_variant.call_order),))
+ targets.append(
+ StepInTarget(
+ id=target_id,
+ label="%s (call %s)" % (child_variant.name, child_variant.call_order),
+ )
+ )
else:
targets.append(StepInTarget(id=target_id, label=child_variant.name))
target_id_to_variant[target_id] = child_variant
@@ -1047,7 +1096,12 @@ def internal_get_step_in_targets_json(dbg, seq, thread_id, frame_id, request, se
else:
target_id = next(counter)
if variant.call_order > 1:
- targets.append(StepInTarget(id=target_id, label='%s (call %s)' % (variant.name, variant.call_order),))
+ targets.append(
+ StepInTarget(
+ id=target_id,
+ label="%s (call %s)" % (variant.name, variant.call_order),
+ )
+ )
else:
targets.append(StepInTarget(id=target_id, label=variant.name))
target_id_to_variant[target_id] = variant
@@ -1060,26 +1114,20 @@ def internal_get_step_in_targets_json(dbg, seq, thread_id, frame_id, request, se
info.target_id_to_smart_step_into_variant = target_id_to_variant
body = StepInTargetsResponseBody(targets=targets)
- response = pydevd_base_schema.build_response(request, kwargs={'body': body})
+ response = pydevd_base_schema.build_response(request, kwargs={"body": body})
cmd = NetCommand(CMD_RETURN, 0, response, is_json=True)
dbg.writer.add_command(cmd)
except Exception as e:
# Error is expected (if `dis` module cannot be used -- i.e.: Jython).
- pydev_log.exception('Error calculating Smart Step Into Variants.')
+ pydev_log.exception("Error calculating Smart Step Into Variants.")
body = StepInTargetsResponseBody([])
- variables_response = pydevd_base_schema.build_response(
- request,
- kwargs={
- 'body': body,
- 'success': False,
- 'message': str(e)
- })
+ variables_response = pydevd_base_schema.build_response(request, kwargs={"body": body, "success": False, "message": str(e)})
cmd = NetCommand(CMD_RETURN, 0, variables_response, is_json=True)
dbg.writer.add_command(cmd)
def internal_get_next_statement_targets(dbg, seq, thread_id, frame_id):
- ''' gets the valid line numbers for use with set next statement '''
+ """gets the valid line numbers for use with set next statement"""
try:
frame = dbg.find_frame(thread_id, frame_id)
if frame is not None:
@@ -1105,18 +1153,17 @@ def internal_get_next_statement_targets(dbg, seq, thread_id, frame_id):
dbg.writer.add_command(cmd)
-def _evaluate_response(py_db, request, result, error_message=''):
+def _evaluate_response(py_db, request, result, error_message=""):
is_error = isinstance(result, ExceptionOnEvaluate)
if is_error:
result = result.result
if not error_message:
body = pydevd_schema.EvaluateResponseBody(result=result, variablesReference=0)
- variables_response = pydevd_base_schema.build_response(request, kwargs={'body':body})
+ variables_response = pydevd_base_schema.build_response(request, kwargs={"body": body})
py_db.writer.add_command(NetCommand(CMD_RETURN, 0, variables_response, is_json=True))
else:
body = pydevd_schema.EvaluateResponseBody(result=result, variablesReference=0)
- variables_response = pydevd_base_schema.build_response(request, kwargs={
- 'body':body, 'success':False, 'message': error_message})
+ variables_response = pydevd_base_schema.build_response(request, kwargs={"body": body, "success": False, "message": error_message})
py_db.writer.add_command(NetCommand(CMD_RETURN, 0, variables_response, is_json=True))
@@ -1124,9 +1171,9 @@ def _evaluate_response(py_db, request, result, error_message=''):
def internal_evaluate_expression_json(py_db, request, thread_id):
- '''
+ """
:param EvaluateRequest request:
- '''
+ """
global _global_frame
# : :type arguments: EvaluateArguments
@@ -1135,11 +1182,11 @@ def internal_evaluate_expression_json(py_db, request, thread_id):
frame_id = arguments.frameId
context = arguments.context
fmt = arguments.format
- if hasattr(fmt, 'to_dict'):
+ if hasattr(fmt, "to_dict"):
fmt = fmt.to_dict()
ctx = NULL
- if context == 'repl':
+ if context == "repl":
if not py_db.is_output_redirected:
ctx = pydevd_io.redirect_stream_to_pydb_io_messages_context()
else:
@@ -1166,14 +1213,16 @@ def __create_frame():
eval_result = pydevd_vars.evaluate_expression(py_db, frame, expression, is_exec=False)
is_error = isinstance_checked(eval_result, ExceptionOnEvaluate)
if is_error:
- if context == 'hover': # In a hover it doesn't make sense to do an exec.
- _evaluate_response(py_db, request, result='', error_message='Exception occurred during evaluation.')
+ if context == "hover": # In a hover it doesn't make sense to do an exec.
+ _evaluate_response(py_db, request, result="", error_message="Exception occurred during evaluation.")
return
- elif context == 'watch':
+ elif context == "watch":
# If it's a watch, don't show it as an exception object, rather, format
# it and show it as a string (with success=False).
- msg = '%s: %s' % (
- eval_result.result.__class__.__name__, eval_result.result,)
+ msg = "%s: %s" % (
+ eval_result.result.__class__.__name__,
+ eval_result.result,
+ )
_evaluate_response(py_db, request, result=msg, error_message=msg)
return
else:
@@ -1182,10 +1231,10 @@ def __create_frame():
try:
pydevd_vars.compile_as_eval(expression)
except Exception:
- try_exec = context == 'repl'
+ try_exec = context == "repl"
else:
try_exec = False
- if context == 'repl':
+ if context == "repl":
# In the repl we should show the exception to the user.
_evaluate_response_return_exception(py_db, request, eval_result.etype, eval_result.result, eval_result.tb)
return
@@ -1197,29 +1246,29 @@ def __create_frame():
_evaluate_response_return_exception(py_db, request, *sys.exc_info())
return
# No result on exec.
- _evaluate_response(py_db, request, result='')
+ _evaluate_response(py_db, request, result="")
return
# Ok, we have the result (could be an error), let's put it into the saved variables.
frame_tracker = py_db.suspended_frames_manager.get_frame_tracker(thread_id)
if frame_tracker is None:
# This is not really expected.
- _evaluate_response(py_db, request, result='', error_message='Thread id: %s is not current thread id.' % (thread_id,))
+ _evaluate_response(py_db, request, result="", error_message="Thread id: %s is not current thread id." % (thread_id,))
return
safe_repr_custom_attrs = {}
- if context == 'clipboard':
+ if context == "clipboard":
safe_repr_custom_attrs = dict(
- maxstring_outer=2 ** 64,
- maxstring_inner=2 ** 64,
- maxother_outer=2 ** 64,
- maxother_inner=2 ** 64,
+ maxstring_outer=2**64,
+ maxstring_inner=2**64,
+ maxother_outer=2**64,
+ maxother_inner=2**64,
)
- if context == 'repl' and eval_result is None:
+ if context == "repl" and eval_result is None:
# We don't want "None" to appear when typing in the repl.
body = pydevd_schema.EvaluateResponseBody(
- result='',
+ result="",
variablesReference=0,
)
@@ -1228,14 +1277,14 @@ def __create_frame():
var_data = variable.get_var_data(fmt=fmt, context=context, **safe_repr_custom_attrs)
body = pydevd_schema.EvaluateResponseBody(
- result=var_data['value'],
- variablesReference=var_data.get('variablesReference', 0),
- type=var_data.get('type'),
- presentationHint=var_data.get('presentationHint'),
- namedVariables=var_data.get('namedVariables'),
- indexedVariables=var_data.get('indexedVariables'),
+ result=var_data["value"],
+ variablesReference=var_data.get("variablesReference", 0),
+ type=var_data.get("type"),
+ presentationHint=var_data.get("presentationHint"),
+ namedVariables=var_data.get("namedVariables"),
+ indexedVariables=var_data.get("indexedVariables"),
)
- variables_response = pydevd_base_schema.build_response(request, kwargs={'body':body})
+ variables_response = pydevd_base_schema.build_response(request, kwargs={"body": body})
py_db.writer.add_command(NetCommand(CMD_RETURN, 0, variables_response, is_json=True))
@@ -1252,7 +1301,7 @@ def _evaluate_response_return_exception(py_db, request, exc_type, exc, initial_t
if tb is None:
tb = initial_tb
- err = ''.join(traceback.format_exception(exc_type, exc, tb))
+ err = "".join(traceback.format_exception(exc_type, exc, tb))
# Make sure we don't keep references to them.
exc = None
@@ -1261,7 +1310,7 @@ def _evaluate_response_return_exception(py_db, request, exc_type, exc, initial_t
temp_tb = None
initial_tb = None
except:
- err = ''
+ err = ""
pydev_log.exception(err)
# Currently there is an issue in VSC where returning success=false for an
@@ -1272,7 +1321,7 @@ def _evaluate_response_return_exception(py_db, request, exc_type, exc, initial_t
@silence_warnings_decorator
def internal_evaluate_expression(dbg, seq, thread_id, frame_id, expression, is_exec, trim_if_too_big, attr_to_set_result):
- ''' gets the value of a variable '''
+ """gets the value of a variable"""
try:
frame = dbg.find_frame(thread_id, frame_id)
if frame is not None:
@@ -1294,9 +1343,8 @@ def internal_evaluate_expression(dbg, seq, thread_id, frame_id, expression, is_e
def _set_expression_response(py_db, request, result, error_message):
- body = pydevd_schema.SetExpressionResponseBody(result='', variablesReference=0)
- variables_response = pydevd_base_schema.build_response(request, kwargs={
- 'body':body, 'success':False, 'message': error_message})
+ body = pydevd_schema.SetExpressionResponseBody(result="", variablesReference=0)
+ variables_response = pydevd_base_schema.build_response(request, kwargs={"body": body, "success": False, "message": error_message})
py_db.writer.add_command(NetCommand(CMD_RETURN, 0, variables_response, is_json=True))
@@ -1308,23 +1356,23 @@ def internal_set_expression_json(py_db, request, thread_id):
frame_id = arguments.frameId
value = arguments.value
fmt = arguments.format
- if hasattr(fmt, 'to_dict'):
+ if hasattr(fmt, "to_dict"):
fmt = fmt.to_dict()
frame = py_db.find_frame(thread_id, frame_id)
- exec_code = '%s = (%s)' % (expression, value)
+ exec_code = "%s = (%s)" % (expression, value)
result = pydevd_vars.evaluate_expression(py_db, frame, exec_code, is_exec=True)
is_error = isinstance(result, ExceptionOnEvaluate)
if is_error:
- _set_expression_response(py_db, request, result, error_message='Error executing: %s' % (exec_code,))
+ _set_expression_response(py_db, request, result, error_message="Error executing: %s" % (exec_code,))
return
# Ok, we have the result (could be an error), let's put it into the saved variables.
frame_tracker = py_db.suspended_frames_manager.get_frame_tracker(thread_id)
if frame_tracker is None:
# This is not really expected.
- _set_expression_response(py_db, request, result, error_message='Thread id: %s is not current thread id.' % (thread_id,))
+ _set_expression_response(py_db, request, result, error_message="Thread id: %s is not current thread id." % (thread_id,))
return
# Now that the exec is done, get the actual value changed to return.
@@ -1333,31 +1381,31 @@ def internal_set_expression_json(py_db, request, thread_id):
var_data = variable.get_var_data(fmt=fmt)
body = pydevd_schema.SetExpressionResponseBody(
- value=var_data['value'],
- variablesReference=var_data.get('variablesReference', 0),
- type=var_data.get('type'),
- presentationHint=var_data.get('presentationHint'),
- namedVariables=var_data.get('namedVariables'),
- indexedVariables=var_data.get('indexedVariables'),
+ value=var_data["value"],
+ variablesReference=var_data.get("variablesReference", 0),
+ type=var_data.get("type"),
+ presentationHint=var_data.get("presentationHint"),
+ namedVariables=var_data.get("namedVariables"),
+ indexedVariables=var_data.get("indexedVariables"),
)
- variables_response = pydevd_base_schema.build_response(request, kwargs={'body':body})
+ variables_response = pydevd_base_schema.build_response(request, kwargs={"body": body})
py_db.writer.add_command(NetCommand(CMD_RETURN, 0, variables_response, is_json=True))
def internal_get_completions(dbg, seq, thread_id, frame_id, act_tok, line=-1, column=-1):
- '''
+ """
Note that if the column is >= 0, the act_tok is considered text and the actual
activation token/qualifier is computed in this command.
- '''
+ """
try:
remove_path = None
try:
- qualifier = ''
+ qualifier = ""
if column >= 0:
token_and_qualifier = extract_token_and_qualifier(act_tok, line, column)
act_tok = token_and_qualifier[0]
if act_tok:
- act_tok += '.'
+ act_tok += "."
qualifier = token_and_qualifier[1]
frame = dbg.find_frame(thread_id, frame_id)
@@ -1367,11 +1415,12 @@ def internal_get_completions(dbg, seq, thread_id, frame_id, act_tok, line=-1, co
# Note that qualifier and start are only actually valid for the
# Debug Adapter Protocol (for the line-based protocol, the IDE
# is required to filter the completions returned).
- cmd = dbg.cmd_factory.make_get_completions_message(
- seq, completions, qualifier, start=column - len(qualifier))
+ cmd = dbg.cmd_factory.make_get_completions_message(seq, completions, qualifier, start=column - len(qualifier))
dbg.writer.add_command(cmd)
else:
- cmd = dbg.cmd_factory.make_error_message(seq, "internal_get_completions: Frame not found: %s from thread: %s" % (frame_id, thread_id))
+ cmd = dbg.cmd_factory.make_error_message(
+ seq, "internal_get_completions: Frame not found: %s from thread: %s" % (frame_id, thread_id)
+ )
dbg.writer.add_command(cmd)
finally:
@@ -1380,18 +1429,17 @@ def internal_get_completions(dbg, seq, thread_id, frame_id, act_tok, line=-1, co
except:
exc = get_exception_traceback_str()
- sys.stderr.write('%s\n' % (exc,))
+ sys.stderr.write("%s\n" % (exc,))
cmd = dbg.cmd_factory.make_error_message(seq, "Error evaluating expression " + exc)
dbg.writer.add_command(cmd)
def internal_get_description(dbg, seq, thread_id, frame_id, expression):
- ''' Fetch the variable description stub from the debug console
- '''
+ """Fetch the variable description stub from the debug console"""
try:
frame = dbg.find_frame(thread_id, frame_id)
description = pydevd_console.get_description(frame, thread_id, frame_id, expression)
- description = pydevd_xml.make_valid_xml_value(quote(description, '/>_= \t'))
+ description = pydevd_xml.make_valid_xml_value(quote(description, "/>_= \t"))
description_xml = '' % description
cmd = dbg.cmd_factory.make_get_description_message(seq, description_xml)
dbg.writer.add_command(cmd)
@@ -1402,15 +1450,15 @@ def internal_get_description(dbg, seq, thread_id, frame_id, expression):
def build_exception_info_response(dbg, thread_id, thread, request_seq, set_additional_thread_info, iter_visible_frames_info, max_frames):
- '''
+ """
:return ExceptionInfoResponse
- '''
+ """
additional_info = set_additional_thread_info(thread)
topmost_frame = additional_info.get_topmost_frame(thread)
- current_paused_frame_name = ''
+ current_paused_frame_name = ""
- source_path = '' # This is an extra bit of data used by Visual Studio
+ source_path = "" # This is an extra bit of data used by Visual Studio
stack_str_lst = []
name = None
description = None
@@ -1446,19 +1494,27 @@ def build_exception_info_response(dbg, thread_id, thread, request_seq, set_addit
except:
pass
- for frame_id, frame, method_name, original_filename, filename_in_utf8, lineno, _applied_mapping, show_as_current_frame, line_col_info in \
- iter_visible_frames_info(dbg, frames_list):
-
+ for (
+ frame_id,
+ frame,
+ method_name,
+ original_filename,
+ filename_in_utf8,
+ lineno,
+ _applied_mapping,
+ show_as_current_frame,
+ line_col_info,
+ ) in iter_visible_frames_info(dbg, frames_list):
line_text = linecache.getline(original_filename, lineno)
# Never filter out plugin frames!
- if not getattr(frame, 'IS_PLUGIN_FRAME', False):
+ if not getattr(frame, "IS_PLUGIN_FRAME", False):
if dbg.is_files_filter_enabled and dbg.apply_files_filter(frame, original_filename, False):
continue
if show_as_current_frame:
current_paused_frame_name = method_name
- method_name += ' (Current frame)'
+ method_name += " (Current frame)"
frames.append((filename_in_utf8, lineno, method_name, line_text, line_col_info))
if not source_path and frames:
@@ -1474,11 +1530,11 @@ def build_exception_info_response(dbg, thread_id, thread, request_seq, set_addit
frame_summary.end_colno = line_col_info.end_colno
stack_summary.append(frame_summary)
- stack_str = ''.join(stack_summary.format())
+ stack_str = "".join(stack_summary.format())
else:
# Note: remove col info (just used in 3.11).
- stack_str = ''.join(traceback.format_list((x[:-1] for x in frames[-max_frames:])))
+ stack_str = "".join(traceback.format_list((x[:-1] for x in frames[-max_frames:])))
try:
stype = frames_list.exc_type.__qualname__
@@ -1486,12 +1542,12 @@ def build_exception_info_response(dbg, thread_id, thread, request_seq, set_addit
if smod not in ("__main__", "builtins"):
if not isinstance(smod, str):
smod = ""
- stype = smod + '.' + stype
+ stype = smod + "." + stype
except Exception:
- stype = ''
- pydev_log.exception('Error getting exception type.')
+ stype = ""
+ pydev_log.exception("Error getting exception type.")
- stack_str += '%s: %s\n' % (stype, frames_list.exc_desc)
+ stack_str += "%s: %s\n" % (stype, frames_list.exc_desc)
stack_str += frames_list.exc_context_msg
stack_str_lst.append(stack_str)
@@ -1500,18 +1556,18 @@ def build_exception_info_response(dbg, thread_id, thread, request_seq, set_addit
break
except:
- pydev_log.exception('Error on build_exception_info_response.')
+ pydev_log.exception("Error on build_exception_info_response.")
finally:
topmost_frame = None
- full_stack_str = ''.join(reversed(stack_str_lst))
+ full_stack_str = "".join(reversed(stack_str_lst))
if not name:
- name = 'exception: type unknown'
+ name = "exception: type unknown"
if not description:
- description = 'exception: no description'
+ description = "exception: no description"
if current_paused_frame_name:
- name += ' (note: full exception trace is shown but execution is paused at: %s)' % (current_paused_frame_name,)
+ name += " (note: full exception trace is shown but execution is paused at: %s)" % (current_paused_frame_name,)
if thread.stop_reason == CMD_STEP_CAUGHT_EXCEPTION:
break_mode = pydevd_schema.ExceptionBreakMode.ALWAYS
@@ -1521,7 +1577,7 @@ def build_exception_info_response(dbg, thread_id, thread, request_seq, set_addit
response = pydevd_schema.ExceptionInfoResponse(
request_seq=request_seq,
success=True,
- command='exceptionInfo',
+ command="exceptionInfo",
body=pydevd_schema.ExceptionInfoResponseBody(
exceptionId=name,
description=description,
@@ -1533,29 +1589,28 @@ def build_exception_info_response(dbg, thread_id, thread, request_seq, set_addit
source=source_path,
# Note: ExceptionDetails actually accepts an 'innerException', but
# when passing it, VSCode is not showing the stack trace at all.
- )
- )
+ ),
+ ),
)
return response
-def internal_get_exception_details_json(dbg, request, thread_id, thread, max_frames, set_additional_thread_info=None, iter_visible_frames_info=None):
- ''' Fetch exception details
- '''
+def internal_get_exception_details_json(
+ dbg, request, thread_id, thread, max_frames, set_additional_thread_info=None, iter_visible_frames_info=None
+):
+ """Fetch exception details"""
try:
- response = build_exception_info_response(dbg, thread_id, thread, request.seq, set_additional_thread_info, iter_visible_frames_info, max_frames)
+ response = build_exception_info_response(
+ dbg, thread_id, thread, request.seq, set_additional_thread_info, iter_visible_frames_info, max_frames
+ )
except:
exc = get_exception_traceback_str()
- response = pydevd_base_schema.build_response(request, kwargs={
- 'success': False,
- 'message': exc,
- 'body':{}
- })
+ response = pydevd_base_schema.build_response(request, kwargs={"success": False, "message": exc, "body": {}})
dbg.writer.add_command(NetCommand(CMD_RETURN, 0, response, is_json=True))
class InternalGetBreakpointException(InternalThreadCommand):
- ''' Send details of exception raised while evaluating conditional breakpoint '''
+ """Send details of exception raised while evaluating conditional breakpoint"""
def __init__(self, thread_id, exc_type, stacktrace):
self.sequence = 0
@@ -1575,27 +1630,31 @@ def do_it(self, dbg):
# convert it to utf8
filename = filename.decode(file_system_encoding).encode("utf-8")
- callstack += '' \
- % (self.thread_id, makeValid(filename), line, makeValid(methodname), makeValid(methodobj))
+ callstack += '' % (
+ self.thread_id,
+ makeValid(filename),
+ line,
+ makeValid(methodname),
+ makeValid(methodobj),
+ )
callstack += ""
cmd = dbg.cmd_factory.make_send_breakpoint_exception_message(self.sequence, self.exc_type + "\t" + callstack)
dbg.writer.add_command(cmd)
except:
exc = get_exception_traceback_str()
- sys.stderr.write('%s\n' % (exc,))
+ sys.stderr.write("%s\n" % (exc,))
cmd = dbg.cmd_factory.make_error_message(self.sequence, "Error Sending Exception: " + exc)
dbg.writer.add_command(cmd)
class InternalSendCurrExceptionTrace(InternalThreadCommand):
- ''' Send details of the exception that was caught and where we've broken in.
- '''
+ """Send details of the exception that was caught and where we've broken in."""
def __init__(self, thread_id, arg, curr_frame_id):
- '''
+ """
:param arg: exception type, description, traceback object
- '''
+ """
self.sequence = 0
self.thread_id = thread_id
self.curr_frame_id = curr_frame_id
@@ -1608,14 +1667,13 @@ def do_it(self, dbg):
dbg.writer.add_command(cmd)
except:
exc = get_exception_traceback_str()
- sys.stderr.write('%s\n' % (exc,))
+ sys.stderr.write("%s\n" % (exc,))
cmd = dbg.cmd_factory.make_error_message(self.sequence, "Error Sending Current Exception Trace: " + exc)
dbg.writer.add_command(cmd)
class InternalSendCurrExceptionTraceProceeded(InternalThreadCommand):
- ''' Send details of the exception that was caught and where we've broken in.
- '''
+ """Send details of the exception that was caught and where we've broken in."""
def __init__(self, thread_id):
self.sequence = 0
@@ -1627,13 +1685,13 @@ def do_it(self, dbg):
dbg.writer.add_command(cmd)
except:
exc = get_exception_traceback_str()
- sys.stderr.write('%s\n' % (exc,))
+ sys.stderr.write("%s\n" % (exc,))
cmd = dbg.cmd_factory.make_error_message(self.sequence, "Error Sending Current Exception Trace Proceeded: " + exc)
dbg.writer.add_command(cmd)
class InternalEvaluateConsoleExpression(InternalThreadCommand):
- ''' Execute the given command in the debug console '''
+ """Execute the given command in the debug console"""
def __init__(self, seq, thread_id, frame_id, line, buffer_output=True):
self.sequence = seq
@@ -1643,22 +1701,24 @@ def __init__(self, seq, thread_id, frame_id, line, buffer_output=True):
self.buffer_output = buffer_output
def do_it(self, dbg):
- ''' Create an XML for console output, error and more (true/false)
+ """Create an XML for console output, error and more (true/false)
true/false
- '''
+ """
try:
frame = dbg.find_frame(self.thread_id, self.frame_id)
if frame is not None:
console_message = pydevd_console.execute_console_command(
- frame, self.thread_id, self.frame_id, self.line, self.buffer_output)
+ frame, self.thread_id, self.frame_id, self.line, self.buffer_output
+ )
cmd = dbg.cmd_factory.make_send_console_message(self.sequence, console_message.to_xml())
else:
from _pydevd_bundle.pydevd_console import ConsoleMessage
+
console_message = ConsoleMessage()
console_message.add_console_message(
pydevd_console.CONSOLE_ERROR,
@@ -1672,8 +1732,7 @@ def do_it(self, dbg):
class InternalRunCustomOperation(InternalThreadCommand):
- ''' Run a custom command on an expression
- '''
+ """Run a custom command on an expression"""
def __init__(self, seq, thread_id, frame_id, scope, attrs, style, encoded_code_or_file, fnname):
self.sequence = seq
@@ -1687,8 +1746,9 @@ def __init__(self, seq, thread_id, frame_id, scope, attrs, style, encoded_code_o
def do_it(self, dbg):
try:
- res = pydevd_vars.custom_operation(dbg, self.thread_id, self.frame_id, self.scope, self.attrs,
- self.style, self.code_or_file, self.fnname)
+ res = pydevd_vars.custom_operation(
+ dbg, self.thread_id, self.frame_id, self.scope, self.attrs, self.style, self.code_or_file, self.fnname
+ )
resEncoded = quote_plus(res)
cmd = dbg.cmd_factory.make_custom_operation_message(self.sequence, resEncoded)
dbg.writer.add_command(cmd)
@@ -1699,8 +1759,7 @@ def do_it(self, dbg):
class InternalConsoleGetCompletions(InternalThreadCommand):
- ''' Fetch the completions in the debug console
- '''
+ """Fetch the completions in the debug console"""
def __init__(self, seq, thread_id, frame_id, act_tok):
self.sequence = seq
@@ -1709,8 +1768,7 @@ def __init__(self, seq, thread_id, frame_id, act_tok):
self.act_tok = act_tok
def do_it(self, dbg):
- ''' Get completions and write back to the client
- '''
+ """Get completions and write back to the client"""
try:
frame = dbg.find_frame(self.thread_id, self.frame_id)
completions_xml = pydevd_console.get_completions(frame, self.act_tok)
@@ -1723,7 +1781,7 @@ def do_it(self, dbg):
class InternalConsoleExec(InternalThreadCommand):
- ''' gets the value of a variable '''
+ """gets the value of a variable"""
def __init__(self, seq, thread_id, frame_id, expression):
self.sequence = seq
@@ -1731,24 +1789,40 @@ def __init__(self, seq, thread_id, frame_id, expression):
self.frame_id = frame_id
self.expression = expression
- def do_it(self, dbg):
- ''' Converts request into python variable '''
+ def init_matplotlib_in_debug_console(self, py_db):
+ # import hook and patches for matplotlib support in debug console
+ from _pydev_bundle.pydev_import_hook import import_hook_manager
+
+ if is_current_thread_main_thread():
+ for module in list(py_db.mpl_modules_for_patching):
+ import_hook_manager.add_module_name(module, py_db.mpl_modules_for_patching.pop(module))
+
+ def do_it(self, py_db):
+ if not py_db.mpl_hooks_in_debug_console and not py_db.gui_in_use:
+ # add import hooks for matplotlib patches if only debug console was started
+ try:
+ self.init_matplotlib_in_debug_console(py_db)
+ py_db.gui_in_use = True
+ except:
+ pydev_log.debug("Matplotlib support in debug console failed", traceback.format_exc())
+ py_db.mpl_hooks_in_debug_console = True
+
try:
try:
- # don't trace new threads created by console command
+ # Don't trace new threads created by console command.
disable_trace_thread_modules()
- result = pydevconsole.console_exec(self.thread_id, self.frame_id, self.expression, dbg)
+ result = pydevconsole.console_exec(self.thread_id, self.frame_id, self.expression, py_db)
xml = ""
xml += pydevd_xml.var_to_xml(result, "")
xml += ""
- cmd = dbg.cmd_factory.make_evaluate_expression_message(self.sequence, xml)
- dbg.writer.add_command(cmd)
+ cmd = py_db.cmd_factory.make_evaluate_expression_message(self.sequence, xml)
+ py_db.writer.add_command(cmd)
except:
exc = get_exception_traceback_str()
- sys.stderr.write('%s\n' % (exc,))
- cmd = dbg.cmd_factory.make_error_message(self.sequence, "Error evaluating console expression " + exc)
- dbg.writer.add_command(cmd)
+ sys.stderr.write("%s\n" % (exc,))
+ cmd = py_db.cmd_factory.make_error_message(self.sequence, "Error evaluating console expression " + exc)
+ py_db.writer.add_command(cmd)
finally:
enable_trace_thread_modules()
@@ -1757,9 +1831,9 @@ def do_it(self, dbg):
class InternalLoadFullValue(InternalThreadCommand):
- '''
+ """
Loads values asynchronously
- '''
+ """
def __init__(self, seq, thread_id, frame_id, vars):
self.sequence = seq
@@ -1769,14 +1843,14 @@ def __init__(self, seq, thread_id, frame_id, vars):
@silence_warnings_decorator
def do_it(self, dbg):
- '''Starts a thread that will load values asynchronously'''
+ """Starts a thread that will load values asynchronously"""
try:
var_objects = []
for variable in self.vars:
variable = variable.strip()
if len(variable) > 0:
- if '\t' in variable: # there are attributes beyond scope
- scope, attrs = variable.split('\t', 1)
+ if "\t" in variable: # there are attributes beyond scope
+ scope, attrs = variable.split("\t", 1)
name = attrs[0]
else:
scope, attrs = (variable, None)
@@ -1788,22 +1862,22 @@ def do_it(self, dbg):
t.start()
except:
exc = get_exception_traceback_str()
- sys.stderr.write('%s\n' % (exc,))
+ sys.stderr.write("%s\n" % (exc,))
cmd = dbg.cmd_factory.make_error_message(self.sequence, "Error evaluating variable %s " % exc)
dbg.writer.add_command(cmd)
class AbstractGetValueAsyncThread(PyDBDaemonThread):
- '''
+ """
Abstract class for a thread, which evaluates values for async variables
- '''
+ """
def __init__(self, py_db, frame_accessor, seq, var_objects):
PyDBDaemonThread.__init__(self, py_db)
self.frame_accessor = frame_accessor
self.seq = seq
self.var_objs = var_objects
- self.cancel_event = threading.Event()
+ self.cancel_event = ThreadingEvent()
def send_result(self, xml):
raise NotImplementedError()
@@ -1813,7 +1887,7 @@ def _on_run(self):
start = time.time()
xml = StringIO()
xml.write("")
- for (var_obj, name) in self.var_objs:
+ for var_obj, name in self.var_objs:
current_time = time.time()
if current_time - start > ASYNC_EVAL_TIMEOUT_SEC or self.cancel_event.is_set():
break
@@ -1824,10 +1898,10 @@ def _on_run(self):
class GetValueAsyncThreadDebug(AbstractGetValueAsyncThread):
- '''
+ """
A thread for evaluation async values, which returns result for debugger
Create message and send it via writer thread
- '''
+ """
def send_result(self, xml):
if self.frame_accessor is not None:
@@ -1836,12 +1910,11 @@ def send_result(self, xml):
class GetValueAsyncThreadConsole(AbstractGetValueAsyncThread):
- '''
+ """
A thread for evaluation async values, which returns result for Console
Send result directly to Console's server
- '''
+ """
def send_result(self, xml):
if self.frame_accessor is not None:
self.frame_accessor.ReturnFullValue(self.seq, xml.getvalue())
-
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py
index ad05a3250..7de3d8ef8 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py
@@ -110,99 +110,91 @@
VERSION_STRING = "@@BUILD_NUMBER@@"
from _pydev_bundle._pydev_filesystem_encoding import getfilesystemencoding
+
file_system_encoding = getfilesystemencoding()
-filesystem_encoding_is_utf8 = file_system_encoding.lower() in ('utf-8', 'utf_8', 'utf8')
+filesystem_encoding_is_utf8 = file_system_encoding.lower() in ("utf-8", "utf_8", "utf8")
ID_TO_MEANING = {
- '101': 'CMD_RUN',
- '102': 'CMD_LIST_THREADS',
- '103': 'CMD_THREAD_CREATE',
- '104': 'CMD_THREAD_KILL',
- '105': 'CMD_THREAD_SUSPEND',
- '106': 'CMD_THREAD_RUN',
- '107': 'CMD_STEP_INTO',
- '108': 'CMD_STEP_OVER',
- '109': 'CMD_STEP_RETURN',
- '110': 'CMD_GET_VARIABLE',
- '111': 'CMD_SET_BREAK',
- '112': 'CMD_REMOVE_BREAK',
- '113': 'CMD_EVALUATE_EXPRESSION',
- '114': 'CMD_GET_FRAME',
- '115': 'CMD_EXEC_EXPRESSION',
- '116': 'CMD_WRITE_TO_CONSOLE',
- '117': 'CMD_CHANGE_VARIABLE',
- '118': 'CMD_RUN_TO_LINE',
- '119': 'CMD_RELOAD_CODE',
- '120': 'CMD_GET_COMPLETIONS',
- '121': 'CMD_CONSOLE_EXEC',
- '122': 'CMD_ADD_EXCEPTION_BREAK',
- '123': 'CMD_REMOVE_EXCEPTION_BREAK',
- '124': 'CMD_LOAD_SOURCE',
- '125': 'CMD_ADD_DJANGO_EXCEPTION_BREAK',
- '126': 'CMD_REMOVE_DJANGO_EXCEPTION_BREAK',
- '127': 'CMD_SET_NEXT_STATEMENT',
- '128': 'CMD_SMART_STEP_INTO',
- '129': 'CMD_EXIT',
- '130': 'CMD_SIGNATURE_CALL_TRACE',
-
- '131': 'CMD_SET_PY_EXCEPTION',
- '132': 'CMD_GET_FILE_CONTENTS',
- '133': 'CMD_SET_PROPERTY_TRACE',
- '134': 'CMD_EVALUATE_CONSOLE_EXPRESSION',
- '135': 'CMD_RUN_CUSTOM_OPERATION',
- '136': 'CMD_GET_BREAKPOINT_EXCEPTION',
- '137': 'CMD_STEP_CAUGHT_EXCEPTION',
- '138': 'CMD_SEND_CURR_EXCEPTION_TRACE',
- '139': 'CMD_SEND_CURR_EXCEPTION_TRACE_PROCEEDED',
- '140': 'CMD_IGNORE_THROWN_EXCEPTION_AT',
- '141': 'CMD_ENABLE_DONT_TRACE',
- '142': 'CMD_SHOW_CONSOLE',
- '143': 'CMD_GET_ARRAY',
- '144': 'CMD_STEP_INTO_MY_CODE',
- '145': 'CMD_GET_CONCURRENCY_EVENT',
- '146': 'CMD_SHOW_RETURN_VALUES',
- '147': 'CMD_INPUT_REQUESTED',
- '148': 'CMD_GET_DESCRIPTION',
-
- '149': 'CMD_PROCESS_CREATED', # Note: this is actually a notification of a sub-process created.
- '150': 'CMD_SHOW_CYTHON_WARNING',
- '151': 'CMD_LOAD_FULL_VALUE',
- '152': 'CMD_GET_THREAD_STACK',
- '153': 'CMD_THREAD_DUMP_TO_STDERR',
- '154': 'CMD_STOP_ON_START',
- '155': 'CMD_GET_EXCEPTION_DETAILS',
- '156': 'CMD_PYDEVD_JSON_CONFIG',
- '157': 'CMD_THREAD_SUSPEND_SINGLE_NOTIFICATION',
- '158': 'CMD_THREAD_RESUME_SINGLE_NOTIFICATION',
-
- '159': 'CMD_STEP_OVER_MY_CODE',
- '160': 'CMD_STEP_RETURN_MY_CODE',
-
- '161': 'CMD_SET_PY_EXCEPTION_JSON',
- '162': 'CMD_SET_PATH_MAPPING_JSON',
- '163': 'CMD_GET_SMART_STEP_INTO_VARIANTS',
-
- '200': 'CMD_REDIRECT_OUTPUT',
- '201': 'CMD_GET_NEXT_STATEMENT_TARGETS',
- '202': 'CMD_SET_PROJECT_ROOTS',
- '203': 'CMD_MODULE_EVENT',
- '204': 'CMD_PROCESS_EVENT', # DAP process event.
-
- '205': 'CMD_AUTHENTICATE',
-
- '206': 'CMD_STEP_INTO_COROUTINE',
-
- '207': 'CMD_LOAD_SOURCE_FROM_FRAME_ID',
-
- '501': 'CMD_VERSION',
- '502': 'CMD_RETURN',
- '503': 'CMD_SET_PROTOCOL',
- '901': 'CMD_ERROR',
+ "101": "CMD_RUN",
+ "102": "CMD_LIST_THREADS",
+ "103": "CMD_THREAD_CREATE",
+ "104": "CMD_THREAD_KILL",
+ "105": "CMD_THREAD_SUSPEND",
+ "106": "CMD_THREAD_RUN",
+ "107": "CMD_STEP_INTO",
+ "108": "CMD_STEP_OVER",
+ "109": "CMD_STEP_RETURN",
+ "110": "CMD_GET_VARIABLE",
+ "111": "CMD_SET_BREAK",
+ "112": "CMD_REMOVE_BREAK",
+ "113": "CMD_EVALUATE_EXPRESSION",
+ "114": "CMD_GET_FRAME",
+ "115": "CMD_EXEC_EXPRESSION",
+ "116": "CMD_WRITE_TO_CONSOLE",
+ "117": "CMD_CHANGE_VARIABLE",
+ "118": "CMD_RUN_TO_LINE",
+ "119": "CMD_RELOAD_CODE",
+ "120": "CMD_GET_COMPLETIONS",
+ "121": "CMD_CONSOLE_EXEC",
+ "122": "CMD_ADD_EXCEPTION_BREAK",
+ "123": "CMD_REMOVE_EXCEPTION_BREAK",
+ "124": "CMD_LOAD_SOURCE",
+ "125": "CMD_ADD_DJANGO_EXCEPTION_BREAK",
+ "126": "CMD_REMOVE_DJANGO_EXCEPTION_BREAK",
+ "127": "CMD_SET_NEXT_STATEMENT",
+ "128": "CMD_SMART_STEP_INTO",
+ "129": "CMD_EXIT",
+ "130": "CMD_SIGNATURE_CALL_TRACE",
+ "131": "CMD_SET_PY_EXCEPTION",
+ "132": "CMD_GET_FILE_CONTENTS",
+ "133": "CMD_SET_PROPERTY_TRACE",
+ "134": "CMD_EVALUATE_CONSOLE_EXPRESSION",
+ "135": "CMD_RUN_CUSTOM_OPERATION",
+ "136": "CMD_GET_BREAKPOINT_EXCEPTION",
+ "137": "CMD_STEP_CAUGHT_EXCEPTION",
+ "138": "CMD_SEND_CURR_EXCEPTION_TRACE",
+ "139": "CMD_SEND_CURR_EXCEPTION_TRACE_PROCEEDED",
+ "140": "CMD_IGNORE_THROWN_EXCEPTION_AT",
+ "141": "CMD_ENABLE_DONT_TRACE",
+ "142": "CMD_SHOW_CONSOLE",
+ "143": "CMD_GET_ARRAY",
+ "144": "CMD_STEP_INTO_MY_CODE",
+ "145": "CMD_GET_CONCURRENCY_EVENT",
+ "146": "CMD_SHOW_RETURN_VALUES",
+ "147": "CMD_INPUT_REQUESTED",
+ "148": "CMD_GET_DESCRIPTION",
+ "149": "CMD_PROCESS_CREATED", # Note: this is actually a notification of a sub-process created.
+ "150": "CMD_SHOW_CYTHON_WARNING",
+ "151": "CMD_LOAD_FULL_VALUE",
+ "152": "CMD_GET_THREAD_STACK",
+ "153": "CMD_THREAD_DUMP_TO_STDERR",
+ "154": "CMD_STOP_ON_START",
+ "155": "CMD_GET_EXCEPTION_DETAILS",
+ "156": "CMD_PYDEVD_JSON_CONFIG",
+ "157": "CMD_THREAD_SUSPEND_SINGLE_NOTIFICATION",
+ "158": "CMD_THREAD_RESUME_SINGLE_NOTIFICATION",
+ "159": "CMD_STEP_OVER_MY_CODE",
+ "160": "CMD_STEP_RETURN_MY_CODE",
+ "161": "CMD_SET_PY_EXCEPTION_JSON",
+ "162": "CMD_SET_PATH_MAPPING_JSON",
+ "163": "CMD_GET_SMART_STEP_INTO_VARIANTS",
+ "200": "CMD_REDIRECT_OUTPUT",
+ "201": "CMD_GET_NEXT_STATEMENT_TARGETS",
+ "202": "CMD_SET_PROJECT_ROOTS",
+ "203": "CMD_MODULE_EVENT",
+ "204": "CMD_PROCESS_EVENT", # DAP process event.
+ "205": "CMD_AUTHENTICATE",
+ "206": "CMD_STEP_INTO_COROUTINE",
+ "207": "CMD_LOAD_SOURCE_FROM_FRAME_ID",
+ "501": "CMD_VERSION",
+ "502": "CMD_RETURN",
+ "503": "CMD_SET_PROTOCOL",
+ "901": "CMD_ERROR",
}
def constant_to_str(constant):
s = ID_TO_MEANING.get(str(constant))
if not s:
- s = '' % (constant,)
+ s = "" % (constant,)
return s
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py
index b46c98b1e..8fb3e03ce 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py
@@ -3,13 +3,13 @@
class ArgHandlerWithParam:
- '''
+ """
Handler for some arguments which needs a value
- '''
+ """
def __init__(self, arg_name, convert_val=None, default_val=None):
self.arg_name = arg_name
- self.arg_v_rep = '--%s' % (arg_name,)
+ self.arg_v_rep = "--%s" % (arg_name,)
self.convert_val = convert_val
self.default_val = default_val
@@ -17,7 +17,7 @@ def to_argv(self, lst, setup):
v = setup.get(self.arg_name)
if v is not None and v != self.default_val:
lst.append(self.arg_v_rep)
- lst.append('%s' % (v,))
+ lst.append("%s" % (v,))
def handle_argv(self, argv, i, setup):
assert argv[i] == self.arg_v_rep
@@ -32,13 +32,13 @@ def handle_argv(self, argv, i, setup):
class ArgHandlerBool:
- '''
+ """
If a given flag is received, mark it as 'True' in setup.
- '''
+ """
def __init__(self, arg_name, default_val=False):
self.arg_name = arg_name
- self.arg_v_rep = '--%s' % (arg_name,)
+ self.arg_v_rep = "--%s" % (arg_name,)
self.default_val = default_val
def to_argv(self, lst, setup):
@@ -56,42 +56,38 @@ def convert_ppid(ppid):
ret = int(ppid)
if ret != 0:
if ret == os.getpid():
- raise AssertionError(
- 'ppid passed is the same as the current process pid (%s)!' % (ret,))
+ raise AssertionError("ppid passed is the same as the current process pid (%s)!" % (ret,))
return ret
ACCEPTED_ARG_HANDLERS = [
- ArgHandlerWithParam('port', int, 0),
- ArgHandlerWithParam('ppid', convert_ppid, 0),
- ArgHandlerWithParam('vm_type'),
- ArgHandlerWithParam('client'),
- ArgHandlerWithParam('access-token'),
- ArgHandlerWithParam('client-access-token'),
- ArgHandlerWithParam('debug-mode'),
- ArgHandlerWithParam('preimport'),
-
+ ArgHandlerWithParam("port", int, 0),
+ ArgHandlerWithParam("ppid", convert_ppid, 0),
+ ArgHandlerWithParam("vm_type"),
+ ArgHandlerWithParam("client"),
+ ArgHandlerWithParam("access-token"),
+ ArgHandlerWithParam("client-access-token"),
+ ArgHandlerWithParam("debug-mode"),
+ ArgHandlerWithParam("preimport"),
# Logging
- ArgHandlerWithParam('log-file'),
- ArgHandlerWithParam('log-level', int, None),
-
- ArgHandlerBool('server'),
- ArgHandlerBool('multiproc'), # Used by PyCharm (reuses connection: ssh tunneling)
- ArgHandlerBool('multiprocess'), # Used by PyDev (creates new connection to ide)
- ArgHandlerBool('save-signatures'),
- ArgHandlerBool('save-threading'),
- ArgHandlerBool('save-asyncio'),
- ArgHandlerBool('print-in-debugger-startup'),
- ArgHandlerBool('cmd-line'),
- ArgHandlerBool('module'),
- ArgHandlerBool('skip-notify-stdin'),
-
+ ArgHandlerWithParam("log-file"),
+ ArgHandlerWithParam("log-level", int, None),
+ ArgHandlerBool("server"),
+ ArgHandlerBool("multiproc"), # Used by PyCharm (reuses connection: ssh tunneling)
+ ArgHandlerBool("multiprocess"), # Used by PyDev (creates new connection to ide)
+ ArgHandlerBool("save-signatures"),
+ ArgHandlerBool("save-threading"),
+ ArgHandlerBool("save-asyncio"),
+ ArgHandlerBool("print-in-debugger-startup"),
+ ArgHandlerBool("cmd-line"),
+ ArgHandlerBool("module"),
+ ArgHandlerBool("skip-notify-stdin"),
# The ones below should've been just one setting to specify the protocol, but for compatibility
# reasons they're passed as a flag but are mutually exclusive.
- ArgHandlerBool('json-dap'), # Protocol used by ptvsd to communicate with pydevd (a single json message in each read)
- ArgHandlerBool('json-dap-http'), # Actual DAP (json messages over http protocol).
- ArgHandlerBool('protocol-quoted-line'), # Custom protocol with quoted lines.
- ArgHandlerBool('protocol-http'), # Custom protocol with http.
+ ArgHandlerBool("json-dap"), # Protocol used by ptvsd to communicate with pydevd (a single json message in each read)
+ ArgHandlerBool("json-dap-http"), # Actual DAP (json messages over http protocol).
+ ArgHandlerBool("protocol-quoted-line"), # Custom protocol with quoted lines.
+ ArgHandlerBool("protocol-http"), # Custom protocol with http.
]
ARGV_REP_TO_HANDLER = {}
@@ -101,16 +97,17 @@ def convert_ppid(ppid):
def get_pydevd_file():
import pydevd
+
f = pydevd.__file__
- if f.endswith('.pyc'):
+ if f.endswith(".pyc"):
f = f[:-1]
- elif f.endswith('$py.class'):
- f = f[:-len('$py.class')] + '.py'
+ elif f.endswith("$py.class"):
+ f = f[: -len("$py.class")] + ".py"
return f
def setup_to_argv(setup, skip_names=None):
- '''
+ """
:param dict setup:
A dict previously gotten from process_command_line.
@@ -118,7 +115,7 @@ def setup_to_argv(setup, skip_names=None):
The names in the setup which shouldn't be converted to argv.
:note: does not handle --file nor --DEBUG.
- '''
+ """
if skip_names is None:
skip_names = set()
ret = [get_pydevd_file()]
@@ -130,13 +127,13 @@ def setup_to_argv(setup, skip_names=None):
def process_command_line(argv):
- """ parses the arguments.
- removes our arguments from the command line """
+ """parses the arguments.
+ removes our arguments from the command line"""
setup = {}
for handler in ACCEPTED_ARG_HANDLERS:
setup[handler.arg_name] = handler.default_val
- setup['file'] = ''
- setup['qt-support'] = ''
+ setup["file"] = ""
+ setup["qt-support"] = ""
initial_argv = tuple(argv)
@@ -147,39 +144,38 @@ def process_command_line(argv):
if handler is not None:
handler.handle_argv(argv, i, setup)
- elif argv[i].startswith('--qt-support'):
+ elif argv[i].startswith("--qt-support"):
# The --qt-support is special because we want to keep backward compatibility:
# Previously, just passing '--qt-support' meant that we should use the auto-discovery mode
# whereas now, if --qt-support is passed, it should be passed as --qt-support=, where
# mode can be one of 'auto', 'none', 'pyqt5', 'pyqt4', 'pyside', 'pyside2'.
- if argv[i] == '--qt-support':
- setup['qt-support'] = 'auto'
+ if argv[i] == "--qt-support":
+ setup["qt-support"] = "auto"
- elif argv[i].startswith('--qt-support='):
- qt_support = argv[i][len('--qt-support='):]
- valid_modes = ('none', 'auto', 'pyqt5', 'pyqt4', 'pyside', 'pyside2')
+ elif argv[i].startswith("--qt-support="):
+ qt_support = argv[i][len("--qt-support=") :]
+ valid_modes = ("none", "auto", "pyqt5", "pyqt4", "pyside", "pyside2")
if qt_support not in valid_modes:
raise ValueError("qt-support mode invalid: " + qt_support)
- if qt_support == 'none':
+ if qt_support == "none":
# On none, actually set an empty string to evaluate to False.
- setup['qt-support'] = ''
+ setup["qt-support"] = ""
else:
- setup['qt-support'] = qt_support
+ setup["qt-support"] = qt_support
else:
raise ValueError("Unexpected definition for qt-support flag: " + argv[i])
del argv[i]
- elif argv[i] == '--file':
+ elif argv[i] == "--file":
# --file is special because it's the last one (so, no handler for it).
del argv[i]
- setup['file'] = argv[i]
+ setup["file"] = argv[i]
i = len(argv) # pop out, file is our last argument
- elif argv[i] == '--DEBUG':
- sys.stderr.write('pydevd: --DEBUG parameter deprecated. Use `--debug-level=3` instead.\n')
+ elif argv[i] == "--DEBUG":
+ sys.stderr.write("pydevd: --DEBUG parameter deprecated. Use `--debug-level=3` instead.\n")
else:
raise ValueError("Unexpected option: %s when processing: %s" % (argv[i], initial_argv))
return setup
-
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py
index 95fc0543c..af5a8b99c 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py
@@ -17,12 +17,12 @@
threadingCurrentThread = threading.current_thread
-DONT_TRACE_THREADING = ['threading.py', 'pydevd.py']
-INNER_METHODS = ['_stop']
-INNER_FILES = ['threading.py']
-THREAD_METHODS = ['start', '_stop', 'join']
-LOCK_METHODS = ['__init__', 'acquire', 'release', '__enter__', '__exit__']
-QUEUE_METHODS = ['put', 'get']
+DONT_TRACE_THREADING = ["threading.py", "pydevd.py"]
+INNER_METHODS = ["_stop"]
+INNER_FILES = ["threading.py"]
+THREAD_METHODS = ["start", "_stop", "join"]
+LOCK_METHODS = ["__init__", "acquire", "release", "__enter__", "__exit__"]
+QUEUE_METHODS = ["put", "get"]
# return time since epoch in milliseconds
cur_time = lambda: int(round(time.time() * 1000000))
@@ -60,9 +60,9 @@ def get_text_list_for_frame(frame):
# the variables are all gotten 'on-demand'
# variables = pydevd_xml.frame_vars_to_xml(curFrame.f_locals)
- variables = ''
- cmdTextList.append('' % (quote(my_file, '/>_= \t'), myLine))
+ variables = ""
+ cmdTextList.append('' % (quote(my_file, "/>_= \t"), myLine))
cmdTextList.append(variables)
cmdTextList.append("")
curFrame = curFrame.f_back
@@ -76,9 +76,9 @@ def send_concurrency_message(event_class, time, name, thread_id, type, event, fi
dbg = GlobalDebuggerHolder.global_dbg
if dbg is None:
return
- cmdTextList = ['']
+ cmdTextList = [""]
- cmdTextList.append('<' + event_class)
+ cmdTextList.append("<" + event_class)
cmdTextList.append(' time="%s"' % pydevd_xml.make_valid_xml_value(str(time)))
cmdTextList.append(' name="%s"' % pydevd_xml.make_valid_xml_value(name))
cmdTextList.append(' thread_id="%s"' % pydevd_xml.make_valid_xml_value(thread_id))
@@ -90,24 +90,24 @@ def send_concurrency_message(event_class, time, name, thread_id, type, event, fi
cmdTextList.append(' event="%s"' % pydevd_xml.make_valid_xml_value(event))
cmdTextList.append(' file="%s"' % pydevd_xml.make_valid_xml_value(file))
cmdTextList.append(' line="%s"' % pydevd_xml.make_valid_xml_value(str(line)))
- cmdTextList.append('>' + event_class + '>')
+ cmdTextList.append(">" + event_class + ">")
cmdTextList += get_text_list_for_frame(frame)
- cmdTextList.append('')
+ cmdTextList.append("")
- text = ''.join(cmdTextList)
+ text = "".join(cmdTextList)
if dbg.writer is not None:
dbg.writer.add_command(NetCommand(145, 0, text))
def log_new_thread(global_debugger, t):
event_time = cur_time() - global_debugger.thread_analyser.start_time
- send_concurrency_message("threading_event", event_time, t.name, get_thread_id(t), "thread",
- "start", "code_name", 0, None, parent=get_thread_id(t))
+ send_concurrency_message(
+ "threading_event", event_time, t.name, get_thread_id(t), "thread", "start", "code_name", 0, None, parent=get_thread_id(t)
+ )
class ThreadingLogger:
-
def __init__(self):
self.start_time = cur_time()
@@ -141,15 +141,15 @@ def log_event(self, frame):
if isinstance(self_obj, threading.Thread):
if not hasattr(self_obj, "_pydev_run_patched"):
wrap_attr(self_obj, "run")
- if (method_name in THREAD_METHODS) and (back_base not in DONT_TRACE_THREADING or \
- (method_name in INNER_METHODS and back_base in INNER_FILES)):
+ if (method_name in THREAD_METHODS) and (
+ back_base not in DONT_TRACE_THREADING or (method_name in INNER_METHODS and back_base in INNER_FILES)
+ ):
thread_id = get_thread_id(self_obj)
name = self_obj.getName()
real_method = frame.f_code.co_name
parent = None
if real_method == "_stop":
- if back_base in INNER_FILES and \
- back.f_code.co_name == "_wait_for_tstate_lock":
+ if back_base in INNER_FILES and back.f_code.co_name == "_wait_for_tstate_lock":
back = back.f_back.f_back
real_method = "stop"
if hasattr(self_obj, "_pydev_join_called"):
@@ -164,8 +164,18 @@ def log_event(self, frame):
if real_method == "start":
parent = get_thread_id(t)
- send_concurrency_message("threading_event", event_time, name, thread_id, "thread",
- real_method, back.f_code.co_filename, back.f_lineno, back, parent=parent)
+ send_concurrency_message(
+ "threading_event",
+ event_time,
+ name,
+ thread_id,
+ "thread",
+ real_method,
+ back.f_code.co_filename,
+ back.f_lineno,
+ back,
+ parent=parent,
+ )
# print(event_time, self_obj.getName(), thread_id, "thread",
# real_method, back.f_code.co_filename, back.f_lineno)
@@ -184,8 +194,18 @@ def log_event(self, frame):
send_massage = False
# we can't detect stop after join in Python 2 yet
if send_massage:
- send_concurrency_message("threading_event", event_time, "Thread", my_thread_id, "thread",
- "stop", my_back.f_code.co_filename, my_back.f_lineno, my_back, parent=None)
+ send_concurrency_message(
+ "threading_event",
+ event_time,
+ "Thread",
+ my_thread_id,
+ "thread",
+ "stop",
+ my_back.f_code.co_filename,
+ my_back.f_lineno,
+ my_back,
+ parent=None,
+ )
if self_obj.__class__ == ObjectWrapper:
if back_base in DONT_TRACE_THREADING:
@@ -197,11 +217,19 @@ def log_event(self, frame):
# back_back_base is the file, where the method was called froms
return
if method_name == "__init__":
- send_concurrency_message("threading_event", event_time, t.name, get_thread_id(t), "lock",
- method_name, back.f_code.co_filename, back.f_lineno, back, lock_id=str(id(frame.f_locals["self"])))
- if "attr" in frame.f_locals and \
- (frame.f_locals["attr"] in LOCK_METHODS or
- frame.f_locals["attr"] in QUEUE_METHODS):
+ send_concurrency_message(
+ "threading_event",
+ event_time,
+ t.name,
+ get_thread_id(t),
+ "lock",
+ method_name,
+ back.f_code.co_filename,
+ back.f_lineno,
+ back,
+ lock_id=str(id(frame.f_locals["self"])),
+ )
+ if "attr" in frame.f_locals and (frame.f_locals["attr"] in LOCK_METHODS or frame.f_locals["attr"] in QUEUE_METHODS):
real_method = frame.f_locals["attr"]
if method_name == "call_begin":
real_method += "_begin"
@@ -212,13 +240,33 @@ def log_event(self, frame):
if real_method == "release_end":
# do not log release end. Maybe use it later
return
- send_concurrency_message("threading_event", event_time, t.name, get_thread_id(t), "lock",
- real_method, back.f_code.co_filename, back.f_lineno, back, lock_id=str(id(self_obj)))
+ send_concurrency_message(
+ "threading_event",
+ event_time,
+ t.name,
+ get_thread_id(t),
+ "lock",
+ real_method,
+ back.f_code.co_filename,
+ back.f_lineno,
+ back,
+ lock_id=str(id(self_obj)),
+ )
if real_method in ("put_end", "get_end"):
# fake release for queue, cause we don't call it directly
- send_concurrency_message("threading_event", event_time, t.name, get_thread_id(t), "lock",
- "release", back.f_code.co_filename, back.f_lineno, back, lock_id=str(id(self_obj)))
+ send_concurrency_message(
+ "threading_event",
+ event_time,
+ t.name,
+ get_thread_id(t),
+ "lock",
+ "release",
+ back.f_code.co_filename,
+ back.f_lineno,
+ back,
+ lock_id=str(id(self_obj)),
+ )
# print(event_time, t.name, get_thread_id(t), "lock",
# real_method, back.f_code.co_filename, back.f_lineno)
@@ -227,7 +275,6 @@ def log_event(self, frame):
class NameManager:
-
def __init__(self, name_prefix):
self.tasks = {}
self.last = 0
@@ -241,14 +288,13 @@ def get(self, id):
class AsyncioLogger:
-
def __init__(self):
self.task_mgr = NameManager("Task")
self.coro_mgr = NameManager("Coro")
self.start_time = cur_time()
def get_task_id(self, frame):
- asyncio = sys.modules.get('asyncio')
+ asyncio = sys.modules.get("asyncio")
if asyncio is None:
# If asyncio was not imported, there's nothing to be done
# (also fixes issue where multiprocessing is imported due
@@ -275,7 +321,7 @@ def log_event(self, frame):
if not hasattr(frame, "f_back") or frame.f_back is None:
return
- asyncio = sys.modules.get('asyncio')
+ asyncio = sys.modules.get("asyncio")
if asyncio is None:
# If asyncio was not imported, there's nothing to be done
# (also fixes issue where multiprocessing is imported due
@@ -291,15 +337,25 @@ def log_event(self, frame):
if method_name == "set_result":
task_id = id(self_obj)
task_name = self.task_mgr.get(str(task_id))
- send_concurrency_message("asyncio_event", event_time, task_name, task_name, "thread", "stop", frame.f_code.co_filename,
- frame.f_lineno, frame)
+ send_concurrency_message(
+ "asyncio_event", event_time, task_name, task_name, "thread", "stop", frame.f_code.co_filename, frame.f_lineno, frame
+ )
method_name = back.f_code.co_name
if method_name == "__init__":
task_id = id(self_obj)
task_name = self.task_mgr.get(str(task_id))
- send_concurrency_message("asyncio_event", event_time, task_name, task_name, "thread", "start", frame.f_code.co_filename,
- frame.f_lineno, frame)
+ send_concurrency_message(
+ "asyncio_event",
+ event_time,
+ task_name,
+ task_name,
+ "thread",
+ "start",
+ frame.f_code.co_filename,
+ frame.f_lineno,
+ frame,
+ )
method_name = frame.f_code.co_name
if isinstance(self_obj, asyncio.Lock):
@@ -309,8 +365,18 @@ def log_event(self, frame):
if method_name == "acquire":
if not self_obj._waiters and not self_obj.locked():
- send_concurrency_message("asyncio_event", event_time, task_name, task_name, "lock",
- method_name + "_begin", frame.f_code.co_filename, frame.f_lineno, frame, lock_id=str(id(self_obj)))
+ send_concurrency_message(
+ "asyncio_event",
+ event_time,
+ task_name,
+ task_name,
+ "lock",
+ method_name + "_begin",
+ frame.f_code.co_filename,
+ frame.f_lineno,
+ frame,
+ lock_id=str(id(self_obj)),
+ )
if self_obj.locked():
method_name += "_begin"
else:
@@ -318,8 +384,18 @@ def log_event(self, frame):
elif method_name == "release":
method_name += "_end"
- send_concurrency_message("asyncio_event", event_time, task_name, task_name, "lock",
- method_name, frame.f_code.co_filename, frame.f_lineno, frame, lock_id=str(id(self_obj)))
+ send_concurrency_message(
+ "asyncio_event",
+ event_time,
+ task_name,
+ task_name,
+ "lock",
+ method_name,
+ frame.f_code.co_filename,
+ frame.f_lineno,
+ frame,
+ lock_id=str(id(self_obj)),
+ )
if isinstance(self_obj, asyncio.Queue):
if method_name in ("put", "get", "_put", "_get"):
@@ -327,20 +403,80 @@ def log_event(self, frame):
task_name = self.task_mgr.get(str(task_id))
if method_name == "put":
- send_concurrency_message("asyncio_event", event_time, task_name, task_name, "lock",
- "acquire_begin", frame.f_code.co_filename, frame.f_lineno, frame, lock_id=str(id(self_obj)))
+ send_concurrency_message(
+ "asyncio_event",
+ event_time,
+ task_name,
+ task_name,
+ "lock",
+ "acquire_begin",
+ frame.f_code.co_filename,
+ frame.f_lineno,
+ frame,
+ lock_id=str(id(self_obj)),
+ )
elif method_name == "_put":
- send_concurrency_message("asyncio_event", event_time, task_name, task_name, "lock",
- "acquire_end", frame.f_code.co_filename, frame.f_lineno, frame, lock_id=str(id(self_obj)))
- send_concurrency_message("asyncio_event", event_time, task_name, task_name, "lock",
- "release", frame.f_code.co_filename, frame.f_lineno, frame, lock_id=str(id(self_obj)))
+ send_concurrency_message(
+ "asyncio_event",
+ event_time,
+ task_name,
+ task_name,
+ "lock",
+ "acquire_end",
+ frame.f_code.co_filename,
+ frame.f_lineno,
+ frame,
+ lock_id=str(id(self_obj)),
+ )
+ send_concurrency_message(
+ "asyncio_event",
+ event_time,
+ task_name,
+ task_name,
+ "lock",
+ "release",
+ frame.f_code.co_filename,
+ frame.f_lineno,
+ frame,
+ lock_id=str(id(self_obj)),
+ )
elif method_name == "get":
back = frame.f_back
if back.f_code.co_name != "send":
- send_concurrency_message("asyncio_event", event_time, task_name, task_name, "lock",
- "acquire_begin", frame.f_code.co_filename, frame.f_lineno, frame, lock_id=str(id(self_obj)))
+ send_concurrency_message(
+ "asyncio_event",
+ event_time,
+ task_name,
+ task_name,
+ "lock",
+ "acquire_begin",
+ frame.f_code.co_filename,
+ frame.f_lineno,
+ frame,
+ lock_id=str(id(self_obj)),
+ )
else:
- send_concurrency_message("asyncio_event", event_time, task_name, task_name, "lock",
- "acquire_end", frame.f_code.co_filename, frame.f_lineno, frame, lock_id=str(id(self_obj)))
- send_concurrency_message("asyncio_event", event_time, task_name, task_name, "lock",
- "release", frame.f_code.co_filename, frame.f_lineno, frame, lock_id=str(id(self_obj)))
+ send_concurrency_message(
+ "asyncio_event",
+ event_time,
+ task_name,
+ task_name,
+ "lock",
+ "acquire_end",
+ frame.f_code.co_filename,
+ frame.f_lineno,
+ frame,
+ lock_id=str(id(self_obj)),
+ )
+ send_concurrency_message(
+ "asyncio_event",
+ event_time,
+ task_name,
+ task_name,
+ "lock",
+ "release",
+ frame.f_code.co_filename,
+ frame.f_lineno,
+ frame,
+ lock_id=str(id(self_obj)),
+ )
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py
index 526bb0c15..e71f3e591 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py
@@ -2,7 +2,6 @@
def wrapper(fun):
-
def pydev_after_run_call():
pass
@@ -20,11 +19,11 @@ def wrap_attr(obj, attr):
class ObjectWrapper(object):
-
def __init__(self, obj):
self.wrapped_object = obj
try:
import functools
+
functools.update_wrapper(self, obj)
except:
pass
@@ -62,7 +61,6 @@ def __exit__(self, exc_type, exc_val, exc_tb):
def factory_wrapper(fun):
-
def inner(*args, **kwargs):
obj = fun(*args, **kwargs)
return ObjectWrapper(obj)
@@ -80,4 +78,5 @@ def wrap_threads():
# queue patching
import queue # @UnresolvedImport
+
queue.Queue = factory_wrapper(queue.Queue)
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py
index 925e010a5..9221f68cc 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py
@@ -1,5 +1,5 @@
-'''An helper file for the pydev debugger (REPL) console
-'''
+"""An helper file for the pydev debugger (REPL) console
+"""
import sys
import traceback
from _pydevd_bundle.pydevconsole_code import InteractiveConsole, _EvalAwaitInNewEventLoop
@@ -18,12 +18,11 @@
CONSOLE_ERROR = "error"
-#=======================================================================================================================
+# =======================================================================================================================
# ConsoleMessage
-#=======================================================================================================================
+# =======================================================================================================================
class ConsoleMessage:
- """Console Messages
- """
+ """Console Messages"""
def __init__(self):
self.more = False
@@ -31,8 +30,7 @@ def __init__(self):
self.console_messages = []
def add_console_message(self, message_type, message):
- """add messages in the console_messages list
- """
+ """add messages in the console_messages list"""
for m in message.split("\n"):
if m.strip():
self.console_messages.append((message_type, m))
@@ -53,30 +51,29 @@ def to_xml(self):
"""
makeValid = make_valid_xml_value
- xml = '%s' % (self.more)
+ xml = "%s" % (self.more)
for message_type, message in self.console_messages:
xml += '<%s message="%s">%s>' % (message_type, makeValid(message), message_type)
- xml += ''
+ xml += ""
return xml
-#=======================================================================================================================
+# =======================================================================================================================
# _DebugConsoleStdIn
-#=======================================================================================================================
+# =======================================================================================================================
class _DebugConsoleStdIn(BaseStdIn):
-
@overrides(BaseStdIn.readline)
def readline(self, *args, **kwargs):
- sys.stderr.write('Warning: Reading from stdin is still not supported in this console.\n')
- return '\n'
+ sys.stderr.write("Warning: Reading from stdin is still not supported in this console.\n")
+ return "\n"
-#=======================================================================================================================
+# =======================================================================================================================
# DebugConsole
-#=======================================================================================================================
+# =======================================================================================================================
class DebugConsole(InteractiveConsole, BaseInterpreterInterface):
"""Wrapper around code.InteractiveConsole, in order to send
errors and outputs to the debug console
@@ -159,7 +156,7 @@ def runcode(self, code):
updated_locals = None
is_async = False
- if hasattr(inspect, 'CO_COROUTINE'):
+ if hasattr(inspect, "CO_COROUTINE"):
is_async = inspect.CO_COROUTINE & code.co_flags == inspect.CO_COROUTINE
if is_async:
@@ -194,11 +191,10 @@ def get_namespace(self):
return dbg_namespace
-#=======================================================================================================================
+# =======================================================================================================================
# InteractiveConsoleCache
-#=======================================================================================================================
+# =======================================================================================================================
class InteractiveConsoleCache:
-
thread_id = None
frame_id = None
interactive_console_instance = None
@@ -263,8 +259,7 @@ def get_description(frame, thread_id, frame_id, expression):
def get_completions(frame, act_tok):
- """ fetch all completions, create xml for the same
+ """fetch all completions, create xml for the same
return the completions xml
"""
return _pydev_completer.generate_completions_as_xml(frame, act_tok)
-
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py
index 01d1951f5..4ebe83ed5 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py
@@ -1,6 +1,6 @@
-'''
+"""
This module holds the constants used for specifying the states of the debugger.
-'''
+"""
from __future__ import nested_scopes
import platform
import weakref
@@ -28,6 +28,7 @@
# Preload codecs to avoid imports to them later on which can potentially halt the debugger.
import codecs as _codecs
+
for _codec in ["ascii", "utf8", "utf-8", "latin1", "latin-1", "idna"]:
_codecs.lookup(_codec)
@@ -47,22 +48,22 @@ class DebugInfoHolder:
# In PyPy " ..." can appear and should be ignored for the user.
# has special heuristics to know whether it should be traced or not (it's part of
# user code when it's the used in python -c and part of the library otherwise).
# Any filename that starts with these strings is considered user (project) code. Note
# that files for which we have a source mapping are also considered as a part of the project.
-USER_CODE_BASENAMES_STARTING_WITH = (' (2 ** 32)
+IS_64BIT_PROCESS = sys.maxsize > (2**32)
IS_JYTHON = pydevd_vm_type.get_vm_type() == pydevd_vm_type.PydevdVmType.JYTHON
-IS_PYPY = platform.python_implementation() == 'PyPy'
+IS_PYPY = platform.python_implementation() == "PyPy"
if IS_JYTHON:
import java.lang.System # @UnresolvedImport
+
IS_WINDOWS = java.lang.System.getProperty("os.name").lower().startswith("windows")
-USE_CUSTOM_SYS_CURRENT_FRAMES = not hasattr(sys, '_current_frames') or IS_PYPY
+USE_CUSTOM_SYS_CURRENT_FRAMES = not hasattr(sys, "_current_frames") or IS_PYPY
USE_CUSTOM_SYS_CURRENT_FRAMES_MAP = USE_CUSTOM_SYS_CURRENT_FRAMES and (IS_PYPY or IS_IRONPYTHON)
if USE_CUSTOM_SYS_CURRENT_FRAMES:
-
# Some versions of Jython don't have it (but we can provide a replacement)
if IS_JYTHON:
from java.lang import NoSuchFieldException
from org.python.core import ThreadStateMapping
+
try:
- cachedThreadState = ThreadStateMapping.getDeclaredField('globalThreadStates') # Dev version
+ cachedThreadState = ThreadStateMapping.getDeclaredField("globalThreadStates") # Dev version
except NoSuchFieldException:
- cachedThreadState = ThreadStateMapping.getDeclaredField('cachedThreadState') # Release Jython 2.7.0
+ cachedThreadState = ThreadStateMapping.getDeclaredField("cachedThreadState") # Release Jython 2.7.0
cachedThreadState.accessible = True
thread_states = cachedThreadState.get(ThreadStateMapping)
@@ -148,7 +151,7 @@ def _current_frames():
return constructed_tid_to_last_frame
else:
- raise RuntimeError('Unable to proceed (sys._current_frames not available in this Python implementation).')
+ raise RuntimeError("Unable to proceed (sys._current_frames not available in this Python implementation).")
else:
_current_frames = sys._current_frames
@@ -156,38 +159,54 @@ def _current_frames():
CYTHON_SUPPORTED = False
python_implementation = platform.python_implementation()
-if python_implementation == 'CPython':
+if python_implementation == "CPython":
# Only available for CPython!
CYTHON_SUPPORTED = True
-#=======================================================================================================================
+# =======================================================================================================================
# Python 3?
-#=======================================================================================================================
+# =======================================================================================================================
IS_PY36_OR_GREATER = sys.version_info >= (3, 6)
IS_PY37_OR_GREATER = sys.version_info >= (3, 7)
IS_PY38_OR_GREATER = sys.version_info >= (3, 8)
IS_PY39_OR_GREATER = sys.version_info >= (3, 9)
IS_PY310_OR_GREATER = sys.version_info >= (3, 10)
IS_PY311_OR_GREATER = sys.version_info >= (3, 11)
+IS_PY312_OR_GREATER = sys.version_info >= (3, 12)
+
+# Not currently supported in Python 3.12.
+SUPPORT_ATTACH_TO_PID = not IS_PY312_OR_GREATER
def version_str(v):
- return '.'.join((str(x) for x in v[:3])) + ''.join((str(x) for x in v[3:]))
+ return ".".join((str(x) for x in v[:3])) + "".join((str(x) for x in v[3:]))
PY_VERSION_STR = version_str(sys.version_info)
try:
PY_IMPL_VERSION_STR = version_str(sys.implementation.version)
except AttributeError:
- PY_IMPL_VERSION_STR = ''
+ PY_IMPL_VERSION_STR = ""
try:
PY_IMPL_NAME = sys.implementation.name
except AttributeError:
- PY_IMPL_NAME = ''
-
-ENV_TRUE_LOWER_VALUES = ('yes', 'true', '1')
-ENV_FALSE_LOWER_VALUES = ('no', 'false', '0')
+ PY_IMPL_NAME = ""
+
+ENV_TRUE_LOWER_VALUES = ("yes", "true", "1")
+ENV_FALSE_LOWER_VALUES = ("no", "false", "0")
+
+PYDEVD_USE_SYS_MONITORING = IS_PY312_OR_GREATER and hasattr(sys, "monitoring")
+if PYDEVD_USE_SYS_MONITORING: # Default gotten, let's see if it was somehow customize by the user.
+ _use_sys_monitoring_env_var = os.getenv("PYDEVD_USE_SYS_MONITORING", "").lower()
+ if _use_sys_monitoring_env_var:
+ # Check if the user specified something.
+ if _use_sys_monitoring_env_var in ENV_FALSE_LOWER_VALUES:
+ PYDEVD_USE_SYS_MONITORING = False
+ elif _use_sys_monitoring_env_var in ENV_TRUE_LOWER_VALUES:
+ PYDEVD_USE_SYS_MONITORING = True
+ else:
+ raise RuntimeError("Unrecognized value for PYDEVD_USE_SYS_MONITORING: %s" % (_use_sys_monitoring_env_var,))
def is_true_in_env(env_key):
@@ -198,7 +217,7 @@ def is_true_in_env(env_key):
return True
return False
else:
- return os.getenv(env_key, '').lower() in ENV_TRUE_LOWER_VALUES
+ return os.getenv(env_key, "").lower() in ENV_TRUE_LOWER_VALUES
def as_float_in_env(env_key, default):
@@ -208,9 +227,7 @@ def as_float_in_env(env_key, default):
try:
return float(value)
except Exception:
- raise RuntimeError(
- 'Error: expected the env variable: %s to be set to a float value. Found: %s' % (
- env_key, value))
+ raise RuntimeError("Error: expected the env variable: %s to be set to a float value. Found: %s" % (env_key, value))
def as_int_in_env(env_key, default):
@@ -220,52 +237,52 @@ def as_int_in_env(env_key, default):
try:
return int(value)
except Exception:
- raise RuntimeError(
- 'Error: expected the env variable: %s to be set to a int value. Found: %s' % (
- env_key, value))
+ raise RuntimeError("Error: expected the env variable: %s to be set to a int value. Found: %s" % (env_key, value))
# If true in env, use gevent mode.
-SUPPORT_GEVENT = is_true_in_env('GEVENT_SUPPORT')
+SUPPORT_GEVENT = is_true_in_env("GEVENT_SUPPORT")
# Opt-in support to show gevent paused greenlets. False by default because if too many greenlets are
# paused the UI can slow-down (i.e.: if 1000 greenlets are paused, each one would be shown separate
# as a different thread, but if the UI isn't optimized for that the experience is lacking...).
-GEVENT_SHOW_PAUSED_GREENLETS = is_true_in_env('GEVENT_SHOW_PAUSED_GREENLETS')
+GEVENT_SHOW_PAUSED_GREENLETS = is_true_in_env("GEVENT_SHOW_PAUSED_GREENLETS")
-DISABLE_FILE_VALIDATION = is_true_in_env('PYDEVD_DISABLE_FILE_VALIDATION')
+DISABLE_FILE_VALIDATION = is_true_in_env("PYDEVD_DISABLE_FILE_VALIDATION")
GEVENT_SUPPORT_NOT_SET_MSG = os.getenv(
- 'GEVENT_SUPPORT_NOT_SET_MSG',
- 'It seems that the gevent monkey-patching is being used.\n'
- 'Please set an environment variable with:\n'
- 'GEVENT_SUPPORT=True\n'
- 'to enable gevent support in the debugger.'
+ "GEVENT_SUPPORT_NOT_SET_MSG",
+ "It seems that the gevent monkey-patching is being used.\n"
+ "Please set an environment variable with:\n"
+ "GEVENT_SUPPORT=True\n"
+ "to enable gevent support in the debugger.",
)
USE_LIB_COPY = SUPPORT_GEVENT
-INTERACTIVE_MODE_AVAILABLE = sys.platform in ('darwin', 'win32') or os.getenv('DISPLAY') is not None
+INTERACTIVE_MODE_AVAILABLE = sys.platform in ("darwin", "win32") or os.getenv("DISPLAY") is not None
# If true in env, forces cython to be used (raises error if not available).
# If false in env, disables it.
# If not specified, uses default heuristic to determine if it should be loaded.
-USE_CYTHON_FLAG = os.getenv('PYDEVD_USE_CYTHON')
+USE_CYTHON_FLAG = os.getenv("PYDEVD_USE_CYTHON")
if USE_CYTHON_FLAG is not None:
USE_CYTHON_FLAG = USE_CYTHON_FLAG.lower()
if USE_CYTHON_FLAG not in ENV_TRUE_LOWER_VALUES and USE_CYTHON_FLAG not in ENV_FALSE_LOWER_VALUES:
- raise RuntimeError('Unexpected value for PYDEVD_USE_CYTHON: %s (enable with one of: %s, disable with one of: %s)' % (
- USE_CYTHON_FLAG, ENV_TRUE_LOWER_VALUES, ENV_FALSE_LOWER_VALUES))
+ raise RuntimeError(
+ "Unexpected value for PYDEVD_USE_CYTHON: %s (enable with one of: %s, disable with one of: %s)"
+ % (USE_CYTHON_FLAG, ENV_TRUE_LOWER_VALUES, ENV_FALSE_LOWER_VALUES)
+ )
else:
if not CYTHON_SUPPORTED:
- USE_CYTHON_FLAG = 'no'
+ USE_CYTHON_FLAG = "no"
# If true in env, forces frame eval to be used (raises error if not available).
# If false in env, disables it.
# If not specified, uses default heuristic to determine if it should be loaded.
-PYDEVD_USE_FRAME_EVAL = os.getenv('PYDEVD_USE_FRAME_EVAL', '').lower()
+PYDEVD_USE_FRAME_EVAL = os.getenv("PYDEVD_USE_FRAME_EVAL", "").lower()
# Values used to determine how much container items will be shown.
# PYDEVD_CONTAINER_INITIAL_EXPANDED_ITEMS:
@@ -281,48 +298,48 @@ def as_int_in_env(env_key, default):
# PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS
# - Defines the maximum number of items for dicts and sets.
#
-PYDEVD_CONTAINER_INITIAL_EXPANDED_ITEMS = as_int_in_env('PYDEVD_CONTAINER_INITIAL_EXPANDED_ITEMS', 100)
-PYDEVD_CONTAINER_BUCKET_SIZE = as_int_in_env('PYDEVD_CONTAINER_BUCKET_SIZE', 1000)
-PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS = as_int_in_env('PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS', 500)
-PYDEVD_CONTAINER_NUMPY_MAX_ITEMS = as_int_in_env('PYDEVD_CONTAINER_NUMPY_MAX_ITEMS', 500)
+PYDEVD_CONTAINER_INITIAL_EXPANDED_ITEMS = as_int_in_env("PYDEVD_CONTAINER_INITIAL_EXPANDED_ITEMS", 100)
+PYDEVD_CONTAINER_BUCKET_SIZE = as_int_in_env("PYDEVD_CONTAINER_BUCKET_SIZE", 1000)
+PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS = as_int_in_env("PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS", 500)
+PYDEVD_CONTAINER_NUMPY_MAX_ITEMS = as_int_in_env("PYDEVD_CONTAINER_NUMPY_MAX_ITEMS", 500)
-PYDEVD_IPYTHON_COMPATIBLE_DEBUGGING = is_true_in_env('PYDEVD_IPYTHON_COMPATIBLE_DEBUGGING')
+PYDEVD_IPYTHON_COMPATIBLE_DEBUGGING = is_true_in_env("PYDEVD_IPYTHON_COMPATIBLE_DEBUGGING")
# If specified in PYDEVD_IPYTHON_CONTEXT it must be a string with the basename
# and then the name of 2 methods in which the evaluate is done.
-PYDEVD_IPYTHON_CONTEXT = ('interactiveshell.py', 'run_code', 'run_ast_nodes')
-_ipython_ctx = os.getenv('PYDEVD_IPYTHON_CONTEXT')
+PYDEVD_IPYTHON_CONTEXT = ("interactiveshell.py", "run_code", "run_ast_nodes")
+_ipython_ctx = os.getenv("PYDEVD_IPYTHON_CONTEXT")
if _ipython_ctx:
- PYDEVD_IPYTHON_CONTEXT = tuple(x.strip() for x in _ipython_ctx.split(','))
- assert len(PYDEVD_IPYTHON_CONTEXT) == 3, 'Invalid PYDEVD_IPYTHON_CONTEXT: %s' % (_ipython_ctx,)
+ PYDEVD_IPYTHON_CONTEXT = tuple(x.strip() for x in _ipython_ctx.split(","))
+ assert len(PYDEVD_IPYTHON_CONTEXT) == 3, "Invalid PYDEVD_IPYTHON_CONTEXT: %s" % (_ipython_ctx,)
# Use to disable loading the lib to set tracing to all threads (default is using heuristics based on where we're running).
-LOAD_NATIVE_LIB_FLAG = os.getenv('PYDEVD_LOAD_NATIVE_LIB', '').lower()
+LOAD_NATIVE_LIB_FLAG = os.getenv("PYDEVD_LOAD_NATIVE_LIB", "").lower()
-LOG_TIME = os.getenv('PYDEVD_LOG_TIME', 'true').lower() in ENV_TRUE_LOWER_VALUES
+LOG_TIME = os.getenv("PYDEVD_LOG_TIME", "true").lower() in ENV_TRUE_LOWER_VALUES
-SHOW_COMPILE_CYTHON_COMMAND_LINE = is_true_in_env('PYDEVD_SHOW_COMPILE_CYTHON_COMMAND_LINE')
+SHOW_COMPILE_CYTHON_COMMAND_LINE = is_true_in_env("PYDEVD_SHOW_COMPILE_CYTHON_COMMAND_LINE")
-LOAD_VALUES_ASYNC = is_true_in_env('PYDEVD_LOAD_VALUES_ASYNC')
+LOAD_VALUES_ASYNC = is_true_in_env("PYDEVD_LOAD_VALUES_ASYNC")
DEFAULT_VALUE = "__pydevd_value_async"
ASYNC_EVAL_TIMEOUT_SEC = 60
NEXT_VALUE_SEPARATOR = "__pydev_val__"
-BUILTINS_MODULE_NAME = 'builtins'
+BUILTINS_MODULE_NAME = "builtins"
# Pandas customization.
-PANDAS_MAX_ROWS = as_int_in_env('PYDEVD_PANDAS_MAX_ROWS', 60)
-PANDAS_MAX_COLS = as_int_in_env('PYDEVD_PANDAS_MAX_COLS', 10)
-PANDAS_MAX_COLWIDTH = as_int_in_env('PYDEVD_PANDAS_MAX_COLWIDTH', 50)
+PANDAS_MAX_ROWS = as_int_in_env("PYDEVD_PANDAS_MAX_ROWS", 60)
+PANDAS_MAX_COLS = as_int_in_env("PYDEVD_PANDAS_MAX_COLS", 10)
+PANDAS_MAX_COLWIDTH = as_int_in_env("PYDEVD_PANDAS_MAX_COLWIDTH", 50)
# If getting an attribute or computing some value is too slow, let the user know if the given timeout elapses.
-PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT = as_float_in_env('PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT', 0.50)
+PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT = as_float_in_env("PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT", 0.50)
# This timeout is used to track the time to send a message saying that the evaluation
# is taking too long and possible mitigations.
-PYDEVD_WARN_EVALUATION_TIMEOUT = as_float_in_env('PYDEVD_WARN_EVALUATION_TIMEOUT', 3.)
+PYDEVD_WARN_EVALUATION_TIMEOUT = as_float_in_env("PYDEVD_WARN_EVALUATION_TIMEOUT", 3.0)
# If True in env shows a thread dump when the evaluation times out.
-PYDEVD_THREAD_DUMP_ON_WARN_EVALUATION_TIMEOUT = is_true_in_env('PYDEVD_THREAD_DUMP_ON_WARN_EVALUATION_TIMEOUT')
+PYDEVD_THREAD_DUMP_ON_WARN_EVALUATION_TIMEOUT = is_true_in_env("PYDEVD_THREAD_DUMP_ON_WARN_EVALUATION_TIMEOUT")
# This timeout is used only when the mode that all threads are stopped/resumed at once is used
# (i.e.: multi_threads_single_notification)
@@ -334,29 +351,31 @@ def as_int_in_env(env_key, default):
# (without any notification) when the evaluation is started and pause all threads when the
# evaluation is finished. A positive value will run run all threads after the timeout
# elapses.
-PYDEVD_UNBLOCK_THREADS_TIMEOUT = as_float_in_env('PYDEVD_UNBLOCK_THREADS_TIMEOUT', -1.)
+PYDEVD_UNBLOCK_THREADS_TIMEOUT = as_float_in_env("PYDEVD_UNBLOCK_THREADS_TIMEOUT", -1.0)
# Timeout to interrupt a thread (so, if some evaluation doesn't finish until this
# timeout, the thread doing the evaluation is interrupted).
# A value <= 0 means this is disabled.
# See: _pydevd_bundle.pydevd_timeout.create_interrupt_this_thread_callback for details
# on how the thread interruption works (there are some caveats related to it).
-PYDEVD_INTERRUPT_THREAD_TIMEOUT = as_float_in_env('PYDEVD_INTERRUPT_THREAD_TIMEOUT', -1)
+PYDEVD_INTERRUPT_THREAD_TIMEOUT = as_float_in_env("PYDEVD_INTERRUPT_THREAD_TIMEOUT", -1)
# If PYDEVD_APPLY_PATCHING_TO_HIDE_PYDEVD_THREADS is set to False, the patching to hide pydevd threads won't be applied.
-PYDEVD_APPLY_PATCHING_TO_HIDE_PYDEVD_THREADS = os.getenv('PYDEVD_APPLY_PATCHING_TO_HIDE_PYDEVD_THREADS', 'true').lower() in ENV_TRUE_LOWER_VALUES
+PYDEVD_APPLY_PATCHING_TO_HIDE_PYDEVD_THREADS = (
+ os.getenv("PYDEVD_APPLY_PATCHING_TO_HIDE_PYDEVD_THREADS", "true").lower() in ENV_TRUE_LOWER_VALUES
+)
-EXCEPTION_TYPE_UNHANDLED = 'UNHANDLED'
-EXCEPTION_TYPE_USER_UNHANDLED = 'USER_UNHANDLED'
-EXCEPTION_TYPE_HANDLED = 'HANDLED'
+EXCEPTION_TYPE_UNHANDLED = "UNHANDLED"
+EXCEPTION_TYPE_USER_UNHANDLED = "USER_UNHANDLED"
+EXCEPTION_TYPE_HANDLED = "HANDLED"
-SHOW_DEBUG_INFO_ENV = is_true_in_env(('PYCHARM_DEBUG', 'PYDEV_DEBUG', 'PYDEVD_DEBUG'))
+SHOW_DEBUG_INFO_ENV = is_true_in_env(("PYCHARM_DEBUG", "PYDEV_DEBUG", "PYDEVD_DEBUG"))
if SHOW_DEBUG_INFO_ENV:
# show debug info before the debugger start
DebugInfoHolder.DEBUG_TRACE_LEVEL = 3
-DebugInfoHolder.PYDEVD_DEBUG_FILE = os.getenv('PYDEVD_DEBUG_FILE')
+DebugInfoHolder.PYDEVD_DEBUG_FILE = os.getenv("PYDEVD_DEBUG_FILE")
def protect_libraries_from_patching():
@@ -365,9 +384,23 @@ def protect_libraries_from_patching():
`_pydev_saved_modules` in order to save their original copies there. After that we can use these
saved modules within the debugger to protect them from patching by external libraries (e.g. gevent).
"""
- patched = ['threading', 'thread', '_thread', 'time', 'socket', 'queue', 'select',
- 'xmlrpclib', 'SimpleXMLRPCServer', 'BaseHTTPServer', 'SocketServer',
- 'xmlrpc.client', 'xmlrpc.server', 'http.server', 'socketserver']
+ patched = [
+ "threading",
+ "thread",
+ "_thread",
+ "time",
+ "socket",
+ "queue",
+ "select",
+ "xmlrpclib",
+ "SimpleXMLRPCServer",
+ "BaseHTTPServer",
+ "SocketServer",
+ "xmlrpc.client",
+ "xmlrpc.server",
+ "http.server",
+ "socketserver",
+ ]
for name in patched:
try:
@@ -375,8 +408,7 @@ def protect_libraries_from_patching():
except:
pass
- patched_modules = dict([(k, v) for k, v in sys.modules.items()
- if k in patched])
+ patched_modules = dict([(k, v) for k, v in sys.modules.items() if k in patched])
for name in patched_modules:
del sys.modules[name]
@@ -406,7 +438,7 @@ def ForkSafeLock(rlock=False):
else:
class ForkSafeLock(object):
- '''
+ """
A lock which is fork-safe (when a fork is done, `pydevd_constants.after_fork()`
should be called to reset the locks in the new process to avoid deadlocks
from a lock which was locked during the fork).
@@ -429,7 +461,7 @@ class ForkSafeLock(object):
`ForkSafeLock.release` instead of the context manager (as acquire/release are
bound to the original implementation, whereas __enter__/__exit__ is not due to Python
limitations).
- '''
+ """
def __init__(self, rlock=False):
self._rlock = rlock
@@ -454,9 +486,9 @@ def _init(self):
def after_fork():
- '''
+ """
Must be called after a fork operation (will reset the ForkSafeLock).
- '''
+ """
global _fork_safe_locks
locks = _fork_safe_locks[:]
_fork_safe_locks = []
@@ -483,7 +515,6 @@ def filter_all_warnings():
def silence_warnings_decorator(func):
-
@functools.wraps(func)
def new_func(*args, **kwargs):
with filter_all_warnings():
@@ -493,8 +524,8 @@ def new_func(*args, **kwargs):
def sorted_dict_repr(d):
- s = sorted(d.items(), key=lambda x:str(x[0]))
- return '{' + ', '.join(('%r: %r' % x) for x in s) + '}'
+ s = sorted(d.items(), key=lambda x: str(x[0]))
+ return "{" + ", ".join(("%r: %r" % x) for x in s) + "}"
def iter_chars(b):
@@ -502,11 +533,11 @@ def iter_chars(b):
# changed that behavior so that when iterating bytes we actually get ints!
if isinstance(b, bytes):
# i.e.: do something as struct.unpack('3c', b)
- return iter(struct.unpack(str(len(b)) + 'c', b))
+ return iter(struct.unpack(str(len(b)) + "c", b))
return iter(b)
-if IS_JYTHON:
+if IS_JYTHON or PYDEVD_USE_SYS_MONITORING:
def NO_FTRACE(frame, event, arg):
return None
@@ -522,9 +553,9 @@ def _temp_trace(frame, event, arg):
sys.settrace(_temp_trace)
def _check_ftrace_set_none():
- '''
+ """
Will throw an error when executing a line event
- '''
+ """
sys._getframe().f_trace = None
_line_event = 1
_line_event = 2
@@ -552,9 +583,9 @@ def NO_FTRACE(frame, event, arg):
sys.settrace(_curr_trace)
-#=======================================================================================================================
+# =======================================================================================================================
# get_pid
-#=======================================================================================================================
+# =======================================================================================================================
def get_pid():
try:
return os.getpid()
@@ -562,17 +593,18 @@ def get_pid():
try:
# Jython does not have it!
import java.lang.management.ManagementFactory # @UnresolvedImport -- just for jython
+
pid = java.lang.management.ManagementFactory.getRuntimeMXBean().getName()
- return pid.replace('@', '_')
+ return pid.replace("@", "_")
except:
# ok, no pid available (will be unable to debug multiple processes)
- return '000001'
+ return "000001"
def clear_cached_thread_id(thread):
with _thread_id_lock:
try:
- if thread.__pydevd_id__ != 'console_main':
+ if thread.__pydevd_id__ != "console_main":
# The console_main is a special thread id used in the console and its id should never be reset
# (otherwise we may no longer be able to get its variables -- see: https://www.brainwy.com/tracker/PyDev/776).
del thread.__pydevd_id__
@@ -587,7 +619,7 @@ def clear_cached_thread_id(thread):
def _get_or_compute_thread_id_with_lock(thread, is_current_thread):
with _thread_id_lock:
# We do a new check with the lock in place just to be sure that nothing changed
- tid = getattr(thread, '__pydevd_id__', None)
+ tid = getattr(thread, "__pydevd_id__", None)
if tid is not None:
return tid
@@ -596,7 +628,7 @@ def _get_or_compute_thread_id_with_lock(thread, is_current_thread):
# Note: don't use thread.ident because a new thread may have the
# same id from an old thread.
pid = get_pid()
- tid = 'pid_%s_id_%s' % (pid, id(thread))
+ tid = "pid_%s_id_%s" % (pid, id(thread))
thread.__pydevd_id__ = tid
@@ -604,11 +636,11 @@ def _get_or_compute_thread_id_with_lock(thread, is_current_thread):
def get_current_thread_id(thread):
- '''
+ """
Note: the difference from get_current_thread_id to get_thread_id is that
for the current thread we can get the thread id while the thread.ident
is still not set in the Thread instance.
- '''
+ """
try:
# Fast path without getting lock.
tid = thread.__pydevd_id__
@@ -643,9 +675,9 @@ def set_thread_id(thread, thread_id):
thread.__pydevd_id__ = thread_id
-#=======================================================================================================================
+# =======================================================================================================================
# Null
-#=======================================================================================================================
+# =======================================================================================================================
class Null:
"""
Gotten from: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/68205
@@ -664,7 +696,7 @@ def __exit__(self, *args, **kwargs):
return self
def __getattr__(self, mname):
- if len(mname) > 4 and mname[:2] == '__' and mname[-2:] == '__':
+ if len(mname) > 4 and mname[:2] == "__" and mname[-2:] == "__":
# Don't pretend to implement special method names.
raise AttributeError(mname)
return self
@@ -705,7 +737,6 @@ def __iter__(self):
class KeyifyList(object):
-
def __init__(self, inner, key):
self.inner = inner
self.key = key
@@ -718,7 +749,7 @@ def __getitem__(self, k):
def call_only_once(func):
- '''
+ """
To be used as a decorator
@call_only_once
@@ -728,7 +759,7 @@ def func():
Actually, in PyDev it must be called as:
func = call_only_once(func) to support older versions of Python.
- '''
+ """
def new_func(*args, **kwargs):
if not new_func._called:
@@ -741,26 +772,26 @@ def new_func(*args, **kwargs):
# Protocol where each line is a new message (text is quoted to prevent new lines).
# payload is xml
-QUOTED_LINE_PROTOCOL = 'quoted-line'
-ARGUMENT_QUOTED_LINE_PROTOCOL = 'protocol-quoted-line'
+QUOTED_LINE_PROTOCOL = "quoted-line"
+ARGUMENT_QUOTED_LINE_PROTOCOL = "protocol-quoted-line"
# Uses http protocol to provide a new message.
# i.e.: Content-Length:xxx\r\n\r\npayload
# payload is xml
-HTTP_PROTOCOL = 'http'
-ARGUMENT_HTTP_PROTOCOL = 'protocol-http'
+HTTP_PROTOCOL = "http"
+ARGUMENT_HTTP_PROTOCOL = "protocol-http"
# Message is sent without any header.
# payload is json
-JSON_PROTOCOL = 'json'
-ARGUMENT_JSON_PROTOCOL = 'json-dap'
+JSON_PROTOCOL = "json"
+ARGUMENT_JSON_PROTOCOL = "json-dap"
# Same header as the HTTP_PROTOCOL
# payload is json
-HTTP_JSON_PROTOCOL = 'http_json'
-ARGUMENT_HTTP_JSON_PROTOCOL = 'json-dap-http'
+HTTP_JSON_PROTOCOL = "http_json"
+ARGUMENT_HTTP_JSON_PROTOCOL = "json-dap-http"
-ARGUMENT_PPID = 'ppid'
+ARGUMENT_PPID = "ppid"
class _GlobalSettings:
@@ -769,8 +800,7 @@ class _GlobalSettings:
def set_protocol(protocol):
expected = (HTTP_PROTOCOL, QUOTED_LINE_PROTOCOL, JSON_PROTOCOL, HTTP_JSON_PROTOCOL)
- assert protocol in expected, 'Protocol (%s) should be one of: %s' % (
- protocol, expected)
+ assert protocol in expected, "Protocol (%s) should be one of: %s" % (protocol, expected)
_GlobalSettings.protocol = protocol
@@ -784,9 +814,10 @@ def is_json_protocol():
class GlobalDebuggerHolder:
- '''
- Holder for the global debugger.
- '''
+ """
+ Holder for the global debugger.
+ """
+
global_dbg = None # Note: don't rename (the name is used in our attach to process)
@@ -801,7 +832,6 @@ def set_global_debugger(dbg):
GlobalDebuggerHolder.global_dbg = dbg
-if __name__ == '__main__':
+if __name__ == "__main__":
if Null():
- sys.stdout.write('here\n')
-
+ sys.stdout.write("here\n")
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py
index 66e400fbf..65c83c458 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py
@@ -8,7 +8,6 @@
class CustomFramesContainer:
-
# Actual Values initialized later on.
custom_frames_lock = None # : :type custom_frames_lock: threading.Lock
@@ -20,7 +19,6 @@ class CustomFramesContainer:
def custom_frames_container_init(): # Note: no staticmethod on jython 2.1 (so, use free-function)
-
CustomFramesContainer.custom_frames_lock = ForkSafeLock()
# custom_frames can only be accessed if properly locked with custom_frames_lock!
@@ -42,7 +40,6 @@ def custom_frames_container_init(): # Note: no staticmethod on jython 2.1 (so,
class CustomFrame:
-
def __init__(self, name, frame, thread_id):
# 0 = string with the representation of that frame
self.name = name
@@ -58,7 +55,7 @@ def __init__(self, name, frame, thread_id):
def add_custom_frame(frame, name, thread_id):
- '''
+ """
It's possible to show paused frames by adding a custom frame through this API (it's
intended to be used for coroutines, but could potentially be used for generators too).
@@ -73,17 +70,19 @@ def add_custom_frame(frame, name, thread_id):
:return: str
Returns the custom thread id which will be used to show the given frame paused.
- '''
+ """
with CustomFramesContainer.custom_frames_lock:
curr_thread_id = get_current_thread_id(threading.current_thread())
next_id = CustomFramesContainer._next_frame_id = CustomFramesContainer._next_frame_id + 1
# Note: the frame id kept contains an id and thread information on the thread where the frame was added
# so that later on we can check if the frame is from the current thread by doing frame_id.endswith('|'+thread_id).
- frame_custom_thread_id = '__frame__:%s|%s' % (next_id, curr_thread_id)
+ frame_custom_thread_id = "__frame__:%s|%s" % (next_id, curr_thread_id)
if DEBUG:
- sys.stderr.write('add_custom_frame: %s (%s) %s %s\n' % (
- frame_custom_thread_id, get_abs_path_real_path_and_base_from_frame(frame)[-1], frame.f_lineno, frame.f_code.co_name))
+ sys.stderr.write(
+ "add_custom_frame: %s (%s) %s %s\n"
+ % (frame_custom_thread_id, get_abs_path_real_path_and_base_from_frame(frame)[-1], frame.f_lineno, frame.f_code.co_name)
+ )
CustomFramesContainer.custom_frames[frame_custom_thread_id] = CustomFrame(name, frame, thread_id)
CustomFramesContainer._py_db_command_thread_event.set()
@@ -93,7 +92,7 @@ def add_custom_frame(frame, name, thread_id):
def update_custom_frame(frame_custom_thread_id, frame, thread_id, name=None):
with CustomFramesContainer.custom_frames_lock:
if DEBUG:
- sys.stderr.write('update_custom_frame: %s\n' % frame_custom_thread_id)
+ sys.stderr.write("update_custom_frame: %s\n" % frame_custom_thread_id)
try:
old = CustomFramesContainer.custom_frames[frame_custom_thread_id]
if name is not None:
@@ -101,7 +100,7 @@ def update_custom_frame(frame_custom_thread_id, frame, thread_id, name=None):
old.mod_time += 1
old.thread_id = thread_id
except:
- sys.stderr.write('Unable to get frame to replace: %s\n' % (frame_custom_thread_id,))
+ sys.stderr.write("Unable to get frame to replace: %s\n" % (frame_custom_thread_id,))
pydev_log.exception()
CustomFramesContainer._py_db_command_thread_event.set()
@@ -110,7 +109,6 @@ def update_custom_frame(frame_custom_thread_id, frame, thread_id, name=None):
def remove_custom_frame(frame_custom_thread_id):
with CustomFramesContainer.custom_frames_lock:
if DEBUG:
- sys.stderr.write('remove_custom_frame: %s\n' % frame_custom_thread_id)
+ sys.stderr.write("remove_custom_frame: %s\n" % frame_custom_thread_id)
CustomFramesContainer.custom_frames.pop(frame_custom_thread_id, None)
CustomFramesContainer._py_db_command_thread_event.set()
-
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c
index 3225bf0c4..e33d472ac 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.29.32 */
+/* Generated by Cython 3.0.11 */
/* BEGIN: Cython Metadata
{
@@ -16,6 +16,16 @@ END: Cython Metadata */
#ifndef PY_SSIZE_T_CLEAN
#define PY_SSIZE_T_CLEAN
#endif /* PY_SSIZE_T_CLEAN */
+#if defined(CYTHON_LIMITED_API) && 0
+ #ifndef Py_LIMITED_API
+ #if CYTHON_LIMITED_API+0 > 0x03030000
+ #define Py_LIMITED_API CYTHON_LIMITED_API
+ #else
+ #define Py_LIMITED_API 0x03030000
+ #endif
+ #endif
+#endif
+
#include "Python.h"
#if PY_VERSION_HEX >= 0x03090000
#include "internal/pycore_gc.h"
@@ -24,17 +34,24 @@ END: Cython Metadata */
#ifndef Py_PYTHON_H
#error Python headers needed to compile C extensions, please install development version of Python.
-#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
- #error Cython requires Python 2.6+ or Python 3.3+.
+#elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+ #error Cython requires Python 2.7+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_29_32"
-#define CYTHON_HEX_VERSION 0x001D20F0
-#define CYTHON_FUTURE_DIVISION 0
+#if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API
+#define __PYX_EXTRA_ABI_MODULE_NAME "limited"
+#else
+#define __PYX_EXTRA_ABI_MODULE_NAME ""
+#endif
+#define CYTHON_ABI "3_0_11" __PYX_EXTRA_ABI_MODULE_NAME
+#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI
+#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "."
+#define CYTHON_HEX_VERSION 0x03000BF0
+#define CYTHON_FUTURE_DIVISION 1
#include
#ifndef offsetof
#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
#endif
-#if !defined(WIN32) && !defined(MS_WINDOWS)
+#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS)
#ifndef __stdcall
#define __stdcall
#endif
@@ -53,9 +70,7 @@ END: Cython Metadata */
#endif
#define __PYX_COMMA ,
#ifndef HAVE_LONG_LONG
- #if PY_VERSION_HEX >= 0x02070000
- #define HAVE_LONG_LONG
- #endif
+ #define HAVE_LONG_LONG
#endif
#ifndef PY_LONG_LONG
#define PY_LONG_LONG LONG_LONG
@@ -63,13 +78,19 @@ END: Cython Metadata */
#ifndef Py_HUGE_VAL
#define Py_HUGE_VAL HUGE_VAL
#endif
-#ifdef PYPY_VERSION
- #define CYTHON_COMPILING_IN_PYPY 1
- #define CYTHON_COMPILING_IN_PYSTON 0
+#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX
+#if defined(GRAALVM_PYTHON)
+ /* For very preliminary testing purposes. Most variables are set the same as PyPy.
+ The existence of this section does not imply that anything works or is even tested */
+ #define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_CPYTHON 0
+ #define CYTHON_COMPILING_IN_LIMITED_API 0
+ #define CYTHON_COMPILING_IN_GRAAL 1
#define CYTHON_COMPILING_IN_NOGIL 0
#undef CYTHON_USE_TYPE_SLOTS
#define CYTHON_USE_TYPE_SLOTS 0
+ #undef CYTHON_USE_TYPE_SPECS
+ #define CYTHON_USE_TYPE_SPECS 0
#undef CYTHON_USE_PYTYPE_LOOKUP
#define CYTHON_USE_PYTYPE_LOOKUP 0
#if PY_VERSION_HEX < 0x03050000
@@ -94,10 +115,19 @@ END: Cython Metadata */
#define CYTHON_UNPACK_METHODS 0
#undef CYTHON_FAST_THREAD_STATE
#define CYTHON_FAST_THREAD_STATE 0
+ #undef CYTHON_FAST_GIL
+ #define CYTHON_FAST_GIL 0
+ #undef CYTHON_METH_FASTCALL
+ #define CYTHON_METH_FASTCALL 0
#undef CYTHON_FAST_PYCALL
#define CYTHON_FAST_PYCALL 0
+ #ifndef CYTHON_PEP487_INIT_SUBCLASS
+ #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3)
+ #endif
#undef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT 0
+ #define CYTHON_PEP489_MULTI_PHASE_INIT 1
+ #undef CYTHON_USE_MODULE_STATE
+ #define CYTHON_USE_MODULE_STATE 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
#undef CYTHON_USE_DICT_VERSIONS
@@ -105,46 +135,127 @@ END: Cython Metadata */
#undef CYTHON_USE_EXC_INFO_STACK
#define CYTHON_USE_EXC_INFO_STACK 0
#ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
- #define CYTHON_UPDATE_DESCRIPTOR_DOC (PYPY_VERSION_HEX >= 0x07030900)
+ #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
#endif
-#elif defined(PYSTON_VERSION)
- #define CYTHON_COMPILING_IN_PYPY 0
- #define CYTHON_COMPILING_IN_PYSTON 1
+ #undef CYTHON_USE_FREELISTS
+ #define CYTHON_USE_FREELISTS 0
+#elif defined(PYPY_VERSION)
+ #define CYTHON_COMPILING_IN_PYPY 1
#define CYTHON_COMPILING_IN_CPYTHON 0
+ #define CYTHON_COMPILING_IN_LIMITED_API 0
+ #define CYTHON_COMPILING_IN_GRAAL 0
#define CYTHON_COMPILING_IN_NOGIL 0
- #ifndef CYTHON_USE_TYPE_SLOTS
- #define CYTHON_USE_TYPE_SLOTS 1
+ #undef CYTHON_USE_TYPE_SLOTS
+ #define CYTHON_USE_TYPE_SLOTS 0
+ #ifndef CYTHON_USE_TYPE_SPECS
+ #define CYTHON_USE_TYPE_SPECS 0
#endif
#undef CYTHON_USE_PYTYPE_LOOKUP
#define CYTHON_USE_PYTYPE_LOOKUP 0
+ #if PY_VERSION_HEX < 0x03050000
+ #undef CYTHON_USE_ASYNC_SLOTS
+ #define CYTHON_USE_ASYNC_SLOTS 0
+ #elif !defined(CYTHON_USE_ASYNC_SLOTS)
+ #define CYTHON_USE_ASYNC_SLOTS 1
+ #endif
+ #undef CYTHON_USE_PYLIST_INTERNALS
+ #define CYTHON_USE_PYLIST_INTERNALS 0
+ #undef CYTHON_USE_UNICODE_INTERNALS
+ #define CYTHON_USE_UNICODE_INTERNALS 0
+ #undef CYTHON_USE_UNICODE_WRITER
+ #define CYTHON_USE_UNICODE_WRITER 0
+ #undef CYTHON_USE_PYLONG_INTERNALS
+ #define CYTHON_USE_PYLONG_INTERNALS 0
+ #undef CYTHON_AVOID_BORROWED_REFS
+ #define CYTHON_AVOID_BORROWED_REFS 1
+ #undef CYTHON_ASSUME_SAFE_MACROS
+ #define CYTHON_ASSUME_SAFE_MACROS 0
+ #undef CYTHON_UNPACK_METHODS
+ #define CYTHON_UNPACK_METHODS 0
+ #undef CYTHON_FAST_THREAD_STATE
+ #define CYTHON_FAST_THREAD_STATE 0
+ #undef CYTHON_FAST_GIL
+ #define CYTHON_FAST_GIL 0
+ #undef CYTHON_METH_FASTCALL
+ #define CYTHON_METH_FASTCALL 0
+ #undef CYTHON_FAST_PYCALL
+ #define CYTHON_FAST_PYCALL 0
+ #ifndef CYTHON_PEP487_INIT_SUBCLASS
+ #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3)
+ #endif
+ #if PY_VERSION_HEX < 0x03090000
+ #undef CYTHON_PEP489_MULTI_PHASE_INIT
+ #define CYTHON_PEP489_MULTI_PHASE_INIT 0
+ #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT)
+ #define CYTHON_PEP489_MULTI_PHASE_INIT 1
+ #endif
+ #undef CYTHON_USE_MODULE_STATE
+ #define CYTHON_USE_MODULE_STATE 0
+ #undef CYTHON_USE_TP_FINALIZE
+ #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00)
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
+ #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
+ #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
+ #endif
+ #undef CYTHON_USE_FREELISTS
+ #define CYTHON_USE_FREELISTS 0
+#elif defined(CYTHON_LIMITED_API)
+ #ifdef Py_LIMITED_API
+ #undef __PYX_LIMITED_VERSION_HEX
+ #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API
+ #endif
+ #define CYTHON_COMPILING_IN_PYPY 0
+ #define CYTHON_COMPILING_IN_CPYTHON 0
+ #define CYTHON_COMPILING_IN_LIMITED_API 1
+ #define CYTHON_COMPILING_IN_GRAAL 0
+ #define CYTHON_COMPILING_IN_NOGIL 0
+ #undef CYTHON_CLINE_IN_TRACEBACK
+ #define CYTHON_CLINE_IN_TRACEBACK 0
+ #undef CYTHON_USE_TYPE_SLOTS
+ #define CYTHON_USE_TYPE_SLOTS 0
+ #undef CYTHON_USE_TYPE_SPECS
+ #define CYTHON_USE_TYPE_SPECS 1
+ #undef CYTHON_USE_PYTYPE_LOOKUP
+ #define CYTHON_USE_PYTYPE_LOOKUP 0
#undef CYTHON_USE_ASYNC_SLOTS
#define CYTHON_USE_ASYNC_SLOTS 0
#undef CYTHON_USE_PYLIST_INTERNALS
#define CYTHON_USE_PYLIST_INTERNALS 0
- #ifndef CYTHON_USE_UNICODE_INTERNALS
- #define CYTHON_USE_UNICODE_INTERNALS 1
+ #undef CYTHON_USE_UNICODE_INTERNALS
+ #define CYTHON_USE_UNICODE_INTERNALS 0
+ #ifndef CYTHON_USE_UNICODE_WRITER
+ #define CYTHON_USE_UNICODE_WRITER 0
#endif
- #undef CYTHON_USE_UNICODE_WRITER
- #define CYTHON_USE_UNICODE_WRITER 0
#undef CYTHON_USE_PYLONG_INTERNALS
#define CYTHON_USE_PYLONG_INTERNALS 0
#ifndef CYTHON_AVOID_BORROWED_REFS
#define CYTHON_AVOID_BORROWED_REFS 0
#endif
- #ifndef CYTHON_ASSUME_SAFE_MACROS
- #define CYTHON_ASSUME_SAFE_MACROS 1
- #endif
- #ifndef CYTHON_UNPACK_METHODS
- #define CYTHON_UNPACK_METHODS 1
- #endif
+ #undef CYTHON_ASSUME_SAFE_MACROS
+ #define CYTHON_ASSUME_SAFE_MACROS 0
+ #undef CYTHON_UNPACK_METHODS
+ #define CYTHON_UNPACK_METHODS 0
#undef CYTHON_FAST_THREAD_STATE
#define CYTHON_FAST_THREAD_STATE 0
+ #undef CYTHON_FAST_GIL
+ #define CYTHON_FAST_GIL 0
+ #undef CYTHON_METH_FASTCALL
+ #define CYTHON_METH_FASTCALL 0
#undef CYTHON_FAST_PYCALL
#define CYTHON_FAST_PYCALL 0
+ #ifndef CYTHON_PEP487_INIT_SUBCLASS
+ #define CYTHON_PEP487_INIT_SUBCLASS 1
+ #endif
#undef CYTHON_PEP489_MULTI_PHASE_INIT
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
- #undef CYTHON_USE_TP_FINALIZE
- #define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_MODULE_STATE
+ #define CYTHON_USE_MODULE_STATE 1
+ #ifndef CYTHON_USE_TP_FINALIZE
+ #define CYTHON_USE_TP_FINALIZE 0
+ #endif
#undef CYTHON_USE_DICT_VERSIONS
#define CYTHON_USE_DICT_VERSIONS 0
#undef CYTHON_USE_EXC_INFO_STACK
@@ -152,19 +263,28 @@ END: Cython Metadata */
#ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
#define CYTHON_UPDATE_DESCRIPTOR_DOC 0
#endif
-#elif defined(PY_NOGIL)
+ #undef CYTHON_USE_FREELISTS
+ #define CYTHON_USE_FREELISTS 0
+#elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL)
#define CYTHON_COMPILING_IN_PYPY 0
- #define CYTHON_COMPILING_IN_PYSTON 0
#define CYTHON_COMPILING_IN_CPYTHON 0
+ #define CYTHON_COMPILING_IN_LIMITED_API 0
+ #define CYTHON_COMPILING_IN_GRAAL 0
#define CYTHON_COMPILING_IN_NOGIL 1
#ifndef CYTHON_USE_TYPE_SLOTS
#define CYTHON_USE_TYPE_SLOTS 1
#endif
+ #ifndef CYTHON_USE_TYPE_SPECS
+ #define CYTHON_USE_TYPE_SPECS 0
+ #endif
#undef CYTHON_USE_PYTYPE_LOOKUP
#define CYTHON_USE_PYTYPE_LOOKUP 0
#ifndef CYTHON_USE_ASYNC_SLOTS
#define CYTHON_USE_ASYNC_SLOTS 1
#endif
+ #ifndef CYTHON_USE_PYLONG_INTERNALS
+ #define CYTHON_USE_PYLONG_INTERNALS 0
+ #endif
#undef CYTHON_USE_PYLIST_INTERNALS
#define CYTHON_USE_PYLIST_INTERNALS 0
#ifndef CYTHON_USE_UNICODE_INTERNALS
@@ -172,8 +292,6 @@ END: Cython Metadata */
#endif
#undef CYTHON_USE_UNICODE_WRITER
#define CYTHON_USE_UNICODE_WRITER 0
- #undef CYTHON_USE_PYLONG_INTERNALS
- #define CYTHON_USE_PYLONG_INTERNALS 0
#ifndef CYTHON_AVOID_BORROWED_REFS
#define CYTHON_AVOID_BORROWED_REFS 0
#endif
@@ -185,11 +303,22 @@ END: Cython Metadata */
#endif
#undef CYTHON_FAST_THREAD_STATE
#define CYTHON_FAST_THREAD_STATE 0
+ #undef CYTHON_FAST_GIL
+ #define CYTHON_FAST_GIL 0
+ #ifndef CYTHON_METH_FASTCALL
+ #define CYTHON_METH_FASTCALL 1
+ #endif
#undef CYTHON_FAST_PYCALL
#define CYTHON_FAST_PYCALL 0
+ #ifndef CYTHON_PEP487_INIT_SUBCLASS
+ #define CYTHON_PEP487_INIT_SUBCLASS 1
+ #endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT
#define CYTHON_PEP489_MULTI_PHASE_INIT 1
#endif
+ #ifndef CYTHON_USE_MODULE_STATE
+ #define CYTHON_USE_MODULE_STATE 0
+ #endif
#ifndef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 1
#endif
@@ -197,18 +326,25 @@ END: Cython Metadata */
#define CYTHON_USE_DICT_VERSIONS 0
#undef CYTHON_USE_EXC_INFO_STACK
#define CYTHON_USE_EXC_INFO_STACK 0
+ #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
+ #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
+ #endif
+ #ifndef CYTHON_USE_FREELISTS
+ #define CYTHON_USE_FREELISTS 0
+ #endif
#else
#define CYTHON_COMPILING_IN_PYPY 0
- #define CYTHON_COMPILING_IN_PYSTON 0
#define CYTHON_COMPILING_IN_CPYTHON 1
+ #define CYTHON_COMPILING_IN_LIMITED_API 0
+ #define CYTHON_COMPILING_IN_GRAAL 0
#define CYTHON_COMPILING_IN_NOGIL 0
#ifndef CYTHON_USE_TYPE_SLOTS
#define CYTHON_USE_TYPE_SLOTS 1
#endif
- #if PY_VERSION_HEX < 0x02070000
- #undef CYTHON_USE_PYTYPE_LOOKUP
- #define CYTHON_USE_PYTYPE_LOOKUP 0
- #elif !defined(CYTHON_USE_PYTYPE_LOOKUP)
+ #ifndef CYTHON_USE_TYPE_SPECS
+ #define CYTHON_USE_TYPE_SPECS 0
+ #endif
+ #ifndef CYTHON_USE_PYTYPE_LOOKUP
#define CYTHON_USE_PYTYPE_LOOKUP 1
#endif
#if PY_MAJOR_VERSION < 3
@@ -217,10 +353,7 @@ END: Cython Metadata */
#elif !defined(CYTHON_USE_ASYNC_SLOTS)
#define CYTHON_USE_ASYNC_SLOTS 1
#endif
- #if PY_VERSION_HEX < 0x02070000
- #undef CYTHON_USE_PYLONG_INTERNALS
- #define CYTHON_USE_PYLONG_INTERNALS 0
- #elif !defined(CYTHON_USE_PYLONG_INTERNALS)
+ #ifndef CYTHON_USE_PYLONG_INTERNALS
#define CYTHON_USE_PYLONG_INTERNALS 1
#endif
#ifndef CYTHON_USE_PYLIST_INTERNALS
@@ -244,37 +377,62 @@ END: Cython Metadata */
#ifndef CYTHON_UNPACK_METHODS
#define CYTHON_UNPACK_METHODS 1
#endif
- #if PY_VERSION_HEX >= 0x030B00A4
- #undef CYTHON_FAST_THREAD_STATE
- #define CYTHON_FAST_THREAD_STATE 0
- #elif !defined(CYTHON_FAST_THREAD_STATE)
+ #ifndef CYTHON_FAST_THREAD_STATE
#define CYTHON_FAST_THREAD_STATE 1
#endif
+ #ifndef CYTHON_FAST_GIL
+ #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6)
+ #endif
+ #ifndef CYTHON_METH_FASTCALL
+ #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1)
+ #endif
#ifndef CYTHON_FAST_PYCALL
- #define CYTHON_FAST_PYCALL (PY_VERSION_HEX < 0x030A0000)
+ #define CYTHON_FAST_PYCALL 1
#endif
- #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
+ #ifndef CYTHON_PEP487_INIT_SUBCLASS
+ #define CYTHON_PEP487_INIT_SUBCLASS 1
#endif
- #ifndef CYTHON_USE_TP_FINALIZE
- #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
+ #if PY_VERSION_HEX < 0x03050000
+ #undef CYTHON_PEP489_MULTI_PHASE_INIT
+ #define CYTHON_PEP489_MULTI_PHASE_INIT 0
+ #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT)
+ #define CYTHON_PEP489_MULTI_PHASE_INIT 1
+ #endif
+ #ifndef CYTHON_USE_MODULE_STATE
+ #define CYTHON_USE_MODULE_STATE 0
+ #endif
+ #if PY_VERSION_HEX < 0x030400a1
+ #undef CYTHON_USE_TP_FINALIZE
+ #define CYTHON_USE_TP_FINALIZE 0
+ #elif !defined(CYTHON_USE_TP_FINALIZE)
+ #define CYTHON_USE_TP_FINALIZE 1
#endif
- #ifndef CYTHON_USE_DICT_VERSIONS
- #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
+ #if PY_VERSION_HEX < 0x030600B1
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #elif !defined(CYTHON_USE_DICT_VERSIONS)
+ #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5)
#endif
- #if PY_VERSION_HEX >= 0x030B00A4
+ #if PY_VERSION_HEX < 0x030700A3
#undef CYTHON_USE_EXC_INFO_STACK
#define CYTHON_USE_EXC_INFO_STACK 0
#elif !defined(CYTHON_USE_EXC_INFO_STACK)
- #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
+ #define CYTHON_USE_EXC_INFO_STACK 1
#endif
#ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
#define CYTHON_UPDATE_DESCRIPTOR_DOC 1
#endif
+ #ifndef CYTHON_USE_FREELISTS
+ #define CYTHON_USE_FREELISTS 1
+ #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
#endif
+#if !defined(CYTHON_VECTORCALL)
+#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1)
+#endif
+#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1)
#if CYTHON_USE_PYLONG_INTERNALS
#if PY_MAJOR_VERSION < 3
#include "longintrepr.h"
@@ -303,6 +461,17 @@ END: Cython Metadata */
#define CYTHON_RESTRICT
#endif
#endif
+#ifndef CYTHON_UNUSED
+ #if defined(__cplusplus)
+ /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17
+ * but leads to warnings with -pedantic, since it is a C++17 feature */
+ #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
+ #if __has_cpp_attribute(maybe_unused)
+ #define CYTHON_UNUSED [[maybe_unused]]
+ #endif
+ #endif
+ #endif
+#endif
#ifndef CYTHON_UNUSED
# if defined(__GNUC__)
# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
@@ -316,13 +485,16 @@ END: Cython Metadata */
# define CYTHON_UNUSED
# endif
#endif
-#ifndef CYTHON_MAYBE_UNUSED_VAR
+#ifndef CYTHON_UNUSED_VAR
# if defined(__cplusplus)
- template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { }
+ template void CYTHON_UNUSED_VAR( const T& ) { }
# else
-# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x)
+# define CYTHON_UNUSED_VAR(x) (void)(x)
# endif
#endif
+#ifndef CYTHON_MAYBE_UNUSED_VAR
+ #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x)
+#endif
#ifndef CYTHON_NCP_UNUSED
# if CYTHON_COMPILING_IN_CPYTHON
# define CYTHON_NCP_UNUSED
@@ -330,28 +502,59 @@ END: Cython Metadata */
# define CYTHON_NCP_UNUSED CYTHON_UNUSED
# endif
#endif
+#ifndef CYTHON_USE_CPP_STD_MOVE
+ #if defined(__cplusplus) && (\
+ __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600))
+ #define CYTHON_USE_CPP_STD_MOVE 1
+ #else
+ #define CYTHON_USE_CPP_STD_MOVE 0
+ #endif
+#endif
#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
#ifdef _MSC_VER
#ifndef _MSC_STDINT_H_
#if _MSC_VER < 1300
- typedef unsigned char uint8_t;
- typedef unsigned int uint32_t;
+ typedef unsigned char uint8_t;
+ typedef unsigned short uint16_t;
+ typedef unsigned int uint32_t;
+ #else
+ typedef unsigned __int8 uint8_t;
+ typedef unsigned __int16 uint16_t;
+ typedef unsigned __int32 uint32_t;
+ #endif
+ #endif
+ #if _MSC_VER < 1300
+ #ifdef _WIN64
+ typedef unsigned long long __pyx_uintptr_t;
+ #else
+ typedef unsigned int __pyx_uintptr_t;
+ #endif
+ #else
+ #ifdef _WIN64
+ typedef unsigned __int64 __pyx_uintptr_t;
#else
- typedef unsigned __int8 uint8_t;
- typedef unsigned __int32 uint32_t;
+ typedef unsigned __int32 __pyx_uintptr_t;
#endif
#endif
#else
- #include
+ #include
+ typedef uintptr_t __pyx_uintptr_t;
#endif
#ifndef CYTHON_FALLTHROUGH
- #if defined(__cplusplus) && __cplusplus >= 201103L
- #if __has_cpp_attribute(fallthrough)
- #define CYTHON_FALLTHROUGH [[fallthrough]]
- #elif __has_cpp_attribute(clang::fallthrough)
- #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
- #elif __has_cpp_attribute(gnu::fallthrough)
- #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
+ #if defined(__cplusplus)
+ /* for clang __has_cpp_attribute(fallthrough) is true even before C++17
+ * but leads to warnings with -pedantic, since it is a C++17 feature */
+ #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
+ #if __has_cpp_attribute(fallthrough)
+ #define CYTHON_FALLTHROUGH [[fallthrough]]
+ #endif
+ #endif
+ #ifndef CYTHON_FALLTHROUGH
+ #if __has_cpp_attribute(clang::fallthrough)
+ #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
+ #elif __has_cpp_attribute(gnu::fallthrough)
+ #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
+ #endif
#endif
#endif
#ifndef CYTHON_FALLTHROUGH
@@ -361,13 +564,26 @@ END: Cython Metadata */
#define CYTHON_FALLTHROUGH
#endif
#endif
- #if defined(__clang__ ) && defined(__apple_build_version__)
+ #if defined(__clang__) && defined(__apple_build_version__)
#if __apple_build_version__ < 7000000
#undef CYTHON_FALLTHROUGH
#define CYTHON_FALLTHROUGH
#endif
#endif
#endif
+#ifdef __cplusplus
+ template
+ struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);};
+ #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value)
+#else
+ #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0)
+#endif
+#if CYTHON_COMPILING_IN_PYPY == 1
+ #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000)
+#else
+ #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000)
+#endif
+#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer))
#ifndef CYTHON_INLINE
#if defined(__clang__)
@@ -383,85 +599,145 @@ END: Cython Metadata */
#endif
#endif
-#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
- #define Py_OptimizeFlag 0
-#endif
#define __PYX_BUILD_PY_SSIZE_T "n"
#define CYTHON_FORMAT_SSIZE_T "z"
#if PY_MAJOR_VERSION < 3
#define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
- PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#define __Pyx_DefaultClassType PyClass_Type
+ #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
+ PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#else
#define __Pyx_BUILTIN_MODULE_NAME "builtins"
#define __Pyx_DefaultClassType PyType_Type
-#if PY_VERSION_HEX >= 0x030B00A1
- static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int k, int l, int s, int f,
+#if CYTHON_COMPILING_IN_LIMITED_API
+ static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f,
PyObject *code, PyObject *c, PyObject* n, PyObject *v,
PyObject *fv, PyObject *cell, PyObject* fn,
PyObject *name, int fline, PyObject *lnos) {
- PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL;
- PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *call_result=NULL, *empty=NULL;
- const char *fn_cstr=NULL;
- const char *name_cstr=NULL;
- PyCodeObject* co=NULL;
+ PyObject *exception_table = NULL;
+ PyObject *types_module=NULL, *code_type=NULL, *result=NULL;
+ #if __PYX_LIMITED_VERSION_HEX < 0x030B0000
+ PyObject *version_info;
+ PyObject *py_minor_version = NULL;
+ #endif
+ long minor_version = 0;
PyObject *type, *value, *traceback;
PyErr_Fetch(&type, &value, &traceback);
- if (!(kwds=PyDict_New())) goto end;
- if (!(argcount=PyLong_FromLong(a))) goto end;
- if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end;
- if (!(posonlyargcount=PyLong_FromLong(0))) goto end;
- if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end;
- if (!(kwonlyargcount=PyLong_FromLong(k))) goto end;
- if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end;
- if (!(nlocals=PyLong_FromLong(l))) goto end;
- if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end;
- if (!(stacksize=PyLong_FromLong(s))) goto end;
- if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end;
- if (!(flags=PyLong_FromLong(f))) goto end;
- if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end;
- if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end;
- if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end;
- if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end;
- if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end;
- if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end;
- if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end;
- if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end;
- if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end;
- if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end;
- if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end;
- if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto cleanup_code_too;
- if (!(empty = PyTuple_New(0))) goto cleanup_code_too; // unfortunately __pyx_empty_tuple isn't available here
- if (!(call_result = PyObject_Call(replace, empty, kwds))) goto cleanup_code_too;
- Py_XDECREF((PyObject*)co);
- co = (PyCodeObject*)call_result;
- call_result = NULL;
- if (0) {
- cleanup_code_too:
- Py_XDECREF((PyObject*)co);
- co = NULL;
- }
- end:
- Py_XDECREF(kwds);
- Py_XDECREF(argcount);
- Py_XDECREF(posonlyargcount);
- Py_XDECREF(kwonlyargcount);
- Py_XDECREF(nlocals);
- Py_XDECREF(stacksize);
- Py_XDECREF(replace);
- Py_XDECREF(call_result);
- Py_XDECREF(empty);
+ #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000
+ minor_version = 11;
+ #else
+ if (!(version_info = PySys_GetObject("version_info"))) goto end;
+ if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end;
+ minor_version = PyLong_AsLong(py_minor_version);
+ Py_DECREF(py_minor_version);
+ if (minor_version == -1 && PyErr_Occurred()) goto end;
+ #endif
+ if (!(types_module = PyImport_ImportModule("types"))) goto end;
+ if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end;
+ if (minor_version <= 7) {
+ (void)p;
+ result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code,
+ c, n, v, fn, name, fline, lnos, fv, cell);
+ } else if (minor_version <= 10) {
+ result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code,
+ c, n, v, fn, name, fline, lnos, fv, cell);
+ } else {
+ if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end;
+ result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code,
+ c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell);
+ }
+ end:
+ Py_XDECREF(code_type);
+ Py_XDECREF(exception_table);
+ Py_XDECREF(types_module);
if (type) {
PyErr_Restore(type, value, traceback);
}
- return co;
+ return result;
}
+ #ifndef CO_OPTIMIZED
+ #define CO_OPTIMIZED 0x0001
+ #endif
+ #ifndef CO_NEWLOCALS
+ #define CO_NEWLOCALS 0x0002
+ #endif
+ #ifndef CO_VARARGS
+ #define CO_VARARGS 0x0004
+ #endif
+ #ifndef CO_VARKEYWORDS
+ #define CO_VARKEYWORDS 0x0008
+ #endif
+ #ifndef CO_ASYNC_GENERATOR
+ #define CO_ASYNC_GENERATOR 0x0200
+ #endif
+ #ifndef CO_GENERATOR
+ #define CO_GENERATOR 0x0020
+ #endif
+ #ifndef CO_COROUTINE
+ #define CO_COROUTINE 0x0080
+ #endif
+#elif PY_VERSION_HEX >= 0x030B0000
+ static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f,
+ PyObject *code, PyObject *c, PyObject* n, PyObject *v,
+ PyObject *fv, PyObject *cell, PyObject* fn,
+ PyObject *name, int fline, PyObject *lnos) {
+ PyCodeObject *result;
+ PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0);
+ if (!empty_bytes) return NULL;
+ result =
+ #if PY_VERSION_HEX >= 0x030C0000
+ PyUnstable_Code_NewWithPosOnlyArgs
+ #else
+ PyCode_NewWithPosOnlyArgs
+ #endif
+ (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes);
+ Py_DECREF(empty_bytes);
+ return result;
+ }
+#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY
+ #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
+ PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#else
- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
+ #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#endif
- #define __Pyx_DefaultClassType PyType_Type
+#endif
+#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE)
+ #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type)
+#else
+ #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type))
+#endif
+#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is)
+ #define __Pyx_Py_Is(x, y) Py_Is(x, y)
+#else
+ #define __Pyx_Py_Is(x, y) ((x) == (y))
+#endif
+#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone)
+ #define __Pyx_Py_IsNone(ob) Py_IsNone(ob)
+#else
+ #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None)
+#endif
+#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue)
+ #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob)
+#else
+ #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True)
+#endif
+#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse)
+ #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob)
+#else
+ #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False)
+#endif
+#define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj))
+#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY
+ #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o)
+#else
+ #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o)
+#endif
+#ifndef CO_COROUTINE
+ #define CO_COROUTINE 0x80
+#endif
+#ifndef CO_ASYNC_GENERATOR
+ #define CO_ASYNC_GENERATOR 0x200
#endif
#ifndef Py_TPFLAGS_CHECKTYPES
#define Py_TPFLAGS_CHECKTYPES 0
@@ -475,6 +751,12 @@ END: Cython Metadata */
#ifndef Py_TPFLAGS_HAVE_FINALIZE
#define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
+#ifndef Py_TPFLAGS_SEQUENCE
+ #define Py_TPFLAGS_SEQUENCE 0
+#endif
+#ifndef Py_TPFLAGS_MAPPING
+ #define Py_TPFLAGS_MAPPING 0
+#endif
#ifndef METH_STACKLESS
#define METH_STACKLESS 0
#endif
@@ -486,34 +768,89 @@ END: Cython Metadata */
typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
Py_ssize_t nargs, PyObject *kwnames);
#else
- #define __Pyx_PyCFunctionFast _PyCFunctionFast
- #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
+ #if PY_VERSION_HEX >= 0x030d00A4
+ # define __Pyx_PyCFunctionFast PyCFunctionFast
+ # define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords
+ #else
+ # define __Pyx_PyCFunctionFast _PyCFunctionFast
+ # define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
+ #endif
+#endif
+#if CYTHON_METH_FASTCALL
+ #define __Pyx_METH_FASTCALL METH_FASTCALL
+ #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast
+ #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords
+#else
+ #define __Pyx_METH_FASTCALL METH_VARARGS
+ #define __Pyx_PyCFunction_FastCall PyCFunction
+ #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords
+#endif
+#if CYTHON_VECTORCALL
+ #define __pyx_vectorcallfunc vectorcallfunc
+ #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET
+ #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n))
+#elif CYTHON_BACKPORT_VECTORCALL
+ typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args,
+ size_t nargsf, PyObject *kwnames);
+ #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1))
+ #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET))
+#else
+ #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0
+ #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n))
#endif
-#if CYTHON_FAST_PYCCALL
-#define __Pyx_PyFastCFunction_Check(func)\
- ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
+#if PY_MAJOR_VERSION >= 0x030900B1
+#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func)
#else
-#define __Pyx_PyFastCFunction_Check(func) 0
+#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func)
+#endif
+#define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func)
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth)
+#elif !CYTHON_COMPILING_IN_LIMITED_API
+#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func)
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags)
+static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) {
+ return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self;
+}
+#endif
+static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) {
+#if CYTHON_COMPILING_IN_LIMITED_API
+ return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
+#else
+ return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
+#endif
+}
+#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc)
+#if __PYX_LIMITED_VERSION_HEX < 0x030900B1
+ #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b))
+ typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *);
+#else
+ #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b)
+ #define __Pyx_PyCMethod PyCMethod
+#endif
+#ifndef METH_METHOD
+ #define METH_METHOD 0x200
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
#define PyObject_Malloc(s) PyMem_Malloc(s)
#define PyObject_Free(p) PyMem_Free(p)
#define PyObject_Realloc(p) PyMem_Realloc(p)
#endif
-#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
- #define PyMem_RawMalloc(n) PyMem_Malloc(n)
- #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
- #define PyMem_RawFree(p) PyMem_Free(p)
-#endif
-#if CYTHON_COMPILING_IN_PYSTON
- #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
- #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
+#if CYTHON_COMPILING_IN_LIMITED_API
+ #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0)
+ #define __Pyx_PyFrame_SetLineNumber(frame, lineno)
#else
#define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0)
#define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno)
#endif
-#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000
+#if CYTHON_COMPILING_IN_LIMITED_API
+ #define __Pyx_PyThreadState_Current PyThreadState_Get()
+#elif !CYTHON_FAST_THREAD_STATE
#define __Pyx_PyThreadState_Current PyThreadState_GET()
+#elif PY_VERSION_HEX >= 0x030d00A1
+ #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked()
#elif PY_VERSION_HEX >= 0x03060000
#define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
#elif PY_VERSION_HEX >= 0x03000000
@@ -521,6 +858,22 @@ END: Cython Metadata */
#else
#define __Pyx_PyThreadState_Current _PyThreadState_Current
#endif
+#if CYTHON_COMPILING_IN_LIMITED_API
+static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op)
+{
+ void *result;
+ result = PyModule_GetState(op);
+ if (!result)
+ Py_FatalError("Couldn't find the module state");
+ return result;
+}
+#endif
+#define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype)
+#if CYTHON_COMPILING_IN_LIMITED_API
+ #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name))
+#else
+ #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name)
+#endif
#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)
#include "pythread.h"
#define Py_tss_NEEDS_INIT 0
@@ -551,7 +904,29 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
return PyThread_get_key_value(*key);
}
#endif
-#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
+#if PY_MAJOR_VERSION < 3
+ #if CYTHON_COMPILING_IN_PYPY
+ #if PYPY_VERSION_NUM < 0x07030600
+ #if defined(__cplusplus) && __cplusplus >= 201402L
+ [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]]
+ #elif defined(__GNUC__) || defined(__clang__)
+ __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")))
+ #elif defined(_MSC_VER)
+ __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))
+ #endif
+ static CYTHON_INLINE int PyGILState_Check(void) {
+ return 0;
+ }
+ #else // PYPY_VERSION_NUM < 0x07030600
+ #endif // PYPY_VERSION_NUM < 0x07030600
+ #else
+ static CYTHON_INLINE int PyGILState_Check(void) {
+ PyThreadState * tstate = _PyThreadState_Current;
+ return tstate && (tstate == PyGILState_GetThisThreadState());
+ }
+ #endif
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized)
#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
#else
#define __Pyx_PyDict_NewPresized(n) PyDict_New()
@@ -563,34 +938,91 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y)
#define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y)
#endif
-#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS
-#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS
+#define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
+static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) {
+ PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name);
+ if (res == NULL) PyErr_Clear();
+ return res;
+}
+#elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000)
+#define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError
+#define __Pyx_PyDict_GetItemStr PyDict_GetItem
#else
-#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name)
+static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) {
+#if CYTHON_COMPILING_IN_PYPY
+ return PyDict_GetItem(dict, name);
+#else
+ PyDictEntry *ep;
+ PyDictObject *mp = (PyDictObject*) dict;
+ long hash = ((PyStringObject *) name)->ob_shash;
+ assert(hash != -1);
+ ep = (mp->ma_lookup)(mp, name, hash);
+ if (ep == NULL) {
+ return NULL;
+ }
+ return ep->me_value;
#endif
-#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+}
+#define __Pyx_PyDict_GetItemStr PyDict_GetItem
+#endif
+#if CYTHON_USE_TYPE_SLOTS
+ #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags)
+ #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0)
+ #define __Pyx_PyObject_GetIterNextFunc(obj) (Py_TYPE(obj)->tp_iternext)
+#else
+ #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp))
+ #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature)
+ #define __Pyx_PyObject_GetIterNextFunc(obj) PyIter_Next
+#endif
+#if CYTHON_COMPILING_IN_LIMITED_API
+ #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v)
+#else
+ #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v)
+#endif
+#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000
+#define __Pyx_PyHeapTypeObject_GC_Del(obj) {\
+ PyTypeObject *type = Py_TYPE((PyObject*)obj);\
+ assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\
+ PyObject_GC_Del(obj);\
+ Py_DECREF(type);\
+}
+#else
+#define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj)
+#endif
+#if CYTHON_COMPILING_IN_LIMITED_API
#define CYTHON_PEP393_ENABLED 1
- #if defined(PyUnicode_IS_READY)
- #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
- 0 : _PyUnicode_Ready((PyObject *)(op)))
- #else
#define __Pyx_PyUnicode_READY(op) (0)
+ #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GetLength(u)
+ #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i)
+ #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U)
+ #define __Pyx_PyUnicode_KIND(u) ((void)u, (0))
+ #define __Pyx_PyUnicode_DATA(u) ((void*)u)
+ #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i))
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u))
+#elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+ #define CYTHON_PEP393_ENABLED 1
+ #if PY_VERSION_HEX >= 0x030C0000
+ #define __Pyx_PyUnicode_READY(op) (0)
+ #else
+ #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
+ 0 : _PyUnicode_Ready((PyObject *)(op)))
#endif
#define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
#define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
#define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
- #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u)
+ #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u))
#define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u)
#define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
- #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch)
- #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
- #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
- #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
- #else
- #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
- #endif
+ #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch)
+ #if PY_VERSION_HEX >= 0x030C0000
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
#else
- #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
+ #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
+ #else
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
+ #endif
#endif
#else
#define CYTHON_PEP393_ENABLED 0
@@ -600,11 +1032,11 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#define __Pyx_PyUnicode_READY(op) (0)
#define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u)
#define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
- #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111)
- #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE))
+ #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U)
+ #define __Pyx_PyUnicode_KIND(u) ((int)sizeof(Py_UNICODE))
#define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u))
#define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
- #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch)
+ #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch)
#define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u))
#endif
#if CYTHON_COMPILING_IN_PYPY
@@ -615,14 +1047,20 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
#endif
-#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
- #define PyUnicode_Contains(u, s) PySequence_Contains(u, s)
-#endif
-#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check)
- #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type)
-#endif
-#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
- #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
+#if CYTHON_COMPILING_IN_PYPY
+ #if !defined(PyUnicode_DecodeUnicodeEscape)
+ #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors)
+ #endif
+ #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500)
+ #undef PyUnicode_Contains
+ #define PyUnicode_Contains(u, s) PySequence_Contains(u, s)
+ #endif
+ #if !defined(PyByteArray_Check)
+ #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type)
+ #endif
+ #if !defined(PyObject_Format)
+ #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
+ #endif
#endif
#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
@@ -651,8 +1089,14 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
#define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+ #define __Pyx_PySequence_ListKeepNew(obj)\
+ (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj))
+#else
+ #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj)
+#endif
#ifndef PySet_CheckExact
- #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type)
+ #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type)
#endif
#if PY_VERSION_HEX >= 0x030900A4
#define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt)
@@ -662,15 +1106,42 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size)
#endif
#if CYTHON_ASSUME_SAFE_MACROS
+ #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i)
#define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq)
+ #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0))
+ #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0))
+ #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o)
+ #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o)
+ #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o)
+ #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o)
+ #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o)
#else
+ #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i)
#define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq)
+ #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v)
+ #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v)
+ #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o)
+ #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o)
+ #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o)
+ #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o)
+ #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o)
+#endif
+#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
+ #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name)
+#else
+ static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) {
+ PyObject *module = PyImport_AddModule(name);
+ Py_XINCREF(module);
+ return module;
+ }
#endif
#if PY_MAJOR_VERSION >= 3
#define PyIntObject PyLongObject
#define PyInt_Type PyLong_Type
#define PyInt_Check(op) PyLong_Check(op)
#define PyInt_CheckExact(op) PyLong_CheckExact(op)
+ #define __Pyx_Py3Int_Check(op) PyLong_Check(op)
+ #define __Pyx_Py3Int_CheckExact(op) PyLong_CheckExact(op)
#define PyInt_FromString PyLong_FromString
#define PyInt_FromUnicode PyLong_FromUnicode
#define PyInt_FromLong PyLong_FromLong
@@ -682,6 +1153,9 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
#define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
#define PyNumber_Int PyNumber_Long
+#else
+ #define __Pyx_Py3Int_Check(op) (PyLong_Check(op) || PyInt_Check(op))
+ #define __Pyx_Py3Int_CheckExact(op) (PyLong_CheckExact(op) || PyInt_CheckExact(op))
#endif
#if PY_MAJOR_VERSION >= 3
#define PyBoolObject PyLongObject
@@ -699,11 +1173,6 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
#define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t
#endif
-#if PY_MAJOR_VERSION >= 3
- #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func))
-#else
- #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
-#endif
#if CYTHON_USE_ASYNC_SLOTS
#if PY_VERSION_HEX >= 0x030500B1
#define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
@@ -744,11 +1213,20 @@ static CYTHON_INLINE float __PYX_NAN() {
#endif
#define __PYX_MARK_ERR_POS(f_index, lineno) \
- { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; }
+ { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; }
#define __PYX_ERR(f_index, lineno, Ln_error) \
{ __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }
-#ifndef __PYX_EXTERN_C
+#ifdef CYTHON_EXTERN_C
+ #undef __PYX_EXTERN_C
+ #define __PYX_EXTERN_C CYTHON_EXTERN_C
+#elif defined(__PYX_EXTERN_C)
+ #ifdef _MSC_VER
+ #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.")
+ #else
+ #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.
+ #endif
+#else
#ifdef __cplusplus
#define __PYX_EXTERN_C extern "C"
#else
@@ -809,9 +1287,10 @@ static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
#else
#define __Pyx_sst_abs(value) ((value<0) ? -value : value)
#endif
+static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s);
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
-#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
+static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*);
#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
#define __Pyx_PyBytes_FromString PyBytes_FromString
#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
@@ -829,9 +1308,9 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s))
-#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s))
+#define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
+#define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
+#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s)
@@ -839,13 +1318,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s)
#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s)
#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
-static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
- const Py_UNICODE *u_end = u;
- while (*u_end++) ;
- return (size_t)(u_end - u - 1);
-}
-#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
-#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
+#define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o)
#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode
#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
@@ -869,8 +1342,54 @@ static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
#else
#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
#endif
-#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))
+#if CYTHON_USE_PYLONG_INTERNALS
+ #if PY_VERSION_HEX >= 0x030C00A7
+ #ifndef _PyLong_SIGN_MASK
+ #define _PyLong_SIGN_MASK 3
+ #endif
+ #ifndef _PyLong_NON_SIZE_BITS
+ #define _PyLong_NON_SIZE_BITS 3
+ #endif
+ #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK)
+ #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0)
+ #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x))
+ #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1)
+ #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0)
+ #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0])
+ #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS))
+ #define __Pyx_PyLong_SignedDigitCount(x)\
+ ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x))
+ #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue)
+ #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x)
+ #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x)
+ #else
+ #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS))
+ #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0])
+ #endif
+ typedef Py_ssize_t __Pyx_compact_pylong;
+ typedef size_t __Pyx_compact_upylong;
+ #else
+ #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0)
+ #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0)
+ #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0)
+ #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0)
+ #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0])
+ #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x))
+ #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x)
+ #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1)
+ #define __Pyx_PyLong_CompactValue(x)\
+ ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0]))
+ typedef sdigit __Pyx_compact_pylong;
+ typedef digit __Pyx_compact_upylong;
+ #endif
+ #if PY_VERSION_HEX >= 0x030C00A5
+ #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit)
+ #else
+ #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit)
+ #endif
+#endif
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
+#include
static int __Pyx_sys_getdefaultencoding_not_ascii;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
PyObject* sys;
@@ -891,7 +1410,7 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) {
char ascii_chars[128];
int c;
for (c = 0; c < 128; c++) {
- ascii_chars[c] = c;
+ ascii_chars[c] = (char) c;
}
__Pyx_sys_getdefaultencoding_not_ascii = 1;
ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
@@ -921,6 +1440,7 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) {
#else
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
+#include
static char* __PYX_DEFAULT_STRING_ENCODING;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
PyObject* sys;
@@ -956,25 +1476,31 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) {
#endif /* __GNUC__ */
static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
+#if !CYTHON_USE_MODULE_STATE
static PyObject *__pyx_m = NULL;
-static PyObject *__pyx_d;
-static PyObject *__pyx_b;
-static PyObject *__pyx_cython_runtime = NULL;
-static PyObject *__pyx_empty_tuple;
-static PyObject *__pyx_empty_bytes;
-static PyObject *__pyx_empty_unicode;
+#endif
static int __pyx_lineno;
static int __pyx_clineno = 0;
-static const char * __pyx_cfilenm= __FILE__;
+static const char * __pyx_cfilenm = __FILE__;
static const char *__pyx_filename;
+/* #### Code section: filename_table ### */
static const char *__pyx_f[] = {
- "_pydevd_bundle/pydevd_cython.pyx",
- "_pydevd_bundle/pydevd_cython.pxd",
- "stringsource",
+ "_pydevd_bundle\\\\pydevd_cython.pyx",
+ "_pydevd_bundle\\\\pydevd_cython.pxd",
+ "",
"type.pxd",
};
+/* #### Code section: utility_code_proto_before_types ### */
+/* ForceInitThreads.proto */
+#ifndef __PYX_FORCE_INIT_THREADS
+ #define __PYX_FORCE_INIT_THREADS 0
+#endif
+
+/* #### Code section: numeric_typedefs ### */
+/* #### Code section: complex_type_declarations ### */
+/* #### Code section: type_declarations ### */
/*--- Type declarations ---*/
struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo;
@@ -992,6 +1518,7 @@ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer;
*/
struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo {
PyObject_HEAD
+ struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_vtab;
int pydev_state;
PyObject *pydev_step_stop;
int pydev_original_step_cmd;
@@ -1018,10 +1545,12 @@ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo {
PyObject *pydev_smart_step_into_variants;
PyObject *target_id_to_smart_step_into_variant;
int pydev_use_scoped_step_frame;
+ PyObject *weak_thread;
+ int is_in_wait_loop;
};
-/* "_pydevd_bundle/pydevd_cython.pyx":256
+/* "_pydevd_bundle/pydevd_cython.pyx":435
*
* # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
* cdef class _TryExceptContainerObj: # <<<<<<<<<<<<<<
@@ -1034,8 +1563,8 @@ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj {
};
-/* "_pydevd_bundle/pydevd_cython.pyx":274
- * #=======================================================================================================================
+/* "_pydevd_bundle/pydevd_cython.pyx":456
+ * # =======================================================================================================================
* # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
* cdef class PyDBFrame: # <<<<<<<<<<<<<<
* # ELSE
@@ -1050,8 +1579,8 @@ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame {
};
-/* "_pydevd_bundle/pydevd_cython.pyx":1448
- *
+/* "_pydevd_bundle/pydevd_cython.pyx":1688
+ * # fmt: off
* # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
* cdef class SafeCallWrapper: # <<<<<<<<<<<<<<
* cdef method_object
@@ -1063,8 +1592,8 @@ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper {
};
-/* "_pydevd_bundle/pydevd_cython.pyx":1604
- *
+/* "_pydevd_bundle/pydevd_cython.pyx":1856
+ * # fmt: off
* # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
* cdef class TopLevelThreadTracerOnlyUnhandledExceptions: # <<<<<<<<<<<<<<
* cdef public tuple _args;
@@ -1076,8 +1605,8 @@ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhand
};
-/* "_pydevd_bundle/pydevd_cython.pyx":1634
- *
+/* "_pydevd_bundle/pydevd_cython.pyx":1887
+ * # fmt: off
* # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
* cdef class TopLevelThreadTracerNoBackFrame: # <<<<<<<<<<<<<<
* cdef public object _frame_trace_dispatch;
@@ -1094,8 +1623,8 @@ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFram
};
-/* "_pydevd_bundle/pydevd_cython.pyx":1709
- *
+/* "_pydevd_bundle/pydevd_cython.pyx":1967
+ * # fmt: off
* # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
* cdef class ThreadTracer: # <<<<<<<<<<<<<<
* cdef public tuple _args;
@@ -1108,8 +1637,25 @@ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer {
-/* "_pydevd_bundle/pydevd_cython.pyx":274
- * #=======================================================================================================================
+/* "_pydevd_bundle/pydevd_cython.pyx":29
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef class PyDBAdditionalThreadInfo: # <<<<<<<<<<<<<<
+ * # ELSE
+ * # class PyDBAdditionalThreadInfo(object):
+ */
+
+struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo {
+ PyObject *(*get_topmost_frame)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, PyObject *, int __pyx_skip_dispatch);
+ PyObject *(*update_stepping_info)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch);
+ PyObject *(*_get_related_thread)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch);
+ int (*_is_stepping)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch);
+};
+static struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_vtabptr_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo;
+
+
+/* "_pydevd_bundle/pydevd_cython.pyx":456
+ * # =======================================================================================================================
* # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
* cdef class PyDBFrame: # <<<<<<<<<<<<<<
* # ELSE
@@ -1117,8 +1663,6 @@ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer {
*/
struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame {
- PyObject *(*_should_stop_on_exception)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *, PyObject *, PyObject *, PyObject *);
- PyObject *(*_handle_exception)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *, PyObject *, PyObject *, PyObject *, PyObject *);
PyObject *(*get_func_name)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *, PyObject *);
PyObject *(*_show_return_values)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *, PyObject *, PyObject *);
PyObject *(*_remove_return_values)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *, PyObject *, PyObject *);
@@ -1127,6 +1671,7 @@ struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame {
PyObject *(*trace_dispatch)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *, PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_vtabptr_14_pydevd_bundle_13pydevd_cython_PyDBFrame;
+/* #### Code section: utility_code_proto ### */
/* --- Runtime support code (head) --- */
/* Refnanny.proto */
@@ -1135,11 +1680,11 @@ static struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx
#endif
#if CYTHON_REFNANNY
typedef struct {
- void (*INCREF)(void*, PyObject*, int);
- void (*DECREF)(void*, PyObject*, int);
- void (*GOTREF)(void*, PyObject*, int);
- void (*GIVEREF)(void*, PyObject*, int);
- void* (*SetupContext)(const char*, int, const char*);
+ void (*INCREF)(void*, PyObject*, Py_ssize_t);
+ void (*DECREF)(void*, PyObject*, Py_ssize_t);
+ void (*GOTREF)(void*, PyObject*, Py_ssize_t);
+ void (*GIVEREF)(void*, PyObject*, Py_ssize_t);
+ void* (*SetupContext)(const char*, Py_ssize_t, const char*);
void (*FinishContext)(void**);
} __Pyx_RefNannyAPIStruct;
static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
@@ -1149,28 +1694,40 @@ static struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx
#define __Pyx_RefNannySetupContext(name, acquire_gil)\
if (acquire_gil) {\
PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
- __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
+ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\
PyGILState_Release(__pyx_gilstate_save);\
} else {\
- __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
+ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\
+ }
+ #define __Pyx_RefNannyFinishContextNogil() {\
+ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
+ __Pyx_RefNannyFinishContext();\
+ PyGILState_Release(__pyx_gilstate_save);\
}
#else
#define __Pyx_RefNannySetupContext(name, acquire_gil)\
- __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__))
+ #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext()
#endif
+ #define __Pyx_RefNannyFinishContextNogil() {\
+ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
+ __Pyx_RefNannyFinishContext();\
+ PyGILState_Release(__pyx_gilstate_save);\
+ }
#define __Pyx_RefNannyFinishContext()\
__Pyx_RefNanny->FinishContext(&__pyx_refnanny)
- #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
- #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
- #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
- #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+ #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
+ #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
+ #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
+ #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
+ #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0)
+ #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0)
+ #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0)
+ #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0)
#else
#define __Pyx_RefNannyDeclarations
#define __Pyx_RefNannySetupContext(name, acquire_gil)
+ #define __Pyx_RefNannyFinishContextNogil()
#define __Pyx_RefNannyFinishContext()
#define __Pyx_INCREF(r) Py_INCREF(r)
#define __Pyx_DECREF(r) Py_DECREF(r)
@@ -1181,6 +1738,10 @@ static struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx
#define __Pyx_XGOTREF(r)
#define __Pyx_XGIVEREF(r)
#endif
+#define __Pyx_Py_XDECREF_SET(r, v) do {\
+ PyObject *tmp = (PyObject *) r;\
+ r = v; Py_XDECREF(tmp);\
+ } while (0)
#define __Pyx_XDECREF_SET(r, v) do {\
PyObject *tmp = (PyObject *) r;\
r = v; __Pyx_XDECREF(tmp);\
@@ -1192,6 +1753,57 @@ static struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx
#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+/* PyErrExceptionMatches.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
+static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
+#else
+#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err)
+#endif
+
+/* PyThreadStateGet.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate;
+#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current;
+#if PY_VERSION_HEX >= 0x030C00A6
+#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL)
+#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL)
+#else
+#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL)
+#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type)
+#endif
+#else
+#define __Pyx_PyThreadState_declare
+#define __Pyx_PyThreadState_assign
+#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL)
+#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred()
+#endif
+
+/* PyErrFetchRestore.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
+#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6
+#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
+#else
+#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
+#endif
+#else
+#define __Pyx_PyErr_Clear() PyErr_Clear()
+#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
+#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb)
+#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb)
+#endif
+
/* PyObjectGetAttrStr.proto */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
@@ -1199,15 +1811,82 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject
#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
#endif
+/* PyObjectGetAttrStrNoError.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name);
+
/* GetBuiltinName.proto */
static PyObject *__Pyx_GetBuiltinName(PyObject *name);
+/* TupleAndListFromArray.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n);
+static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n);
+#endif
+
+/* IncludeStringH.proto */
+#include
+
+/* BytesEquals.proto */
+static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);
+
+/* UnicodeEquals.proto */
+static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);
+
+/* fastcall.proto */
+#if CYTHON_AVOID_BORROWED_REFS
+ #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i)
+#elif CYTHON_ASSUME_SAFE_MACROS
+ #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i)
+#else
+ #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i)
+#endif
+#if CYTHON_AVOID_BORROWED_REFS
+ #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg)
+ #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg)
+#else
+ #define __Pyx_Arg_NewRef_VARARGS(arg) arg
+ #define __Pyx_Arg_XDECREF_VARARGS(arg)
+#endif
+#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds)
+#define __Pyx_KwValues_VARARGS(args, nargs) NULL
+#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s)
+#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw)
+#if CYTHON_METH_FASTCALL
+ #define __Pyx_Arg_FASTCALL(args, i) args[i]
+ #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds)
+ #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs))
+ static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s);
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
+ CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues);
+ #else
+ #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw)
+ #endif
+ #define __Pyx_Arg_NewRef_FASTCALL(arg) arg /* no-op, __Pyx_Arg_FASTCALL is direct and this needs
+ to have the same reference counting */
+ #define __Pyx_Arg_XDECREF_FASTCALL(arg)
+#else
+ #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS
+ #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS
+ #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS
+ #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS
+ #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS
+ #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg)
+ #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg)
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+#define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start)
+#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start)
+#else
+#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop)
+#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop)
+#endif
+
/* RaiseArgTupleInvalid.proto */
static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
/* KeywordStringCheck.proto */
-static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed);
+static int __Pyx_CheckKeywordStrings(PyObject *kw, const char* function_name, int kw_allowed);
/* PyDictVersioning.proto */
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
@@ -1237,18 +1916,18 @@ static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UIN
/* GetModuleGlobalName.proto */
#if CYTHON_USE_DICT_VERSIONS
-#define __Pyx_GetModuleGlobalName(var, name) {\
+#define __Pyx_GetModuleGlobalName(var, name) do {\
static PY_UINT64_T __pyx_dict_version = 0;\
static PyObject *__pyx_dict_cached_value = NULL;\
(var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
(likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
__Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
-}
-#define __Pyx_GetModuleGlobalNameUncached(var, name) {\
+} while(0)
+#define __Pyx_GetModuleGlobalNameUncached(var, name) do {\
PY_UINT64_T __pyx_dict_version;\
PyObject *__pyx_dict_cached_value;\
(var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
-}
+} while(0)
static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
#else
#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
@@ -1258,33 +1937,37 @@ static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
/* PyFunctionFastCall.proto */
#if CYTHON_FAST_PYCALL
+#if !CYTHON_VECTORCALL
#define __Pyx_PyFunction_FastCall(func, args, nargs)\
__Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
-#if 1 || PY_VERSION_HEX < 0x030600B1
static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs);
-#else
-#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
#endif
#define __Pyx_BUILD_ASSERT_EXPR(cond)\
(sizeof(char [1 - 2*!(cond)]) - 1)
#ifndef Py_MEMBER_SIZE
#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
#endif
-#if CYTHON_FAST_PYCALL
- static size_t __pyx_pyframe_localsplus_offset = 0;
+#if !CYTHON_VECTORCALL
+#if PY_VERSION_HEX >= 0x03080000
#include "frameobject.h"
-#if PY_VERSION_HEX >= 0x030b00a6
+#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API
#ifndef Py_BUILD_CORE
#define Py_BUILD_CORE 1
#endif
#include "internal/pycore_frame.h"
#endif
+ #define __Pxy_PyFrame_Initialize_Offsets()
+ #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus)
+#else
+ static size_t __pyx_pyframe_localsplus_offset = 0;
+ #include "frameobject.h"
#define __Pxy_PyFrame_Initialize_Offsets()\
((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
(void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
#define __Pyx_PyFrame_GetLocalsplus(frame)\
(assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
-#endif // CYTHON_FAST_PYCALL
+#endif
+#endif
#endif
/* PyObjectCall.proto */
@@ -1299,81 +1982,36 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
#endif
-/* PyObjectCallNoArg.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
-#else
-#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
-#endif
-
-/* PyCFunctionFastCall.proto */
-#if CYTHON_FAST_PYCCALL
-static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);
-#else
-#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL)
-#endif
+/* PyObjectFastCall.proto */
+#define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL)
+static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs);
/* PyObjectCallOneArg.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
-/* PyObjectCall2Args.proto */
-static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
-
-/* PyErrExceptionMatches.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
-static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
-#else
-#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err)
-#endif
+/* RaiseDoubleKeywords.proto */
+static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
-/* PyThreadStateGet.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate;
-#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current;
-#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type
-#else
-#define __Pyx_PyThreadState_declare
-#define __Pyx_PyThreadState_assign
-#define __Pyx_PyErr_Occurred() PyErr_Occurred()
-#endif
+/* ParseKeywords.proto */
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues,
+ PyObject **argnames[],
+ PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,
+ const char* function_name);
-/* PyErrFetchRestore.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
-#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
-#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
-#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
-#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
-static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
-static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
-#if CYTHON_COMPILING_IN_CPYTHON
-#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
-#else
-#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
-#endif
-#else
-#define __Pyx_PyErr_Clear() PyErr_Clear()
-#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
-#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb)
-#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb)
-#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb)
-#endif
-
-/* GetAttr.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);
+/* RaiseUnexpectedTypeError.proto */
+static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj);
/* GetAttr3.proto */
static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *);
+/* PyObjectCallNoArg.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
+
/* RaiseException.proto */
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
/* GetTopmostException.proto */
-#if CYTHON_USE_EXC_INFO_STACK
+#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE
static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
#endif
@@ -1398,30 +2036,36 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
/* PyObjectLookupSpecial.proto */
#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-static CYTHON_INLINE PyObject* __Pyx_PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name) {
- PyObject *res;
- PyTypeObject *tp = Py_TYPE(obj);
-#if PY_MAJOR_VERSION < 3
- if (unlikely(PyInstance_Check(obj)))
- return __Pyx_PyObject_GetAttrStr(obj, attr_name);
-#endif
- res = _PyType_Lookup(tp, attr_name);
- if (likely(res)) {
- descrgetfunc f = Py_TYPE(res)->tp_descr_get;
- if (!f) {
- Py_INCREF(res);
- } else {
- res = f(res, obj, (PyObject *)tp);
- }
- } else {
- PyErr_SetObject(PyExc_AttributeError, attr_name);
- }
- return res;
-}
+#define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 0)
+#define __Pyx_PyObject_LookupSpecial(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 1)
+static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error);
#else
+#define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n)
#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n)
#endif
+/* GetItemInt.proto */
+#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
+ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
+ __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
+ (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
+ __Pyx_GetItemInt_Generic(o, to_py_func(i))))
+#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
+ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
+ __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
+ (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
+ int wraparound, int boundscheck);
+#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
+ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
+ __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
+ (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
+ int wraparound, int boundscheck);
+static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
+ int is_list, int wraparound, int boundscheck);
+
/* PyObjectSetAttrStr.proto */
#if CYTHON_USE_TYPE_SLOTS
#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL)
@@ -1431,14 +2075,16 @@ static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr
#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
#endif
-/* None.proto */
-static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);
-
-/* pyfrozenset_new.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyFrozenSet_New(PyObject* it);
+/* ExtTypeTest.proto */
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
-/* PySetContains.proto */
-static CYTHON_INLINE int __Pyx_PySet_ContainsTF(PyObject* key, PyObject* set, int eq);
+/* SliceObject.proto */
+#define __Pyx_PyObject_DelSlice(obj, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound)\
+ __Pyx_PyObject_SetSlice(obj, (PyObject*)NULL, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound)
+static CYTHON_INLINE int __Pyx_PyObject_SetSlice(
+ PyObject* obj, PyObject* value, Py_ssize_t cstart, Py_ssize_t cstop,
+ PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
+ int has_cstart, int has_cstop, int wraparound);
/* ListAppend.proto */
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
@@ -1447,7 +2093,11 @@ static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
Py_ssize_t len = Py_SIZE(list);
if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
Py_INCREF(x);
+ #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
+ L->ob_item[len] = x;
+ #else
PyList_SET_ITEM(list, len, x);
+ #endif
__Pyx_SET_SIZE(list, len + 1);
return 0;
}
@@ -1457,56 +2107,61 @@ static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
#endif
-/* PySequenceContains.proto */
-static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
- int result = PySequence_Contains(seq, item);
- return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
-}
+/* PyObjectCall2Args.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
-/* RaiseDoubleKeywords.proto */
-static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
+/* PyObjectGetMethod.proto */
+static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);
-/* ParseKeywords.proto */
-static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
- PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
- const char* function_name);
+/* PyObjectCallMethod1.proto */
+static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);
+
+/* append.proto */
+static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x);
+
+/* RaiseUnboundLocalError.proto */
+static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);
+
+/* IterFinish.proto */
+static CYTHON_INLINE int __Pyx_IterFinish(void);
+
+/* set_iter.proto */
+static CYTHON_INLINE PyObject* __Pyx_set_iterator(PyObject* iterable, int is_set,
+ Py_ssize_t* p_orig_length, int* p_source_is_set);
+static CYTHON_INLINE int __Pyx_set_iter_next(
+ PyObject* iter_obj, Py_ssize_t orig_length,
+ Py_ssize_t* ppos, PyObject **value,
+ int source_is_set);
+
+/* RaiseTooManyValuesToUnpack.proto */
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);
+
+/* RaiseNeedMoreValuesToUnpack.proto */
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
+
+/* UnpackItemEndCheck.proto */
+static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);
/* ArgTypeTest.proto */
#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\
- ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\
+ ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\
__Pyx__ArgTypeTest(obj, type, name, exact))
static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact);
-/* GetItemInt.proto */
-#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
- (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
- __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
- (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
- __Pyx_GetItemInt_Generic(o, to_py_func(i))))
-#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
- (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
- __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
- (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
- int wraparound, int boundscheck);
-#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
- (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
- __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
- (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
- int wraparound, int boundscheck);
-static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
- int is_list, int wraparound, int boundscheck);
+/* pyfrozenset_new.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyFrozenSet_New(PyObject* it);
-/* IncludeStringH.proto */
-#include
+/* py_set_discard.proto */
+static CYTHON_INLINE int __Pyx_PySet_Discard(PyObject *set, PyObject *key);
-/* BytesEquals.proto */
-static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);
+/* PySetContains.proto */
+static CYTHON_INLINE int __Pyx_PySet_ContainsTF(PyObject* key, PyObject* set, int eq);
-/* UnicodeEquals.proto */
-static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);
+/* PySequenceContains.proto */
+static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
+ int result = PySequence_Contains(seq, item);
+ return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
+}
/* StrEquals.proto */
#if PY_MAJOR_VERSION >= 3
@@ -1515,23 +2170,24 @@ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int
#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
#endif
-/* RaiseTooManyValuesToUnpack.proto */
-static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);
-
-/* RaiseNeedMoreValuesToUnpack.proto */
-static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
-
-/* IterFinish.proto */
-static CYTHON_INLINE int __Pyx_IterFinish(void);
-
-/* UnpackItemEndCheck.proto */
-static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);
+/* SwapException.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
+static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
+#else
+static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
+#endif
-/* ExtTypeTest.proto */
-static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
+/* RaiseNoneIterError.proto */
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
-/* HasAttr.proto */
-static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);
+/* PyIntBinop.proto */
+#if !CYTHON_COMPILING_IN_PYPY
+static PyObject* __Pyx_PyInt_AndObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
+#else
+#define __Pyx_PyInt_AndObjC(op1, op2, intval, inplace, zerodivision_check)\
+ (inplace ? PyNumber_InPlaceAnd(op1, op2) : PyNumber_And(op1, op2))
+#endif
/* dict_getitem_default.proto */
static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value);
@@ -1561,37 +2217,6 @@ static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *
#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2) __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2)
#endif
-/* py_dict_clear.proto */
-#define __Pyx_PyDict_Clear(d) (PyDict_Clear(d), 0)
-
-/* PyDictContains.proto */
-static CYTHON_INLINE int __Pyx_PyDict_ContainsTF(PyObject* item, PyObject* dict, int eq) {
- int result = PyDict_Contains(dict, item);
- return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
-}
-
-/* SwapException.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
-static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
-#else
-static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
-#endif
-
-/* RaiseNoneIterError.proto */
-static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
-
-/* PyIntBinop.proto */
-#if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_AndObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
-#else
-#define __Pyx_PyInt_AndObjC(op1, op2, intval, inplace, zerodivision_check)\
- (inplace ? PyNumber_InPlaceAnd(op1, op2) : PyNumber_And(op1, op2))
-#endif
-
-/* PyObjectGetMethod.proto */
-static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);
-
/* PyObjectCallMethod0.proto */
static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);
@@ -1616,28 +2241,11 @@ static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict,
static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos,
PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict);
-/* py_dict_values.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d);
-
-/* CallUnboundCMethod0.proto */
-static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self);
-#if CYTHON_COMPILING_IN_CPYTHON
-#define __Pyx_CallUnboundCMethod0(cfunc, self)\
- (likely((cfunc)->func) ?\
- (likely((cfunc)->flag == METH_NOARGS) ? (*((cfunc)->func))(self, NULL) :\
- (PY_VERSION_HEX >= 0x030600B1 && likely((cfunc)->flag == METH_FASTCALL) ?\
- (PY_VERSION_HEX >= 0x030700A0 ?\
- (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0) :\
- (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL)) :\
- (PY_VERSION_HEX >= 0x030700A0 && (cfunc)->flag == (METH_FASTCALL | METH_KEYWORDS) ?\
- (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL) :\
- (likely((cfunc)->flag == (METH_VARARGS | METH_KEYWORDS)) ? ((*(PyCFunctionWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, __pyx_empty_tuple, NULL)) :\
- ((cfunc)->flag == METH_VARARGS ? (*((cfunc)->func))(self, __pyx_empty_tuple) :\
- __Pyx__CallUnboundCMethod0(cfunc, self)))))) :\
- __Pyx__CallUnboundCMethod0(cfunc, self))
-#else
-#define __Pyx_CallUnboundCMethod0(cfunc, self) __Pyx__CallUnboundCMethod0(cfunc, self)
-#endif
+/* PyDictContains.proto */
+static CYTHON_INLINE int __Pyx_PyDict_ContainsTF(PyObject* item, PyObject* dict, int eq) {
+ int result = PyDict_Contains(dict, item);
+ return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
+}
/* DictGetItem.proto */
#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
@@ -1656,6 +2264,15 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
int has_cstart, int has_cstop, int wraparound);
+/* GetAttr.proto */
+static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);
+
+/* HasAttr.proto */
+static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);
+
+/* py_dict_clear.proto */
+#define __Pyx_PyDict_Clear(d) (PyDict_Clear(d), 0)
+
/* PyIntBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
@@ -1664,12 +2281,6 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval,
(inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
#endif
-/* PyObjectCallMethod1.proto */
-static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);
-
-/* append.proto */
-static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x);
-
/* SliceTupleAndList.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyList_GetSlice(PyObject* src, Py_ssize_t start, Py_ssize_t stop);
@@ -1680,11 +2291,11 @@ static CYTHON_INLINE PyObject* __Pyx_PyTuple_GetSlice(PyObject* src, Py_ssize_t
#endif
/* PyIntCompare.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
+static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
/* ObjectGetItem.proto */
#if CYTHON_USE_TYPE_SLOTS
-static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key);
+static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key);
#else
#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key)
#endif
@@ -1695,6 +2306,22 @@ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
/* ImportFrom.proto */
static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);
+/* IncludeStructmemberH.proto */
+#include
+
+/* FixUpExtensionType.proto */
+#if CYTHON_USE_TYPE_SPECS
+static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type);
+#endif
+
+/* ValidateBasesTuple.proto */
+#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS
+static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases);
+#endif
+
+/* PyType_Ready.proto */
+CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t);
+
/* PyObject_GenericGetAttrNoDict.proto */
#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name);
@@ -1709,26 +2336,187 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam
#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr
#endif
-/* PyObjectGetAttrStrNoError.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name);
+/* SetVTable.proto */
+static int __Pyx_SetVtable(PyTypeObject* typeptr , void* vtable);
+
+/* GetVTable.proto */
+static void* __Pyx_GetVtable(PyTypeObject *type);
+
+/* MergeVTables.proto */
+#if !CYTHON_COMPILING_IN_LIMITED_API
+static int __Pyx_MergeVtables(PyTypeObject *type);
+#endif
/* SetupReduce.proto */
+#if !CYTHON_COMPILING_IN_LIMITED_API
static int __Pyx_setup_reduce(PyObject* type_obj);
-
-/* SetVTable.proto */
-static int __Pyx_SetVtable(PyObject *dict, void *vtable);
+#endif
/* TypeImport.proto */
-#ifndef __PYX_HAVE_RT_ImportType_proto
-#define __PYX_HAVE_RT_ImportType_proto
-enum __Pyx_ImportType_CheckSize {
- __Pyx_ImportType_CheckSize_Error = 0,
- __Pyx_ImportType_CheckSize_Warn = 1,
- __Pyx_ImportType_CheckSize_Ignore = 2
+#ifndef __PYX_HAVE_RT_ImportType_proto_3_0_11
+#define __PYX_HAVE_RT_ImportType_proto_3_0_11
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
+#include
+#endif
+#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L
+#define __PYX_GET_STRUCT_ALIGNMENT_3_0_11(s) alignof(s)
+#else
+#define __PYX_GET_STRUCT_ALIGNMENT_3_0_11(s) sizeof(void*)
+#endif
+enum __Pyx_ImportType_CheckSize_3_0_11 {
+ __Pyx_ImportType_CheckSize_Error_3_0_11 = 0,
+ __Pyx_ImportType_CheckSize_Warn_3_0_11 = 1,
+ __Pyx_ImportType_CheckSize_Ignore_3_0_11 = 2
};
-static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size);
+static PyTypeObject *__Pyx_ImportType_3_0_11(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_11 check_size);
+#endif
+
+/* ImportDottedModule.proto */
+static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple);
+#if PY_MAJOR_VERSION >= 3
+static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple);
#endif
+/* FetchSharedCythonModule.proto */
+static PyObject *__Pyx_FetchSharedCythonABIModule(void);
+
+/* FetchCommonType.proto */
+#if !CYTHON_USE_TYPE_SPECS
+static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);
+#else
+static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases);
+#endif
+
+/* PyMethodNew.proto */
+#if CYTHON_COMPILING_IN_LIMITED_API
+static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
+ PyObject *typesModule=NULL, *methodType=NULL, *result=NULL;
+ CYTHON_UNUSED_VAR(typ);
+ if (!self)
+ return __Pyx_NewRef(func);
+ typesModule = PyImport_ImportModule("types");
+ if (!typesModule) return NULL;
+ methodType = PyObject_GetAttrString(typesModule, "MethodType");
+ Py_DECREF(typesModule);
+ if (!methodType) return NULL;
+ result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL);
+ Py_DECREF(methodType);
+ return result;
+}
+#elif PY_MAJOR_VERSION >= 3
+static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
+ CYTHON_UNUSED_VAR(typ);
+ if (!self)
+ return __Pyx_NewRef(func);
+ return PyMethod_New(func, self);
+}
+#else
+ #define __Pyx_PyMethod_New PyMethod_New
+#endif
+
+/* PyVectorcallFastCallDict.proto */
+#if CYTHON_METH_FASTCALL
+static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw);
+#endif
+
+/* CythonFunctionShared.proto */
+#define __Pyx_CyFunction_USED
+#define __Pyx_CYFUNCTION_STATICMETHOD 0x01
+#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02
+#define __Pyx_CYFUNCTION_CCLASS 0x04
+#define __Pyx_CYFUNCTION_COROUTINE 0x08
+#define __Pyx_CyFunction_GetClosure(f)\
+ (((__pyx_CyFunctionObject *) (f))->func_closure)
+#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
+ #define __Pyx_CyFunction_GetClassObj(f)\
+ (((__pyx_CyFunctionObject *) (f))->func_classobj)
+#else
+ #define __Pyx_CyFunction_GetClassObj(f)\
+ ((PyObject*) ((PyCMethodObject *) (f))->mm_class)
+#endif
+#define __Pyx_CyFunction_SetClassObj(f, classobj)\
+ __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj))
+#define __Pyx_CyFunction_Defaults(type, f)\
+ ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
+#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
+ ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
+typedef struct {
+#if CYTHON_COMPILING_IN_LIMITED_API
+ PyObject_HEAD
+ PyObject *func;
+#elif PY_VERSION_HEX < 0x030900B1
+ PyCFunctionObject func;
+#else
+ PyCMethodObject func;
+#endif
+#if CYTHON_BACKPORT_VECTORCALL
+ __pyx_vectorcallfunc func_vectorcall;
+#endif
+#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
+ PyObject *func_weakreflist;
+#endif
+ PyObject *func_dict;
+ PyObject *func_name;
+ PyObject *func_qualname;
+ PyObject *func_doc;
+ PyObject *func_globals;
+ PyObject *func_code;
+ PyObject *func_closure;
+#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
+ PyObject *func_classobj;
+#endif
+ void *defaults;
+ int defaults_pyobjects;
+ size_t defaults_size;
+ int flags;
+ PyObject *defaults_tuple;
+ PyObject *defaults_kwdict;
+ PyObject *(*defaults_getter)(PyObject *);
+ PyObject *func_annotations;
+ PyObject *func_is_coroutine;
+} __pyx_CyFunctionObject;
+#undef __Pyx_CyOrPyCFunction_Check
+#define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_CyFunctionType)
+#define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type)
+#define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CyFunctionType)
+static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc);
+#undef __Pyx_IsSameCFunction
+#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc)
+static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml,
+ int flags, PyObject* qualname,
+ PyObject *closure,
+ PyObject *module, PyObject *globals,
+ PyObject* code);
+static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj);
+static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,
+ size_t size,
+ int pyobjects);
+static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
+ PyObject *tuple);
+static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
+ PyObject *dict);
+static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
+ PyObject *dict);
+static int __pyx_CyFunction_init(PyObject *module);
+#if CYTHON_METH_FASTCALL
+static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
+static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
+static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
+static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
+#if CYTHON_BACKPORT_VECTORCALL
+#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall)
+#else
+#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall)
+#endif
+#endif
+
+/* CythonFunction.proto */
+static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml,
+ int flags, PyObject* qualname,
+ PyObject *closure,
+ PyObject *module, PyObject *globals,
+ PyObject* code);
+
/* CLineInTraceback.proto */
#ifdef CYTHON_CLINE_IN_TRACEBACK
#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
@@ -1737,6 +2525,7 @@ static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
#endif
/* CodeObjectCache.proto */
+#if !CYTHON_COMPILING_IN_LIMITED_API
typedef struct {
PyCodeObject* code_object;
int code_line;
@@ -1750,13 +2539,14 @@ static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
static PyCodeObject *__pyx_find_code_object(int code_line);
static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+#endif
/* AddTraceback.proto */
static void __Pyx_AddTraceback(const char *funcname, int c_line,
int py_line, const char *filename);
/* GCCDiagnostics.proto */
-#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
+#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
#define __Pyx_HAS_GCC_DIAGNOSTIC
#endif
@@ -1772,59 +2562,82 @@ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
+/* FormatTypeName.proto */
+#if CYTHON_COMPILING_IN_LIMITED_API
+typedef PyObject *__Pyx_TypeName;
+#define __Pyx_FMT_TYPENAME "%U"
+static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp);
+#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj)
+#else
+typedef const char *__Pyx_TypeName;
+#define __Pyx_FMT_TYPENAME "%.200s"
+#define __Pyx_PyType_GetName(tp) ((tp)->tp_name)
+#define __Pyx_DECREF_TypeName(obj)
+#endif
+
/* FastTypeChecks.proto */
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
+#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2)
static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
+static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
#else
#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2))
#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
#endif
+#define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2)
#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)
/* CheckBinaryVersion.proto */
-static int __Pyx_check_binary_version(void);
+static unsigned long __Pyx_get_runtime_version(void);
+static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer);
+
+/* FunctionExport.proto */
+static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig);
/* InitStrings.proto */
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
-static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__should_stop_on_exception(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, CYTHON_UNUSED PyObject *__pyx_v_event, PyObject *__pyx_v_arg); /* proto*/
-static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__handle_exception(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg, PyObject *__pyx_v_exception_type); /* proto*/
+/* #### Code section: module_declarations ### */
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo__get_related_thread(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
+static int __pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo__is_stepping(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_get_topmost_frame(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_thread, int __pyx_skip_dispatch); /* proto*/
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_update_stepping_info(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_get_func_name(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame); /* proto*/
static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__show_return_values(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_arg); /* proto*/
-static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__remove_return_values(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_main_debugger, PyObject *__pyx_v_frame); /* proto*/
-static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__get_unfiltered_back_frame(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_main_debugger, PyObject *__pyx_v_frame); /* proto*/
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__remove_return_values(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame); /* proto*/
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__get_unfiltered_back_frame(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame); /* proto*/
static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__is_same_frame(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_target_frame, PyObject *__pyx_v_current_frame); /* proto*/
static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_trace_dispatch(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg, int __pyx_skip_dispatch); /* proto*/
-/* Module declarations from 'libc.string' */
+/* Module declarations from "libc.string" */
-/* Module declarations from 'libc.stdio' */
+/* Module declarations from "libc.stdio" */
-/* Module declarations from '__builtin__' */
+/* Module declarations from "__builtin__" */
-/* Module declarations from 'cpython.type' */
-static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0;
+/* Module declarations from "cpython.type" */
-/* Module declarations from 'cpython' */
+/* Module declarations from "cpython" */
-/* Module declarations from 'cpython.object' */
+/* Module declarations from "cpython.object" */
-/* Module declarations from 'cpython.ref' */
+/* Module declarations from "cpython.ref" */
-/* Module declarations from '_pydevd_bundle.pydevd_cython' */
-static PyTypeObject *__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo = 0;
-static PyTypeObject *__pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj = 0;
-static PyTypeObject *__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame = 0;
-static PyTypeObject *__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper = 0;
-static PyTypeObject *__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions = 0;
-static PyTypeObject *__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame = 0;
-static PyTypeObject *__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer = 0;
+/* Module declarations from "_pydevd_bundle.pydevd_cython" */
+static PyObject *__pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos = 0;
+static PyObject *__pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping = 0;
+static PyObject *__pyx_v_14_pydevd_bundle_13pydevd_cython__update_infos_lock = 0;
static PyObject *__pyx_v_14_pydevd_bundle_13pydevd_cython__global_notify_skipped_step_in = 0;
-static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_is_unhandled_exception(PyObject *, PyObject *, PyObject *, int, PyObject *); /*proto*/
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_set_additional_thread_info(PyObject *, int __pyx_skip_dispatch); /*proto*/
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_add_additional_info(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch); /*proto*/
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_remove_additional_info(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_14_pydevd_bundle_13pydevd_cython_any_thread_stepping(int __pyx_skip_dispatch); /*proto*/
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython__update_stepping_info(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *); /*proto*/
static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_PyDBAdditionalThreadInfo__set_state(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, PyObject *); /*proto*/
static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle__TryExceptContainerObj__set_state(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *, PyObject *); /*proto*/
static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_PyDBFrame__set_state(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *, PyObject *); /*proto*/
@@ -1832,32 +2645,40 @@ static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_SafeCal
static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *, PyObject *); /*proto*/
static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *, PyObject *); /*proto*/
static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_ThreadTracer__set_state(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *, PyObject *); /*proto*/
+/* #### Code section: typeinfo ### */
+/* #### Code section: before_global_var ### */
#define __Pyx_MODULE_NAME "_pydevd_bundle.pydevd_cython"
extern int __pyx_module_is_main__pydevd_bundle__pydevd_cython;
int __pyx_module_is_main__pydevd_bundle__pydevd_cython = 0;
-/* Implementation of '_pydevd_bundle.pydevd_cython' */
+/* Implementation of "_pydevd_bundle.pydevd_cython" */
+/* #### Code section: global_var ### */
static PyObject *__pyx_builtin_ImportError;
static PyObject *__pyx_builtin_NameError;
static PyObject *__pyx_builtin_StopIteration;
static PyObject *__pyx_builtin_id;
static PyObject *__pyx_builtin_AttributeError;
+static PyObject *__pyx_builtin_KeyboardInterrupt;
static PyObject *__pyx_builtin_SystemExit;
static PyObject *__pyx_builtin_GeneratorExit;
-static PyObject *__pyx_builtin_KeyboardInterrupt;
+static PyObject *__pyx_builtin_RuntimeError;
+/* #### Code section: string_decls ### */
static const char __pyx_k_[] = "";
static const char __pyx_k_1[] = "1";
+static const char __pyx_k_f[] = "f";
static const char __pyx_k_i[] = "i";
static const char __pyx_k_j[] = "j";
static const char __pyx_k_t[] = "t";
-static const char __pyx_k__3[] = "?";
-static const char __pyx_k__7[] = "/";
-static const char __pyx_k__8[] = "\\";
-static const char __pyx_k__9[] = ".";
+static const char __pyx_k__4[] = "?";
+static const char __pyx_k__8[] = "/";
+static const char __pyx_k__9[] = "\\";
+static const char __pyx_k_gc[] = "gc";
static const char __pyx_k_id[] = "id";
static const char __pyx_k_os[] = "os";
static const char __pyx_k_re[] = "re";
static const char __pyx_k_ALL[] = "ALL";
+static const char __pyx_k__10[] = ".";
+static const char __pyx_k__19[] = "*";
static const char __pyx_k_add[] = "add";
static const char __pyx_k_arg[] = "arg";
static const char __pyx_k_dis[] = "dis";
@@ -1865,8 +2686,11 @@ static const char __pyx_k_get[] = "get";
static const char __pyx_k_new[] = "__new__";
static const char __pyx_k_pop[] = "pop";
static const char __pyx_k_pyc[] = ".pyc";
+static const char __pyx_k_ref[] = "ref";
+static const char __pyx_k_ret[] = "ret";
static const char __pyx_k_run[] = "run";
static const char __pyx_k_s_s[] = "%s.%s";
+static const char __pyx_k_set[] = "set";
static const char __pyx_k_sys[] = "sys";
static const char __pyx_k_None[] = "None";
static const char __pyx_k_args[] = "args";
@@ -1881,6 +2705,7 @@ static const char __pyx_k_main[] = "main";
static const char __pyx_k_name[] = "__name__";
static const char __pyx_k_path[] = "path";
static const char __pyx_k_self[] = "self";
+static const char __pyx_k_spec[] = "__spec__";
static const char __pyx_k_stat[] = "stat";
static const char __pyx_k_stop[] = "stop";
static const char __pyx_k_test[] = "__test__";
@@ -1888,17 +2713,23 @@ static const char __pyx_k_debug[] = "debug";
static const char __pyx_k_enter[] = "__enter__";
static const char __pyx_k_event[] = "event";
static const char __pyx_k_frame[] = "frame";
-static const char __pyx_k_ident[] = "ident";
+static const char __pyx_k_ident[] = "_ident";
+static const char __pyx_k_lines[] = "lines";
static const char __pyx_k_match[] = "match";
static const char __pyx_k_py_db[] = "py_db";
static const char __pyx_k_qname[] = "qname";
static const char __pyx_k_rfind[] = "rfind";
+static const char __pyx_k_state[] = "state";
static const char __pyx_k_trace[] = "trace";
static const char __pyx_k_utf_8[] = "utf-8";
+static const char __pyx_k_value[] = "value";
static const char __pyx_k_Thread[] = "Thread";
+static const char __pyx_k_active[] = "_active";
static const char __pyx_k_append[] = "append";
static const char __pyx_k_args_2[] = "_args";
static const char __pyx_k_call_2[] = "__call__";
+static const char __pyx_k_dict_2[] = "_dict";
+static const char __pyx_k_enable[] = "enable";
static const char __pyx_k_encode[] = "encode";
static const char __pyx_k_f_back[] = "f_back";
static const char __pyx_k_f_code[] = "f_code";
@@ -1906,12 +2737,14 @@ static const char __pyx_k_import[] = "__import__";
static const char __pyx_k_kwargs[] = "kwargs";
static const char __pyx_k_lambda[] = "";
static const char __pyx_k_main_2[] = "__main__";
+static const char __pyx_k_merged[] = "merged";
static const char __pyx_k_module[] = "";
static const char __pyx_k_name_2[] = "name";
static const char __pyx_k_pickle[] = "pickle";
static const char __pyx_k_plugin[] = "plugin";
static const char __pyx_k_pydevd[] = "pydevd";
static const char __pyx_k_reduce[] = "__reduce__";
+static const char __pyx_k_result[] = "result";
static const char __pyx_k_return[] = "return";
static const char __pyx_k_thread[] = "thread";
static const char __pyx_k_update[] = "update";
@@ -1919,20 +2752,25 @@ static const char __pyx_k_values[] = "values";
static const char __pyx_k_writer[] = "writer";
static const char __pyx_k_co_name[] = "co_name";
static const char __pyx_k_compile[] = "compile";
+static const char __pyx_k_disable[] = "disable";
static const char __pyx_k_f_lasti[] = "f_lasti";
static const char __pyx_k_f_trace[] = "f_trace";
static const char __pyx_k_getline[] = "getline";
+static const char __pyx_k_ident_2[] = "ident";
static const char __pyx_k_invalid[] = ".invalid.";
static const char __pyx_k_linesep[] = "linesep";
static const char __pyx_k_os_path[] = "os.path";
static const char __pyx_k_returns[] = "returns";
static const char __pyx_k_st_size[] = "st_size";
+static const char __pyx_k_stopped[] = "stopped";
static const char __pyx_k_suspend[] = "suspend";
static const char __pyx_k_tb_next[] = "tb_next";
static const char __pyx_k_version[] = "version";
+static const char __pyx_k_weakref[] = "weakref";
static const char __pyx_k_basename[] = "basename";
static const char __pyx_k_can_skip[] = "can_skip";
static const char __pyx_k_co_flags[] = "co_flags";
+static const char __pyx_k_critical[] = "critical";
static const char __pyx_k_endswith[] = "endswith";
static const char __pyx_k_exc_info[] = "exc_info";
static const char __pyx_k_execfile[] = "execfile";
@@ -1951,9 +2789,13 @@ static const char __pyx_k_PyDBFrame[] = "PyDBFrame";
static const char __pyx_k_STATE_RUN[] = "STATE_RUN";
static const char __pyx_k_bootstrap[] = "__bootstrap";
static const char __pyx_k_condition[] = "condition";
+static const char __pyx_k_curr_stat[] = "curr_stat";
+static const char __pyx_k_exc_break[] = "exc_break";
static const char __pyx_k_exception[] = "exception";
static const char __pyx_k_f_globals[] = "f_globals";
static const char __pyx_k_func_name[] = "func_name";
+static const char __pyx_k_isenabled[] = "isenabled";
+static const char __pyx_k_last_stat[] = "last_stat";
static const char __pyx_k_linecache[] = "linecache";
static const char __pyx_k_pydev_log[] = "pydev_log";
static const char __pyx_k_pydevd_py[] = "pydevd.py";
@@ -1961,10 +2803,15 @@ static const char __pyx_k_pyx_state[] = "__pyx_state";
static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
static const char __pyx_k_tb_lineno[] = "tb_lineno";
static const char __pyx_k_threading[] = "threading";
+static const char __pyx_k_trace_obj[] = "trace_obj";
static const char __pyx_k_PYDEV_FILE[] = "PYDEV_FILE";
static const char __pyx_k_SystemExit[] = "SystemExit";
+static const char __pyx_k_check_excs[] = "check_excs";
static const char __pyx_k_checkcache[] = "checkcache";
+static const char __pyx_k_custom_key[] = "custom_key";
+static const char __pyx_k_exc_lineno[] = "exc_lineno";
static const char __pyx_k_expression[] = "expression";
+static const char __pyx_k_is_stopped[] = "_is_stopped";
static const char __pyx_k_pyx_result[] = "__pyx_result";
static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
static const char __pyx_k_startswith[] = "startswith";
@@ -1979,22 +2826,35 @@ static const char __pyx_k_co_filename[] = "co_filename";
static const char __pyx_k_except_line[] = "except_line";
static const char __pyx_k_f_unhandled[] = "f_unhandled";
static const char __pyx_k_is_logpoint[] = "is_logpoint";
+static const char __pyx_k_is_stepping[] = "_is_stepping";
static const char __pyx_k_just_raised[] = "just_raised";
+static const char __pyx_k_raise_lines[] = "raise_lines";
static const char __pyx_k_return_line[] = "return_line";
static const char __pyx_k_set_suspend[] = "set_suspend";
+static const char __pyx_k_should_stop[] = "should_stop";
+static const char __pyx_k_weak_thread[] = "weak_thread";
static const char __pyx_k_ForkSafeLock[] = "ForkSafeLock";
+static const char __pyx_k_RuntimeError[] = "RuntimeError";
static const char __pyx_k_ThreadTracer[] = "ThreadTracer";
+static const char __pyx_k_initializing[] = "_initializing";
+static const char __pyx_k_is_coroutine[] = "_is_coroutine";
static const char __pyx_k_pydev_bundle[] = "_pydev_bundle";
static const char __pyx_k_pydev_monkey[] = "pydev_monkey";
static const char __pyx_k_pyx_checksum[] = "__pyx_checksum";
-static const char __pyx_k_stringsource[] = "stringsource";
+static const char __pyx_k_stringsource[] = "";
static const char __pyx_k_try_exc_info[] = "try_exc_info";
+static const char __pyx_k_use_setstate[] = "use_setstate";
static const char __pyx_k_GeneratorExit[] = "GeneratorExit";
+static const char __pyx_k_STATE_SUSPEND[] = "STATE_SUSPEND";
static const char __pyx_k_StopIteration[] = "StopIteration";
+static const char __pyx_k_class_getitem[] = "__class_getitem__";
static const char __pyx_k_cmd_step_into[] = "cmd_step_into";
static const char __pyx_k_cmd_step_over[] = "cmd_step_over";
+static const char __pyx_k_container_obj[] = "container_obj";
static const char __pyx_k_get_file_type[] = "get_file_type";
+static const char __pyx_k_get_thread_id[] = "get_thread_id";
static const char __pyx_k_has_condition[] = "has_condition";
+static const char __pyx_k_lines_ignored[] = "lines_ignored";
static const char __pyx_k_method_object[] = "method_object";
static const char __pyx_k_original_call[] = "_original_call";
static const char __pyx_k_pydb_disposed[] = "pydb_disposed";
@@ -2008,6 +2868,7 @@ static const char __pyx_k_TRACE_PROPERTY[] = "TRACE_PROPERTY";
static const char __pyx_k_co_firstlineno[] = "co_firstlineno";
static const char __pyx_k_current_frames[] = "_current_frames";
static const char __pyx_k_enable_tracing[] = "enable_tracing";
+static const char __pyx_k_exc_break_user[] = "exc_break_user";
static const char __pyx_k_exception_type[] = "exception_type";
static const char __pyx_k_findlinestarts[] = "findlinestarts";
static const char __pyx_k_get_breakpoint[] = "get_breakpoint";
@@ -2018,23 +2879,38 @@ static const char __pyx_k_IgnoreException[] = "[^#]*#.*@IgnoreException";
static const char __pyx_k_SafeCallWrapper[] = "SafeCallWrapper";
static const char __pyx_k_additional_info[] = "additional_info";
static const char __pyx_k_bootstrap_inner[] = "__bootstrap_inner";
+static const char __pyx_k_check_trace_obj[] = "check_trace_obj";
static const char __pyx_k_constant_to_str[] = "constant_to_str";
static const char __pyx_k_disable_tracing[] = "disable_tracing";
static const char __pyx_k_do_wait_suspend[] = "do_wait_suspend";
static const char __pyx_k_exception_break[] = "exception_break";
+static const char __pyx_k_frame_cache_key[] = "frame_cache_key";
+static const char __pyx_k_from_user_input[] = "from_user_input";
static const char __pyx_k_is_thread_alive[] = "is_thread_alive";
+static const char __pyx_k_last_raise_line[] = "last_raise_line";
static const char __pyx_k_make_io_message[] = "make_io_message";
static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError";
static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
static const char __pyx_k_trace_exception[] = "trace_exception";
+static const char __pyx_k_try_except_info[] = "try_except_info";
+static const char __pyx_k_was_just_raised[] = "was_just_raised";
static const char __pyx_k_DEBUG_START_PY3K[] = "DEBUG_START_PY3K";
+static const char __pyx_k_exc_break_caught[] = "exc_break_caught";
+static const char __pyx_k_handle_exception[] = "handle_exception";
static const char __pyx_k_in_project_scope[] = "in_project_scope";
+static const char __pyx_k_is_user_uncaught[] = "is_user_uncaught";
static const char __pyx_k_threading_active[] = "threading_active";
static const char __pyx_k_try_except_infos[] = "try_except_infos";
static const char __pyx_k_KeyboardInterrupt[] = "KeyboardInterrupt";
+static const char __pyx_k_absolute_filename[] = "absolute_filename";
static const char __pyx_k_apply_to_settrace[] = "apply_to_settrace";
static const char __pyx_k_bootstrap_inner_2[] = "_bootstrap_inner";
static const char __pyx_k_children_variants[] = "children_variants";
+static const char __pyx_k_frame_id_to_frame[] = "frame_id_to_frame";
+static const char __pyx_k_frame_skips_cache[] = "frame_skips_cache";
+static const char __pyx_k_get_method_object[] = "get_method_object";
+static const char __pyx_k_get_topmost_frame[] = "get_topmost_frame";
+static const char __pyx_k_initial_trace_obj[] = "initial_trace_obj";
static const char __pyx_k_original_step_cmd[] = "original_step_cmd";
static const char __pyx_k_pydev_execfile_py[] = "_pydev_execfile.py";
static const char __pyx_k_pydevd_dont_trace[] = "pydevd_dont_trace";
@@ -2044,20 +2920,28 @@ static const char __pyx_k_thread_trace_func[] = "thread_trace_func";
static const char __pyx_k_RETURN_VALUES_DICT[] = "RETURN_VALUES_DICT";
static const char __pyx_k_StopAsyncIteration[] = "StopAsyncIteration";
static const char __pyx_k_apply_files_filter[] = "apply_files_filter";
+static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines";
static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
+static const char __pyx_k_get_related_thread[] = "_get_related_thread";
static const char __pyx_k_global_cache_skips[] = "global_cache_skips";
static const char __pyx_k_pydev_do_not_trace[] = "pydev_do_not_trace";
static const char __pyx_k_show_return_values[] = "show_return_values";
+static const char __pyx_k_add_additional_info[] = "add_additional_info";
+static const char __pyx_k_any_thread_stepping[] = "any_thread_stepping";
static const char __pyx_k_collect_return_info[] = "collect_return_info";
+static const char __pyx_k_get_global_debugger[] = "get_global_debugger";
static const char __pyx_k_pydev_log_exception[] = "pydev_log_exception";
static const char __pyx_k_threading_get_ident[] = "threading_get_ident";
static const char __pyx_k_IGNORE_EXCEPTION_TAG[] = "IGNORE_EXCEPTION_TAG";
+static const char __pyx_k_exception_breakpoint[] = "exception_breakpoint";
static const char __pyx_k_frame_trace_dispatch[] = "frame_trace_dispatch";
static const char __pyx_k_get_clsname_for_code[] = "get_clsname_for_code";
static const char __pyx_k_is_line_in_try_block[] = "is_line_in_try_block";
static const char __pyx_k_make_console_message[] = "make_console_message";
+static const char __pyx_k_next_additional_info[] = "_next_additional_info";
+static const char __pyx_k_update_stepping_info[] = "update_stepping_info";
+static const char __pyx_k_PyDBFrame_set_suspend[] = "PyDBFrame.set_suspend";
static const char __pyx_k_TryExceptContainerObj[] = "_TryExceptContainerObj";
-static const char __pyx_k_Using_Cython_speedups[] = "Using Cython speedups";
static const char __pyx_k_filename_to_stat_info[] = "filename_to_stat_info";
static const char __pyx_k_get_current_thread_id[] = "get_current_thread_id";
static const char __pyx_k_handle_user_exception[] = "handle_user_exception";
@@ -2066,12 +2950,16 @@ static const char __pyx_k_suspend_other_threads[] = "suspend_other_threads";
static const char __pyx_k_CMD_SET_FUNCTION_BREAK[] = "CMD_SET_FUNCTION_BREAK";
static const char __pyx_k_EXCEPTION_TYPE_HANDLED[] = "EXCEPTION_TYPE_HANDLED";
static const char __pyx_k_PYDEVD_IPYTHON_CONTEXT[] = "PYDEVD_IPYTHON_CONTEXT";
+static const char __pyx_k_abs_real_path_and_base[] = "abs_real_path_and_base";
static const char __pyx_k_add_exception_to_frame[] = "add_exception_to_frame";
static const char __pyx_k_has_plugin_line_breaks[] = "has_plugin_line_breaks";
static const char __pyx_k_ignore_exception_trace[] = "ignore_exception_trace";
+static const char __pyx_k_is_unhandled_exception[] = "is_unhandled_exception";
static const char __pyx_k_pydev_bundle_pydev_log[] = "_pydev_bundle.pydev_log";
static const char __pyx_k_pyx_unpickle_PyDBFrame[] = "__pyx_unpickle_PyDBFrame";
+static const char __pyx_k_remove_additional_info[] = "remove_additional_info";
static const char __pyx_k_suspended_at_unhandled[] = "suspended_at_unhandled";
+static const char __pyx_k_valid_try_except_infos[] = "valid_try_except_infos";
static const char __pyx_k_collect_try_except_info[] = "collect_try_except_info";
static const char __pyx_k_get_trace_dispatch_func[] = "get_trace_dispatch_func";
static const char __pyx_k_ignore_system_exit_code[] = "ignore_system_exit_code";
@@ -2081,10 +2969,16 @@ static const char __pyx_k_notify_thread_not_alive[] = "notify_thread_not_alive";
static const char __pyx_k_pydevd_traceproperty_py[] = "pydevd_traceproperty.py";
static const char __pyx_k_top_level_thread_tracer[] = "top_level_thread_tracer";
static const char __pyx_k_PyDBAdditionalThreadInfo[] = "PyDBAdditionalThreadInfo";
+static const char __pyx_k_PyDBFrame_trace_dispatch[] = "PyDBFrame.trace_dispatch";
static const char __pyx_k_Stop_inside_ipython_call[] = "Stop inside ipython call";
static const char __pyx_k_get_exception_breakpoint[] = "get_exception_breakpoint";
static const char __pyx_k_global_cache_frame_skips[] = "global_cache_frame_skips";
+static const char __pyx_k_should_stop_on_exception[] = "should_stop_on_exception";
static const char __pyx_k_threading_current_thread[] = "threading_current_thread";
+static const char __pyx_k_PYDEVD_USE_SYS_MONITORING[] = "PYDEVD_USE_SYS_MONITORING";
+static const char __pyx_k_PyDBFrame___reduce_cython[] = "PyDBFrame.__reduce_cython__";
+static const char __pyx_k_PyDBFrame_do_wait_suspend[] = "PyDBFrame.do_wait_suspend";
+static const char __pyx_k_PyDBFrame_trace_exception[] = "PyDBFrame.trace_exception";
static const char __pyx_k_pyx_unpickle_ThreadTracer[] = "__pyx_unpickle_ThreadTracer";
static const char __pyx_k_remove_return_values_flag[] = "remove_return_values_flag";
static const char __pyx_k_break_on_caught_exceptions[] = "break_on_caught_exceptions";
@@ -2092,27 +2986,40 @@ static const char __pyx_k_notify_on_first_raise_only[] = "notify_on_first_raise_
static const char __pyx_k_pydevd_bundle_pydevd_utils[] = "_pydevd_bundle.pydevd_utils";
static const char __pyx_k_set_additional_thread_info[] = "set_additional_thread_info";
static const char __pyx_k_trace_unhandled_exceptions[] = "trace_unhandled_exceptions";
+static const char __pyx_k_PyDBFrame___setstate_cython[] = "PyDBFrame.__setstate_cython__";
static const char __pyx_k_State_s_Stop_s_Cmd_s_Kill_s[] = "State:%s Stop:%s Cmd: %s Kill:%s";
static const char __pyx_k_exclude_exception_by_filter[] = "exclude_exception_by_filter";
static const char __pyx_k_force_only_unhandled_tracer[] = "force_only_unhandled_tracer";
static const char __pyx_k_handle_breakpoint_condition[] = "handle_breakpoint_condition";
static const char __pyx_k_has_plugin_exception_breaks[] = "has_plugin_exception_breaks";
+static const char __pyx_k_prev_user_uncaught_exc_info[] = "prev_user_uncaught_exc_info";
static const char __pyx_k_pydevd_bundle_pydevd_cython[] = "_pydevd_bundle.pydevd_cython";
static const char __pyx_k_remove_exception_from_frame[] = "remove_exception_from_frame";
static const char __pyx_k_send_caught_exception_stack[] = "send_caught_exception_stack";
static const char __pyx_k_stop_on_unhandled_exception[] = "stop_on_unhandled_exception";
+static const char __pyx_k_ThreadTracer___reduce_cython[] = "ThreadTracer.__reduce_cython__";
+static const char __pyx_k_get_internal_queue_and_event[] = "get_internal_queue_and_event";
static const char __pyx_k_handle_breakpoint_expression[] = "handle_breakpoint_expression";
+static const char __pyx_k_maybe_user_uncaught_exc_info[] = "maybe_user_uncaught_exc_info";
static const char __pyx_k_pyx_unpickle_SafeCallWrapper[] = "__pyx_unpickle_SafeCallWrapper";
static const char __pyx_k_EXCEPTION_TYPE_USER_UNHANDLED[] = "EXCEPTION_TYPE_USER_UNHANDLED";
static const char __pyx_k_NORM_PATHS_AND_BASE_CONTAINER[] = "NORM_PATHS_AND_BASE_CONTAINER";
+static const char __pyx_k_canonical_normalized_filename[] = "canonical_normalized_filename";
static const char __pyx_k_constructed_tid_to_last_frame[] = "constructed_tid_to_last_frame";
+static const char __pyx_k_ThreadTracer___setstate_cython[] = "ThreadTracer.__setstate_cython__";
+static const char __pyx_k_TryExceptContainerObj___reduce[] = "_TryExceptContainerObj.__reduce_cython__";
static const char __pyx_k_pydevd_bundle_pydevd_constants[] = "_pydevd_bundle.pydevd_constants";
static const char __pyx_k_pyx_unpickle_PyDBAdditionalThr[] = "__pyx_unpickle_PyDBAdditionalThreadInfo";
static const char __pyx_k_pyx_unpickle_TopLevelThreadTra[] = "__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions";
static const char __pyx_k_pyx_unpickle__TryExceptContain[] = "__pyx_unpickle__TryExceptContainerObj";
static const char __pyx_k_Error_in_linecache_checkcache_r[] = "Error in linecache.checkcache(%r)";
static const char __pyx_k_Ignore_exception_s_in_library_s[] = "Ignore exception %s in library %s -- (%s)";
+static const char __pyx_k_Not_used_in_sys_monitoring_mode[] = "Not used in sys.monitoring mode.";
+static const char __pyx_k_PyDBAdditionalThreadInfo_update[] = "PyDBAdditionalThreadInfo.update_stepping_info";
+static const char __pyx_k_PyDBFrame_handle_user_exception[] = "PyDBFrame.handle_user_exception";
+static const char __pyx_k_SafeCallWrapper___reduce_cython[] = "SafeCallWrapper.__reduce_cython__";
static const char __pyx_k_TopLevelThreadTracerNoBackFrame[] = "TopLevelThreadTracerNoBackFrame";
+static const char __pyx_k_TryExceptContainerObj___setstat[] = "_TryExceptContainerObj.__setstate_cython__";
static const char __pyx_k_Unable_to_get_topmost_frame_for[] = "Unable to get topmost frame for thread: %s, thread.ident: %s, id(thread): %s\nCurrent frames: %s.\nGEVENT_SUPPORT: %s";
static const char __pyx_k_get_abs_path_real_path_and_base[] = "get_abs_path_real_path_and_base_from_frame";
static const char __pyx_k_global_notify_skipped_step_in_l[] = "_global_notify_skipped_step_in_lock";
@@ -2127,7 +3034,14 @@ static const char __pyx_k_set_additional_thread_info_lock[] = "_set_additional_t
static const char __pyx_k_set_trace_for_frame_and_parents[] = "set_trace_for_frame_and_parents";
static const char __pyx_k_top_level_thread_tracer_no_back[] = "top_level_thread_tracer_no_back_frames";
static const char __pyx_k_Error_in_linecache_getline_r_s_f[] = "Error in linecache.getline(%r, %s, f_globals)";
-static const char __pyx_k_Incompatible_checksums_0x_x_vs_0[] = "Incompatible checksums (0x%x vs (0x75b3b02, 0x5f02be1, 0xa5a0d63) = (conditional_breakpoint_exception, is_tracing, pydev_call_from_jinja2, pydev_call_inside_jinja2, pydev_django_resolve_frame, pydev_func_name, pydev_message, pydev_next_line, pydev_notify_kill, pydev_original_step_cmd, pydev_smart_child_offset, pydev_smart_parent_offset, pydev_smart_step_into_variants, pydev_smart_step_stop, pydev_state, pydev_step_cmd, pydev_step_stop, pydev_use_scoped_step_frame, step_in_initial_location, suspend_type, suspended_at_unhandled, target_id_to_smart_step_into_variant, thread_tracer, top_level_thread_tracer_no_back_frames, top_level_thread_tracer_unhandled, trace_suspend_type))";
+static const char __pyx_k_Incompatible_checksums_0x_x_vs_0[] = "Incompatible checksums (0x%x vs (0xd33aa14, 0x024feed, 0x4342dfb) = (conditional_breakpoint_exception, is_in_wait_loop, is_tracing, pydev_call_from_jinja2, pydev_call_inside_jinja2, pydev_django_resolve_frame, pydev_func_name, pydev_message, pydev_next_line, pydev_notify_kill, pydev_original_step_cmd, pydev_smart_child_offset, pydev_smart_parent_offset, pydev_smart_step_into_variants, pydev_smart_step_stop, pydev_state, pydev_step_cmd, pydev_step_stop, pydev_use_scoped_step_frame, step_in_initial_location, suspend_type, suspended_at_unhandled, target_id_to_smart_step_into_variant, thread_tracer, top_level_thread_tracer_no_back_frames, top_level_thread_tracer_unhandled, trace_suspend_type, weak_thread))";
+static const char __pyx_k_PyDBAdditionalThreadInfo___reduc[] = "PyDBAdditionalThreadInfo.__reduce_cython__";
+static const char __pyx_k_PyDBAdditionalThreadInfo___setst[] = "PyDBAdditionalThreadInfo.__setstate_cython__";
+static const char __pyx_k_PyDBAdditionalThreadInfo__get_re[] = "PyDBAdditionalThreadInfo._get_related_thread";
+static const char __pyx_k_PyDBAdditionalThreadInfo__is_ste[] = "PyDBAdditionalThreadInfo._is_stepping";
+static const char __pyx_k_PyDBAdditionalThreadInfo_get_top[] = "PyDBAdditionalThreadInfo.get_topmost_frame";
+static const char __pyx_k_SafeCallWrapper___setstate_cytho[] = "SafeCallWrapper.__setstate_cython__";
+static const char __pyx_k_SafeCallWrapper_get_method_objec[] = "SafeCallWrapper.get_method_object";
static const char __pyx_k_TopLevelThreadTracerOnlyUnhandle[] = "TopLevelThreadTracerOnlyUnhandledExceptions";
static const char __pyx_k_USE_CUSTOM_SYS_CURRENT_FRAMES_MA[] = "USE_CUSTOM_SYS_CURRENT_FRAMES_MAP";
static const char __pyx_k_break_on_user_uncaught_exception[] = "break_on_user_uncaught_exceptions";
@@ -2140,318 +3054,29 @@ static const char __pyx_k_notify_skipped_step_in_because_o[] = "notify_skipped_s
static const char __pyx_k_pyx_unpickle_TopLevelThreadTra_2[] = "__pyx_unpickle_TopLevelThreadTracerNoBackFrame";
static const char __pyx_k_send_caught_exception_stack_proc[] = "send_caught_exception_stack_proceeded";
static const char __pyx_k_skip_on_exceptions_thrown_in_sam[] = "skip_on_exceptions_thrown_in_same_context";
+static const char __pyx_k_thread__ident_is_None_in__get_re[] = "thread._ident is None in _get_related_thread!";
static const char __pyx_k_top_level_thread_tracer_unhandle[] = "top_level_thread_tracer_unhandled";
static const char __pyx_k_trace_dispatch_and_unhandled_exc[] = "trace_dispatch_and_unhandled_exceptions";
-static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_2[] = "Incompatible checksums (0x%x vs (0xc8b6eb1, 0xdbf5e44, 0xde17cd3) = (try_except_infos))";
-static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_3[] = "Incompatible checksums (0x%x vs (0x506e682, 0x3a8c26e, 0xb793695) = (_args, exc_info, should_skip))";
-static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_4[] = "Incompatible checksums (0x%x vs (0x77c077b, 0xa14289b, 0x3cc10aa) = (method_object))";
-static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_5[] = "Incompatible checksums (0x%x vs (0x3d7902a, 0x121e1fb, 0xf3a61b1) = (_args))";
-static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_6[] = "Incompatible checksums (0x%x vs (0xa3a9ec1, 0x3f5f7e9, 0x0ff9c96) = (_args, _frame_trace_dispatch, _last_exc_arg, _last_raise_line, _raise_lines, try_except_infos))";
-static PyObject *__pyx_kp_s_;
-static PyObject *__pyx_kp_s_1;
-static PyObject *__pyx_n_s_ALL;
-static PyObject *__pyx_n_s_AttributeError;
-static PyObject *__pyx_n_s_CMD_SET_FUNCTION_BREAK;
-static PyObject *__pyx_n_s_DEBUG_START;
-static PyObject *__pyx_n_s_DEBUG_START_PY3K;
-static PyObject *__pyx_n_s_EXCEPTION_TYPE_HANDLED;
-static PyObject *__pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED;
-static PyObject *__pyx_kp_s_Error_in_linecache_checkcache_r;
-static PyObject *__pyx_kp_s_Error_in_linecache_getline_r_s_f;
-static PyObject *__pyx_n_s_ForkSafeLock;
-static PyObject *__pyx_n_s_GeneratorExit;
-static PyObject *__pyx_n_s_IGNORE_EXCEPTION_TAG;
-static PyObject *__pyx_kp_s_IgnoreException;
-static PyObject *__pyx_kp_s_Ignore_exception_s_in_library_s;
-static PyObject *__pyx_n_s_ImportError;
-static PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0;
-static PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2;
-static PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3;
-static PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4;
-static PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5;
-static PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_6;
-static PyObject *__pyx_n_s_KeyboardInterrupt;
-static PyObject *__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER;
-static PyObject *__pyx_n_s_NO_FTRACE;
-static PyObject *__pyx_n_s_NameError;
-static PyObject *__pyx_n_s_None;
-static PyObject *__pyx_n_s_PYDEVD_IPYTHON_CONTEXT;
-static PyObject *__pyx_n_s_PYDEV_FILE;
-static PyObject *__pyx_n_s_PYTHON_SUSPEND;
-static PyObject *__pyx_n_s_PickleError;
-static PyObject *__pyx_n_s_PyDBAdditionalThreadInfo;
-static PyObject *__pyx_n_s_PyDBFrame;
-static PyObject *__pyx_n_s_RETURN_VALUES_DICT;
-static PyObject *__pyx_n_s_STATE_RUN;
-static PyObject *__pyx_n_s_SUPPORT_GEVENT;
-static PyObject *__pyx_n_s_SafeCallWrapper;
-static PyObject *__pyx_kp_s_State_s_Stop_s_Cmd_s_Kill_s;
-static PyObject *__pyx_n_s_StopAsyncIteration;
-static PyObject *__pyx_n_s_StopIteration;
-static PyObject *__pyx_kp_s_Stop_inside_ipython_call;
-static PyObject *__pyx_n_s_SystemExit;
-static PyObject *__pyx_n_s_TRACE_PROPERTY;
-static PyObject *__pyx_n_s_Thread;
-static PyObject *__pyx_n_s_ThreadTracer;
-static PyObject *__pyx_n_s_TopLevelThreadTracerNoBackFrame;
-static PyObject *__pyx_n_s_TopLevelThreadTracerOnlyUnhandle;
-static PyObject *__pyx_n_s_TryExceptContainerObj;
-static PyObject *__pyx_n_s_USE_CUSTOM_SYS_CURRENT_FRAMES_MA;
-static PyObject *__pyx_kp_s_Unable_to_get_topmost_frame_for;
-static PyObject *__pyx_kp_s_Using_Cython_speedups;
-static PyObject *__pyx_kp_s__3;
-static PyObject *__pyx_kp_s__7;
-static PyObject *__pyx_kp_s__8;
-static PyObject *__pyx_kp_s__9;
-static PyObject *__pyx_n_s_add;
-static PyObject *__pyx_n_s_add_command;
-static PyObject *__pyx_n_s_add_exception_to_frame;
-static PyObject *__pyx_n_s_additional_info;
-static PyObject *__pyx_n_s_append;
-static PyObject *__pyx_n_s_apply_files_filter;
-static PyObject *__pyx_n_s_apply_to_settrace;
-static PyObject *__pyx_n_s_arg;
-static PyObject *__pyx_n_s_args;
-static PyObject *__pyx_n_s_args_2;
-static PyObject *__pyx_n_s_basename;
-static PyObject *__pyx_n_s_bootstrap;
-static PyObject *__pyx_n_s_bootstrap_2;
-static PyObject *__pyx_n_s_bootstrap_inner;
-static PyObject *__pyx_n_s_bootstrap_inner_2;
-static PyObject *__pyx_n_s_break_on_caught_exceptions;
-static PyObject *__pyx_n_s_break_on_user_uncaught_exception;
-static PyObject *__pyx_n_s_breakpoints;
-static PyObject *__pyx_n_s_call;
-static PyObject *__pyx_n_s_call_2;
-static PyObject *__pyx_n_s_can_skip;
-static PyObject *__pyx_kp_s_cell;
-static PyObject *__pyx_n_s_checkcache;
-static PyObject *__pyx_n_s_children_variants;
-static PyObject *__pyx_n_s_cline_in_traceback;
-static PyObject *__pyx_n_s_cmd_factory;
-static PyObject *__pyx_n_s_cmd_step_into;
-static PyObject *__pyx_n_s_cmd_step_over;
-static PyObject *__pyx_n_s_co_filename;
-static PyObject *__pyx_n_s_co_firstlineno;
-static PyObject *__pyx_n_s_co_flags;
-static PyObject *__pyx_n_s_co_name;
-static PyObject *__pyx_n_s_collect_return_info;
-static PyObject *__pyx_n_s_collect_try_except_info;
-static PyObject *__pyx_n_s_compile;
-static PyObject *__pyx_n_s_condition;
-static PyObject *__pyx_n_s_constant_to_str;
-static PyObject *__pyx_n_s_constructed_tid_to_last_frame;
-static PyObject *__pyx_n_s_current_frames;
-static PyObject *__pyx_n_s_debug;
-static PyObject *__pyx_n_s_dict;
-static PyObject *__pyx_n_s_dis;
-static PyObject *__pyx_n_s_disable_tracing;
-static PyObject *__pyx_n_s_do_wait_suspend;
-static PyObject *__pyx_n_s_enable_tracing;
-static PyObject *__pyx_n_s_encode;
-static PyObject *__pyx_n_s_endswith;
-static PyObject *__pyx_n_s_enter;
-static PyObject *__pyx_n_s_event;
-static PyObject *__pyx_n_s_exc_info;
-static PyObject *__pyx_n_s_except_line;
-static PyObject *__pyx_n_s_exception;
-static PyObject *__pyx_n_s_exception_break;
-static PyObject *__pyx_n_s_exception_type;
-static PyObject *__pyx_n_s_exclude_exception_by_filter;
-static PyObject *__pyx_n_s_exec;
-static PyObject *__pyx_n_s_execfile;
-static PyObject *__pyx_n_s_exit;
-static PyObject *__pyx_n_s_expression;
-static PyObject *__pyx_n_s_f_back;
-static PyObject *__pyx_n_s_f_code;
-static PyObject *__pyx_n_s_f_globals;
-static PyObject *__pyx_n_s_f_lasti;
-static PyObject *__pyx_n_s_f_lineno;
-static PyObject *__pyx_n_s_f_locals;
-static PyObject *__pyx_n_s_f_trace;
-static PyObject *__pyx_n_s_f_unhandled;
-static PyObject *__pyx_n_s_filename;
-static PyObject *__pyx_n_s_filename_to_lines_where_exceptio;
-static PyObject *__pyx_n_s_filename_to_stat_info;
-static PyObject *__pyx_n_s_findlinestarts;
-static PyObject *__pyx_n_s_fix_top_level_trace_and_get_trac;
-static PyObject *__pyx_n_s_force_only_unhandled_tracer;
-static PyObject *__pyx_n_s_frame;
-static PyObject *__pyx_n_s_frame_trace_dispatch;
-static PyObject *__pyx_n_s_func_name;
-static PyObject *__pyx_n_s_function_breakpoint_name_to_brea;
-static PyObject *__pyx_n_s_get;
-static PyObject *__pyx_n_s_get_abs_path_real_path_and_base;
-static PyObject *__pyx_n_s_get_breakpoint;
-static PyObject *__pyx_n_s_get_clsname_for_code;
-static PyObject *__pyx_n_s_get_current_thread_id;
-static PyObject *__pyx_n_s_get_exception_breakpoint;
-static PyObject *__pyx_n_s_get_file_type;
-static PyObject *__pyx_n_s_get_smart_step_into_variant_from;
-static PyObject *__pyx_n_s_get_trace_dispatch_func;
-static PyObject *__pyx_n_s_getline;
-static PyObject *__pyx_n_s_getstate;
-static PyObject *__pyx_n_s_global_cache_frame_skips;
-static PyObject *__pyx_n_s_global_cache_skips;
-static PyObject *__pyx_n_s_global_notify_skipped_step_in_l;
-static PyObject *__pyx_n_s_handle_breakpoint_condition;
-static PyObject *__pyx_n_s_handle_breakpoint_expression;
-static PyObject *__pyx_n_s_handle_user_exception;
-static PyObject *__pyx_n_s_has_condition;
-static PyObject *__pyx_n_s_has_plugin_exception_breaks;
-static PyObject *__pyx_n_s_has_plugin_line_breaks;
-static PyObject *__pyx_n_s_i;
-static PyObject *__pyx_n_s_id;
-static PyObject *__pyx_n_s_ident;
-static PyObject *__pyx_n_s_ignore_exception_trace;
-static PyObject *__pyx_n_s_ignore_exceptions_thrown_in_line;
-static PyObject *__pyx_n_s_ignore_system_exit_code;
-static PyObject *__pyx_n_s_import;
-static PyObject *__pyx_n_s_in_project_scope;
-static PyObject *__pyx_n_s_info;
-static PyObject *__pyx_kp_s_invalid;
-static PyObject *__pyx_n_s_is_files_filter_enabled;
-static PyObject *__pyx_n_s_is_line_in_except_block;
-static PyObject *__pyx_n_s_is_line_in_try_block;
-static PyObject *__pyx_n_s_is_logpoint;
-static PyObject *__pyx_n_s_is_thread_alive;
-static PyObject *__pyx_n_s_j;
-static PyObject *__pyx_n_s_just_raised;
-static PyObject *__pyx_n_s_kwargs;
-static PyObject *__pyx_kp_s_lambda;
-static PyObject *__pyx_n_s_line;
-static PyObject *__pyx_n_s_linecache;
-static PyObject *__pyx_n_s_linesep;
-static PyObject *__pyx_n_s_main;
-static PyObject *__pyx_n_s_main_2;
-static PyObject *__pyx_n_s_make_console_message;
-static PyObject *__pyx_n_s_make_io_message;
-static PyObject *__pyx_n_s_match;
-static PyObject *__pyx_n_s_method_object;
-static PyObject *__pyx_kp_s_module;
-static PyObject *__pyx_n_s_name;
-static PyObject *__pyx_n_s_name_2;
-static PyObject *__pyx_n_s_new;
-static PyObject *__pyx_n_s_notify_on_first_raise_only;
-static PyObject *__pyx_n_s_notify_skipped_step_in_because_o;
-static PyObject *__pyx_n_s_notify_thread_not_alive;
-static PyObject *__pyx_n_s_original_call;
-static PyObject *__pyx_n_s_original_step_cmd;
-static PyObject *__pyx_n_s_os;
-static PyObject *__pyx_n_s_os_path;
-static PyObject *__pyx_n_s_path;
-static PyObject *__pyx_n_s_pickle;
-static PyObject *__pyx_n_s_plugin;
-static PyObject *__pyx_n_s_pop;
-static PyObject *__pyx_n_s_py_db;
-static PyObject *__pyx_kp_s_pyc;
-static PyObject *__pyx_n_s_pydb_disposed;
-static PyObject *__pyx_n_s_pydev_bundle;
-static PyObject *__pyx_n_s_pydev_bundle__pydev_saved_modul;
-static PyObject *__pyx_n_s_pydev_bundle_pydev_is_thread_al;
-static PyObject *__pyx_n_s_pydev_bundle_pydev_log;
-static PyObject *__pyx_n_s_pydev_do_not_trace;
-static PyObject *__pyx_kp_s_pydev_execfile_py;
-static PyObject *__pyx_n_s_pydev_log;
-static PyObject *__pyx_n_s_pydev_log_exception;
-static PyObject *__pyx_n_s_pydev_monkey;
-static PyObject *__pyx_n_s_pydevd;
-static PyObject *__pyx_n_s_pydevd_bundle;
-static PyObject *__pyx_n_s_pydevd_bundle_pydevd_bytecode_u;
-static PyObject *__pyx_n_s_pydevd_bundle_pydevd_comm_const;
-static PyObject *__pyx_n_s_pydevd_bundle_pydevd_constants;
-static PyObject *__pyx_n_s_pydevd_bundle_pydevd_cython;
-static PyObject *__pyx_kp_s_pydevd_bundle_pydevd_cython_pyx;
-static PyObject *__pyx_n_s_pydevd_bundle_pydevd_frame_util;
-static PyObject *__pyx_n_s_pydevd_bundle_pydevd_utils;
-static PyObject *__pyx_n_s_pydevd_dont_trace;
-static PyObject *__pyx_n_s_pydevd_file_utils;
-static PyObject *__pyx_kp_s_pydevd_py;
-static PyObject *__pyx_kp_s_pydevd_traceproperty_py;
-static PyObject *__pyx_n_s_pydevd_tracing;
-static PyObject *__pyx_n_s_pyx_PickleError;
-static PyObject *__pyx_n_s_pyx_checksum;
-static PyObject *__pyx_n_s_pyx_result;
-static PyObject *__pyx_n_s_pyx_state;
-static PyObject *__pyx_n_s_pyx_type;
-static PyObject *__pyx_n_s_pyx_unpickle_PyDBAdditionalThr;
-static PyObject *__pyx_n_s_pyx_unpickle_PyDBFrame;
-static PyObject *__pyx_n_s_pyx_unpickle_SafeCallWrapper;
-static PyObject *__pyx_n_s_pyx_unpickle_ThreadTracer;
-static PyObject *__pyx_n_s_pyx_unpickle_TopLevelThreadTra;
-static PyObject *__pyx_n_s_pyx_unpickle_TopLevelThreadTra_2;
-static PyObject *__pyx_n_s_pyx_unpickle__TryExceptContain;
-static PyObject *__pyx_n_s_pyx_vtable;
-static PyObject *__pyx_n_s_qname;
-static PyObject *__pyx_n_s_quitting;
-static PyObject *__pyx_n_s_raise_lines_in_except;
-static PyObject *__pyx_n_s_re;
-static PyObject *__pyx_n_s_reduce;
-static PyObject *__pyx_n_s_reduce_cython;
-static PyObject *__pyx_n_s_reduce_ex;
-static PyObject *__pyx_n_s_remove_exception_from_frame;
-static PyObject *__pyx_n_s_remove_return_values_flag;
-static PyObject *__pyx_n_s_return;
-static PyObject *__pyx_n_s_return_line;
-static PyObject *__pyx_n_s_returns;
-static PyObject *__pyx_n_s_rfind;
-static PyObject *__pyx_n_s_run;
-static PyObject *__pyx_kp_s_s_raised_from_within_the_callba;
-static PyObject *__pyx_kp_s_s_s;
-static PyObject *__pyx_n_s_self;
-static PyObject *__pyx_n_s_send_caught_exception_stack;
-static PyObject *__pyx_n_s_send_caught_exception_stack_proc;
-static PyObject *__pyx_n_s_set_additional_thread_info;
-static PyObject *__pyx_n_s_set_additional_thread_info_lock;
-static PyObject *__pyx_n_s_set_suspend;
-static PyObject *__pyx_n_s_set_trace_for_frame_and_parents;
-static PyObject *__pyx_n_s_setstate;
-static PyObject *__pyx_n_s_setstate_cython;
-static PyObject *__pyx_n_s_should_trace_hook;
-static PyObject *__pyx_n_s_show_return_values;
-static PyObject *__pyx_n_s_skip_on_exceptions_thrown_in_sam;
-static PyObject *__pyx_n_s_st_mtime;
-static PyObject *__pyx_n_s_st_size;
-static PyObject *__pyx_n_s_startswith;
-static PyObject *__pyx_n_s_stat;
-static PyObject *__pyx_n_s_stop;
-static PyObject *__pyx_n_s_stop_on_unhandled_exception;
-static PyObject *__pyx_kp_s_stringsource;
-static PyObject *__pyx_n_s_suspend;
-static PyObject *__pyx_n_s_suspend_other_threads;
-static PyObject *__pyx_n_s_suspend_policy;
-static PyObject *__pyx_n_s_suspended_at_unhandled;
-static PyObject *__pyx_n_s_sys;
-static PyObject *__pyx_n_s_t;
-static PyObject *__pyx_n_s_tb_frame;
-static PyObject *__pyx_n_s_tb_lineno;
-static PyObject *__pyx_n_s_tb_next;
-static PyObject *__pyx_n_s_test;
-static PyObject *__pyx_n_s_thread;
-static PyObject *__pyx_n_s_thread_trace_func;
-static PyObject *__pyx_n_s_thread_tracer;
-static PyObject *__pyx_n_s_threading;
-static PyObject *__pyx_n_s_threading_active;
-static PyObject *__pyx_n_s_threading_current_thread;
-static PyObject *__pyx_n_s_threading_get_ident;
-static PyObject *__pyx_n_s_top_level_thread_tracer;
-static PyObject *__pyx_n_s_top_level_thread_tracer_no_back;
-static PyObject *__pyx_n_s_top_level_thread_tracer_unhandle;
-static PyObject *__pyx_n_s_trace;
-static PyObject *__pyx_n_s_trace_dispatch;
-static PyObject *__pyx_n_s_trace_dispatch_and_unhandled_exc;
-static PyObject *__pyx_n_s_trace_exception;
-static PyObject *__pyx_n_s_trace_unhandled_exceptions;
-static PyObject *__pyx_n_s_try_exc_info;
-static PyObject *__pyx_n_s_try_except_infos;
-static PyObject *__pyx_n_s_update;
-static PyObject *__pyx_kp_s_utf_8;
-static PyObject *__pyx_n_s_values;
-static PyObject *__pyx_n_s_version;
-static PyObject *__pyx_n_s_writer;
+static const char __pyx_k_TopLevelThreadTracerNoBackFrame_2[] = "TopLevelThreadTracerNoBackFrame.trace_dispatch_and_unhandled_exceptions";
+static const char __pyx_k_TopLevelThreadTracerNoBackFrame_3[] = "TopLevelThreadTracerNoBackFrame.get_trace_dispatch_func";
+static const char __pyx_k_TopLevelThreadTracerNoBackFrame_4[] = "TopLevelThreadTracerNoBackFrame.__reduce_cython__";
+static const char __pyx_k_TopLevelThreadTracerNoBackFrame_5[] = "TopLevelThreadTracerNoBackFrame.__setstate_cython__";
+static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_2[] = "Incompatible checksums (0x%x vs (0xdbf5e44, 0xde17cd3, 0xc8b6eb1) = (try_except_infos))";
+static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_3[] = "Incompatible checksums (0x%x vs (0x3a8c26e, 0xb793695, 0x506e682) = (_args, exc_info, should_skip))";
+static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_4[] = "Incompatible checksums (0x%x vs (0xa14289b, 0x3cc10aa, 0x77c077b) = (method_object))";
+static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_5[] = "Incompatible checksums (0x%x vs (0x121e1fb, 0xf3a61b1, 0x3d7902a) = (_args))";
+static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_6[] = "Incompatible checksums (0x%x vs (0x3f5f7e9, 0x0ff9c96, 0xa3a9ec1) = (_args, _frame_trace_dispatch, _last_exc_arg, _last_raise_line, _raise_lines, try_except_infos))";
+static const char __pyx_k_TopLevelThreadTracerOnlyUnhandle_2[] = "TopLevelThreadTracerOnlyUnhandledExceptions.trace_unhandled_exceptions";
+static const char __pyx_k_TopLevelThreadTracerOnlyUnhandle_3[] = "TopLevelThreadTracerOnlyUnhandledExceptions.get_trace_dispatch_func";
+static const char __pyx_k_TopLevelThreadTracerOnlyUnhandle_4[] = "TopLevelThreadTracerOnlyUnhandledExceptions.__reduce_cython__";
+static const char __pyx_k_TopLevelThreadTracerOnlyUnhandle_5[] = "TopLevelThreadTracerOnlyUnhandledExceptions.__setstate_cython__";
+/* #### Code section: decls ### */
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo___init__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_2get_topmost_frame(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_thread); /* proto */
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_4__str__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_2_get_related_thread(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_4_is_stepping(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_6get_topmost_frame(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_thread); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_8update_stepping_info(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10__str__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self); /* proto */
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self); /* proto */
@@ -2518,10 +3143,19 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_27pydev_use_scoped_step_frame___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self); /* proto */
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_27pydev_use_scoped_step_frame_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_6__reduce_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_8__setstate_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self); /* proto */
+static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15is_in_wait_loop___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self); /* proto */
+static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15is_in_wait_loop_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12__reduce_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14__setstate_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_set_additional_thread_info(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_thread); /* proto */
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_2get_smart_step_into_variant_from_frame_offset(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwargs); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_2add_additional_info(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_4remove_additional_info(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_6any_thread_stepping(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_8get_smart_step_into_variant_from_frame_offset(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwargs); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_10is_unhandled_exception(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_container_obj, PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame, int __pyx_v_last_raise_line, PyObject *__pyx_v_raise_lines); /* proto */
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj___init__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self); /* proto */
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
@@ -2536,14 +3170,16 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_8handle_us
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_10trace_dispatch(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_12__reduce_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_14__setstate_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_4notify_skipped_step_in_because_of_filters(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_12should_stop_on_exception(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_py_db, struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info, PyObject *__pyx_v_frame, PyObject *__pyx_v_thread, PyObject *__pyx_v_arg, PyObject *__pyx_v_prev_user_uncaught_exc_info); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_14handle_exception(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_py_db, PyObject *__pyx_v_thread, PyObject *__pyx_v_frame, PyObject *__pyx_v_arg, PyObject *__pyx_v_exception_type); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_16notify_skipped_step_in_because_of_filters(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame); /* proto */
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper___init__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *__pyx_v_self, PyObject *__pyx_v_method_object); /* proto */
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_2__call__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_4get_method_object(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_6__reduce_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_8__setstate_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_6fix_top_level_trace_and_get_trace_func(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame); /* proto */
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_8trace_dispatch(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_18fix_top_level_trace_and_get_trace_func(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_20trace_dispatch(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg); /* proto */
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions___init__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_2trace_unhandled_exceptions(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_4get_trace_dispatch_func(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *__pyx_v_self); /* proto */
@@ -2581,14 +3217,15 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5_args_2__se
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5_args_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_4__reduce_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_6__setstate_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_10__call__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg); /* proto */
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_12__pyx_unpickle_PyDBAdditionalThreadInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_14__pyx_unpickle__TryExceptContainerObj(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_16__pyx_unpickle_PyDBFrame(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_18__pyx_unpickle_SafeCallWrapper(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_20__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_22__pyx_unpickle_TopLevelThreadTracerNoBackFrame(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24__pyx_unpickle_ThreadTracer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_22__call__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24fix_top_level_trace_and_get_trace_func(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwargs); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_26__pyx_unpickle_PyDBAdditionalThreadInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_28__pyx_unpickle__TryExceptContainerObj(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_30__pyx_unpickle_PyDBFrame(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_32__pyx_unpickle_SafeCallWrapper(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_34__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_36__pyx_unpickle_TopLevelThreadTracerNoBackFrame(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_38__pyx_unpickle_ThreadTracer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_tp_new_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_14_pydevd_bundle_13pydevd_cython_PyDBFrame(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
@@ -2596,81 +3233,2298 @@ static PyObject *__pyx_tp_new_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper(P
static PyObject *__pyx_tp_new_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_14_pydevd_bundle_13pydevd_cython_ThreadTracer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_get = {0, &__pyx_n_s_get, 0, 0, 0};
-static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_update = {0, &__pyx_n_s_update, 0, 0, 0};
-static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_values = {0, &__pyx_n_s_values, 0, 0, 0};
-static __Pyx_CachedCFunction __pyx_umethod_PyString_Type_rfind = {0, &__pyx_n_s_rfind, 0, 0, 0};
-static PyObject *__pyx_int_0;
-static PyObject *__pyx_int_1;
-static PyObject *__pyx_int_2;
-static PyObject *__pyx_int_11;
-static PyObject *__pyx_int_111;
-static PyObject *__pyx_int_137;
-static PyObject *__pyx_int_160;
-static PyObject *__pyx_int_16751766;
-static PyObject *__pyx_int_18997755;
-static PyObject *__pyx_int_61391470;
-static PyObject *__pyx_int_63705258;
-static PyObject *__pyx_int_64458794;
-static PyObject *__pyx_int_66451433;
-static PyObject *__pyx_int_84338306;
-static PyObject *__pyx_int_99625953;
-static PyObject *__pyx_int_123419394;
-static PyObject *__pyx_int_125568891;
-static PyObject *__pyx_int_169093275;
-static PyObject *__pyx_int_171613889;
-static PyObject *__pyx_int_173673827;
-static PyObject *__pyx_int_192493205;
-static PyObject *__pyx_int_210464433;
-static PyObject *__pyx_int_230645316;
-static PyObject *__pyx_int_232881363;
-static PyObject *__pyx_int_255484337;
-static PyObject *__pyx_int_neg_1;
-static PyObject *__pyx_slice__5;
-static PyObject *__pyx_tuple__2;
-static PyObject *__pyx_tuple__4;
-static PyObject *__pyx_tuple__6;
-static PyObject *__pyx_tuple__10;
-static PyObject *__pyx_tuple__11;
-static PyObject *__pyx_tuple__12;
-static PyObject *__pyx_tuple__13;
-static PyObject *__pyx_tuple__14;
-static PyObject *__pyx_tuple__15;
-static PyObject *__pyx_tuple__16;
-static PyObject *__pyx_tuple__17;
-static PyObject *__pyx_tuple__18;
-static PyObject *__pyx_tuple__20;
-static PyObject *__pyx_tuple__22;
-static PyObject *__pyx_tuple__23;
-static PyObject *__pyx_tuple__24;
-static PyObject *__pyx_tuple__25;
-static PyObject *__pyx_tuple__27;
-static PyObject *__pyx_tuple__29;
-static PyObject *__pyx_tuple__31;
-static PyObject *__pyx_tuple__33;
-static PyObject *__pyx_tuple__35;
-static PyObject *__pyx_tuple__37;
-static PyObject *__pyx_tuple__39;
-static PyObject *__pyx_tuple__41;
-static PyObject *__pyx_tuple__43;
-static PyObject *__pyx_tuple__45;
-static PyObject *__pyx_codeobj__19;
-static PyObject *__pyx_codeobj__21;
-static PyObject *__pyx_codeobj__26;
-static PyObject *__pyx_codeobj__28;
-static PyObject *__pyx_codeobj__30;
-static PyObject *__pyx_codeobj__32;
-static PyObject *__pyx_codeobj__34;
-static PyObject *__pyx_codeobj__36;
-static PyObject *__pyx_codeobj__38;
-static PyObject *__pyx_codeobj__40;
-static PyObject *__pyx_codeobj__42;
-static PyObject *__pyx_codeobj__44;
-static PyObject *__pyx_codeobj__46;
-/* Late includes */
-
-/* "_pydevd_bundle/pydevd_cython.pyx":67
- * # ENDIF
+static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_get = {0, 0, 0, 0, 0};
+static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_update = {0, 0, 0, 0, 0};
+static __Pyx_CachedCFunction __pyx_umethod_PyString_Type_rfind = {0, 0, 0, 0, 0};
+/* #### Code section: late_includes ### */
+/* #### Code section: module_state ### */
+typedef struct {
+ PyObject *__pyx_d;
+ PyObject *__pyx_b;
+ PyObject *__pyx_cython_runtime;
+ PyObject *__pyx_empty_tuple;
+ PyObject *__pyx_empty_bytes;
+ PyObject *__pyx_empty_unicode;
+ #ifdef __Pyx_CyFunction_USED
+ PyTypeObject *__pyx_CyFunctionType;
+ #endif
+ #ifdef __Pyx_FusedFunction_USED
+ PyTypeObject *__pyx_FusedFunctionType;
+ #endif
+ #ifdef __Pyx_Generator_USED
+ PyTypeObject *__pyx_GeneratorType;
+ #endif
+ #ifdef __Pyx_IterableCoroutine_USED
+ PyTypeObject *__pyx_IterableCoroutineType;
+ #endif
+ #ifdef __Pyx_Coroutine_USED
+ PyTypeObject *__pyx_CoroutineAwaitType;
+ #endif
+ #ifdef __Pyx_Coroutine_USED
+ PyTypeObject *__pyx_CoroutineType;
+ #endif
+ #if CYTHON_USE_MODULE_STATE
+ #endif
+ #if CYTHON_USE_MODULE_STATE
+ #endif
+ #if CYTHON_USE_MODULE_STATE
+ #endif
+ #if CYTHON_USE_MODULE_STATE
+ #endif
+ PyTypeObject *__pyx_ptype_7cpython_4type_type;
+ #if CYTHON_USE_MODULE_STATE
+ #endif
+ #if CYTHON_USE_MODULE_STATE
+ #endif
+ #if CYTHON_USE_MODULE_STATE
+ #endif
+ #if CYTHON_USE_MODULE_STATE
+ PyObject *__pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo;
+ PyObject *__pyx_type_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj;
+ PyObject *__pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBFrame;
+ PyObject *__pyx_type_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper;
+ PyObject *__pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions;
+ PyObject *__pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame;
+ PyObject *__pyx_type_14_pydevd_bundle_13pydevd_cython_ThreadTracer;
+ #endif
+ PyTypeObject *__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo;
+ PyTypeObject *__pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj;
+ PyTypeObject *__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame;
+ PyTypeObject *__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper;
+ PyTypeObject *__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions;
+ PyTypeObject *__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame;
+ PyTypeObject *__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer;
+ PyObject *__pyx_kp_s_;
+ PyObject *__pyx_kp_s_1;
+ PyObject *__pyx_n_s_ALL;
+ PyObject *__pyx_n_s_AttributeError;
+ PyObject *__pyx_n_s_CMD_SET_FUNCTION_BREAK;
+ PyObject *__pyx_n_s_DEBUG_START;
+ PyObject *__pyx_n_s_DEBUG_START_PY3K;
+ PyObject *__pyx_n_s_EXCEPTION_TYPE_HANDLED;
+ PyObject *__pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED;
+ PyObject *__pyx_kp_s_Error_in_linecache_checkcache_r;
+ PyObject *__pyx_kp_s_Error_in_linecache_getline_r_s_f;
+ PyObject *__pyx_n_s_ForkSafeLock;
+ PyObject *__pyx_n_s_GeneratorExit;
+ PyObject *__pyx_n_s_IGNORE_EXCEPTION_TAG;
+ PyObject *__pyx_kp_s_IgnoreException;
+ PyObject *__pyx_kp_s_Ignore_exception_s_in_library_s;
+ PyObject *__pyx_n_s_ImportError;
+ PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0;
+ PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2;
+ PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3;
+ PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4;
+ PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5;
+ PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_6;
+ PyObject *__pyx_n_s_KeyboardInterrupt;
+ PyObject *__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER;
+ PyObject *__pyx_n_s_NO_FTRACE;
+ PyObject *__pyx_n_s_NameError;
+ PyObject *__pyx_n_s_None;
+ PyObject *__pyx_kp_s_Not_used_in_sys_monitoring_mode;
+ PyObject *__pyx_n_s_PYDEVD_IPYTHON_CONTEXT;
+ PyObject *__pyx_n_s_PYDEVD_USE_SYS_MONITORING;
+ PyObject *__pyx_n_s_PYDEV_FILE;
+ PyObject *__pyx_n_s_PYTHON_SUSPEND;
+ PyObject *__pyx_n_s_PickleError;
+ PyObject *__pyx_n_s_PyDBAdditionalThreadInfo;
+ PyObject *__pyx_n_s_PyDBAdditionalThreadInfo___reduc;
+ PyObject *__pyx_n_s_PyDBAdditionalThreadInfo___setst;
+ PyObject *__pyx_n_s_PyDBAdditionalThreadInfo__get_re;
+ PyObject *__pyx_n_s_PyDBAdditionalThreadInfo__is_ste;
+ PyObject *__pyx_n_s_PyDBAdditionalThreadInfo_get_top;
+ PyObject *__pyx_n_s_PyDBAdditionalThreadInfo_update;
+ PyObject *__pyx_n_s_PyDBFrame;
+ PyObject *__pyx_n_s_PyDBFrame___reduce_cython;
+ PyObject *__pyx_n_s_PyDBFrame___setstate_cython;
+ PyObject *__pyx_n_s_PyDBFrame_do_wait_suspend;
+ PyObject *__pyx_n_s_PyDBFrame_handle_user_exception;
+ PyObject *__pyx_n_s_PyDBFrame_set_suspend;
+ PyObject *__pyx_n_s_PyDBFrame_trace_dispatch;
+ PyObject *__pyx_n_s_PyDBFrame_trace_exception;
+ PyObject *__pyx_n_s_RETURN_VALUES_DICT;
+ PyObject *__pyx_n_s_RuntimeError;
+ PyObject *__pyx_n_s_STATE_RUN;
+ PyObject *__pyx_n_s_STATE_SUSPEND;
+ PyObject *__pyx_n_s_SUPPORT_GEVENT;
+ PyObject *__pyx_n_s_SafeCallWrapper;
+ PyObject *__pyx_n_s_SafeCallWrapper___reduce_cython;
+ PyObject *__pyx_n_s_SafeCallWrapper___setstate_cytho;
+ PyObject *__pyx_n_s_SafeCallWrapper_get_method_objec;
+ PyObject *__pyx_kp_s_State_s_Stop_s_Cmd_s_Kill_s;
+ PyObject *__pyx_n_s_StopAsyncIteration;
+ PyObject *__pyx_n_s_StopIteration;
+ PyObject *__pyx_kp_s_Stop_inside_ipython_call;
+ PyObject *__pyx_n_s_SystemExit;
+ PyObject *__pyx_n_s_TRACE_PROPERTY;
+ PyObject *__pyx_n_s_Thread;
+ PyObject *__pyx_n_s_ThreadTracer;
+ PyObject *__pyx_n_s_ThreadTracer___reduce_cython;
+ PyObject *__pyx_n_s_ThreadTracer___setstate_cython;
+ PyObject *__pyx_n_s_TopLevelThreadTracerNoBackFrame;
+ PyObject *__pyx_n_s_TopLevelThreadTracerNoBackFrame_2;
+ PyObject *__pyx_n_s_TopLevelThreadTracerNoBackFrame_3;
+ PyObject *__pyx_n_s_TopLevelThreadTracerNoBackFrame_4;
+ PyObject *__pyx_n_s_TopLevelThreadTracerNoBackFrame_5;
+ PyObject *__pyx_n_s_TopLevelThreadTracerOnlyUnhandle;
+ PyObject *__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_2;
+ PyObject *__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_3;
+ PyObject *__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_4;
+ PyObject *__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_5;
+ PyObject *__pyx_n_s_TryExceptContainerObj;
+ PyObject *__pyx_n_s_TryExceptContainerObj___reduce;
+ PyObject *__pyx_n_s_TryExceptContainerObj___setstat;
+ PyObject *__pyx_n_s_USE_CUSTOM_SYS_CURRENT_FRAMES_MA;
+ PyObject *__pyx_kp_s_Unable_to_get_topmost_frame_for;
+ PyObject *__pyx_kp_s__10;
+ PyObject *__pyx_kp_u__10;
+ PyObject *__pyx_n_s__19;
+ PyObject *__pyx_kp_s__4;
+ PyObject *__pyx_kp_s__8;
+ PyObject *__pyx_kp_s__9;
+ PyObject *__pyx_n_s_abs_real_path_and_base;
+ PyObject *__pyx_n_s_absolute_filename;
+ PyObject *__pyx_n_s_active;
+ PyObject *__pyx_n_s_add;
+ PyObject *__pyx_n_s_add_additional_info;
+ PyObject *__pyx_n_s_add_command;
+ PyObject *__pyx_n_s_add_exception_to_frame;
+ PyObject *__pyx_n_s_additional_info;
+ PyObject *__pyx_n_s_any_thread_stepping;
+ PyObject *__pyx_n_s_append;
+ PyObject *__pyx_n_s_apply_files_filter;
+ PyObject *__pyx_n_s_apply_to_settrace;
+ PyObject *__pyx_n_s_arg;
+ PyObject *__pyx_n_s_args;
+ PyObject *__pyx_n_s_args_2;
+ PyObject *__pyx_n_s_asyncio_coroutines;
+ PyObject *__pyx_n_s_basename;
+ PyObject *__pyx_n_s_bootstrap;
+ PyObject *__pyx_n_s_bootstrap_2;
+ PyObject *__pyx_n_s_bootstrap_inner;
+ PyObject *__pyx_n_s_bootstrap_inner_2;
+ PyObject *__pyx_n_s_break_on_caught_exceptions;
+ PyObject *__pyx_n_s_break_on_user_uncaught_exception;
+ PyObject *__pyx_n_s_breakpoints;
+ PyObject *__pyx_n_s_call;
+ PyObject *__pyx_n_s_call_2;
+ PyObject *__pyx_n_s_can_skip;
+ PyObject *__pyx_n_s_canonical_normalized_filename;
+ PyObject *__pyx_kp_s_cell;
+ PyObject *__pyx_n_s_check_excs;
+ PyObject *__pyx_n_s_check_trace_obj;
+ PyObject *__pyx_n_s_checkcache;
+ PyObject *__pyx_n_s_children_variants;
+ PyObject *__pyx_n_s_class_getitem;
+ PyObject *__pyx_n_s_cline_in_traceback;
+ PyObject *__pyx_n_s_cmd_factory;
+ PyObject *__pyx_n_s_cmd_step_into;
+ PyObject *__pyx_n_s_cmd_step_over;
+ PyObject *__pyx_n_s_co_filename;
+ PyObject *__pyx_n_s_co_firstlineno;
+ PyObject *__pyx_n_s_co_flags;
+ PyObject *__pyx_n_s_co_name;
+ PyObject *__pyx_n_s_collect_return_info;
+ PyObject *__pyx_n_s_collect_try_except_info;
+ PyObject *__pyx_n_s_compile;
+ PyObject *__pyx_n_s_condition;
+ PyObject *__pyx_n_s_constant_to_str;
+ PyObject *__pyx_n_s_constructed_tid_to_last_frame;
+ PyObject *__pyx_n_s_container_obj;
+ PyObject *__pyx_n_s_critical;
+ PyObject *__pyx_n_s_curr_stat;
+ PyObject *__pyx_n_s_current_frames;
+ PyObject *__pyx_n_s_custom_key;
+ PyObject *__pyx_n_s_debug;
+ PyObject *__pyx_n_s_dict;
+ PyObject *__pyx_n_s_dict_2;
+ PyObject *__pyx_n_s_dis;
+ PyObject *__pyx_kp_u_disable;
+ PyObject *__pyx_n_s_disable_tracing;
+ PyObject *__pyx_n_s_do_wait_suspend;
+ PyObject *__pyx_kp_u_enable;
+ PyObject *__pyx_n_s_enable_tracing;
+ PyObject *__pyx_n_s_encode;
+ PyObject *__pyx_n_s_endswith;
+ PyObject *__pyx_n_s_enter;
+ PyObject *__pyx_n_s_event;
+ PyObject *__pyx_n_s_exc_break;
+ PyObject *__pyx_n_s_exc_break_caught;
+ PyObject *__pyx_n_s_exc_break_user;
+ PyObject *__pyx_n_s_exc_info;
+ PyObject *__pyx_n_s_exc_lineno;
+ PyObject *__pyx_n_s_except_line;
+ PyObject *__pyx_n_s_exception;
+ PyObject *__pyx_n_s_exception_break;
+ PyObject *__pyx_n_s_exception_breakpoint;
+ PyObject *__pyx_n_s_exception_type;
+ PyObject *__pyx_n_s_exclude_exception_by_filter;
+ PyObject *__pyx_n_s_exec;
+ PyObject *__pyx_n_s_execfile;
+ PyObject *__pyx_n_s_exit;
+ PyObject *__pyx_n_s_expression;
+ PyObject *__pyx_n_s_f;
+ PyObject *__pyx_n_s_f_back;
+ PyObject *__pyx_n_s_f_code;
+ PyObject *__pyx_n_s_f_globals;
+ PyObject *__pyx_n_s_f_lasti;
+ PyObject *__pyx_n_s_f_lineno;
+ PyObject *__pyx_n_s_f_locals;
+ PyObject *__pyx_n_s_f_trace;
+ PyObject *__pyx_n_s_f_unhandled;
+ PyObject *__pyx_n_s_filename;
+ PyObject *__pyx_n_s_filename_to_lines_where_exceptio;
+ PyObject *__pyx_n_s_filename_to_stat_info;
+ PyObject *__pyx_n_s_findlinestarts;
+ PyObject *__pyx_n_s_fix_top_level_trace_and_get_trac;
+ PyObject *__pyx_n_s_force_only_unhandled_tracer;
+ PyObject *__pyx_n_s_frame;
+ PyObject *__pyx_n_s_frame_cache_key;
+ PyObject *__pyx_n_s_frame_id_to_frame;
+ PyObject *__pyx_n_s_frame_skips_cache;
+ PyObject *__pyx_n_s_frame_trace_dispatch;
+ PyObject *__pyx_n_s_from_user_input;
+ PyObject *__pyx_n_s_func_name;
+ PyObject *__pyx_n_s_function_breakpoint_name_to_brea;
+ PyObject *__pyx_kp_u_gc;
+ PyObject *__pyx_n_s_get;
+ PyObject *__pyx_n_s_get_abs_path_real_path_and_base;
+ PyObject *__pyx_n_s_get_breakpoint;
+ PyObject *__pyx_n_s_get_clsname_for_code;
+ PyObject *__pyx_n_s_get_current_thread_id;
+ PyObject *__pyx_n_s_get_exception_breakpoint;
+ PyObject *__pyx_n_s_get_file_type;
+ PyObject *__pyx_n_s_get_global_debugger;
+ PyObject *__pyx_n_s_get_internal_queue_and_event;
+ PyObject *__pyx_n_s_get_method_object;
+ PyObject *__pyx_n_s_get_related_thread;
+ PyObject *__pyx_n_s_get_smart_step_into_variant_from;
+ PyObject *__pyx_n_s_get_thread_id;
+ PyObject *__pyx_n_s_get_topmost_frame;
+ PyObject *__pyx_n_s_get_trace_dispatch_func;
+ PyObject *__pyx_n_s_getline;
+ PyObject *__pyx_n_s_getstate;
+ PyObject *__pyx_n_s_global_cache_frame_skips;
+ PyObject *__pyx_n_s_global_cache_skips;
+ PyObject *__pyx_n_s_global_notify_skipped_step_in_l;
+ PyObject *__pyx_n_s_handle_breakpoint_condition;
+ PyObject *__pyx_n_s_handle_breakpoint_expression;
+ PyObject *__pyx_n_s_handle_exception;
+ PyObject *__pyx_n_s_handle_user_exception;
+ PyObject *__pyx_n_s_has_condition;
+ PyObject *__pyx_n_s_has_plugin_exception_breaks;
+ PyObject *__pyx_n_s_has_plugin_line_breaks;
+ PyObject *__pyx_n_s_i;
+ PyObject *__pyx_n_s_id;
+ PyObject *__pyx_n_s_ident;
+ PyObject *__pyx_n_s_ident_2;
+ PyObject *__pyx_n_s_ignore_exception_trace;
+ PyObject *__pyx_n_s_ignore_exceptions_thrown_in_line;
+ PyObject *__pyx_n_s_ignore_system_exit_code;
+ PyObject *__pyx_n_s_import;
+ PyObject *__pyx_n_s_in_project_scope;
+ PyObject *__pyx_n_s_info;
+ PyObject *__pyx_n_s_initial_trace_obj;
+ PyObject *__pyx_n_s_initializing;
+ PyObject *__pyx_kp_s_invalid;
+ PyObject *__pyx_n_s_is_coroutine;
+ PyObject *__pyx_n_s_is_files_filter_enabled;
+ PyObject *__pyx_n_s_is_line_in_except_block;
+ PyObject *__pyx_n_s_is_line_in_try_block;
+ PyObject *__pyx_n_s_is_logpoint;
+ PyObject *__pyx_n_s_is_stepping;
+ PyObject *__pyx_n_s_is_stopped;
+ PyObject *__pyx_n_s_is_thread_alive;
+ PyObject *__pyx_n_s_is_unhandled_exception;
+ PyObject *__pyx_n_s_is_user_uncaught;
+ PyObject *__pyx_kp_u_isenabled;
+ PyObject *__pyx_n_s_j;
+ PyObject *__pyx_n_s_just_raised;
+ PyObject *__pyx_n_s_kwargs;
+ PyObject *__pyx_kp_s_lambda;
+ PyObject *__pyx_n_s_last_raise_line;
+ PyObject *__pyx_n_s_last_stat;
+ PyObject *__pyx_n_s_line;
+ PyObject *__pyx_n_s_linecache;
+ PyObject *__pyx_n_s_lines;
+ PyObject *__pyx_n_s_lines_ignored;
+ PyObject *__pyx_n_s_linesep;
+ PyObject *__pyx_n_s_main;
+ PyObject *__pyx_n_s_main_2;
+ PyObject *__pyx_n_s_make_console_message;
+ PyObject *__pyx_n_s_make_io_message;
+ PyObject *__pyx_n_s_match;
+ PyObject *__pyx_n_s_maybe_user_uncaught_exc_info;
+ PyObject *__pyx_n_s_merged;
+ PyObject *__pyx_n_s_method_object;
+ PyObject *__pyx_kp_s_module;
+ PyObject *__pyx_n_s_name;
+ PyObject *__pyx_n_s_name_2;
+ PyObject *__pyx_n_s_new;
+ PyObject *__pyx_n_s_next_additional_info;
+ PyObject *__pyx_n_s_notify_on_first_raise_only;
+ PyObject *__pyx_n_s_notify_skipped_step_in_because_o;
+ PyObject *__pyx_n_s_notify_thread_not_alive;
+ PyObject *__pyx_n_s_original_call;
+ PyObject *__pyx_n_s_original_step_cmd;
+ PyObject *__pyx_n_s_os;
+ PyObject *__pyx_n_s_os_path;
+ PyObject *__pyx_n_s_path;
+ PyObject *__pyx_n_s_pickle;
+ PyObject *__pyx_n_s_plugin;
+ PyObject *__pyx_n_s_pop;
+ PyObject *__pyx_n_s_prev_user_uncaught_exc_info;
+ PyObject *__pyx_n_s_py_db;
+ PyObject *__pyx_kp_s_pyc;
+ PyObject *__pyx_n_s_pydb_disposed;
+ PyObject *__pyx_n_s_pydev_bundle;
+ PyObject *__pyx_n_s_pydev_bundle__pydev_saved_modul;
+ PyObject *__pyx_n_s_pydev_bundle_pydev_is_thread_al;
+ PyObject *__pyx_n_s_pydev_bundle_pydev_log;
+ PyObject *__pyx_n_s_pydev_do_not_trace;
+ PyObject *__pyx_kp_s_pydev_execfile_py;
+ PyObject *__pyx_n_s_pydev_log;
+ PyObject *__pyx_n_s_pydev_log_exception;
+ PyObject *__pyx_n_s_pydev_monkey;
+ PyObject *__pyx_n_s_pydevd;
+ PyObject *__pyx_n_s_pydevd_bundle;
+ PyObject *__pyx_n_s_pydevd_bundle_pydevd_bytecode_u;
+ PyObject *__pyx_n_s_pydevd_bundle_pydevd_comm_const;
+ PyObject *__pyx_n_s_pydevd_bundle_pydevd_constants;
+ PyObject *__pyx_n_s_pydevd_bundle_pydevd_cython;
+ PyObject *__pyx_kp_s_pydevd_bundle_pydevd_cython_pyx;
+ PyObject *__pyx_n_s_pydevd_bundle_pydevd_frame_util;
+ PyObject *__pyx_n_s_pydevd_bundle_pydevd_utils;
+ PyObject *__pyx_n_s_pydevd_dont_trace;
+ PyObject *__pyx_n_s_pydevd_file_utils;
+ PyObject *__pyx_kp_s_pydevd_py;
+ PyObject *__pyx_kp_s_pydevd_traceproperty_py;
+ PyObject *__pyx_n_s_pydevd_tracing;
+ PyObject *__pyx_n_s_pyx_PickleError;
+ PyObject *__pyx_n_s_pyx_checksum;
+ PyObject *__pyx_n_s_pyx_result;
+ PyObject *__pyx_n_s_pyx_state;
+ PyObject *__pyx_n_s_pyx_type;
+ PyObject *__pyx_n_s_pyx_unpickle_PyDBAdditionalThr;
+ PyObject *__pyx_n_s_pyx_unpickle_PyDBFrame;
+ PyObject *__pyx_n_s_pyx_unpickle_SafeCallWrapper;
+ PyObject *__pyx_n_s_pyx_unpickle_ThreadTracer;
+ PyObject *__pyx_n_s_pyx_unpickle_TopLevelThreadTra;
+ PyObject *__pyx_n_s_pyx_unpickle_TopLevelThreadTra_2;
+ PyObject *__pyx_n_s_pyx_unpickle__TryExceptContain;
+ PyObject *__pyx_n_s_pyx_vtable;
+ PyObject *__pyx_n_s_qname;
+ PyObject *__pyx_n_s_quitting;
+ PyObject *__pyx_n_s_raise_lines;
+ PyObject *__pyx_n_s_raise_lines_in_except;
+ PyObject *__pyx_n_s_re;
+ PyObject *__pyx_n_s_reduce;
+ PyObject *__pyx_n_s_reduce_cython;
+ PyObject *__pyx_n_s_reduce_ex;
+ PyObject *__pyx_n_s_ref;
+ PyObject *__pyx_n_s_remove_additional_info;
+ PyObject *__pyx_n_s_remove_exception_from_frame;
+ PyObject *__pyx_n_s_remove_return_values_flag;
+ PyObject *__pyx_n_s_result;
+ PyObject *__pyx_n_s_ret;
+ PyObject *__pyx_n_s_return;
+ PyObject *__pyx_n_s_return_line;
+ PyObject *__pyx_n_s_returns;
+ PyObject *__pyx_n_s_rfind;
+ PyObject *__pyx_n_s_run;
+ PyObject *__pyx_kp_s_s_raised_from_within_the_callba;
+ PyObject *__pyx_kp_s_s_s;
+ PyObject *__pyx_n_s_self;
+ PyObject *__pyx_n_s_send_caught_exception_stack;
+ PyObject *__pyx_n_s_send_caught_exception_stack_proc;
+ PyObject *__pyx_n_s_set;
+ PyObject *__pyx_n_s_set_additional_thread_info;
+ PyObject *__pyx_n_s_set_additional_thread_info_lock;
+ PyObject *__pyx_n_s_set_suspend;
+ PyObject *__pyx_n_s_set_trace_for_frame_and_parents;
+ PyObject *__pyx_n_s_setstate;
+ PyObject *__pyx_n_s_setstate_cython;
+ PyObject *__pyx_n_s_should_stop;
+ PyObject *__pyx_n_s_should_stop_on_exception;
+ PyObject *__pyx_n_s_should_trace_hook;
+ PyObject *__pyx_n_s_show_return_values;
+ PyObject *__pyx_n_s_skip_on_exceptions_thrown_in_sam;
+ PyObject *__pyx_n_s_spec;
+ PyObject *__pyx_n_s_st_mtime;
+ PyObject *__pyx_n_s_st_size;
+ PyObject *__pyx_n_s_startswith;
+ PyObject *__pyx_n_s_stat;
+ PyObject *__pyx_n_s_state;
+ PyObject *__pyx_n_s_stop;
+ PyObject *__pyx_n_s_stop_on_unhandled_exception;
+ PyObject *__pyx_n_s_stopped;
+ PyObject *__pyx_kp_s_stringsource;
+ PyObject *__pyx_n_s_suspend;
+ PyObject *__pyx_n_s_suspend_other_threads;
+ PyObject *__pyx_n_s_suspend_policy;
+ PyObject *__pyx_n_s_suspended_at_unhandled;
+ PyObject *__pyx_n_s_sys;
+ PyObject *__pyx_n_s_t;
+ PyObject *__pyx_n_s_tb_frame;
+ PyObject *__pyx_n_s_tb_lineno;
+ PyObject *__pyx_n_s_tb_next;
+ PyObject *__pyx_n_s_test;
+ PyObject *__pyx_n_s_thread;
+ PyObject *__pyx_kp_s_thread__ident_is_None_in__get_re;
+ PyObject *__pyx_n_s_thread_trace_func;
+ PyObject *__pyx_n_s_thread_tracer;
+ PyObject *__pyx_n_s_threading;
+ PyObject *__pyx_n_s_threading_active;
+ PyObject *__pyx_n_s_threading_current_thread;
+ PyObject *__pyx_n_s_threading_get_ident;
+ PyObject *__pyx_n_s_top_level_thread_tracer;
+ PyObject *__pyx_n_s_top_level_thread_tracer_no_back;
+ PyObject *__pyx_n_s_top_level_thread_tracer_unhandle;
+ PyObject *__pyx_n_s_trace;
+ PyObject *__pyx_n_s_trace_dispatch;
+ PyObject *__pyx_n_s_trace_dispatch_and_unhandled_exc;
+ PyObject *__pyx_n_s_trace_exception;
+ PyObject *__pyx_n_s_trace_obj;
+ PyObject *__pyx_n_s_trace_unhandled_exceptions;
+ PyObject *__pyx_n_s_try_exc_info;
+ PyObject *__pyx_n_s_try_except_info;
+ PyObject *__pyx_n_s_try_except_infos;
+ PyObject *__pyx_n_s_update;
+ PyObject *__pyx_n_s_update_stepping_info;
+ PyObject *__pyx_n_s_use_setstate;
+ PyObject *__pyx_kp_s_utf_8;
+ PyObject *__pyx_n_s_valid_try_except_infos;
+ PyObject *__pyx_n_s_value;
+ PyObject *__pyx_n_s_values;
+ PyObject *__pyx_n_s_version;
+ PyObject *__pyx_n_s_was_just_raised;
+ PyObject *__pyx_n_s_weak_thread;
+ PyObject *__pyx_n_s_weakref;
+ PyObject *__pyx_n_s_writer;
+ PyObject *__pyx_int_0;
+ PyObject *__pyx_int_1;
+ PyObject *__pyx_int_2;
+ PyObject *__pyx_int_11;
+ PyObject *__pyx_int_111;
+ PyObject *__pyx_int_137;
+ PyObject *__pyx_int_160;
+ PyObject *__pyx_int_2424557;
+ PyObject *__pyx_int_16751766;
+ PyObject *__pyx_int_18997755;
+ PyObject *__pyx_int_61391470;
+ PyObject *__pyx_int_63705258;
+ PyObject *__pyx_int_64458794;
+ PyObject *__pyx_int_66451433;
+ PyObject *__pyx_int_70528507;
+ PyObject *__pyx_int_84338306;
+ PyObject *__pyx_int_125568891;
+ PyObject *__pyx_int_169093275;
+ PyObject *__pyx_int_171613889;
+ PyObject *__pyx_int_192493205;
+ PyObject *__pyx_int_210464433;
+ PyObject *__pyx_int_221489684;
+ PyObject *__pyx_int_230645316;
+ PyObject *__pyx_int_232881363;
+ PyObject *__pyx_int_255484337;
+ PyObject *__pyx_int_neg_1;
+ PyObject *__pyx_slice__2;
+ PyObject *__pyx_slice__6;
+ PyObject *__pyx_tuple__3;
+ PyObject *__pyx_tuple__5;
+ PyObject *__pyx_tuple__7;
+ PyObject *__pyx_tuple__11;
+ PyObject *__pyx_tuple__12;
+ PyObject *__pyx_tuple__13;
+ PyObject *__pyx_tuple__14;
+ PyObject *__pyx_tuple__15;
+ PyObject *__pyx_tuple__16;
+ PyObject *__pyx_tuple__17;
+ PyObject *__pyx_tuple__18;
+ PyObject *__pyx_tuple__20;
+ PyObject *__pyx_tuple__23;
+ PyObject *__pyx_tuple__26;
+ PyObject *__pyx_tuple__28;
+ PyObject *__pyx_tuple__30;
+ PyObject *__pyx_tuple__32;
+ PyObject *__pyx_tuple__36;
+ PyObject *__pyx_tuple__37;
+ PyObject *__pyx_tuple__39;
+ PyObject *__pyx_tuple__40;
+ PyObject *__pyx_tuple__41;
+ PyObject *__pyx_tuple__42;
+ PyObject *__pyx_tuple__46;
+ PyObject *__pyx_tuple__49;
+ PyObject *__pyx_tuple__51;
+ PyObject *__pyx_tuple__53;
+ PyObject *__pyx_tuple__57;
+ PyObject *__pyx_tuple__59;
+ PyObject *__pyx_tuple__61;
+ PyObject *__pyx_tuple__66;
+ PyObject *__pyx_tuple__68;
+ PyObject *__pyx_tuple__70;
+ PyObject *__pyx_tuple__75;
+ PyObject *__pyx_tuple__84;
+ PyObject *__pyx_codeobj__21;
+ PyObject *__pyx_codeobj__22;
+ PyObject *__pyx_codeobj__24;
+ PyObject *__pyx_codeobj__25;
+ PyObject *__pyx_codeobj__27;
+ PyObject *__pyx_codeobj__29;
+ PyObject *__pyx_codeobj__31;
+ PyObject *__pyx_codeobj__33;
+ PyObject *__pyx_codeobj__34;
+ PyObject *__pyx_codeobj__35;
+ PyObject *__pyx_codeobj__38;
+ PyObject *__pyx_codeobj__43;
+ PyObject *__pyx_codeobj__44;
+ PyObject *__pyx_codeobj__45;
+ PyObject *__pyx_codeobj__47;
+ PyObject *__pyx_codeobj__48;
+ PyObject *__pyx_codeobj__50;
+ PyObject *__pyx_codeobj__52;
+ PyObject *__pyx_codeobj__54;
+ PyObject *__pyx_codeobj__55;
+ PyObject *__pyx_codeobj__56;
+ PyObject *__pyx_codeobj__58;
+ PyObject *__pyx_codeobj__60;
+ PyObject *__pyx_codeobj__62;
+ PyObject *__pyx_codeobj__63;
+ PyObject *__pyx_codeobj__64;
+ PyObject *__pyx_codeobj__65;
+ PyObject *__pyx_codeobj__67;
+ PyObject *__pyx_codeobj__69;
+ PyObject *__pyx_codeobj__71;
+ PyObject *__pyx_codeobj__72;
+ PyObject *__pyx_codeobj__73;
+ PyObject *__pyx_codeobj__74;
+ PyObject *__pyx_codeobj__76;
+ PyObject *__pyx_codeobj__77;
+ PyObject *__pyx_codeobj__78;
+ PyObject *__pyx_codeobj__79;
+ PyObject *__pyx_codeobj__80;
+ PyObject *__pyx_codeobj__81;
+ PyObject *__pyx_codeobj__82;
+ PyObject *__pyx_codeobj__83;
+ PyObject *__pyx_codeobj__85;
+ PyObject *__pyx_codeobj__86;
+ PyObject *__pyx_codeobj__87;
+ PyObject *__pyx_codeobj__88;
+ PyObject *__pyx_codeobj__89;
+ PyObject *__pyx_codeobj__90;
+ PyObject *__pyx_codeobj__91;
+} __pyx_mstate;
+
+#if CYTHON_USE_MODULE_STATE
+#ifdef __cplusplus
+namespace {
+ extern struct PyModuleDef __pyx_moduledef;
+} /* anonymous namespace */
+#else
+static struct PyModuleDef __pyx_moduledef;
+#endif
+
+#define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o))
+
+#define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef)))
+
+#define __pyx_m (PyState_FindModule(&__pyx_moduledef))
+#else
+static __pyx_mstate __pyx_mstate_global_static =
+#ifdef __cplusplus
+ {};
+#else
+ {0};
+#endif
+static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static;
+#endif
+/* #### Code section: module_state_clear ### */
+#if CYTHON_USE_MODULE_STATE
+static int __pyx_m_clear(PyObject *m) {
+ __pyx_mstate *clear_module_state = __pyx_mstate(m);
+ if (!clear_module_state) return 0;
+ Py_CLEAR(clear_module_state->__pyx_d);
+ Py_CLEAR(clear_module_state->__pyx_b);
+ Py_CLEAR(clear_module_state->__pyx_cython_runtime);
+ Py_CLEAR(clear_module_state->__pyx_empty_tuple);
+ Py_CLEAR(clear_module_state->__pyx_empty_bytes);
+ Py_CLEAR(clear_module_state->__pyx_empty_unicode);
+ #ifdef __Pyx_CyFunction_USED
+ Py_CLEAR(clear_module_state->__pyx_CyFunctionType);
+ #endif
+ #ifdef __Pyx_FusedFunction_USED
+ Py_CLEAR(clear_module_state->__pyx_FusedFunctionType);
+ #endif
+ Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_4type_type);
+ Py_CLEAR(clear_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo);
+ Py_CLEAR(clear_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo);
+ Py_CLEAR(clear_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj);
+ Py_CLEAR(clear_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj);
+ Py_CLEAR(clear_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame);
+ Py_CLEAR(clear_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBFrame);
+ Py_CLEAR(clear_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper);
+ Py_CLEAR(clear_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper);
+ Py_CLEAR(clear_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions);
+ Py_CLEAR(clear_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions);
+ Py_CLEAR(clear_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame);
+ Py_CLEAR(clear_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame);
+ Py_CLEAR(clear_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer);
+ Py_CLEAR(clear_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_ThreadTracer);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_1);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ALL);
+ Py_CLEAR(clear_module_state->__pyx_n_s_AttributeError);
+ Py_CLEAR(clear_module_state->__pyx_n_s_CMD_SET_FUNCTION_BREAK);
+ Py_CLEAR(clear_module_state->__pyx_n_s_DEBUG_START);
+ Py_CLEAR(clear_module_state->__pyx_n_s_DEBUG_START_PY3K);
+ Py_CLEAR(clear_module_state->__pyx_n_s_EXCEPTION_TYPE_HANDLED);
+ Py_CLEAR(clear_module_state->__pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Error_in_linecache_checkcache_r);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Error_in_linecache_getline_r_s_f);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ForkSafeLock);
+ Py_CLEAR(clear_module_state->__pyx_n_s_GeneratorExit);
+ Py_CLEAR(clear_module_state->__pyx_n_s_IGNORE_EXCEPTION_TAG);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_IgnoreException);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Ignore_exception_s_in_library_s);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ImportError);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_6);
+ Py_CLEAR(clear_module_state->__pyx_n_s_KeyboardInterrupt);
+ Py_CLEAR(clear_module_state->__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER);
+ Py_CLEAR(clear_module_state->__pyx_n_s_NO_FTRACE);
+ Py_CLEAR(clear_module_state->__pyx_n_s_NameError);
+ Py_CLEAR(clear_module_state->__pyx_n_s_None);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Not_used_in_sys_monitoring_mode);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PYDEVD_IPYTHON_CONTEXT);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PYDEVD_USE_SYS_MONITORING);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PYDEV_FILE);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PYTHON_SUSPEND);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PickleError);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PyDBAdditionalThreadInfo);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PyDBAdditionalThreadInfo___reduc);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PyDBAdditionalThreadInfo___setst);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PyDBAdditionalThreadInfo__get_re);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PyDBAdditionalThreadInfo__is_ste);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PyDBAdditionalThreadInfo_get_top);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PyDBAdditionalThreadInfo_update);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PyDBFrame);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PyDBFrame___reduce_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PyDBFrame___setstate_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PyDBFrame_do_wait_suspend);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PyDBFrame_handle_user_exception);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PyDBFrame_set_suspend);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PyDBFrame_trace_dispatch);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PyDBFrame_trace_exception);
+ Py_CLEAR(clear_module_state->__pyx_n_s_RETURN_VALUES_DICT);
+ Py_CLEAR(clear_module_state->__pyx_n_s_RuntimeError);
+ Py_CLEAR(clear_module_state->__pyx_n_s_STATE_RUN);
+ Py_CLEAR(clear_module_state->__pyx_n_s_STATE_SUSPEND);
+ Py_CLEAR(clear_module_state->__pyx_n_s_SUPPORT_GEVENT);
+ Py_CLEAR(clear_module_state->__pyx_n_s_SafeCallWrapper);
+ Py_CLEAR(clear_module_state->__pyx_n_s_SafeCallWrapper___reduce_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_SafeCallWrapper___setstate_cytho);
+ Py_CLEAR(clear_module_state->__pyx_n_s_SafeCallWrapper_get_method_objec);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_State_s_Stop_s_Cmd_s_Kill_s);
+ Py_CLEAR(clear_module_state->__pyx_n_s_StopAsyncIteration);
+ Py_CLEAR(clear_module_state->__pyx_n_s_StopIteration);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Stop_inside_ipython_call);
+ Py_CLEAR(clear_module_state->__pyx_n_s_SystemExit);
+ Py_CLEAR(clear_module_state->__pyx_n_s_TRACE_PROPERTY);
+ Py_CLEAR(clear_module_state->__pyx_n_s_Thread);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ThreadTracer);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ThreadTracer___reduce_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ThreadTracer___setstate_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_TopLevelThreadTracerNoBackFrame);
+ Py_CLEAR(clear_module_state->__pyx_n_s_TopLevelThreadTracerNoBackFrame_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_TopLevelThreadTracerNoBackFrame_3);
+ Py_CLEAR(clear_module_state->__pyx_n_s_TopLevelThreadTracerNoBackFrame_4);
+ Py_CLEAR(clear_module_state->__pyx_n_s_TopLevelThreadTracerNoBackFrame_5);
+ Py_CLEAR(clear_module_state->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle);
+ Py_CLEAR(clear_module_state->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_3);
+ Py_CLEAR(clear_module_state->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_4);
+ Py_CLEAR(clear_module_state->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_5);
+ Py_CLEAR(clear_module_state->__pyx_n_s_TryExceptContainerObj);
+ Py_CLEAR(clear_module_state->__pyx_n_s_TryExceptContainerObj___reduce);
+ Py_CLEAR(clear_module_state->__pyx_n_s_TryExceptContainerObj___setstat);
+ Py_CLEAR(clear_module_state->__pyx_n_s_USE_CUSTOM_SYS_CURRENT_FRAMES_MA);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Unable_to_get_topmost_frame_for);
+ Py_CLEAR(clear_module_state->__pyx_kp_s__10);
+ Py_CLEAR(clear_module_state->__pyx_kp_u__10);
+ Py_CLEAR(clear_module_state->__pyx_n_s__19);
+ Py_CLEAR(clear_module_state->__pyx_kp_s__4);
+ Py_CLEAR(clear_module_state->__pyx_kp_s__8);
+ Py_CLEAR(clear_module_state->__pyx_kp_s__9);
+ Py_CLEAR(clear_module_state->__pyx_n_s_abs_real_path_and_base);
+ Py_CLEAR(clear_module_state->__pyx_n_s_absolute_filename);
+ Py_CLEAR(clear_module_state->__pyx_n_s_active);
+ Py_CLEAR(clear_module_state->__pyx_n_s_add);
+ Py_CLEAR(clear_module_state->__pyx_n_s_add_additional_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_add_command);
+ Py_CLEAR(clear_module_state->__pyx_n_s_add_exception_to_frame);
+ Py_CLEAR(clear_module_state->__pyx_n_s_additional_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_any_thread_stepping);
+ Py_CLEAR(clear_module_state->__pyx_n_s_append);
+ Py_CLEAR(clear_module_state->__pyx_n_s_apply_files_filter);
+ Py_CLEAR(clear_module_state->__pyx_n_s_apply_to_settrace);
+ Py_CLEAR(clear_module_state->__pyx_n_s_arg);
+ Py_CLEAR(clear_module_state->__pyx_n_s_args);
+ Py_CLEAR(clear_module_state->__pyx_n_s_args_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines);
+ Py_CLEAR(clear_module_state->__pyx_n_s_basename);
+ Py_CLEAR(clear_module_state->__pyx_n_s_bootstrap);
+ Py_CLEAR(clear_module_state->__pyx_n_s_bootstrap_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_bootstrap_inner);
+ Py_CLEAR(clear_module_state->__pyx_n_s_bootstrap_inner_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_break_on_caught_exceptions);
+ Py_CLEAR(clear_module_state->__pyx_n_s_break_on_user_uncaught_exception);
+ Py_CLEAR(clear_module_state->__pyx_n_s_breakpoints);
+ Py_CLEAR(clear_module_state->__pyx_n_s_call);
+ Py_CLEAR(clear_module_state->__pyx_n_s_call_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_can_skip);
+ Py_CLEAR(clear_module_state->__pyx_n_s_canonical_normalized_filename);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_cell);
+ Py_CLEAR(clear_module_state->__pyx_n_s_check_excs);
+ Py_CLEAR(clear_module_state->__pyx_n_s_check_trace_obj);
+ Py_CLEAR(clear_module_state->__pyx_n_s_checkcache);
+ Py_CLEAR(clear_module_state->__pyx_n_s_children_variants);
+ Py_CLEAR(clear_module_state->__pyx_n_s_class_getitem);
+ Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback);
+ Py_CLEAR(clear_module_state->__pyx_n_s_cmd_factory);
+ Py_CLEAR(clear_module_state->__pyx_n_s_cmd_step_into);
+ Py_CLEAR(clear_module_state->__pyx_n_s_cmd_step_over);
+ Py_CLEAR(clear_module_state->__pyx_n_s_co_filename);
+ Py_CLEAR(clear_module_state->__pyx_n_s_co_firstlineno);
+ Py_CLEAR(clear_module_state->__pyx_n_s_co_flags);
+ Py_CLEAR(clear_module_state->__pyx_n_s_co_name);
+ Py_CLEAR(clear_module_state->__pyx_n_s_collect_return_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_collect_try_except_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_compile);
+ Py_CLEAR(clear_module_state->__pyx_n_s_condition);
+ Py_CLEAR(clear_module_state->__pyx_n_s_constant_to_str);
+ Py_CLEAR(clear_module_state->__pyx_n_s_constructed_tid_to_last_frame);
+ Py_CLEAR(clear_module_state->__pyx_n_s_container_obj);
+ Py_CLEAR(clear_module_state->__pyx_n_s_critical);
+ Py_CLEAR(clear_module_state->__pyx_n_s_curr_stat);
+ Py_CLEAR(clear_module_state->__pyx_n_s_current_frames);
+ Py_CLEAR(clear_module_state->__pyx_n_s_custom_key);
+ Py_CLEAR(clear_module_state->__pyx_n_s_debug);
+ Py_CLEAR(clear_module_state->__pyx_n_s_dict);
+ Py_CLEAR(clear_module_state->__pyx_n_s_dict_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_dis);
+ Py_CLEAR(clear_module_state->__pyx_kp_u_disable);
+ Py_CLEAR(clear_module_state->__pyx_n_s_disable_tracing);
+ Py_CLEAR(clear_module_state->__pyx_n_s_do_wait_suspend);
+ Py_CLEAR(clear_module_state->__pyx_kp_u_enable);
+ Py_CLEAR(clear_module_state->__pyx_n_s_enable_tracing);
+ Py_CLEAR(clear_module_state->__pyx_n_s_encode);
+ Py_CLEAR(clear_module_state->__pyx_n_s_endswith);
+ Py_CLEAR(clear_module_state->__pyx_n_s_enter);
+ Py_CLEAR(clear_module_state->__pyx_n_s_event);
+ Py_CLEAR(clear_module_state->__pyx_n_s_exc_break);
+ Py_CLEAR(clear_module_state->__pyx_n_s_exc_break_caught);
+ Py_CLEAR(clear_module_state->__pyx_n_s_exc_break_user);
+ Py_CLEAR(clear_module_state->__pyx_n_s_exc_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_exc_lineno);
+ Py_CLEAR(clear_module_state->__pyx_n_s_except_line);
+ Py_CLEAR(clear_module_state->__pyx_n_s_exception);
+ Py_CLEAR(clear_module_state->__pyx_n_s_exception_break);
+ Py_CLEAR(clear_module_state->__pyx_n_s_exception_breakpoint);
+ Py_CLEAR(clear_module_state->__pyx_n_s_exception_type);
+ Py_CLEAR(clear_module_state->__pyx_n_s_exclude_exception_by_filter);
+ Py_CLEAR(clear_module_state->__pyx_n_s_exec);
+ Py_CLEAR(clear_module_state->__pyx_n_s_execfile);
+ Py_CLEAR(clear_module_state->__pyx_n_s_exit);
+ Py_CLEAR(clear_module_state->__pyx_n_s_expression);
+ Py_CLEAR(clear_module_state->__pyx_n_s_f);
+ Py_CLEAR(clear_module_state->__pyx_n_s_f_back);
+ Py_CLEAR(clear_module_state->__pyx_n_s_f_code);
+ Py_CLEAR(clear_module_state->__pyx_n_s_f_globals);
+ Py_CLEAR(clear_module_state->__pyx_n_s_f_lasti);
+ Py_CLEAR(clear_module_state->__pyx_n_s_f_lineno);
+ Py_CLEAR(clear_module_state->__pyx_n_s_f_locals);
+ Py_CLEAR(clear_module_state->__pyx_n_s_f_trace);
+ Py_CLEAR(clear_module_state->__pyx_n_s_f_unhandled);
+ Py_CLEAR(clear_module_state->__pyx_n_s_filename);
+ Py_CLEAR(clear_module_state->__pyx_n_s_filename_to_lines_where_exceptio);
+ Py_CLEAR(clear_module_state->__pyx_n_s_filename_to_stat_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_findlinestarts);
+ Py_CLEAR(clear_module_state->__pyx_n_s_fix_top_level_trace_and_get_trac);
+ Py_CLEAR(clear_module_state->__pyx_n_s_force_only_unhandled_tracer);
+ Py_CLEAR(clear_module_state->__pyx_n_s_frame);
+ Py_CLEAR(clear_module_state->__pyx_n_s_frame_cache_key);
+ Py_CLEAR(clear_module_state->__pyx_n_s_frame_id_to_frame);
+ Py_CLEAR(clear_module_state->__pyx_n_s_frame_skips_cache);
+ Py_CLEAR(clear_module_state->__pyx_n_s_frame_trace_dispatch);
+ Py_CLEAR(clear_module_state->__pyx_n_s_from_user_input);
+ Py_CLEAR(clear_module_state->__pyx_n_s_func_name);
+ Py_CLEAR(clear_module_state->__pyx_n_s_function_breakpoint_name_to_brea);
+ Py_CLEAR(clear_module_state->__pyx_kp_u_gc);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_abs_path_real_path_and_base);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_breakpoint);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_clsname_for_code);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_current_thread_id);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_exception_breakpoint);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_file_type);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_global_debugger);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_internal_queue_and_event);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_method_object);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_related_thread);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_smart_step_into_variant_from);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_thread_id);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_topmost_frame);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_trace_dispatch_func);
+ Py_CLEAR(clear_module_state->__pyx_n_s_getline);
+ Py_CLEAR(clear_module_state->__pyx_n_s_getstate);
+ Py_CLEAR(clear_module_state->__pyx_n_s_global_cache_frame_skips);
+ Py_CLEAR(clear_module_state->__pyx_n_s_global_cache_skips);
+ Py_CLEAR(clear_module_state->__pyx_n_s_global_notify_skipped_step_in_l);
+ Py_CLEAR(clear_module_state->__pyx_n_s_handle_breakpoint_condition);
+ Py_CLEAR(clear_module_state->__pyx_n_s_handle_breakpoint_expression);
+ Py_CLEAR(clear_module_state->__pyx_n_s_handle_exception);
+ Py_CLEAR(clear_module_state->__pyx_n_s_handle_user_exception);
+ Py_CLEAR(clear_module_state->__pyx_n_s_has_condition);
+ Py_CLEAR(clear_module_state->__pyx_n_s_has_plugin_exception_breaks);
+ Py_CLEAR(clear_module_state->__pyx_n_s_has_plugin_line_breaks);
+ Py_CLEAR(clear_module_state->__pyx_n_s_i);
+ Py_CLEAR(clear_module_state->__pyx_n_s_id);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ident);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ident_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ignore_exception_trace);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ignore_exceptions_thrown_in_line);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ignore_system_exit_code);
+ Py_CLEAR(clear_module_state->__pyx_n_s_import);
+ Py_CLEAR(clear_module_state->__pyx_n_s_in_project_scope);
+ Py_CLEAR(clear_module_state->__pyx_n_s_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_initial_trace_obj);
+ Py_CLEAR(clear_module_state->__pyx_n_s_initializing);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_invalid);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_files_filter_enabled);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_line_in_except_block);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_line_in_try_block);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_logpoint);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_stepping);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_stopped);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_thread_alive);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_unhandled_exception);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_user_uncaught);
+ Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled);
+ Py_CLEAR(clear_module_state->__pyx_n_s_j);
+ Py_CLEAR(clear_module_state->__pyx_n_s_just_raised);
+ Py_CLEAR(clear_module_state->__pyx_n_s_kwargs);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_lambda);
+ Py_CLEAR(clear_module_state->__pyx_n_s_last_raise_line);
+ Py_CLEAR(clear_module_state->__pyx_n_s_last_stat);
+ Py_CLEAR(clear_module_state->__pyx_n_s_line);
+ Py_CLEAR(clear_module_state->__pyx_n_s_linecache);
+ Py_CLEAR(clear_module_state->__pyx_n_s_lines);
+ Py_CLEAR(clear_module_state->__pyx_n_s_lines_ignored);
+ Py_CLEAR(clear_module_state->__pyx_n_s_linesep);
+ Py_CLEAR(clear_module_state->__pyx_n_s_main);
+ Py_CLEAR(clear_module_state->__pyx_n_s_main_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_make_console_message);
+ Py_CLEAR(clear_module_state->__pyx_n_s_make_io_message);
+ Py_CLEAR(clear_module_state->__pyx_n_s_match);
+ Py_CLEAR(clear_module_state->__pyx_n_s_maybe_user_uncaught_exc_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_merged);
+ Py_CLEAR(clear_module_state->__pyx_n_s_method_object);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_module);
+ Py_CLEAR(clear_module_state->__pyx_n_s_name);
+ Py_CLEAR(clear_module_state->__pyx_n_s_name_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_new);
+ Py_CLEAR(clear_module_state->__pyx_n_s_next_additional_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_notify_on_first_raise_only);
+ Py_CLEAR(clear_module_state->__pyx_n_s_notify_skipped_step_in_because_o);
+ Py_CLEAR(clear_module_state->__pyx_n_s_notify_thread_not_alive);
+ Py_CLEAR(clear_module_state->__pyx_n_s_original_call);
+ Py_CLEAR(clear_module_state->__pyx_n_s_original_step_cmd);
+ Py_CLEAR(clear_module_state->__pyx_n_s_os);
+ Py_CLEAR(clear_module_state->__pyx_n_s_os_path);
+ Py_CLEAR(clear_module_state->__pyx_n_s_path);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pickle);
+ Py_CLEAR(clear_module_state->__pyx_n_s_plugin);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pop);
+ Py_CLEAR(clear_module_state->__pyx_n_s_prev_user_uncaught_exc_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_py_db);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_pyc);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydb_disposed);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydev_bundle);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydev_bundle__pydev_saved_modul);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydev_bundle_pydev_is_thread_al);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydev_bundle_pydev_log);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydev_do_not_trace);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_pydev_execfile_py);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydev_log);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydev_log_exception);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydev_monkey);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_bytecode_u);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_comm_const);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_constants);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_cython);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_pydevd_bundle_pydevd_cython_pyx);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_frame_util);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_utils);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_dont_trace);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_file_utils);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_pydevd_py);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_pydevd_traceproperty_py);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_tracing);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_PickleError);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_checksum);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_result);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_state);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_type);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_PyDBAdditionalThr);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_PyDBFrame);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_SafeCallWrapper);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_ThreadTracer);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_TopLevelThreadTra);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_TopLevelThreadTra_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle__TryExceptContain);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_vtable);
+ Py_CLEAR(clear_module_state->__pyx_n_s_qname);
+ Py_CLEAR(clear_module_state->__pyx_n_s_quitting);
+ Py_CLEAR(clear_module_state->__pyx_n_s_raise_lines);
+ Py_CLEAR(clear_module_state->__pyx_n_s_raise_lines_in_except);
+ Py_CLEAR(clear_module_state->__pyx_n_s_re);
+ Py_CLEAR(clear_module_state->__pyx_n_s_reduce);
+ Py_CLEAR(clear_module_state->__pyx_n_s_reduce_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_reduce_ex);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ref);
+ Py_CLEAR(clear_module_state->__pyx_n_s_remove_additional_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_remove_exception_from_frame);
+ Py_CLEAR(clear_module_state->__pyx_n_s_remove_return_values_flag);
+ Py_CLEAR(clear_module_state->__pyx_n_s_result);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ret);
+ Py_CLEAR(clear_module_state->__pyx_n_s_return);
+ Py_CLEAR(clear_module_state->__pyx_n_s_return_line);
+ Py_CLEAR(clear_module_state->__pyx_n_s_returns);
+ Py_CLEAR(clear_module_state->__pyx_n_s_rfind);
+ Py_CLEAR(clear_module_state->__pyx_n_s_run);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_s_raised_from_within_the_callba);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_s_s);
+ Py_CLEAR(clear_module_state->__pyx_n_s_self);
+ Py_CLEAR(clear_module_state->__pyx_n_s_send_caught_exception_stack);
+ Py_CLEAR(clear_module_state->__pyx_n_s_send_caught_exception_stack_proc);
+ Py_CLEAR(clear_module_state->__pyx_n_s_set);
+ Py_CLEAR(clear_module_state->__pyx_n_s_set_additional_thread_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_set_additional_thread_info_lock);
+ Py_CLEAR(clear_module_state->__pyx_n_s_set_suspend);
+ Py_CLEAR(clear_module_state->__pyx_n_s_set_trace_for_frame_and_parents);
+ Py_CLEAR(clear_module_state->__pyx_n_s_setstate);
+ Py_CLEAR(clear_module_state->__pyx_n_s_setstate_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_should_stop);
+ Py_CLEAR(clear_module_state->__pyx_n_s_should_stop_on_exception);
+ Py_CLEAR(clear_module_state->__pyx_n_s_should_trace_hook);
+ Py_CLEAR(clear_module_state->__pyx_n_s_show_return_values);
+ Py_CLEAR(clear_module_state->__pyx_n_s_skip_on_exceptions_thrown_in_sam);
+ Py_CLEAR(clear_module_state->__pyx_n_s_spec);
+ Py_CLEAR(clear_module_state->__pyx_n_s_st_mtime);
+ Py_CLEAR(clear_module_state->__pyx_n_s_st_size);
+ Py_CLEAR(clear_module_state->__pyx_n_s_startswith);
+ Py_CLEAR(clear_module_state->__pyx_n_s_stat);
+ Py_CLEAR(clear_module_state->__pyx_n_s_state);
+ Py_CLEAR(clear_module_state->__pyx_n_s_stop);
+ Py_CLEAR(clear_module_state->__pyx_n_s_stop_on_unhandled_exception);
+ Py_CLEAR(clear_module_state->__pyx_n_s_stopped);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_stringsource);
+ Py_CLEAR(clear_module_state->__pyx_n_s_suspend);
+ Py_CLEAR(clear_module_state->__pyx_n_s_suspend_other_threads);
+ Py_CLEAR(clear_module_state->__pyx_n_s_suspend_policy);
+ Py_CLEAR(clear_module_state->__pyx_n_s_suspended_at_unhandled);
+ Py_CLEAR(clear_module_state->__pyx_n_s_sys);
+ Py_CLEAR(clear_module_state->__pyx_n_s_t);
+ Py_CLEAR(clear_module_state->__pyx_n_s_tb_frame);
+ Py_CLEAR(clear_module_state->__pyx_n_s_tb_lineno);
+ Py_CLEAR(clear_module_state->__pyx_n_s_tb_next);
+ Py_CLEAR(clear_module_state->__pyx_n_s_test);
+ Py_CLEAR(clear_module_state->__pyx_n_s_thread);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_thread__ident_is_None_in__get_re);
+ Py_CLEAR(clear_module_state->__pyx_n_s_thread_trace_func);
+ Py_CLEAR(clear_module_state->__pyx_n_s_thread_tracer);
+ Py_CLEAR(clear_module_state->__pyx_n_s_threading);
+ Py_CLEAR(clear_module_state->__pyx_n_s_threading_active);
+ Py_CLEAR(clear_module_state->__pyx_n_s_threading_current_thread);
+ Py_CLEAR(clear_module_state->__pyx_n_s_threading_get_ident);
+ Py_CLEAR(clear_module_state->__pyx_n_s_top_level_thread_tracer);
+ Py_CLEAR(clear_module_state->__pyx_n_s_top_level_thread_tracer_no_back);
+ Py_CLEAR(clear_module_state->__pyx_n_s_top_level_thread_tracer_unhandle);
+ Py_CLEAR(clear_module_state->__pyx_n_s_trace);
+ Py_CLEAR(clear_module_state->__pyx_n_s_trace_dispatch);
+ Py_CLEAR(clear_module_state->__pyx_n_s_trace_dispatch_and_unhandled_exc);
+ Py_CLEAR(clear_module_state->__pyx_n_s_trace_exception);
+ Py_CLEAR(clear_module_state->__pyx_n_s_trace_obj);
+ Py_CLEAR(clear_module_state->__pyx_n_s_trace_unhandled_exceptions);
+ Py_CLEAR(clear_module_state->__pyx_n_s_try_exc_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_try_except_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_try_except_infos);
+ Py_CLEAR(clear_module_state->__pyx_n_s_update);
+ Py_CLEAR(clear_module_state->__pyx_n_s_update_stepping_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_use_setstate);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_utf_8);
+ Py_CLEAR(clear_module_state->__pyx_n_s_valid_try_except_infos);
+ Py_CLEAR(clear_module_state->__pyx_n_s_value);
+ Py_CLEAR(clear_module_state->__pyx_n_s_values);
+ Py_CLEAR(clear_module_state->__pyx_n_s_version);
+ Py_CLEAR(clear_module_state->__pyx_n_s_was_just_raised);
+ Py_CLEAR(clear_module_state->__pyx_n_s_weak_thread);
+ Py_CLEAR(clear_module_state->__pyx_n_s_weakref);
+ Py_CLEAR(clear_module_state->__pyx_n_s_writer);
+ Py_CLEAR(clear_module_state->__pyx_int_0);
+ Py_CLEAR(clear_module_state->__pyx_int_1);
+ Py_CLEAR(clear_module_state->__pyx_int_2);
+ Py_CLEAR(clear_module_state->__pyx_int_11);
+ Py_CLEAR(clear_module_state->__pyx_int_111);
+ Py_CLEAR(clear_module_state->__pyx_int_137);
+ Py_CLEAR(clear_module_state->__pyx_int_160);
+ Py_CLEAR(clear_module_state->__pyx_int_2424557);
+ Py_CLEAR(clear_module_state->__pyx_int_16751766);
+ Py_CLEAR(clear_module_state->__pyx_int_18997755);
+ Py_CLEAR(clear_module_state->__pyx_int_61391470);
+ Py_CLEAR(clear_module_state->__pyx_int_63705258);
+ Py_CLEAR(clear_module_state->__pyx_int_64458794);
+ Py_CLEAR(clear_module_state->__pyx_int_66451433);
+ Py_CLEAR(clear_module_state->__pyx_int_70528507);
+ Py_CLEAR(clear_module_state->__pyx_int_84338306);
+ Py_CLEAR(clear_module_state->__pyx_int_125568891);
+ Py_CLEAR(clear_module_state->__pyx_int_169093275);
+ Py_CLEAR(clear_module_state->__pyx_int_171613889);
+ Py_CLEAR(clear_module_state->__pyx_int_192493205);
+ Py_CLEAR(clear_module_state->__pyx_int_210464433);
+ Py_CLEAR(clear_module_state->__pyx_int_221489684);
+ Py_CLEAR(clear_module_state->__pyx_int_230645316);
+ Py_CLEAR(clear_module_state->__pyx_int_232881363);
+ Py_CLEAR(clear_module_state->__pyx_int_255484337);
+ Py_CLEAR(clear_module_state->__pyx_int_neg_1);
+ Py_CLEAR(clear_module_state->__pyx_slice__2);
+ Py_CLEAR(clear_module_state->__pyx_slice__6);
+ Py_CLEAR(clear_module_state->__pyx_tuple__3);
+ Py_CLEAR(clear_module_state->__pyx_tuple__5);
+ Py_CLEAR(clear_module_state->__pyx_tuple__7);
+ Py_CLEAR(clear_module_state->__pyx_tuple__11);
+ Py_CLEAR(clear_module_state->__pyx_tuple__12);
+ Py_CLEAR(clear_module_state->__pyx_tuple__13);
+ Py_CLEAR(clear_module_state->__pyx_tuple__14);
+ Py_CLEAR(clear_module_state->__pyx_tuple__15);
+ Py_CLEAR(clear_module_state->__pyx_tuple__16);
+ Py_CLEAR(clear_module_state->__pyx_tuple__17);
+ Py_CLEAR(clear_module_state->__pyx_tuple__18);
+ Py_CLEAR(clear_module_state->__pyx_tuple__20);
+ Py_CLEAR(clear_module_state->__pyx_tuple__23);
+ Py_CLEAR(clear_module_state->__pyx_tuple__26);
+ Py_CLEAR(clear_module_state->__pyx_tuple__28);
+ Py_CLEAR(clear_module_state->__pyx_tuple__30);
+ Py_CLEAR(clear_module_state->__pyx_tuple__32);
+ Py_CLEAR(clear_module_state->__pyx_tuple__36);
+ Py_CLEAR(clear_module_state->__pyx_tuple__37);
+ Py_CLEAR(clear_module_state->__pyx_tuple__39);
+ Py_CLEAR(clear_module_state->__pyx_tuple__40);
+ Py_CLEAR(clear_module_state->__pyx_tuple__41);
+ Py_CLEAR(clear_module_state->__pyx_tuple__42);
+ Py_CLEAR(clear_module_state->__pyx_tuple__46);
+ Py_CLEAR(clear_module_state->__pyx_tuple__49);
+ Py_CLEAR(clear_module_state->__pyx_tuple__51);
+ Py_CLEAR(clear_module_state->__pyx_tuple__53);
+ Py_CLEAR(clear_module_state->__pyx_tuple__57);
+ Py_CLEAR(clear_module_state->__pyx_tuple__59);
+ Py_CLEAR(clear_module_state->__pyx_tuple__61);
+ Py_CLEAR(clear_module_state->__pyx_tuple__66);
+ Py_CLEAR(clear_module_state->__pyx_tuple__68);
+ Py_CLEAR(clear_module_state->__pyx_tuple__70);
+ Py_CLEAR(clear_module_state->__pyx_tuple__75);
+ Py_CLEAR(clear_module_state->__pyx_tuple__84);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__21);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__22);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__24);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__25);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__27);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__29);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__31);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__33);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__34);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__35);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__38);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__43);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__44);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__45);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__47);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__48);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__50);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__52);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__54);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__55);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__56);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__58);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__60);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__62);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__63);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__64);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__65);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__67);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__69);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__71);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__72);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__73);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__74);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__76);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__77);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__78);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__79);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__80);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__81);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__82);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__83);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__85);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__86);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__87);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__88);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__89);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__90);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__91);
+ return 0;
+}
+#endif
+/* #### Code section: module_state_traverse ### */
+#if CYTHON_USE_MODULE_STATE
+static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
+ __pyx_mstate *traverse_module_state = __pyx_mstate(m);
+ if (!traverse_module_state) return 0;
+ Py_VISIT(traverse_module_state->__pyx_d);
+ Py_VISIT(traverse_module_state->__pyx_b);
+ Py_VISIT(traverse_module_state->__pyx_cython_runtime);
+ Py_VISIT(traverse_module_state->__pyx_empty_tuple);
+ Py_VISIT(traverse_module_state->__pyx_empty_bytes);
+ Py_VISIT(traverse_module_state->__pyx_empty_unicode);
+ #ifdef __Pyx_CyFunction_USED
+ Py_VISIT(traverse_module_state->__pyx_CyFunctionType);
+ #endif
+ #ifdef __Pyx_FusedFunction_USED
+ Py_VISIT(traverse_module_state->__pyx_FusedFunctionType);
+ #endif
+ Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_4type_type);
+ Py_VISIT(traverse_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo);
+ Py_VISIT(traverse_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo);
+ Py_VISIT(traverse_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj);
+ Py_VISIT(traverse_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj);
+ Py_VISIT(traverse_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame);
+ Py_VISIT(traverse_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBFrame);
+ Py_VISIT(traverse_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper);
+ Py_VISIT(traverse_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper);
+ Py_VISIT(traverse_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions);
+ Py_VISIT(traverse_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions);
+ Py_VISIT(traverse_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame);
+ Py_VISIT(traverse_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame);
+ Py_VISIT(traverse_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer);
+ Py_VISIT(traverse_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_ThreadTracer);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_1);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ALL);
+ Py_VISIT(traverse_module_state->__pyx_n_s_AttributeError);
+ Py_VISIT(traverse_module_state->__pyx_n_s_CMD_SET_FUNCTION_BREAK);
+ Py_VISIT(traverse_module_state->__pyx_n_s_DEBUG_START);
+ Py_VISIT(traverse_module_state->__pyx_n_s_DEBUG_START_PY3K);
+ Py_VISIT(traverse_module_state->__pyx_n_s_EXCEPTION_TYPE_HANDLED);
+ Py_VISIT(traverse_module_state->__pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Error_in_linecache_checkcache_r);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Error_in_linecache_getline_r_s_f);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ForkSafeLock);
+ Py_VISIT(traverse_module_state->__pyx_n_s_GeneratorExit);
+ Py_VISIT(traverse_module_state->__pyx_n_s_IGNORE_EXCEPTION_TAG);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_IgnoreException);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Ignore_exception_s_in_library_s);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ImportError);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_6);
+ Py_VISIT(traverse_module_state->__pyx_n_s_KeyboardInterrupt);
+ Py_VISIT(traverse_module_state->__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER);
+ Py_VISIT(traverse_module_state->__pyx_n_s_NO_FTRACE);
+ Py_VISIT(traverse_module_state->__pyx_n_s_NameError);
+ Py_VISIT(traverse_module_state->__pyx_n_s_None);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Not_used_in_sys_monitoring_mode);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PYDEVD_IPYTHON_CONTEXT);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PYDEVD_USE_SYS_MONITORING);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PYDEV_FILE);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PYTHON_SUSPEND);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PickleError);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PyDBAdditionalThreadInfo);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PyDBAdditionalThreadInfo___reduc);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PyDBAdditionalThreadInfo___setst);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PyDBAdditionalThreadInfo__get_re);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PyDBAdditionalThreadInfo__is_ste);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PyDBAdditionalThreadInfo_get_top);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PyDBAdditionalThreadInfo_update);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PyDBFrame);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PyDBFrame___reduce_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PyDBFrame___setstate_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PyDBFrame_do_wait_suspend);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PyDBFrame_handle_user_exception);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PyDBFrame_set_suspend);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PyDBFrame_trace_dispatch);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PyDBFrame_trace_exception);
+ Py_VISIT(traverse_module_state->__pyx_n_s_RETURN_VALUES_DICT);
+ Py_VISIT(traverse_module_state->__pyx_n_s_RuntimeError);
+ Py_VISIT(traverse_module_state->__pyx_n_s_STATE_RUN);
+ Py_VISIT(traverse_module_state->__pyx_n_s_STATE_SUSPEND);
+ Py_VISIT(traverse_module_state->__pyx_n_s_SUPPORT_GEVENT);
+ Py_VISIT(traverse_module_state->__pyx_n_s_SafeCallWrapper);
+ Py_VISIT(traverse_module_state->__pyx_n_s_SafeCallWrapper___reduce_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_SafeCallWrapper___setstate_cytho);
+ Py_VISIT(traverse_module_state->__pyx_n_s_SafeCallWrapper_get_method_objec);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_State_s_Stop_s_Cmd_s_Kill_s);
+ Py_VISIT(traverse_module_state->__pyx_n_s_StopAsyncIteration);
+ Py_VISIT(traverse_module_state->__pyx_n_s_StopIteration);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Stop_inside_ipython_call);
+ Py_VISIT(traverse_module_state->__pyx_n_s_SystemExit);
+ Py_VISIT(traverse_module_state->__pyx_n_s_TRACE_PROPERTY);
+ Py_VISIT(traverse_module_state->__pyx_n_s_Thread);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ThreadTracer);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ThreadTracer___reduce_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ThreadTracer___setstate_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_TopLevelThreadTracerNoBackFrame);
+ Py_VISIT(traverse_module_state->__pyx_n_s_TopLevelThreadTracerNoBackFrame_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_TopLevelThreadTracerNoBackFrame_3);
+ Py_VISIT(traverse_module_state->__pyx_n_s_TopLevelThreadTracerNoBackFrame_4);
+ Py_VISIT(traverse_module_state->__pyx_n_s_TopLevelThreadTracerNoBackFrame_5);
+ Py_VISIT(traverse_module_state->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle);
+ Py_VISIT(traverse_module_state->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_3);
+ Py_VISIT(traverse_module_state->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_4);
+ Py_VISIT(traverse_module_state->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_5);
+ Py_VISIT(traverse_module_state->__pyx_n_s_TryExceptContainerObj);
+ Py_VISIT(traverse_module_state->__pyx_n_s_TryExceptContainerObj___reduce);
+ Py_VISIT(traverse_module_state->__pyx_n_s_TryExceptContainerObj___setstat);
+ Py_VISIT(traverse_module_state->__pyx_n_s_USE_CUSTOM_SYS_CURRENT_FRAMES_MA);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Unable_to_get_topmost_frame_for);
+ Py_VISIT(traverse_module_state->__pyx_kp_s__10);
+ Py_VISIT(traverse_module_state->__pyx_kp_u__10);
+ Py_VISIT(traverse_module_state->__pyx_n_s__19);
+ Py_VISIT(traverse_module_state->__pyx_kp_s__4);
+ Py_VISIT(traverse_module_state->__pyx_kp_s__8);
+ Py_VISIT(traverse_module_state->__pyx_kp_s__9);
+ Py_VISIT(traverse_module_state->__pyx_n_s_abs_real_path_and_base);
+ Py_VISIT(traverse_module_state->__pyx_n_s_absolute_filename);
+ Py_VISIT(traverse_module_state->__pyx_n_s_active);
+ Py_VISIT(traverse_module_state->__pyx_n_s_add);
+ Py_VISIT(traverse_module_state->__pyx_n_s_add_additional_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_add_command);
+ Py_VISIT(traverse_module_state->__pyx_n_s_add_exception_to_frame);
+ Py_VISIT(traverse_module_state->__pyx_n_s_additional_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_any_thread_stepping);
+ Py_VISIT(traverse_module_state->__pyx_n_s_append);
+ Py_VISIT(traverse_module_state->__pyx_n_s_apply_files_filter);
+ Py_VISIT(traverse_module_state->__pyx_n_s_apply_to_settrace);
+ Py_VISIT(traverse_module_state->__pyx_n_s_arg);
+ Py_VISIT(traverse_module_state->__pyx_n_s_args);
+ Py_VISIT(traverse_module_state->__pyx_n_s_args_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines);
+ Py_VISIT(traverse_module_state->__pyx_n_s_basename);
+ Py_VISIT(traverse_module_state->__pyx_n_s_bootstrap);
+ Py_VISIT(traverse_module_state->__pyx_n_s_bootstrap_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_bootstrap_inner);
+ Py_VISIT(traverse_module_state->__pyx_n_s_bootstrap_inner_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_break_on_caught_exceptions);
+ Py_VISIT(traverse_module_state->__pyx_n_s_break_on_user_uncaught_exception);
+ Py_VISIT(traverse_module_state->__pyx_n_s_breakpoints);
+ Py_VISIT(traverse_module_state->__pyx_n_s_call);
+ Py_VISIT(traverse_module_state->__pyx_n_s_call_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_can_skip);
+ Py_VISIT(traverse_module_state->__pyx_n_s_canonical_normalized_filename);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_cell);
+ Py_VISIT(traverse_module_state->__pyx_n_s_check_excs);
+ Py_VISIT(traverse_module_state->__pyx_n_s_check_trace_obj);
+ Py_VISIT(traverse_module_state->__pyx_n_s_checkcache);
+ Py_VISIT(traverse_module_state->__pyx_n_s_children_variants);
+ Py_VISIT(traverse_module_state->__pyx_n_s_class_getitem);
+ Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback);
+ Py_VISIT(traverse_module_state->__pyx_n_s_cmd_factory);
+ Py_VISIT(traverse_module_state->__pyx_n_s_cmd_step_into);
+ Py_VISIT(traverse_module_state->__pyx_n_s_cmd_step_over);
+ Py_VISIT(traverse_module_state->__pyx_n_s_co_filename);
+ Py_VISIT(traverse_module_state->__pyx_n_s_co_firstlineno);
+ Py_VISIT(traverse_module_state->__pyx_n_s_co_flags);
+ Py_VISIT(traverse_module_state->__pyx_n_s_co_name);
+ Py_VISIT(traverse_module_state->__pyx_n_s_collect_return_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_collect_try_except_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_compile);
+ Py_VISIT(traverse_module_state->__pyx_n_s_condition);
+ Py_VISIT(traverse_module_state->__pyx_n_s_constant_to_str);
+ Py_VISIT(traverse_module_state->__pyx_n_s_constructed_tid_to_last_frame);
+ Py_VISIT(traverse_module_state->__pyx_n_s_container_obj);
+ Py_VISIT(traverse_module_state->__pyx_n_s_critical);
+ Py_VISIT(traverse_module_state->__pyx_n_s_curr_stat);
+ Py_VISIT(traverse_module_state->__pyx_n_s_current_frames);
+ Py_VISIT(traverse_module_state->__pyx_n_s_custom_key);
+ Py_VISIT(traverse_module_state->__pyx_n_s_debug);
+ Py_VISIT(traverse_module_state->__pyx_n_s_dict);
+ Py_VISIT(traverse_module_state->__pyx_n_s_dict_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_dis);
+ Py_VISIT(traverse_module_state->__pyx_kp_u_disable);
+ Py_VISIT(traverse_module_state->__pyx_n_s_disable_tracing);
+ Py_VISIT(traverse_module_state->__pyx_n_s_do_wait_suspend);
+ Py_VISIT(traverse_module_state->__pyx_kp_u_enable);
+ Py_VISIT(traverse_module_state->__pyx_n_s_enable_tracing);
+ Py_VISIT(traverse_module_state->__pyx_n_s_encode);
+ Py_VISIT(traverse_module_state->__pyx_n_s_endswith);
+ Py_VISIT(traverse_module_state->__pyx_n_s_enter);
+ Py_VISIT(traverse_module_state->__pyx_n_s_event);
+ Py_VISIT(traverse_module_state->__pyx_n_s_exc_break);
+ Py_VISIT(traverse_module_state->__pyx_n_s_exc_break_caught);
+ Py_VISIT(traverse_module_state->__pyx_n_s_exc_break_user);
+ Py_VISIT(traverse_module_state->__pyx_n_s_exc_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_exc_lineno);
+ Py_VISIT(traverse_module_state->__pyx_n_s_except_line);
+ Py_VISIT(traverse_module_state->__pyx_n_s_exception);
+ Py_VISIT(traverse_module_state->__pyx_n_s_exception_break);
+ Py_VISIT(traverse_module_state->__pyx_n_s_exception_breakpoint);
+ Py_VISIT(traverse_module_state->__pyx_n_s_exception_type);
+ Py_VISIT(traverse_module_state->__pyx_n_s_exclude_exception_by_filter);
+ Py_VISIT(traverse_module_state->__pyx_n_s_exec);
+ Py_VISIT(traverse_module_state->__pyx_n_s_execfile);
+ Py_VISIT(traverse_module_state->__pyx_n_s_exit);
+ Py_VISIT(traverse_module_state->__pyx_n_s_expression);
+ Py_VISIT(traverse_module_state->__pyx_n_s_f);
+ Py_VISIT(traverse_module_state->__pyx_n_s_f_back);
+ Py_VISIT(traverse_module_state->__pyx_n_s_f_code);
+ Py_VISIT(traverse_module_state->__pyx_n_s_f_globals);
+ Py_VISIT(traverse_module_state->__pyx_n_s_f_lasti);
+ Py_VISIT(traverse_module_state->__pyx_n_s_f_lineno);
+ Py_VISIT(traverse_module_state->__pyx_n_s_f_locals);
+ Py_VISIT(traverse_module_state->__pyx_n_s_f_trace);
+ Py_VISIT(traverse_module_state->__pyx_n_s_f_unhandled);
+ Py_VISIT(traverse_module_state->__pyx_n_s_filename);
+ Py_VISIT(traverse_module_state->__pyx_n_s_filename_to_lines_where_exceptio);
+ Py_VISIT(traverse_module_state->__pyx_n_s_filename_to_stat_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_findlinestarts);
+ Py_VISIT(traverse_module_state->__pyx_n_s_fix_top_level_trace_and_get_trac);
+ Py_VISIT(traverse_module_state->__pyx_n_s_force_only_unhandled_tracer);
+ Py_VISIT(traverse_module_state->__pyx_n_s_frame);
+ Py_VISIT(traverse_module_state->__pyx_n_s_frame_cache_key);
+ Py_VISIT(traverse_module_state->__pyx_n_s_frame_id_to_frame);
+ Py_VISIT(traverse_module_state->__pyx_n_s_frame_skips_cache);
+ Py_VISIT(traverse_module_state->__pyx_n_s_frame_trace_dispatch);
+ Py_VISIT(traverse_module_state->__pyx_n_s_from_user_input);
+ Py_VISIT(traverse_module_state->__pyx_n_s_func_name);
+ Py_VISIT(traverse_module_state->__pyx_n_s_function_breakpoint_name_to_brea);
+ Py_VISIT(traverse_module_state->__pyx_kp_u_gc);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_abs_path_real_path_and_base);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_breakpoint);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_clsname_for_code);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_current_thread_id);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_exception_breakpoint);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_file_type);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_global_debugger);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_internal_queue_and_event);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_method_object);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_related_thread);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_smart_step_into_variant_from);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_thread_id);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_topmost_frame);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_trace_dispatch_func);
+ Py_VISIT(traverse_module_state->__pyx_n_s_getline);
+ Py_VISIT(traverse_module_state->__pyx_n_s_getstate);
+ Py_VISIT(traverse_module_state->__pyx_n_s_global_cache_frame_skips);
+ Py_VISIT(traverse_module_state->__pyx_n_s_global_cache_skips);
+ Py_VISIT(traverse_module_state->__pyx_n_s_global_notify_skipped_step_in_l);
+ Py_VISIT(traverse_module_state->__pyx_n_s_handle_breakpoint_condition);
+ Py_VISIT(traverse_module_state->__pyx_n_s_handle_breakpoint_expression);
+ Py_VISIT(traverse_module_state->__pyx_n_s_handle_exception);
+ Py_VISIT(traverse_module_state->__pyx_n_s_handle_user_exception);
+ Py_VISIT(traverse_module_state->__pyx_n_s_has_condition);
+ Py_VISIT(traverse_module_state->__pyx_n_s_has_plugin_exception_breaks);
+ Py_VISIT(traverse_module_state->__pyx_n_s_has_plugin_line_breaks);
+ Py_VISIT(traverse_module_state->__pyx_n_s_i);
+ Py_VISIT(traverse_module_state->__pyx_n_s_id);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ident);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ident_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ignore_exception_trace);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ignore_exceptions_thrown_in_line);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ignore_system_exit_code);
+ Py_VISIT(traverse_module_state->__pyx_n_s_import);
+ Py_VISIT(traverse_module_state->__pyx_n_s_in_project_scope);
+ Py_VISIT(traverse_module_state->__pyx_n_s_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_initial_trace_obj);
+ Py_VISIT(traverse_module_state->__pyx_n_s_initializing);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_invalid);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_files_filter_enabled);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_line_in_except_block);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_line_in_try_block);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_logpoint);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_stepping);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_stopped);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_thread_alive);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_unhandled_exception);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_user_uncaught);
+ Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled);
+ Py_VISIT(traverse_module_state->__pyx_n_s_j);
+ Py_VISIT(traverse_module_state->__pyx_n_s_just_raised);
+ Py_VISIT(traverse_module_state->__pyx_n_s_kwargs);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_lambda);
+ Py_VISIT(traverse_module_state->__pyx_n_s_last_raise_line);
+ Py_VISIT(traverse_module_state->__pyx_n_s_last_stat);
+ Py_VISIT(traverse_module_state->__pyx_n_s_line);
+ Py_VISIT(traverse_module_state->__pyx_n_s_linecache);
+ Py_VISIT(traverse_module_state->__pyx_n_s_lines);
+ Py_VISIT(traverse_module_state->__pyx_n_s_lines_ignored);
+ Py_VISIT(traverse_module_state->__pyx_n_s_linesep);
+ Py_VISIT(traverse_module_state->__pyx_n_s_main);
+ Py_VISIT(traverse_module_state->__pyx_n_s_main_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_make_console_message);
+ Py_VISIT(traverse_module_state->__pyx_n_s_make_io_message);
+ Py_VISIT(traverse_module_state->__pyx_n_s_match);
+ Py_VISIT(traverse_module_state->__pyx_n_s_maybe_user_uncaught_exc_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_merged);
+ Py_VISIT(traverse_module_state->__pyx_n_s_method_object);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_module);
+ Py_VISIT(traverse_module_state->__pyx_n_s_name);
+ Py_VISIT(traverse_module_state->__pyx_n_s_name_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_new);
+ Py_VISIT(traverse_module_state->__pyx_n_s_next_additional_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_notify_on_first_raise_only);
+ Py_VISIT(traverse_module_state->__pyx_n_s_notify_skipped_step_in_because_o);
+ Py_VISIT(traverse_module_state->__pyx_n_s_notify_thread_not_alive);
+ Py_VISIT(traverse_module_state->__pyx_n_s_original_call);
+ Py_VISIT(traverse_module_state->__pyx_n_s_original_step_cmd);
+ Py_VISIT(traverse_module_state->__pyx_n_s_os);
+ Py_VISIT(traverse_module_state->__pyx_n_s_os_path);
+ Py_VISIT(traverse_module_state->__pyx_n_s_path);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pickle);
+ Py_VISIT(traverse_module_state->__pyx_n_s_plugin);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pop);
+ Py_VISIT(traverse_module_state->__pyx_n_s_prev_user_uncaught_exc_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_py_db);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_pyc);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydb_disposed);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydev_bundle);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydev_bundle__pydev_saved_modul);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydev_bundle_pydev_is_thread_al);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydev_bundle_pydev_log);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydev_do_not_trace);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_pydev_execfile_py);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydev_log);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydev_log_exception);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydev_monkey);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_bytecode_u);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_comm_const);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_constants);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_cython);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_pydevd_bundle_pydevd_cython_pyx);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_frame_util);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_utils);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_dont_trace);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_file_utils);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_pydevd_py);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_pydevd_traceproperty_py);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_tracing);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_PickleError);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_checksum);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_result);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_state);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_type);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_PyDBAdditionalThr);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_PyDBFrame);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_SafeCallWrapper);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_ThreadTracer);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_TopLevelThreadTra);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_TopLevelThreadTra_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle__TryExceptContain);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_vtable);
+ Py_VISIT(traverse_module_state->__pyx_n_s_qname);
+ Py_VISIT(traverse_module_state->__pyx_n_s_quitting);
+ Py_VISIT(traverse_module_state->__pyx_n_s_raise_lines);
+ Py_VISIT(traverse_module_state->__pyx_n_s_raise_lines_in_except);
+ Py_VISIT(traverse_module_state->__pyx_n_s_re);
+ Py_VISIT(traverse_module_state->__pyx_n_s_reduce);
+ Py_VISIT(traverse_module_state->__pyx_n_s_reduce_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_reduce_ex);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ref);
+ Py_VISIT(traverse_module_state->__pyx_n_s_remove_additional_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_remove_exception_from_frame);
+ Py_VISIT(traverse_module_state->__pyx_n_s_remove_return_values_flag);
+ Py_VISIT(traverse_module_state->__pyx_n_s_result);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ret);
+ Py_VISIT(traverse_module_state->__pyx_n_s_return);
+ Py_VISIT(traverse_module_state->__pyx_n_s_return_line);
+ Py_VISIT(traverse_module_state->__pyx_n_s_returns);
+ Py_VISIT(traverse_module_state->__pyx_n_s_rfind);
+ Py_VISIT(traverse_module_state->__pyx_n_s_run);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_s_raised_from_within_the_callba);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_s_s);
+ Py_VISIT(traverse_module_state->__pyx_n_s_self);
+ Py_VISIT(traverse_module_state->__pyx_n_s_send_caught_exception_stack);
+ Py_VISIT(traverse_module_state->__pyx_n_s_send_caught_exception_stack_proc);
+ Py_VISIT(traverse_module_state->__pyx_n_s_set);
+ Py_VISIT(traverse_module_state->__pyx_n_s_set_additional_thread_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_set_additional_thread_info_lock);
+ Py_VISIT(traverse_module_state->__pyx_n_s_set_suspend);
+ Py_VISIT(traverse_module_state->__pyx_n_s_set_trace_for_frame_and_parents);
+ Py_VISIT(traverse_module_state->__pyx_n_s_setstate);
+ Py_VISIT(traverse_module_state->__pyx_n_s_setstate_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_should_stop);
+ Py_VISIT(traverse_module_state->__pyx_n_s_should_stop_on_exception);
+ Py_VISIT(traverse_module_state->__pyx_n_s_should_trace_hook);
+ Py_VISIT(traverse_module_state->__pyx_n_s_show_return_values);
+ Py_VISIT(traverse_module_state->__pyx_n_s_skip_on_exceptions_thrown_in_sam);
+ Py_VISIT(traverse_module_state->__pyx_n_s_spec);
+ Py_VISIT(traverse_module_state->__pyx_n_s_st_mtime);
+ Py_VISIT(traverse_module_state->__pyx_n_s_st_size);
+ Py_VISIT(traverse_module_state->__pyx_n_s_startswith);
+ Py_VISIT(traverse_module_state->__pyx_n_s_stat);
+ Py_VISIT(traverse_module_state->__pyx_n_s_state);
+ Py_VISIT(traverse_module_state->__pyx_n_s_stop);
+ Py_VISIT(traverse_module_state->__pyx_n_s_stop_on_unhandled_exception);
+ Py_VISIT(traverse_module_state->__pyx_n_s_stopped);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_stringsource);
+ Py_VISIT(traverse_module_state->__pyx_n_s_suspend);
+ Py_VISIT(traverse_module_state->__pyx_n_s_suspend_other_threads);
+ Py_VISIT(traverse_module_state->__pyx_n_s_suspend_policy);
+ Py_VISIT(traverse_module_state->__pyx_n_s_suspended_at_unhandled);
+ Py_VISIT(traverse_module_state->__pyx_n_s_sys);
+ Py_VISIT(traverse_module_state->__pyx_n_s_t);
+ Py_VISIT(traverse_module_state->__pyx_n_s_tb_frame);
+ Py_VISIT(traverse_module_state->__pyx_n_s_tb_lineno);
+ Py_VISIT(traverse_module_state->__pyx_n_s_tb_next);
+ Py_VISIT(traverse_module_state->__pyx_n_s_test);
+ Py_VISIT(traverse_module_state->__pyx_n_s_thread);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_thread__ident_is_None_in__get_re);
+ Py_VISIT(traverse_module_state->__pyx_n_s_thread_trace_func);
+ Py_VISIT(traverse_module_state->__pyx_n_s_thread_tracer);
+ Py_VISIT(traverse_module_state->__pyx_n_s_threading);
+ Py_VISIT(traverse_module_state->__pyx_n_s_threading_active);
+ Py_VISIT(traverse_module_state->__pyx_n_s_threading_current_thread);
+ Py_VISIT(traverse_module_state->__pyx_n_s_threading_get_ident);
+ Py_VISIT(traverse_module_state->__pyx_n_s_top_level_thread_tracer);
+ Py_VISIT(traverse_module_state->__pyx_n_s_top_level_thread_tracer_no_back);
+ Py_VISIT(traverse_module_state->__pyx_n_s_top_level_thread_tracer_unhandle);
+ Py_VISIT(traverse_module_state->__pyx_n_s_trace);
+ Py_VISIT(traverse_module_state->__pyx_n_s_trace_dispatch);
+ Py_VISIT(traverse_module_state->__pyx_n_s_trace_dispatch_and_unhandled_exc);
+ Py_VISIT(traverse_module_state->__pyx_n_s_trace_exception);
+ Py_VISIT(traverse_module_state->__pyx_n_s_trace_obj);
+ Py_VISIT(traverse_module_state->__pyx_n_s_trace_unhandled_exceptions);
+ Py_VISIT(traverse_module_state->__pyx_n_s_try_exc_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_try_except_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_try_except_infos);
+ Py_VISIT(traverse_module_state->__pyx_n_s_update);
+ Py_VISIT(traverse_module_state->__pyx_n_s_update_stepping_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_use_setstate);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_utf_8);
+ Py_VISIT(traverse_module_state->__pyx_n_s_valid_try_except_infos);
+ Py_VISIT(traverse_module_state->__pyx_n_s_value);
+ Py_VISIT(traverse_module_state->__pyx_n_s_values);
+ Py_VISIT(traverse_module_state->__pyx_n_s_version);
+ Py_VISIT(traverse_module_state->__pyx_n_s_was_just_raised);
+ Py_VISIT(traverse_module_state->__pyx_n_s_weak_thread);
+ Py_VISIT(traverse_module_state->__pyx_n_s_weakref);
+ Py_VISIT(traverse_module_state->__pyx_n_s_writer);
+ Py_VISIT(traverse_module_state->__pyx_int_0);
+ Py_VISIT(traverse_module_state->__pyx_int_1);
+ Py_VISIT(traverse_module_state->__pyx_int_2);
+ Py_VISIT(traverse_module_state->__pyx_int_11);
+ Py_VISIT(traverse_module_state->__pyx_int_111);
+ Py_VISIT(traverse_module_state->__pyx_int_137);
+ Py_VISIT(traverse_module_state->__pyx_int_160);
+ Py_VISIT(traverse_module_state->__pyx_int_2424557);
+ Py_VISIT(traverse_module_state->__pyx_int_16751766);
+ Py_VISIT(traverse_module_state->__pyx_int_18997755);
+ Py_VISIT(traverse_module_state->__pyx_int_61391470);
+ Py_VISIT(traverse_module_state->__pyx_int_63705258);
+ Py_VISIT(traverse_module_state->__pyx_int_64458794);
+ Py_VISIT(traverse_module_state->__pyx_int_66451433);
+ Py_VISIT(traverse_module_state->__pyx_int_70528507);
+ Py_VISIT(traverse_module_state->__pyx_int_84338306);
+ Py_VISIT(traverse_module_state->__pyx_int_125568891);
+ Py_VISIT(traverse_module_state->__pyx_int_169093275);
+ Py_VISIT(traverse_module_state->__pyx_int_171613889);
+ Py_VISIT(traverse_module_state->__pyx_int_192493205);
+ Py_VISIT(traverse_module_state->__pyx_int_210464433);
+ Py_VISIT(traverse_module_state->__pyx_int_221489684);
+ Py_VISIT(traverse_module_state->__pyx_int_230645316);
+ Py_VISIT(traverse_module_state->__pyx_int_232881363);
+ Py_VISIT(traverse_module_state->__pyx_int_255484337);
+ Py_VISIT(traverse_module_state->__pyx_int_neg_1);
+ Py_VISIT(traverse_module_state->__pyx_slice__2);
+ Py_VISIT(traverse_module_state->__pyx_slice__6);
+ Py_VISIT(traverse_module_state->__pyx_tuple__3);
+ Py_VISIT(traverse_module_state->__pyx_tuple__5);
+ Py_VISIT(traverse_module_state->__pyx_tuple__7);
+ Py_VISIT(traverse_module_state->__pyx_tuple__11);
+ Py_VISIT(traverse_module_state->__pyx_tuple__12);
+ Py_VISIT(traverse_module_state->__pyx_tuple__13);
+ Py_VISIT(traverse_module_state->__pyx_tuple__14);
+ Py_VISIT(traverse_module_state->__pyx_tuple__15);
+ Py_VISIT(traverse_module_state->__pyx_tuple__16);
+ Py_VISIT(traverse_module_state->__pyx_tuple__17);
+ Py_VISIT(traverse_module_state->__pyx_tuple__18);
+ Py_VISIT(traverse_module_state->__pyx_tuple__20);
+ Py_VISIT(traverse_module_state->__pyx_tuple__23);
+ Py_VISIT(traverse_module_state->__pyx_tuple__26);
+ Py_VISIT(traverse_module_state->__pyx_tuple__28);
+ Py_VISIT(traverse_module_state->__pyx_tuple__30);
+ Py_VISIT(traverse_module_state->__pyx_tuple__32);
+ Py_VISIT(traverse_module_state->__pyx_tuple__36);
+ Py_VISIT(traverse_module_state->__pyx_tuple__37);
+ Py_VISIT(traverse_module_state->__pyx_tuple__39);
+ Py_VISIT(traverse_module_state->__pyx_tuple__40);
+ Py_VISIT(traverse_module_state->__pyx_tuple__41);
+ Py_VISIT(traverse_module_state->__pyx_tuple__42);
+ Py_VISIT(traverse_module_state->__pyx_tuple__46);
+ Py_VISIT(traverse_module_state->__pyx_tuple__49);
+ Py_VISIT(traverse_module_state->__pyx_tuple__51);
+ Py_VISIT(traverse_module_state->__pyx_tuple__53);
+ Py_VISIT(traverse_module_state->__pyx_tuple__57);
+ Py_VISIT(traverse_module_state->__pyx_tuple__59);
+ Py_VISIT(traverse_module_state->__pyx_tuple__61);
+ Py_VISIT(traverse_module_state->__pyx_tuple__66);
+ Py_VISIT(traverse_module_state->__pyx_tuple__68);
+ Py_VISIT(traverse_module_state->__pyx_tuple__70);
+ Py_VISIT(traverse_module_state->__pyx_tuple__75);
+ Py_VISIT(traverse_module_state->__pyx_tuple__84);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__21);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__22);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__24);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__25);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__27);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__29);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__31);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__33);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__34);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__35);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__38);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__43);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__44);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__45);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__47);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__48);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__50);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__52);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__54);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__55);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__56);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__58);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__60);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__62);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__63);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__64);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__65);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__67);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__69);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__71);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__72);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__73);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__74);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__76);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__77);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__78);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__79);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__80);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__81);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__82);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__83);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__85);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__86);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__87);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__88);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__89);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__90);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__91);
+ return 0;
+}
+#endif
+/* #### Code section: module_state_defines ### */
+#define __pyx_d __pyx_mstate_global->__pyx_d
+#define __pyx_b __pyx_mstate_global->__pyx_b
+#define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime
+#define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple
+#define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes
+#define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode
+#ifdef __Pyx_CyFunction_USED
+#define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType
+#endif
+#ifdef __Pyx_FusedFunction_USED
+#define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType
+#endif
+#ifdef __Pyx_Generator_USED
+#define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType
+#endif
+#ifdef __Pyx_IterableCoroutine_USED
+#define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType
+#endif
+#ifdef __Pyx_Coroutine_USED
+#define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType
+#endif
+#ifdef __Pyx_Coroutine_USED
+#define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType
+#endif
+#if CYTHON_USE_MODULE_STATE
+#endif
+#if CYTHON_USE_MODULE_STATE
+#endif
+#if CYTHON_USE_MODULE_STATE
+#endif
+#if CYTHON_USE_MODULE_STATE
+#endif
+#define __pyx_ptype_7cpython_4type_type __pyx_mstate_global->__pyx_ptype_7cpython_4type_type
+#if CYTHON_USE_MODULE_STATE
+#endif
+#if CYTHON_USE_MODULE_STATE
+#endif
+#if CYTHON_USE_MODULE_STATE
+#endif
+#if CYTHON_USE_MODULE_STATE
+#define __pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo __pyx_mstate_global->__pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo
+#define __pyx_type_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj __pyx_mstate_global->__pyx_type_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj
+#define __pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBFrame __pyx_mstate_global->__pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBFrame
+#define __pyx_type_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper __pyx_mstate_global->__pyx_type_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper
+#define __pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions __pyx_mstate_global->__pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions
+#define __pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame __pyx_mstate_global->__pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame
+#define __pyx_type_14_pydevd_bundle_13pydevd_cython_ThreadTracer __pyx_mstate_global->__pyx_type_14_pydevd_bundle_13pydevd_cython_ThreadTracer
+#endif
+#define __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo __pyx_mstate_global->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo
+#define __pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj __pyx_mstate_global->__pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj
+#define __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame __pyx_mstate_global->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame
+#define __pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper __pyx_mstate_global->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper
+#define __pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions __pyx_mstate_global->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions
+#define __pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame __pyx_mstate_global->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame
+#define __pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer __pyx_mstate_global->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer
+#define __pyx_kp_s_ __pyx_mstate_global->__pyx_kp_s_
+#define __pyx_kp_s_1 __pyx_mstate_global->__pyx_kp_s_1
+#define __pyx_n_s_ALL __pyx_mstate_global->__pyx_n_s_ALL
+#define __pyx_n_s_AttributeError __pyx_mstate_global->__pyx_n_s_AttributeError
+#define __pyx_n_s_CMD_SET_FUNCTION_BREAK __pyx_mstate_global->__pyx_n_s_CMD_SET_FUNCTION_BREAK
+#define __pyx_n_s_DEBUG_START __pyx_mstate_global->__pyx_n_s_DEBUG_START
+#define __pyx_n_s_DEBUG_START_PY3K __pyx_mstate_global->__pyx_n_s_DEBUG_START_PY3K
+#define __pyx_n_s_EXCEPTION_TYPE_HANDLED __pyx_mstate_global->__pyx_n_s_EXCEPTION_TYPE_HANDLED
+#define __pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED __pyx_mstate_global->__pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED
+#define __pyx_kp_s_Error_in_linecache_checkcache_r __pyx_mstate_global->__pyx_kp_s_Error_in_linecache_checkcache_r
+#define __pyx_kp_s_Error_in_linecache_getline_r_s_f __pyx_mstate_global->__pyx_kp_s_Error_in_linecache_getline_r_s_f
+#define __pyx_n_s_ForkSafeLock __pyx_mstate_global->__pyx_n_s_ForkSafeLock
+#define __pyx_n_s_GeneratorExit __pyx_mstate_global->__pyx_n_s_GeneratorExit
+#define __pyx_n_s_IGNORE_EXCEPTION_TAG __pyx_mstate_global->__pyx_n_s_IGNORE_EXCEPTION_TAG
+#define __pyx_kp_s_IgnoreException __pyx_mstate_global->__pyx_kp_s_IgnoreException
+#define __pyx_kp_s_Ignore_exception_s_in_library_s __pyx_mstate_global->__pyx_kp_s_Ignore_exception_s_in_library_s
+#define __pyx_n_s_ImportError __pyx_mstate_global->__pyx_n_s_ImportError
+#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0
+#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2
+#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3
+#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4
+#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5
+#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_6 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_6
+#define __pyx_n_s_KeyboardInterrupt __pyx_mstate_global->__pyx_n_s_KeyboardInterrupt
+#define __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER __pyx_mstate_global->__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER
+#define __pyx_n_s_NO_FTRACE __pyx_mstate_global->__pyx_n_s_NO_FTRACE
+#define __pyx_n_s_NameError __pyx_mstate_global->__pyx_n_s_NameError
+#define __pyx_n_s_None __pyx_mstate_global->__pyx_n_s_None
+#define __pyx_kp_s_Not_used_in_sys_monitoring_mode __pyx_mstate_global->__pyx_kp_s_Not_used_in_sys_monitoring_mode
+#define __pyx_n_s_PYDEVD_IPYTHON_CONTEXT __pyx_mstate_global->__pyx_n_s_PYDEVD_IPYTHON_CONTEXT
+#define __pyx_n_s_PYDEVD_USE_SYS_MONITORING __pyx_mstate_global->__pyx_n_s_PYDEVD_USE_SYS_MONITORING
+#define __pyx_n_s_PYDEV_FILE __pyx_mstate_global->__pyx_n_s_PYDEV_FILE
+#define __pyx_n_s_PYTHON_SUSPEND __pyx_mstate_global->__pyx_n_s_PYTHON_SUSPEND
+#define __pyx_n_s_PickleError __pyx_mstate_global->__pyx_n_s_PickleError
+#define __pyx_n_s_PyDBAdditionalThreadInfo __pyx_mstate_global->__pyx_n_s_PyDBAdditionalThreadInfo
+#define __pyx_n_s_PyDBAdditionalThreadInfo___reduc __pyx_mstate_global->__pyx_n_s_PyDBAdditionalThreadInfo___reduc
+#define __pyx_n_s_PyDBAdditionalThreadInfo___setst __pyx_mstate_global->__pyx_n_s_PyDBAdditionalThreadInfo___setst
+#define __pyx_n_s_PyDBAdditionalThreadInfo__get_re __pyx_mstate_global->__pyx_n_s_PyDBAdditionalThreadInfo__get_re
+#define __pyx_n_s_PyDBAdditionalThreadInfo__is_ste __pyx_mstate_global->__pyx_n_s_PyDBAdditionalThreadInfo__is_ste
+#define __pyx_n_s_PyDBAdditionalThreadInfo_get_top __pyx_mstate_global->__pyx_n_s_PyDBAdditionalThreadInfo_get_top
+#define __pyx_n_s_PyDBAdditionalThreadInfo_update __pyx_mstate_global->__pyx_n_s_PyDBAdditionalThreadInfo_update
+#define __pyx_n_s_PyDBFrame __pyx_mstate_global->__pyx_n_s_PyDBFrame
+#define __pyx_n_s_PyDBFrame___reduce_cython __pyx_mstate_global->__pyx_n_s_PyDBFrame___reduce_cython
+#define __pyx_n_s_PyDBFrame___setstate_cython __pyx_mstate_global->__pyx_n_s_PyDBFrame___setstate_cython
+#define __pyx_n_s_PyDBFrame_do_wait_suspend __pyx_mstate_global->__pyx_n_s_PyDBFrame_do_wait_suspend
+#define __pyx_n_s_PyDBFrame_handle_user_exception __pyx_mstate_global->__pyx_n_s_PyDBFrame_handle_user_exception
+#define __pyx_n_s_PyDBFrame_set_suspend __pyx_mstate_global->__pyx_n_s_PyDBFrame_set_suspend
+#define __pyx_n_s_PyDBFrame_trace_dispatch __pyx_mstate_global->__pyx_n_s_PyDBFrame_trace_dispatch
+#define __pyx_n_s_PyDBFrame_trace_exception __pyx_mstate_global->__pyx_n_s_PyDBFrame_trace_exception
+#define __pyx_n_s_RETURN_VALUES_DICT __pyx_mstate_global->__pyx_n_s_RETURN_VALUES_DICT
+#define __pyx_n_s_RuntimeError __pyx_mstate_global->__pyx_n_s_RuntimeError
+#define __pyx_n_s_STATE_RUN __pyx_mstate_global->__pyx_n_s_STATE_RUN
+#define __pyx_n_s_STATE_SUSPEND __pyx_mstate_global->__pyx_n_s_STATE_SUSPEND
+#define __pyx_n_s_SUPPORT_GEVENT __pyx_mstate_global->__pyx_n_s_SUPPORT_GEVENT
+#define __pyx_n_s_SafeCallWrapper __pyx_mstate_global->__pyx_n_s_SafeCallWrapper
+#define __pyx_n_s_SafeCallWrapper___reduce_cython __pyx_mstate_global->__pyx_n_s_SafeCallWrapper___reduce_cython
+#define __pyx_n_s_SafeCallWrapper___setstate_cytho __pyx_mstate_global->__pyx_n_s_SafeCallWrapper___setstate_cytho
+#define __pyx_n_s_SafeCallWrapper_get_method_objec __pyx_mstate_global->__pyx_n_s_SafeCallWrapper_get_method_objec
+#define __pyx_kp_s_State_s_Stop_s_Cmd_s_Kill_s __pyx_mstate_global->__pyx_kp_s_State_s_Stop_s_Cmd_s_Kill_s
+#define __pyx_n_s_StopAsyncIteration __pyx_mstate_global->__pyx_n_s_StopAsyncIteration
+#define __pyx_n_s_StopIteration __pyx_mstate_global->__pyx_n_s_StopIteration
+#define __pyx_kp_s_Stop_inside_ipython_call __pyx_mstate_global->__pyx_kp_s_Stop_inside_ipython_call
+#define __pyx_n_s_SystemExit __pyx_mstate_global->__pyx_n_s_SystemExit
+#define __pyx_n_s_TRACE_PROPERTY __pyx_mstate_global->__pyx_n_s_TRACE_PROPERTY
+#define __pyx_n_s_Thread __pyx_mstate_global->__pyx_n_s_Thread
+#define __pyx_n_s_ThreadTracer __pyx_mstate_global->__pyx_n_s_ThreadTracer
+#define __pyx_n_s_ThreadTracer___reduce_cython __pyx_mstate_global->__pyx_n_s_ThreadTracer___reduce_cython
+#define __pyx_n_s_ThreadTracer___setstate_cython __pyx_mstate_global->__pyx_n_s_ThreadTracer___setstate_cython
+#define __pyx_n_s_TopLevelThreadTracerNoBackFrame __pyx_mstate_global->__pyx_n_s_TopLevelThreadTracerNoBackFrame
+#define __pyx_n_s_TopLevelThreadTracerNoBackFrame_2 __pyx_mstate_global->__pyx_n_s_TopLevelThreadTracerNoBackFrame_2
+#define __pyx_n_s_TopLevelThreadTracerNoBackFrame_3 __pyx_mstate_global->__pyx_n_s_TopLevelThreadTracerNoBackFrame_3
+#define __pyx_n_s_TopLevelThreadTracerNoBackFrame_4 __pyx_mstate_global->__pyx_n_s_TopLevelThreadTracerNoBackFrame_4
+#define __pyx_n_s_TopLevelThreadTracerNoBackFrame_5 __pyx_mstate_global->__pyx_n_s_TopLevelThreadTracerNoBackFrame_5
+#define __pyx_n_s_TopLevelThreadTracerOnlyUnhandle __pyx_mstate_global->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle
+#define __pyx_n_s_TopLevelThreadTracerOnlyUnhandle_2 __pyx_mstate_global->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_2
+#define __pyx_n_s_TopLevelThreadTracerOnlyUnhandle_3 __pyx_mstate_global->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_3
+#define __pyx_n_s_TopLevelThreadTracerOnlyUnhandle_4 __pyx_mstate_global->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_4
+#define __pyx_n_s_TopLevelThreadTracerOnlyUnhandle_5 __pyx_mstate_global->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_5
+#define __pyx_n_s_TryExceptContainerObj __pyx_mstate_global->__pyx_n_s_TryExceptContainerObj
+#define __pyx_n_s_TryExceptContainerObj___reduce __pyx_mstate_global->__pyx_n_s_TryExceptContainerObj___reduce
+#define __pyx_n_s_TryExceptContainerObj___setstat __pyx_mstate_global->__pyx_n_s_TryExceptContainerObj___setstat
+#define __pyx_n_s_USE_CUSTOM_SYS_CURRENT_FRAMES_MA __pyx_mstate_global->__pyx_n_s_USE_CUSTOM_SYS_CURRENT_FRAMES_MA
+#define __pyx_kp_s_Unable_to_get_topmost_frame_for __pyx_mstate_global->__pyx_kp_s_Unable_to_get_topmost_frame_for
+#define __pyx_kp_s__10 __pyx_mstate_global->__pyx_kp_s__10
+#define __pyx_kp_u__10 __pyx_mstate_global->__pyx_kp_u__10
+#define __pyx_n_s__19 __pyx_mstate_global->__pyx_n_s__19
+#define __pyx_kp_s__4 __pyx_mstate_global->__pyx_kp_s__4
+#define __pyx_kp_s__8 __pyx_mstate_global->__pyx_kp_s__8
+#define __pyx_kp_s__9 __pyx_mstate_global->__pyx_kp_s__9
+#define __pyx_n_s_abs_real_path_and_base __pyx_mstate_global->__pyx_n_s_abs_real_path_and_base
+#define __pyx_n_s_absolute_filename __pyx_mstate_global->__pyx_n_s_absolute_filename
+#define __pyx_n_s_active __pyx_mstate_global->__pyx_n_s_active
+#define __pyx_n_s_add __pyx_mstate_global->__pyx_n_s_add
+#define __pyx_n_s_add_additional_info __pyx_mstate_global->__pyx_n_s_add_additional_info
+#define __pyx_n_s_add_command __pyx_mstate_global->__pyx_n_s_add_command
+#define __pyx_n_s_add_exception_to_frame __pyx_mstate_global->__pyx_n_s_add_exception_to_frame
+#define __pyx_n_s_additional_info __pyx_mstate_global->__pyx_n_s_additional_info
+#define __pyx_n_s_any_thread_stepping __pyx_mstate_global->__pyx_n_s_any_thread_stepping
+#define __pyx_n_s_append __pyx_mstate_global->__pyx_n_s_append
+#define __pyx_n_s_apply_files_filter __pyx_mstate_global->__pyx_n_s_apply_files_filter
+#define __pyx_n_s_apply_to_settrace __pyx_mstate_global->__pyx_n_s_apply_to_settrace
+#define __pyx_n_s_arg __pyx_mstate_global->__pyx_n_s_arg
+#define __pyx_n_s_args __pyx_mstate_global->__pyx_n_s_args
+#define __pyx_n_s_args_2 __pyx_mstate_global->__pyx_n_s_args_2
+#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines
+#define __pyx_n_s_basename __pyx_mstate_global->__pyx_n_s_basename
+#define __pyx_n_s_bootstrap __pyx_mstate_global->__pyx_n_s_bootstrap
+#define __pyx_n_s_bootstrap_2 __pyx_mstate_global->__pyx_n_s_bootstrap_2
+#define __pyx_n_s_bootstrap_inner __pyx_mstate_global->__pyx_n_s_bootstrap_inner
+#define __pyx_n_s_bootstrap_inner_2 __pyx_mstate_global->__pyx_n_s_bootstrap_inner_2
+#define __pyx_n_s_break_on_caught_exceptions __pyx_mstate_global->__pyx_n_s_break_on_caught_exceptions
+#define __pyx_n_s_break_on_user_uncaught_exception __pyx_mstate_global->__pyx_n_s_break_on_user_uncaught_exception
+#define __pyx_n_s_breakpoints __pyx_mstate_global->__pyx_n_s_breakpoints
+#define __pyx_n_s_call __pyx_mstate_global->__pyx_n_s_call
+#define __pyx_n_s_call_2 __pyx_mstate_global->__pyx_n_s_call_2
+#define __pyx_n_s_can_skip __pyx_mstate_global->__pyx_n_s_can_skip
+#define __pyx_n_s_canonical_normalized_filename __pyx_mstate_global->__pyx_n_s_canonical_normalized_filename
+#define __pyx_kp_s_cell __pyx_mstate_global->__pyx_kp_s_cell
+#define __pyx_n_s_check_excs __pyx_mstate_global->__pyx_n_s_check_excs
+#define __pyx_n_s_check_trace_obj __pyx_mstate_global->__pyx_n_s_check_trace_obj
+#define __pyx_n_s_checkcache __pyx_mstate_global->__pyx_n_s_checkcache
+#define __pyx_n_s_children_variants __pyx_mstate_global->__pyx_n_s_children_variants
+#define __pyx_n_s_class_getitem __pyx_mstate_global->__pyx_n_s_class_getitem
+#define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback
+#define __pyx_n_s_cmd_factory __pyx_mstate_global->__pyx_n_s_cmd_factory
+#define __pyx_n_s_cmd_step_into __pyx_mstate_global->__pyx_n_s_cmd_step_into
+#define __pyx_n_s_cmd_step_over __pyx_mstate_global->__pyx_n_s_cmd_step_over
+#define __pyx_n_s_co_filename __pyx_mstate_global->__pyx_n_s_co_filename
+#define __pyx_n_s_co_firstlineno __pyx_mstate_global->__pyx_n_s_co_firstlineno
+#define __pyx_n_s_co_flags __pyx_mstate_global->__pyx_n_s_co_flags
+#define __pyx_n_s_co_name __pyx_mstate_global->__pyx_n_s_co_name
+#define __pyx_n_s_collect_return_info __pyx_mstate_global->__pyx_n_s_collect_return_info
+#define __pyx_n_s_collect_try_except_info __pyx_mstate_global->__pyx_n_s_collect_try_except_info
+#define __pyx_n_s_compile __pyx_mstate_global->__pyx_n_s_compile
+#define __pyx_n_s_condition __pyx_mstate_global->__pyx_n_s_condition
+#define __pyx_n_s_constant_to_str __pyx_mstate_global->__pyx_n_s_constant_to_str
+#define __pyx_n_s_constructed_tid_to_last_frame __pyx_mstate_global->__pyx_n_s_constructed_tid_to_last_frame
+#define __pyx_n_s_container_obj __pyx_mstate_global->__pyx_n_s_container_obj
+#define __pyx_n_s_critical __pyx_mstate_global->__pyx_n_s_critical
+#define __pyx_n_s_curr_stat __pyx_mstate_global->__pyx_n_s_curr_stat
+#define __pyx_n_s_current_frames __pyx_mstate_global->__pyx_n_s_current_frames
+#define __pyx_n_s_custom_key __pyx_mstate_global->__pyx_n_s_custom_key
+#define __pyx_n_s_debug __pyx_mstate_global->__pyx_n_s_debug
+#define __pyx_n_s_dict __pyx_mstate_global->__pyx_n_s_dict
+#define __pyx_n_s_dict_2 __pyx_mstate_global->__pyx_n_s_dict_2
+#define __pyx_n_s_dis __pyx_mstate_global->__pyx_n_s_dis
+#define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable
+#define __pyx_n_s_disable_tracing __pyx_mstate_global->__pyx_n_s_disable_tracing
+#define __pyx_n_s_do_wait_suspend __pyx_mstate_global->__pyx_n_s_do_wait_suspend
+#define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable
+#define __pyx_n_s_enable_tracing __pyx_mstate_global->__pyx_n_s_enable_tracing
+#define __pyx_n_s_encode __pyx_mstate_global->__pyx_n_s_encode
+#define __pyx_n_s_endswith __pyx_mstate_global->__pyx_n_s_endswith
+#define __pyx_n_s_enter __pyx_mstate_global->__pyx_n_s_enter
+#define __pyx_n_s_event __pyx_mstate_global->__pyx_n_s_event
+#define __pyx_n_s_exc_break __pyx_mstate_global->__pyx_n_s_exc_break
+#define __pyx_n_s_exc_break_caught __pyx_mstate_global->__pyx_n_s_exc_break_caught
+#define __pyx_n_s_exc_break_user __pyx_mstate_global->__pyx_n_s_exc_break_user
+#define __pyx_n_s_exc_info __pyx_mstate_global->__pyx_n_s_exc_info
+#define __pyx_n_s_exc_lineno __pyx_mstate_global->__pyx_n_s_exc_lineno
+#define __pyx_n_s_except_line __pyx_mstate_global->__pyx_n_s_except_line
+#define __pyx_n_s_exception __pyx_mstate_global->__pyx_n_s_exception
+#define __pyx_n_s_exception_break __pyx_mstate_global->__pyx_n_s_exception_break
+#define __pyx_n_s_exception_breakpoint __pyx_mstate_global->__pyx_n_s_exception_breakpoint
+#define __pyx_n_s_exception_type __pyx_mstate_global->__pyx_n_s_exception_type
+#define __pyx_n_s_exclude_exception_by_filter __pyx_mstate_global->__pyx_n_s_exclude_exception_by_filter
+#define __pyx_n_s_exec __pyx_mstate_global->__pyx_n_s_exec
+#define __pyx_n_s_execfile __pyx_mstate_global->__pyx_n_s_execfile
+#define __pyx_n_s_exit __pyx_mstate_global->__pyx_n_s_exit
+#define __pyx_n_s_expression __pyx_mstate_global->__pyx_n_s_expression
+#define __pyx_n_s_f __pyx_mstate_global->__pyx_n_s_f
+#define __pyx_n_s_f_back __pyx_mstate_global->__pyx_n_s_f_back
+#define __pyx_n_s_f_code __pyx_mstate_global->__pyx_n_s_f_code
+#define __pyx_n_s_f_globals __pyx_mstate_global->__pyx_n_s_f_globals
+#define __pyx_n_s_f_lasti __pyx_mstate_global->__pyx_n_s_f_lasti
+#define __pyx_n_s_f_lineno __pyx_mstate_global->__pyx_n_s_f_lineno
+#define __pyx_n_s_f_locals __pyx_mstate_global->__pyx_n_s_f_locals
+#define __pyx_n_s_f_trace __pyx_mstate_global->__pyx_n_s_f_trace
+#define __pyx_n_s_f_unhandled __pyx_mstate_global->__pyx_n_s_f_unhandled
+#define __pyx_n_s_filename __pyx_mstate_global->__pyx_n_s_filename
+#define __pyx_n_s_filename_to_lines_where_exceptio __pyx_mstate_global->__pyx_n_s_filename_to_lines_where_exceptio
+#define __pyx_n_s_filename_to_stat_info __pyx_mstate_global->__pyx_n_s_filename_to_stat_info
+#define __pyx_n_s_findlinestarts __pyx_mstate_global->__pyx_n_s_findlinestarts
+#define __pyx_n_s_fix_top_level_trace_and_get_trac __pyx_mstate_global->__pyx_n_s_fix_top_level_trace_and_get_trac
+#define __pyx_n_s_force_only_unhandled_tracer __pyx_mstate_global->__pyx_n_s_force_only_unhandled_tracer
+#define __pyx_n_s_frame __pyx_mstate_global->__pyx_n_s_frame
+#define __pyx_n_s_frame_cache_key __pyx_mstate_global->__pyx_n_s_frame_cache_key
+#define __pyx_n_s_frame_id_to_frame __pyx_mstate_global->__pyx_n_s_frame_id_to_frame
+#define __pyx_n_s_frame_skips_cache __pyx_mstate_global->__pyx_n_s_frame_skips_cache
+#define __pyx_n_s_frame_trace_dispatch __pyx_mstate_global->__pyx_n_s_frame_trace_dispatch
+#define __pyx_n_s_from_user_input __pyx_mstate_global->__pyx_n_s_from_user_input
+#define __pyx_n_s_func_name __pyx_mstate_global->__pyx_n_s_func_name
+#define __pyx_n_s_function_breakpoint_name_to_brea __pyx_mstate_global->__pyx_n_s_function_breakpoint_name_to_brea
+#define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc
+#define __pyx_n_s_get __pyx_mstate_global->__pyx_n_s_get
+#define __pyx_n_s_get_abs_path_real_path_and_base __pyx_mstate_global->__pyx_n_s_get_abs_path_real_path_and_base
+#define __pyx_n_s_get_breakpoint __pyx_mstate_global->__pyx_n_s_get_breakpoint
+#define __pyx_n_s_get_clsname_for_code __pyx_mstate_global->__pyx_n_s_get_clsname_for_code
+#define __pyx_n_s_get_current_thread_id __pyx_mstate_global->__pyx_n_s_get_current_thread_id
+#define __pyx_n_s_get_exception_breakpoint __pyx_mstate_global->__pyx_n_s_get_exception_breakpoint
+#define __pyx_n_s_get_file_type __pyx_mstate_global->__pyx_n_s_get_file_type
+#define __pyx_n_s_get_global_debugger __pyx_mstate_global->__pyx_n_s_get_global_debugger
+#define __pyx_n_s_get_internal_queue_and_event __pyx_mstate_global->__pyx_n_s_get_internal_queue_and_event
+#define __pyx_n_s_get_method_object __pyx_mstate_global->__pyx_n_s_get_method_object
+#define __pyx_n_s_get_related_thread __pyx_mstate_global->__pyx_n_s_get_related_thread
+#define __pyx_n_s_get_smart_step_into_variant_from __pyx_mstate_global->__pyx_n_s_get_smart_step_into_variant_from
+#define __pyx_n_s_get_thread_id __pyx_mstate_global->__pyx_n_s_get_thread_id
+#define __pyx_n_s_get_topmost_frame __pyx_mstate_global->__pyx_n_s_get_topmost_frame
+#define __pyx_n_s_get_trace_dispatch_func __pyx_mstate_global->__pyx_n_s_get_trace_dispatch_func
+#define __pyx_n_s_getline __pyx_mstate_global->__pyx_n_s_getline
+#define __pyx_n_s_getstate __pyx_mstate_global->__pyx_n_s_getstate
+#define __pyx_n_s_global_cache_frame_skips __pyx_mstate_global->__pyx_n_s_global_cache_frame_skips
+#define __pyx_n_s_global_cache_skips __pyx_mstate_global->__pyx_n_s_global_cache_skips
+#define __pyx_n_s_global_notify_skipped_step_in_l __pyx_mstate_global->__pyx_n_s_global_notify_skipped_step_in_l
+#define __pyx_n_s_handle_breakpoint_condition __pyx_mstate_global->__pyx_n_s_handle_breakpoint_condition
+#define __pyx_n_s_handle_breakpoint_expression __pyx_mstate_global->__pyx_n_s_handle_breakpoint_expression
+#define __pyx_n_s_handle_exception __pyx_mstate_global->__pyx_n_s_handle_exception
+#define __pyx_n_s_handle_user_exception __pyx_mstate_global->__pyx_n_s_handle_user_exception
+#define __pyx_n_s_has_condition __pyx_mstate_global->__pyx_n_s_has_condition
+#define __pyx_n_s_has_plugin_exception_breaks __pyx_mstate_global->__pyx_n_s_has_plugin_exception_breaks
+#define __pyx_n_s_has_plugin_line_breaks __pyx_mstate_global->__pyx_n_s_has_plugin_line_breaks
+#define __pyx_n_s_i __pyx_mstate_global->__pyx_n_s_i
+#define __pyx_n_s_id __pyx_mstate_global->__pyx_n_s_id
+#define __pyx_n_s_ident __pyx_mstate_global->__pyx_n_s_ident
+#define __pyx_n_s_ident_2 __pyx_mstate_global->__pyx_n_s_ident_2
+#define __pyx_n_s_ignore_exception_trace __pyx_mstate_global->__pyx_n_s_ignore_exception_trace
+#define __pyx_n_s_ignore_exceptions_thrown_in_line __pyx_mstate_global->__pyx_n_s_ignore_exceptions_thrown_in_line
+#define __pyx_n_s_ignore_system_exit_code __pyx_mstate_global->__pyx_n_s_ignore_system_exit_code
+#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import
+#define __pyx_n_s_in_project_scope __pyx_mstate_global->__pyx_n_s_in_project_scope
+#define __pyx_n_s_info __pyx_mstate_global->__pyx_n_s_info
+#define __pyx_n_s_initial_trace_obj __pyx_mstate_global->__pyx_n_s_initial_trace_obj
+#define __pyx_n_s_initializing __pyx_mstate_global->__pyx_n_s_initializing
+#define __pyx_kp_s_invalid __pyx_mstate_global->__pyx_kp_s_invalid
+#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine
+#define __pyx_n_s_is_files_filter_enabled __pyx_mstate_global->__pyx_n_s_is_files_filter_enabled
+#define __pyx_n_s_is_line_in_except_block __pyx_mstate_global->__pyx_n_s_is_line_in_except_block
+#define __pyx_n_s_is_line_in_try_block __pyx_mstate_global->__pyx_n_s_is_line_in_try_block
+#define __pyx_n_s_is_logpoint __pyx_mstate_global->__pyx_n_s_is_logpoint
+#define __pyx_n_s_is_stepping __pyx_mstate_global->__pyx_n_s_is_stepping
+#define __pyx_n_s_is_stopped __pyx_mstate_global->__pyx_n_s_is_stopped
+#define __pyx_n_s_is_thread_alive __pyx_mstate_global->__pyx_n_s_is_thread_alive
+#define __pyx_n_s_is_unhandled_exception __pyx_mstate_global->__pyx_n_s_is_unhandled_exception
+#define __pyx_n_s_is_user_uncaught __pyx_mstate_global->__pyx_n_s_is_user_uncaught
+#define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled
+#define __pyx_n_s_j __pyx_mstate_global->__pyx_n_s_j
+#define __pyx_n_s_just_raised __pyx_mstate_global->__pyx_n_s_just_raised
+#define __pyx_n_s_kwargs __pyx_mstate_global->__pyx_n_s_kwargs
+#define __pyx_kp_s_lambda __pyx_mstate_global->__pyx_kp_s_lambda
+#define __pyx_n_s_last_raise_line __pyx_mstate_global->__pyx_n_s_last_raise_line
+#define __pyx_n_s_last_stat __pyx_mstate_global->__pyx_n_s_last_stat
+#define __pyx_n_s_line __pyx_mstate_global->__pyx_n_s_line
+#define __pyx_n_s_linecache __pyx_mstate_global->__pyx_n_s_linecache
+#define __pyx_n_s_lines __pyx_mstate_global->__pyx_n_s_lines
+#define __pyx_n_s_lines_ignored __pyx_mstate_global->__pyx_n_s_lines_ignored
+#define __pyx_n_s_linesep __pyx_mstate_global->__pyx_n_s_linesep
+#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main
+#define __pyx_n_s_main_2 __pyx_mstate_global->__pyx_n_s_main_2
+#define __pyx_n_s_make_console_message __pyx_mstate_global->__pyx_n_s_make_console_message
+#define __pyx_n_s_make_io_message __pyx_mstate_global->__pyx_n_s_make_io_message
+#define __pyx_n_s_match __pyx_mstate_global->__pyx_n_s_match
+#define __pyx_n_s_maybe_user_uncaught_exc_info __pyx_mstate_global->__pyx_n_s_maybe_user_uncaught_exc_info
+#define __pyx_n_s_merged __pyx_mstate_global->__pyx_n_s_merged
+#define __pyx_n_s_method_object __pyx_mstate_global->__pyx_n_s_method_object
+#define __pyx_kp_s_module __pyx_mstate_global->__pyx_kp_s_module
+#define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name
+#define __pyx_n_s_name_2 __pyx_mstate_global->__pyx_n_s_name_2
+#define __pyx_n_s_new __pyx_mstate_global->__pyx_n_s_new
+#define __pyx_n_s_next_additional_info __pyx_mstate_global->__pyx_n_s_next_additional_info
+#define __pyx_n_s_notify_on_first_raise_only __pyx_mstate_global->__pyx_n_s_notify_on_first_raise_only
+#define __pyx_n_s_notify_skipped_step_in_because_o __pyx_mstate_global->__pyx_n_s_notify_skipped_step_in_because_o
+#define __pyx_n_s_notify_thread_not_alive __pyx_mstate_global->__pyx_n_s_notify_thread_not_alive
+#define __pyx_n_s_original_call __pyx_mstate_global->__pyx_n_s_original_call
+#define __pyx_n_s_original_step_cmd __pyx_mstate_global->__pyx_n_s_original_step_cmd
+#define __pyx_n_s_os __pyx_mstate_global->__pyx_n_s_os
+#define __pyx_n_s_os_path __pyx_mstate_global->__pyx_n_s_os_path
+#define __pyx_n_s_path __pyx_mstate_global->__pyx_n_s_path
+#define __pyx_n_s_pickle __pyx_mstate_global->__pyx_n_s_pickle
+#define __pyx_n_s_plugin __pyx_mstate_global->__pyx_n_s_plugin
+#define __pyx_n_s_pop __pyx_mstate_global->__pyx_n_s_pop
+#define __pyx_n_s_prev_user_uncaught_exc_info __pyx_mstate_global->__pyx_n_s_prev_user_uncaught_exc_info
+#define __pyx_n_s_py_db __pyx_mstate_global->__pyx_n_s_py_db
+#define __pyx_kp_s_pyc __pyx_mstate_global->__pyx_kp_s_pyc
+#define __pyx_n_s_pydb_disposed __pyx_mstate_global->__pyx_n_s_pydb_disposed
+#define __pyx_n_s_pydev_bundle __pyx_mstate_global->__pyx_n_s_pydev_bundle
+#define __pyx_n_s_pydev_bundle__pydev_saved_modul __pyx_mstate_global->__pyx_n_s_pydev_bundle__pydev_saved_modul
+#define __pyx_n_s_pydev_bundle_pydev_is_thread_al __pyx_mstate_global->__pyx_n_s_pydev_bundle_pydev_is_thread_al
+#define __pyx_n_s_pydev_bundle_pydev_log __pyx_mstate_global->__pyx_n_s_pydev_bundle_pydev_log
+#define __pyx_n_s_pydev_do_not_trace __pyx_mstate_global->__pyx_n_s_pydev_do_not_trace
+#define __pyx_kp_s_pydev_execfile_py __pyx_mstate_global->__pyx_kp_s_pydev_execfile_py
+#define __pyx_n_s_pydev_log __pyx_mstate_global->__pyx_n_s_pydev_log
+#define __pyx_n_s_pydev_log_exception __pyx_mstate_global->__pyx_n_s_pydev_log_exception
+#define __pyx_n_s_pydev_monkey __pyx_mstate_global->__pyx_n_s_pydev_monkey
+#define __pyx_n_s_pydevd __pyx_mstate_global->__pyx_n_s_pydevd
+#define __pyx_n_s_pydevd_bundle __pyx_mstate_global->__pyx_n_s_pydevd_bundle
+#define __pyx_n_s_pydevd_bundle_pydevd_bytecode_u __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_bytecode_u
+#define __pyx_n_s_pydevd_bundle_pydevd_comm_const __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_comm_const
+#define __pyx_n_s_pydevd_bundle_pydevd_constants __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_constants
+#define __pyx_n_s_pydevd_bundle_pydevd_cython __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_cython
+#define __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx __pyx_mstate_global->__pyx_kp_s_pydevd_bundle_pydevd_cython_pyx
+#define __pyx_n_s_pydevd_bundle_pydevd_frame_util __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_frame_util
+#define __pyx_n_s_pydevd_bundle_pydevd_utils __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_utils
+#define __pyx_n_s_pydevd_dont_trace __pyx_mstate_global->__pyx_n_s_pydevd_dont_trace
+#define __pyx_n_s_pydevd_file_utils __pyx_mstate_global->__pyx_n_s_pydevd_file_utils
+#define __pyx_kp_s_pydevd_py __pyx_mstate_global->__pyx_kp_s_pydevd_py
+#define __pyx_kp_s_pydevd_traceproperty_py __pyx_mstate_global->__pyx_kp_s_pydevd_traceproperty_py
+#define __pyx_n_s_pydevd_tracing __pyx_mstate_global->__pyx_n_s_pydevd_tracing
+#define __pyx_n_s_pyx_PickleError __pyx_mstate_global->__pyx_n_s_pyx_PickleError
+#define __pyx_n_s_pyx_checksum __pyx_mstate_global->__pyx_n_s_pyx_checksum
+#define __pyx_n_s_pyx_result __pyx_mstate_global->__pyx_n_s_pyx_result
+#define __pyx_n_s_pyx_state __pyx_mstate_global->__pyx_n_s_pyx_state
+#define __pyx_n_s_pyx_type __pyx_mstate_global->__pyx_n_s_pyx_type
+#define __pyx_n_s_pyx_unpickle_PyDBAdditionalThr __pyx_mstate_global->__pyx_n_s_pyx_unpickle_PyDBAdditionalThr
+#define __pyx_n_s_pyx_unpickle_PyDBFrame __pyx_mstate_global->__pyx_n_s_pyx_unpickle_PyDBFrame
+#define __pyx_n_s_pyx_unpickle_SafeCallWrapper __pyx_mstate_global->__pyx_n_s_pyx_unpickle_SafeCallWrapper
+#define __pyx_n_s_pyx_unpickle_ThreadTracer __pyx_mstate_global->__pyx_n_s_pyx_unpickle_ThreadTracer
+#define __pyx_n_s_pyx_unpickle_TopLevelThreadTra __pyx_mstate_global->__pyx_n_s_pyx_unpickle_TopLevelThreadTra
+#define __pyx_n_s_pyx_unpickle_TopLevelThreadTra_2 __pyx_mstate_global->__pyx_n_s_pyx_unpickle_TopLevelThreadTra_2
+#define __pyx_n_s_pyx_unpickle__TryExceptContain __pyx_mstate_global->__pyx_n_s_pyx_unpickle__TryExceptContain
+#define __pyx_n_s_pyx_vtable __pyx_mstate_global->__pyx_n_s_pyx_vtable
+#define __pyx_n_s_qname __pyx_mstate_global->__pyx_n_s_qname
+#define __pyx_n_s_quitting __pyx_mstate_global->__pyx_n_s_quitting
+#define __pyx_n_s_raise_lines __pyx_mstate_global->__pyx_n_s_raise_lines
+#define __pyx_n_s_raise_lines_in_except __pyx_mstate_global->__pyx_n_s_raise_lines_in_except
+#define __pyx_n_s_re __pyx_mstate_global->__pyx_n_s_re
+#define __pyx_n_s_reduce __pyx_mstate_global->__pyx_n_s_reduce
+#define __pyx_n_s_reduce_cython __pyx_mstate_global->__pyx_n_s_reduce_cython
+#define __pyx_n_s_reduce_ex __pyx_mstate_global->__pyx_n_s_reduce_ex
+#define __pyx_n_s_ref __pyx_mstate_global->__pyx_n_s_ref
+#define __pyx_n_s_remove_additional_info __pyx_mstate_global->__pyx_n_s_remove_additional_info
+#define __pyx_n_s_remove_exception_from_frame __pyx_mstate_global->__pyx_n_s_remove_exception_from_frame
+#define __pyx_n_s_remove_return_values_flag __pyx_mstate_global->__pyx_n_s_remove_return_values_flag
+#define __pyx_n_s_result __pyx_mstate_global->__pyx_n_s_result
+#define __pyx_n_s_ret __pyx_mstate_global->__pyx_n_s_ret
+#define __pyx_n_s_return __pyx_mstate_global->__pyx_n_s_return
+#define __pyx_n_s_return_line __pyx_mstate_global->__pyx_n_s_return_line
+#define __pyx_n_s_returns __pyx_mstate_global->__pyx_n_s_returns
+#define __pyx_n_s_rfind __pyx_mstate_global->__pyx_n_s_rfind
+#define __pyx_n_s_run __pyx_mstate_global->__pyx_n_s_run
+#define __pyx_kp_s_s_raised_from_within_the_callba __pyx_mstate_global->__pyx_kp_s_s_raised_from_within_the_callba
+#define __pyx_kp_s_s_s __pyx_mstate_global->__pyx_kp_s_s_s
+#define __pyx_n_s_self __pyx_mstate_global->__pyx_n_s_self
+#define __pyx_n_s_send_caught_exception_stack __pyx_mstate_global->__pyx_n_s_send_caught_exception_stack
+#define __pyx_n_s_send_caught_exception_stack_proc __pyx_mstate_global->__pyx_n_s_send_caught_exception_stack_proc
+#define __pyx_n_s_set __pyx_mstate_global->__pyx_n_s_set
+#define __pyx_n_s_set_additional_thread_info __pyx_mstate_global->__pyx_n_s_set_additional_thread_info
+#define __pyx_n_s_set_additional_thread_info_lock __pyx_mstate_global->__pyx_n_s_set_additional_thread_info_lock
+#define __pyx_n_s_set_suspend __pyx_mstate_global->__pyx_n_s_set_suspend
+#define __pyx_n_s_set_trace_for_frame_and_parents __pyx_mstate_global->__pyx_n_s_set_trace_for_frame_and_parents
+#define __pyx_n_s_setstate __pyx_mstate_global->__pyx_n_s_setstate
+#define __pyx_n_s_setstate_cython __pyx_mstate_global->__pyx_n_s_setstate_cython
+#define __pyx_n_s_should_stop __pyx_mstate_global->__pyx_n_s_should_stop
+#define __pyx_n_s_should_stop_on_exception __pyx_mstate_global->__pyx_n_s_should_stop_on_exception
+#define __pyx_n_s_should_trace_hook __pyx_mstate_global->__pyx_n_s_should_trace_hook
+#define __pyx_n_s_show_return_values __pyx_mstate_global->__pyx_n_s_show_return_values
+#define __pyx_n_s_skip_on_exceptions_thrown_in_sam __pyx_mstate_global->__pyx_n_s_skip_on_exceptions_thrown_in_sam
+#define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec
+#define __pyx_n_s_st_mtime __pyx_mstate_global->__pyx_n_s_st_mtime
+#define __pyx_n_s_st_size __pyx_mstate_global->__pyx_n_s_st_size
+#define __pyx_n_s_startswith __pyx_mstate_global->__pyx_n_s_startswith
+#define __pyx_n_s_stat __pyx_mstate_global->__pyx_n_s_stat
+#define __pyx_n_s_state __pyx_mstate_global->__pyx_n_s_state
+#define __pyx_n_s_stop __pyx_mstate_global->__pyx_n_s_stop
+#define __pyx_n_s_stop_on_unhandled_exception __pyx_mstate_global->__pyx_n_s_stop_on_unhandled_exception
+#define __pyx_n_s_stopped __pyx_mstate_global->__pyx_n_s_stopped
+#define __pyx_kp_s_stringsource __pyx_mstate_global->__pyx_kp_s_stringsource
+#define __pyx_n_s_suspend __pyx_mstate_global->__pyx_n_s_suspend
+#define __pyx_n_s_suspend_other_threads __pyx_mstate_global->__pyx_n_s_suspend_other_threads
+#define __pyx_n_s_suspend_policy __pyx_mstate_global->__pyx_n_s_suspend_policy
+#define __pyx_n_s_suspended_at_unhandled __pyx_mstate_global->__pyx_n_s_suspended_at_unhandled
+#define __pyx_n_s_sys __pyx_mstate_global->__pyx_n_s_sys
+#define __pyx_n_s_t __pyx_mstate_global->__pyx_n_s_t
+#define __pyx_n_s_tb_frame __pyx_mstate_global->__pyx_n_s_tb_frame
+#define __pyx_n_s_tb_lineno __pyx_mstate_global->__pyx_n_s_tb_lineno
+#define __pyx_n_s_tb_next __pyx_mstate_global->__pyx_n_s_tb_next
+#define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test
+#define __pyx_n_s_thread __pyx_mstate_global->__pyx_n_s_thread
+#define __pyx_kp_s_thread__ident_is_None_in__get_re __pyx_mstate_global->__pyx_kp_s_thread__ident_is_None_in__get_re
+#define __pyx_n_s_thread_trace_func __pyx_mstate_global->__pyx_n_s_thread_trace_func
+#define __pyx_n_s_thread_tracer __pyx_mstate_global->__pyx_n_s_thread_tracer
+#define __pyx_n_s_threading __pyx_mstate_global->__pyx_n_s_threading
+#define __pyx_n_s_threading_active __pyx_mstate_global->__pyx_n_s_threading_active
+#define __pyx_n_s_threading_current_thread __pyx_mstate_global->__pyx_n_s_threading_current_thread
+#define __pyx_n_s_threading_get_ident __pyx_mstate_global->__pyx_n_s_threading_get_ident
+#define __pyx_n_s_top_level_thread_tracer __pyx_mstate_global->__pyx_n_s_top_level_thread_tracer
+#define __pyx_n_s_top_level_thread_tracer_no_back __pyx_mstate_global->__pyx_n_s_top_level_thread_tracer_no_back
+#define __pyx_n_s_top_level_thread_tracer_unhandle __pyx_mstate_global->__pyx_n_s_top_level_thread_tracer_unhandle
+#define __pyx_n_s_trace __pyx_mstate_global->__pyx_n_s_trace
+#define __pyx_n_s_trace_dispatch __pyx_mstate_global->__pyx_n_s_trace_dispatch
+#define __pyx_n_s_trace_dispatch_and_unhandled_exc __pyx_mstate_global->__pyx_n_s_trace_dispatch_and_unhandled_exc
+#define __pyx_n_s_trace_exception __pyx_mstate_global->__pyx_n_s_trace_exception
+#define __pyx_n_s_trace_obj __pyx_mstate_global->__pyx_n_s_trace_obj
+#define __pyx_n_s_trace_unhandled_exceptions __pyx_mstate_global->__pyx_n_s_trace_unhandled_exceptions
+#define __pyx_n_s_try_exc_info __pyx_mstate_global->__pyx_n_s_try_exc_info
+#define __pyx_n_s_try_except_info __pyx_mstate_global->__pyx_n_s_try_except_info
+#define __pyx_n_s_try_except_infos __pyx_mstate_global->__pyx_n_s_try_except_infos
+#define __pyx_n_s_update __pyx_mstate_global->__pyx_n_s_update
+#define __pyx_n_s_update_stepping_info __pyx_mstate_global->__pyx_n_s_update_stepping_info
+#define __pyx_n_s_use_setstate __pyx_mstate_global->__pyx_n_s_use_setstate
+#define __pyx_kp_s_utf_8 __pyx_mstate_global->__pyx_kp_s_utf_8
+#define __pyx_n_s_valid_try_except_infos __pyx_mstate_global->__pyx_n_s_valid_try_except_infos
+#define __pyx_n_s_value __pyx_mstate_global->__pyx_n_s_value
+#define __pyx_n_s_values __pyx_mstate_global->__pyx_n_s_values
+#define __pyx_n_s_version __pyx_mstate_global->__pyx_n_s_version
+#define __pyx_n_s_was_just_raised __pyx_mstate_global->__pyx_n_s_was_just_raised
+#define __pyx_n_s_weak_thread __pyx_mstate_global->__pyx_n_s_weak_thread
+#define __pyx_n_s_weakref __pyx_mstate_global->__pyx_n_s_weakref
+#define __pyx_n_s_writer __pyx_mstate_global->__pyx_n_s_writer
+#define __pyx_int_0 __pyx_mstate_global->__pyx_int_0
+#define __pyx_int_1 __pyx_mstate_global->__pyx_int_1
+#define __pyx_int_2 __pyx_mstate_global->__pyx_int_2
+#define __pyx_int_11 __pyx_mstate_global->__pyx_int_11
+#define __pyx_int_111 __pyx_mstate_global->__pyx_int_111
+#define __pyx_int_137 __pyx_mstate_global->__pyx_int_137
+#define __pyx_int_160 __pyx_mstate_global->__pyx_int_160
+#define __pyx_int_2424557 __pyx_mstate_global->__pyx_int_2424557
+#define __pyx_int_16751766 __pyx_mstate_global->__pyx_int_16751766
+#define __pyx_int_18997755 __pyx_mstate_global->__pyx_int_18997755
+#define __pyx_int_61391470 __pyx_mstate_global->__pyx_int_61391470
+#define __pyx_int_63705258 __pyx_mstate_global->__pyx_int_63705258
+#define __pyx_int_64458794 __pyx_mstate_global->__pyx_int_64458794
+#define __pyx_int_66451433 __pyx_mstate_global->__pyx_int_66451433
+#define __pyx_int_70528507 __pyx_mstate_global->__pyx_int_70528507
+#define __pyx_int_84338306 __pyx_mstate_global->__pyx_int_84338306
+#define __pyx_int_125568891 __pyx_mstate_global->__pyx_int_125568891
+#define __pyx_int_169093275 __pyx_mstate_global->__pyx_int_169093275
+#define __pyx_int_171613889 __pyx_mstate_global->__pyx_int_171613889
+#define __pyx_int_192493205 __pyx_mstate_global->__pyx_int_192493205
+#define __pyx_int_210464433 __pyx_mstate_global->__pyx_int_210464433
+#define __pyx_int_221489684 __pyx_mstate_global->__pyx_int_221489684
+#define __pyx_int_230645316 __pyx_mstate_global->__pyx_int_230645316
+#define __pyx_int_232881363 __pyx_mstate_global->__pyx_int_232881363
+#define __pyx_int_255484337 __pyx_mstate_global->__pyx_int_255484337
+#define __pyx_int_neg_1 __pyx_mstate_global->__pyx_int_neg_1
+#define __pyx_slice__2 __pyx_mstate_global->__pyx_slice__2
+#define __pyx_slice__6 __pyx_mstate_global->__pyx_slice__6
+#define __pyx_tuple__3 __pyx_mstate_global->__pyx_tuple__3
+#define __pyx_tuple__5 __pyx_mstate_global->__pyx_tuple__5
+#define __pyx_tuple__7 __pyx_mstate_global->__pyx_tuple__7
+#define __pyx_tuple__11 __pyx_mstate_global->__pyx_tuple__11
+#define __pyx_tuple__12 __pyx_mstate_global->__pyx_tuple__12
+#define __pyx_tuple__13 __pyx_mstate_global->__pyx_tuple__13
+#define __pyx_tuple__14 __pyx_mstate_global->__pyx_tuple__14
+#define __pyx_tuple__15 __pyx_mstate_global->__pyx_tuple__15
+#define __pyx_tuple__16 __pyx_mstate_global->__pyx_tuple__16
+#define __pyx_tuple__17 __pyx_mstate_global->__pyx_tuple__17
+#define __pyx_tuple__18 __pyx_mstate_global->__pyx_tuple__18
+#define __pyx_tuple__20 __pyx_mstate_global->__pyx_tuple__20
+#define __pyx_tuple__23 __pyx_mstate_global->__pyx_tuple__23
+#define __pyx_tuple__26 __pyx_mstate_global->__pyx_tuple__26
+#define __pyx_tuple__28 __pyx_mstate_global->__pyx_tuple__28
+#define __pyx_tuple__30 __pyx_mstate_global->__pyx_tuple__30
+#define __pyx_tuple__32 __pyx_mstate_global->__pyx_tuple__32
+#define __pyx_tuple__36 __pyx_mstate_global->__pyx_tuple__36
+#define __pyx_tuple__37 __pyx_mstate_global->__pyx_tuple__37
+#define __pyx_tuple__39 __pyx_mstate_global->__pyx_tuple__39
+#define __pyx_tuple__40 __pyx_mstate_global->__pyx_tuple__40
+#define __pyx_tuple__41 __pyx_mstate_global->__pyx_tuple__41
+#define __pyx_tuple__42 __pyx_mstate_global->__pyx_tuple__42
+#define __pyx_tuple__46 __pyx_mstate_global->__pyx_tuple__46
+#define __pyx_tuple__49 __pyx_mstate_global->__pyx_tuple__49
+#define __pyx_tuple__51 __pyx_mstate_global->__pyx_tuple__51
+#define __pyx_tuple__53 __pyx_mstate_global->__pyx_tuple__53
+#define __pyx_tuple__57 __pyx_mstate_global->__pyx_tuple__57
+#define __pyx_tuple__59 __pyx_mstate_global->__pyx_tuple__59
+#define __pyx_tuple__61 __pyx_mstate_global->__pyx_tuple__61
+#define __pyx_tuple__66 __pyx_mstate_global->__pyx_tuple__66
+#define __pyx_tuple__68 __pyx_mstate_global->__pyx_tuple__68
+#define __pyx_tuple__70 __pyx_mstate_global->__pyx_tuple__70
+#define __pyx_tuple__75 __pyx_mstate_global->__pyx_tuple__75
+#define __pyx_tuple__84 __pyx_mstate_global->__pyx_tuple__84
+#define __pyx_codeobj__21 __pyx_mstate_global->__pyx_codeobj__21
+#define __pyx_codeobj__22 __pyx_mstate_global->__pyx_codeobj__22
+#define __pyx_codeobj__24 __pyx_mstate_global->__pyx_codeobj__24
+#define __pyx_codeobj__25 __pyx_mstate_global->__pyx_codeobj__25
+#define __pyx_codeobj__27 __pyx_mstate_global->__pyx_codeobj__27
+#define __pyx_codeobj__29 __pyx_mstate_global->__pyx_codeobj__29
+#define __pyx_codeobj__31 __pyx_mstate_global->__pyx_codeobj__31
+#define __pyx_codeobj__33 __pyx_mstate_global->__pyx_codeobj__33
+#define __pyx_codeobj__34 __pyx_mstate_global->__pyx_codeobj__34
+#define __pyx_codeobj__35 __pyx_mstate_global->__pyx_codeobj__35
+#define __pyx_codeobj__38 __pyx_mstate_global->__pyx_codeobj__38
+#define __pyx_codeobj__43 __pyx_mstate_global->__pyx_codeobj__43
+#define __pyx_codeobj__44 __pyx_mstate_global->__pyx_codeobj__44
+#define __pyx_codeobj__45 __pyx_mstate_global->__pyx_codeobj__45
+#define __pyx_codeobj__47 __pyx_mstate_global->__pyx_codeobj__47
+#define __pyx_codeobj__48 __pyx_mstate_global->__pyx_codeobj__48
+#define __pyx_codeobj__50 __pyx_mstate_global->__pyx_codeobj__50
+#define __pyx_codeobj__52 __pyx_mstate_global->__pyx_codeobj__52
+#define __pyx_codeobj__54 __pyx_mstate_global->__pyx_codeobj__54
+#define __pyx_codeobj__55 __pyx_mstate_global->__pyx_codeobj__55
+#define __pyx_codeobj__56 __pyx_mstate_global->__pyx_codeobj__56
+#define __pyx_codeobj__58 __pyx_mstate_global->__pyx_codeobj__58
+#define __pyx_codeobj__60 __pyx_mstate_global->__pyx_codeobj__60
+#define __pyx_codeobj__62 __pyx_mstate_global->__pyx_codeobj__62
+#define __pyx_codeobj__63 __pyx_mstate_global->__pyx_codeobj__63
+#define __pyx_codeobj__64 __pyx_mstate_global->__pyx_codeobj__64
+#define __pyx_codeobj__65 __pyx_mstate_global->__pyx_codeobj__65
+#define __pyx_codeobj__67 __pyx_mstate_global->__pyx_codeobj__67
+#define __pyx_codeobj__69 __pyx_mstate_global->__pyx_codeobj__69
+#define __pyx_codeobj__71 __pyx_mstate_global->__pyx_codeobj__71
+#define __pyx_codeobj__72 __pyx_mstate_global->__pyx_codeobj__72
+#define __pyx_codeobj__73 __pyx_mstate_global->__pyx_codeobj__73
+#define __pyx_codeobj__74 __pyx_mstate_global->__pyx_codeobj__74
+#define __pyx_codeobj__76 __pyx_mstate_global->__pyx_codeobj__76
+#define __pyx_codeobj__77 __pyx_mstate_global->__pyx_codeobj__77
+#define __pyx_codeobj__78 __pyx_mstate_global->__pyx_codeobj__78
+#define __pyx_codeobj__79 __pyx_mstate_global->__pyx_codeobj__79
+#define __pyx_codeobj__80 __pyx_mstate_global->__pyx_codeobj__80
+#define __pyx_codeobj__81 __pyx_mstate_global->__pyx_codeobj__81
+#define __pyx_codeobj__82 __pyx_mstate_global->__pyx_codeobj__82
+#define __pyx_codeobj__83 __pyx_mstate_global->__pyx_codeobj__83
+#define __pyx_codeobj__85 __pyx_mstate_global->__pyx_codeobj__85
+#define __pyx_codeobj__86 __pyx_mstate_global->__pyx_codeobj__86
+#define __pyx_codeobj__87 __pyx_mstate_global->__pyx_codeobj__87
+#define __pyx_codeobj__88 __pyx_mstate_global->__pyx_codeobj__88
+#define __pyx_codeobj__89 __pyx_mstate_global->__pyx_codeobj__89
+#define __pyx_codeobj__90 __pyx_mstate_global->__pyx_codeobj__90
+#define __pyx_codeobj__91 __pyx_mstate_global->__pyx_codeobj__91
+/* #### Code section: module_code ### */
+
+/* "_pydevd_bundle/pydevd_cython.pyx":75
+ * # fmt: on
*
* def __init__(self): # <<<<<<<<<<<<<<
* self.pydev_state = STATE_RUN # STATE_RUN or STATE_SUSPEND
@@ -2680,12 +5534,20 @@ static PyObject *__pyx_codeobj__46;
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
- if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
- if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_nargs > 0)) {
+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1;}
+ if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo___init__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -2701,22 +5563,22 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__init__", 0);
+ __Pyx_RefNannySetupContext("__init__", 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":68
+ /* "_pydevd_bundle/pydevd_cython.pyx":76
*
* def __init__(self):
* self.pydev_state = STATE_RUN # STATE_RUN or STATE_SUSPEND # <<<<<<<<<<<<<<
* self.pydev_step_stop = None
*
*/
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_STATE_RUN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_STATE_RUN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 68, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 76, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_self->pydev_state = __pyx_t_2;
- /* "_pydevd_bundle/pydevd_cython.pyx":69
+ /* "_pydevd_bundle/pydevd_cython.pyx":77
* def __init__(self):
* self.pydev_state = STATE_RUN # STATE_RUN or STATE_SUSPEND
* self.pydev_step_stop = None # <<<<<<<<<<<<<<
@@ -2729,7 +5591,7 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__Pyx_DECREF(__pyx_v_self->pydev_step_stop);
__pyx_v_self->pydev_step_stop = Py_None;
- /* "_pydevd_bundle/pydevd_cython.pyx":77
+ /* "_pydevd_bundle/pydevd_cython.pyx":85
* # method the strategy is changed to a step in).
*
* self.pydev_original_step_cmd = -1 # Something as CMD_STEP_INTO, CMD_STEP_OVER, etc. # <<<<<<<<<<<<<<
@@ -2738,7 +5600,7 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
*/
__pyx_v_self->pydev_original_step_cmd = -1;
- /* "_pydevd_bundle/pydevd_cython.pyx":78
+ /* "_pydevd_bundle/pydevd_cython.pyx":86
*
* self.pydev_original_step_cmd = -1 # Something as CMD_STEP_INTO, CMD_STEP_OVER, etc.
* self.pydev_step_cmd = -1 # Something as CMD_STEP_INTO, CMD_STEP_OVER, etc. # <<<<<<<<<<<<<<
@@ -2747,7 +5609,7 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
*/
__pyx_v_self->pydev_step_cmd = -1;
- /* "_pydevd_bundle/pydevd_cython.pyx":80
+ /* "_pydevd_bundle/pydevd_cython.pyx":88
* self.pydev_step_cmd = -1 # Something as CMD_STEP_INTO, CMD_STEP_OVER, etc.
*
* self.pydev_notify_kill = False # <<<<<<<<<<<<<<
@@ -2756,7 +5618,7 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
*/
__pyx_v_self->pydev_notify_kill = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":81
+ /* "_pydevd_bundle/pydevd_cython.pyx":89
*
* self.pydev_notify_kill = False
* self.pydev_django_resolve_frame = False # <<<<<<<<<<<<<<
@@ -2765,7 +5627,7 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
*/
__pyx_v_self->pydev_django_resolve_frame = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":82
+ /* "_pydevd_bundle/pydevd_cython.pyx":90
* self.pydev_notify_kill = False
* self.pydev_django_resolve_frame = False
* self.pydev_call_from_jinja2 = None # <<<<<<<<<<<<<<
@@ -2778,7 +5640,7 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__Pyx_DECREF(__pyx_v_self->pydev_call_from_jinja2);
__pyx_v_self->pydev_call_from_jinja2 = Py_None;
- /* "_pydevd_bundle/pydevd_cython.pyx":83
+ /* "_pydevd_bundle/pydevd_cython.pyx":91
* self.pydev_django_resolve_frame = False
* self.pydev_call_from_jinja2 = None
* self.pydev_call_inside_jinja2 = None # <<<<<<<<<<<<<<
@@ -2791,20 +5653,20 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__Pyx_DECREF(__pyx_v_self->pydev_call_inside_jinja2);
__pyx_v_self->pydev_call_inside_jinja2 = Py_None;
- /* "_pydevd_bundle/pydevd_cython.pyx":84
+ /* "_pydevd_bundle/pydevd_cython.pyx":92
* self.pydev_call_from_jinja2 = None
* self.pydev_call_inside_jinja2 = None
* self.is_tracing = 0 # <<<<<<<<<<<<<<
* self.conditional_breakpoint_exception = None
- * self.pydev_message = ''
+ * self.pydev_message = ""
*/
__pyx_v_self->is_tracing = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":85
+ /* "_pydevd_bundle/pydevd_cython.pyx":93
* self.pydev_call_inside_jinja2 = None
* self.is_tracing = 0
* self.conditional_breakpoint_exception = None # <<<<<<<<<<<<<<
- * self.pydev_message = ''
+ * self.pydev_message = ""
* self.suspend_type = PYTHON_SUSPEND
*/
__Pyx_INCREF(Py_None);
@@ -2813,10 +5675,10 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__Pyx_DECREF(__pyx_v_self->conditional_breakpoint_exception);
__pyx_v_self->conditional_breakpoint_exception = ((PyObject*)Py_None);
- /* "_pydevd_bundle/pydevd_cython.pyx":86
+ /* "_pydevd_bundle/pydevd_cython.pyx":94
* self.is_tracing = 0
* self.conditional_breakpoint_exception = None
- * self.pydev_message = '' # <<<<<<<<<<<<<<
+ * self.pydev_message = "" # <<<<<<<<<<<<<<
* self.suspend_type = PYTHON_SUSPEND
* self.pydev_next_line = -1
*/
@@ -2826,34 +5688,34 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__Pyx_DECREF(__pyx_v_self->pydev_message);
__pyx_v_self->pydev_message = __pyx_kp_s_;
- /* "_pydevd_bundle/pydevd_cython.pyx":87
+ /* "_pydevd_bundle/pydevd_cython.pyx":95
* self.conditional_breakpoint_exception = None
- * self.pydev_message = ''
+ * self.pydev_message = ""
* self.suspend_type = PYTHON_SUSPEND # <<<<<<<<<<<<<<
* self.pydev_next_line = -1
- * self.pydev_func_name = '.invalid.' # Must match the type in cython
+ * self.pydev_func_name = ".invalid." # Must match the type in cython
*/
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PYTHON_SUSPEND); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PYTHON_SUSPEND); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 95, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 87, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 95, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_self->suspend_type = __pyx_t_2;
- /* "_pydevd_bundle/pydevd_cython.pyx":88
- * self.pydev_message = ''
+ /* "_pydevd_bundle/pydevd_cython.pyx":96
+ * self.pydev_message = ""
* self.suspend_type = PYTHON_SUSPEND
* self.pydev_next_line = -1 # <<<<<<<<<<<<<<
- * self.pydev_func_name = '.invalid.' # Must match the type in cython
+ * self.pydev_func_name = ".invalid." # Must match the type in cython
* self.suspended_at_unhandled = False
*/
__pyx_v_self->pydev_next_line = -1;
- /* "_pydevd_bundle/pydevd_cython.pyx":89
+ /* "_pydevd_bundle/pydevd_cython.pyx":97
* self.suspend_type = PYTHON_SUSPEND
* self.pydev_next_line = -1
- * self.pydev_func_name = '.invalid.' # Must match the type in cython # <<<<<<<<<<<<<<
+ * self.pydev_func_name = ".invalid." # Must match the type in cython # <<<<<<<<<<<<<<
* self.suspended_at_unhandled = False
- * self.trace_suspend_type = 'trace' # 'trace' or 'frame_eval'
+ * self.trace_suspend_type = "trace" # 'trace' or 'frame_eval'
*/
__Pyx_INCREF(__pyx_kp_s_invalid);
__Pyx_GIVEREF(__pyx_kp_s_invalid);
@@ -2861,19 +5723,19 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__Pyx_DECREF(__pyx_v_self->pydev_func_name);
__pyx_v_self->pydev_func_name = __pyx_kp_s_invalid;
- /* "_pydevd_bundle/pydevd_cython.pyx":90
+ /* "_pydevd_bundle/pydevd_cython.pyx":98
* self.pydev_next_line = -1
- * self.pydev_func_name = '.invalid.' # Must match the type in cython
+ * self.pydev_func_name = ".invalid." # Must match the type in cython
* self.suspended_at_unhandled = False # <<<<<<<<<<<<<<
- * self.trace_suspend_type = 'trace' # 'trace' or 'frame_eval'
+ * self.trace_suspend_type = "trace" # 'trace' or 'frame_eval'
* self.top_level_thread_tracer_no_back_frames = []
*/
__pyx_v_self->suspended_at_unhandled = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":91
- * self.pydev_func_name = '.invalid.' # Must match the type in cython
+ /* "_pydevd_bundle/pydevd_cython.pyx":99
+ * self.pydev_func_name = ".invalid." # Must match the type in cython
* self.suspended_at_unhandled = False
- * self.trace_suspend_type = 'trace' # 'trace' or 'frame_eval' # <<<<<<<<<<<<<<
+ * self.trace_suspend_type = "trace" # 'trace' or 'frame_eval' # <<<<<<<<<<<<<<
* self.top_level_thread_tracer_no_back_frames = []
* self.top_level_thread_tracer_unhandled = None
*/
@@ -2883,14 +5745,14 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__Pyx_DECREF(__pyx_v_self->trace_suspend_type);
__pyx_v_self->trace_suspend_type = __pyx_n_s_trace;
- /* "_pydevd_bundle/pydevd_cython.pyx":92
+ /* "_pydevd_bundle/pydevd_cython.pyx":100
* self.suspended_at_unhandled = False
- * self.trace_suspend_type = 'trace' # 'trace' or 'frame_eval'
+ * self.trace_suspend_type = "trace" # 'trace' or 'frame_eval'
* self.top_level_thread_tracer_no_back_frames = [] # <<<<<<<<<<<<<<
* self.top_level_thread_tracer_unhandled = None
* self.thread_tracer = None
*/
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 92, __pyx_L1_error)
+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->top_level_thread_tracer_no_back_frames);
@@ -2898,8 +5760,8 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__pyx_v_self->top_level_thread_tracer_no_back_frames = __pyx_t_1;
__pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":93
- * self.trace_suspend_type = 'trace' # 'trace' or 'frame_eval'
+ /* "_pydevd_bundle/pydevd_cython.pyx":101
+ * self.trace_suspend_type = "trace" # 'trace' or 'frame_eval'
* self.top_level_thread_tracer_no_back_frames = []
* self.top_level_thread_tracer_unhandled = None # <<<<<<<<<<<<<<
* self.thread_tracer = None
@@ -2911,7 +5773,7 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__Pyx_DECREF(__pyx_v_self->top_level_thread_tracer_unhandled);
__pyx_v_self->top_level_thread_tracer_unhandled = Py_None;
- /* "_pydevd_bundle/pydevd_cython.pyx":94
+ /* "_pydevd_bundle/pydevd_cython.pyx":102
* self.top_level_thread_tracer_no_back_frames = []
* self.top_level_thread_tracer_unhandled = None
* self.thread_tracer = None # <<<<<<<<<<<<<<
@@ -2924,7 +5786,7 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__Pyx_DECREF(__pyx_v_self->thread_tracer);
__pyx_v_self->thread_tracer = Py_None;
- /* "_pydevd_bundle/pydevd_cython.pyx":95
+ /* "_pydevd_bundle/pydevd_cython.pyx":103
* self.top_level_thread_tracer_unhandled = None
* self.thread_tracer = None
* self.step_in_initial_location = None # <<<<<<<<<<<<<<
@@ -2937,7 +5799,7 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__Pyx_DECREF(__pyx_v_self->step_in_initial_location);
__pyx_v_self->step_in_initial_location = Py_None;
- /* "_pydevd_bundle/pydevd_cython.pyx":96
+ /* "_pydevd_bundle/pydevd_cython.pyx":104
* self.thread_tracer = None
* self.step_in_initial_location = None
* self.pydev_smart_parent_offset = -1 # <<<<<<<<<<<<<<
@@ -2946,7 +5808,7 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
*/
__pyx_v_self->pydev_smart_parent_offset = -1;
- /* "_pydevd_bundle/pydevd_cython.pyx":97
+ /* "_pydevd_bundle/pydevd_cython.pyx":105
* self.step_in_initial_location = None
* self.pydev_smart_parent_offset = -1
* self.pydev_smart_child_offset = -1 # <<<<<<<<<<<<<<
@@ -2955,7 +5817,7 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
*/
__pyx_v_self->pydev_smart_child_offset = -1;
- /* "_pydevd_bundle/pydevd_cython.pyx":98
+ /* "_pydevd_bundle/pydevd_cython.pyx":106
* self.pydev_smart_parent_offset = -1
* self.pydev_smart_child_offset = -1
* self.pydev_smart_step_into_variants = () # <<<<<<<<<<<<<<
@@ -2968,14 +5830,14 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__Pyx_DECREF(__pyx_v_self->pydev_smart_step_into_variants);
__pyx_v_self->pydev_smart_step_into_variants = __pyx_empty_tuple;
- /* "_pydevd_bundle/pydevd_cython.pyx":99
+ /* "_pydevd_bundle/pydevd_cython.pyx":107
* self.pydev_smart_child_offset = -1
* self.pydev_smart_step_into_variants = ()
* self.target_id_to_smart_step_into_variant = {} # <<<<<<<<<<<<<<
*
* # Flag to indicate ipython use-case where each line will be executed as a call/line/return
*/
- __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->target_id_to_smart_step_into_variant);
@@ -2983,17 +5845,39 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__pyx_v_self->target_id_to_smart_step_into_variant = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":111
+ /* "_pydevd_bundle/pydevd_cython.pyx":119
* #
* # See: https://github.com/microsoft/debugpy/issues/869#issuecomment-1132141003
* self.pydev_use_scoped_step_frame = False # <<<<<<<<<<<<<<
+ * self.weak_thread = None
*
- * def get_topmost_frame(self, thread):
*/
__pyx_v_self->pydev_use_scoped_step_frame = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":67
- * # ENDIF
+ /* "_pydevd_bundle/pydevd_cython.pyx":120
+ * # See: https://github.com/microsoft/debugpy/issues/869#issuecomment-1132141003
+ * self.pydev_use_scoped_step_frame = False
+ * self.weak_thread = None # <<<<<<<<<<<<<<
+ *
+ * # Purpose: detect if this thread is suspended and actually in the wait loop
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ __Pyx_GOTREF(__pyx_v_self->weak_thread);
+ __Pyx_DECREF(__pyx_v_self->weak_thread);
+ __pyx_v_self->weak_thread = Py_None;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":125
+ * # at this time (otherwise it may be suspended but still didn't reach a point.
+ * # to pause).
+ * self.is_in_wait_loop = False # <<<<<<<<<<<<<<
+ *
+ * # fmt: off
+ */
+ __pyx_v_self->is_in_wait_loop = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":75
+ * # fmt: on
*
* def __init__(self): # <<<<<<<<<<<<<<
* self.pydev_state = STATE_RUN # STATE_RUN or STATE_SUSPEND
@@ -3012,361 +5896,396 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
return __pyx_r;
}
-/* "_pydevd_bundle/pydevd_cython.pyx":113
- * self.pydev_use_scoped_step_frame = False
- *
- * def get_topmost_frame(self, thread): # <<<<<<<<<<<<<<
- * '''
- * Gets the topmost frame for the given thread. Note that it may be None
+/* "_pydevd_bundle/pydevd_cython.pyx":129
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef object _get_related_thread(self): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _get_related_thread(self):
*/
-/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_3get_topmost_frame(PyObject *__pyx_v_self, PyObject *__pyx_v_thread); /*proto*/
-static char __pyx_doc_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_2get_topmost_frame[] = "\n Gets the topmost frame for the given thread. Note that it may be None\n and callers should remove the reference to the frame as soon as possible\n to avoid disturbing user code.\n ";
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_3get_topmost_frame(PyObject *__pyx_v_self, PyObject *__pyx_v_thread) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("get_topmost_frame (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_2get_topmost_frame(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_thread));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_2get_topmost_frame(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_thread) {
- PyObject *__pyx_v_current_frames = NULL;
- PyObject *__pyx_v_topmost_frame = NULL;
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_3_get_related_thread(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo__get_related_thread(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, int __pyx_skip_dispatch) {
+ PyObject *__pyx_v_thread = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- int __pyx_t_5;
+ unsigned int __pyx_t_5;
int __pyx_t_6;
- PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
- int __pyx_t_9;
- PyObject *__pyx_t_10 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_topmost_frame", 0);
+ __Pyx_RefNannySetupContext("_get_related_thread", 1);
+ /* Check if called by wrapper */
+ if (unlikely(__pyx_skip_dispatch)) ;
+ /* Check if overridden in Python */
+ else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+ static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+ if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+ PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+ #endif
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_related_thread); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 129, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (!__Pyx_IsSameCFunction(__pyx_t_1, (void*) __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_3_get_related_thread)) {
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 129, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ goto __pyx_L0;
+ }
+ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+ __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+ __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+ if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
+ __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+ }
+ #endif
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+ }
+ #endif
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":120
- * '''
- * # sys._current_frames(): dictionary with thread id -> topmost frame
- * current_frames = _current_frames() # <<<<<<<<<<<<<<
- * topmost_frame = current_frames.get(thread.ident)
- * if topmost_frame is None:
+ /* "_pydevd_bundle/pydevd_cython.pyx":134
+ * # ENDIF
+ * # fmt: on
+ * if self.pydev_notify_kill: # Already killed # <<<<<<<<<<<<<<
+ * return None
+ *
*/
- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_current_frames); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+ if (__pyx_v_self->pydev_notify_kill) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":135
+ * # fmt: on
+ * if self.pydev_notify_kill: # Already killed
+ * return None # <<<<<<<<<<<<<<
+ *
+ * if self.weak_thread is None:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":134
+ * # ENDIF
+ * # fmt: on
+ * if self.pydev_notify_kill: # Already killed # <<<<<<<<<<<<<<
+ * return None
+ *
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":137
+ * return None
+ *
+ * if self.weak_thread is None: # <<<<<<<<<<<<<<
+ * return None
+ *
+ */
+ __pyx_t_6 = (__pyx_v_self->weak_thread == Py_None);
+ if (__pyx_t_6) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":138
+ *
+ * if self.weak_thread is None:
+ * return None # <<<<<<<<<<<<<<
+ *
+ * thread = self.weak_thread()
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":137
+ * return None
+ *
+ * if self.weak_thread is None: # <<<<<<<<<<<<<<
+ * return None
+ *
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":140
+ * return None
+ *
+ * thread = self.weak_thread() # <<<<<<<<<<<<<<
+ * if thread is None:
+ * return False
+ */
+ __Pyx_INCREF(__pyx_v_self->weak_thread);
+ __pyx_t_2 = __pyx_v_self->weak_thread; __pyx_t_3 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_5 = 1;
}
}
- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 120, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_v_current_frames = __pyx_t_1;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_v_thread = __pyx_t_1;
__pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":121
- * # sys._current_frames(): dictionary with thread id -> topmost frame
- * current_frames = _current_frames()
- * topmost_frame = current_frames.get(thread.ident) # <<<<<<<<<<<<<<
- * if topmost_frame is None:
- * # Note: this is expected for dummy threads (so, getting the topmost frame should be
+ /* "_pydevd_bundle/pydevd_cython.pyx":141
+ *
+ * thread = self.weak_thread()
+ * if thread is None: # <<<<<<<<<<<<<<
+ * return False
+ *
+ */
+ __pyx_t_6 = (__pyx_v_thread == Py_None);
+ if (__pyx_t_6) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":142
+ * thread = self.weak_thread()
+ * if thread is None:
+ * return False # <<<<<<<<<<<<<<
+ *
+ * if thread._is_stopped:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_False);
+ __pyx_r = Py_False;
+ goto __pyx_L0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":141
+ *
+ * thread = self.weak_thread()
+ * if thread is None: # <<<<<<<<<<<<<<
+ * return False
+ *
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_current_frames, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 121, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_ident); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 121, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- }
}
- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 121, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_v_topmost_frame = __pyx_t_1;
- __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":122
- * current_frames = _current_frames()
- * topmost_frame = current_frames.get(thread.ident)
- * if topmost_frame is None: # <<<<<<<<<<<<<<
- * # Note: this is expected for dummy threads (so, getting the topmost frame should be
- * # treated as optional).
+ /* "_pydevd_bundle/pydevd_cython.pyx":144
+ * return False
+ *
+ * if thread._is_stopped: # <<<<<<<<<<<<<<
+ * return None
+ *
*/
- __pyx_t_5 = (__pyx_v_topmost_frame == Py_None);
- __pyx_t_6 = (__pyx_t_5 != 0);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_is_stopped); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 144, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 144, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (__pyx_t_6) {
- /* "_pydevd_bundle/pydevd_cython.pyx":125
- * # Note: this is expected for dummy threads (so, getting the topmost frame should be
- * # treated as optional).
- * pydev_log.info( # <<<<<<<<<<<<<<
- * 'Unable to get topmost frame for thread: %s, thread.ident: %s, id(thread): %s\nCurrent frames: %s.\n'
- * 'GEVENT_SUPPORT: %s',
+ /* "_pydevd_bundle/pydevd_cython.pyx":145
+ *
+ * if thread._is_stopped:
+ * return None # <<<<<<<<<<<<<<
+ *
+ * if thread._ident is None: # Can this happen?
*/
- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 125, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 125, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":129
- * 'GEVENT_SUPPORT: %s',
- * thread,
- * thread.ident, # <<<<<<<<<<<<<<
- * id(thread),
- * current_frames,
+ /* "_pydevd_bundle/pydevd_cython.pyx":144
+ * return False
+ *
+ * if thread._is_stopped: # <<<<<<<<<<<<<<
+ * return None
+ *
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_ident); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 129, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":130
- * thread,
- * thread.ident,
- * id(thread), # <<<<<<<<<<<<<<
- * current_frames,
- * SUPPORT_GEVENT,
+ /* "_pydevd_bundle/pydevd_cython.pyx":147
+ * return None
+ *
+ * if thread._ident is None: # Can this happen? # <<<<<<<<<<<<<<
+ * pydev_log.critical("thread._ident is None in _get_related_thread!")
+ * return None
*/
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_thread); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 130, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_ident); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = (__pyx_t_1 == Py_None);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_6) {
- /* "_pydevd_bundle/pydevd_cython.pyx":132
- * id(thread),
- * current_frames,
- * SUPPORT_GEVENT, # <<<<<<<<<<<<<<
- * )
+ /* "_pydevd_bundle/pydevd_cython.pyx":148
+ *
+ * if thread._ident is None: # Can this happen?
+ * pydev_log.critical("thread._ident is None in _get_related_thread!") # <<<<<<<<<<<<<<
+ * return None
*
*/
- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_SUPPORT_GEVENT); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 132, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = NULL;
- __pyx_t_9 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_8)) {
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 148, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_critical); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 148, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
- __pyx_t_9 = 1;
+ __pyx_t_5 = 1;
}
}
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[7] = {__pyx_t_8, __pyx_kp_s_Unable_to_get_topmost_frame_for, __pyx_v_thread, __pyx_t_2, __pyx_t_4, __pyx_v_current_frames, __pyx_t_7};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 6+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[7] = {__pyx_t_8, __pyx_kp_s_Unable_to_get_topmost_frame_for, __pyx_v_thread, __pyx_t_2, __pyx_t_4, __pyx_v_current_frames, __pyx_t_7};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 6+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
#endif
{
- __pyx_t_10 = PyTuple_New(6+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 125, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- if (__pyx_t_8) {
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
- }
- __Pyx_INCREF(__pyx_kp_s_Unable_to_get_topmost_frame_for);
- __Pyx_GIVEREF(__pyx_kp_s_Unable_to_get_topmost_frame_for);
- PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_kp_s_Unable_to_get_topmost_frame_for);
- __Pyx_INCREF(__pyx_v_thread);
- __Pyx_GIVEREF(__pyx_v_thread);
- PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_v_thread);
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_9, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_9, __pyx_t_4);
- __Pyx_INCREF(__pyx_v_current_frames);
- __Pyx_GIVEREF(__pyx_v_current_frames);
- PyTuple_SET_ITEM(__pyx_t_10, 4+__pyx_t_9, __pyx_v_current_frames);
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_10, 5+__pyx_t_9, __pyx_t_7);
- __pyx_t_2 = 0;
- __pyx_t_4 = 0;
- __pyx_t_7 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error)
+ PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_kp_s_thread__ident_is_None_in__get_re};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 148, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":122
- * current_frames = _current_frames()
- * topmost_frame = current_frames.get(thread.ident)
- * if topmost_frame is None: # <<<<<<<<<<<<<<
- * # Note: this is expected for dummy threads (so, getting the topmost frame should be
- * # treated as optional).
- */
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":135
- * )
- *
- * return topmost_frame # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":149
+ * if thread._ident is None: # Can this happen?
+ * pydev_log.critical("thread._ident is None in _get_related_thread!")
+ * return None # <<<<<<<<<<<<<<
*
- * def __str__(self):
+ * if threading._active.get(thread._ident) is not thread:
*/
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_topmost_frame);
- __pyx_r = __pyx_v_topmost_frame;
- goto __pyx_L0;
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":113
- * self.pydev_use_scoped_step_frame = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":147
+ * return None
*
- * def get_topmost_frame(self, thread): # <<<<<<<<<<<<<<
- * '''
- * Gets the topmost frame for the given thread. Note that it may be None
+ * if thread._ident is None: # Can this happen? # <<<<<<<<<<<<<<
+ * pydev_log.critical("thread._ident is None in _get_related_thread!")
+ * return None
*/
+ }
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.get_topmost_frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_current_frames);
- __Pyx_XDECREF(__pyx_v_topmost_frame);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "_pydevd_bundle/pydevd_cython.pyx":137
- * return topmost_frame
+ /* "_pydevd_bundle/pydevd_cython.pyx":151
+ * return None
+ *
+ * if threading._active.get(thread._ident) is not thread: # <<<<<<<<<<<<<<
+ * return None
*
- * def __str__(self): # <<<<<<<<<<<<<<
- * return 'State:%s Stop:%s Cmd: %s Kill:%s' % (
- * self.pydev_state, self.pydev_step_stop, self.pydev_step_cmd, self.pydev_notify_kill)
*/
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_threading); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_active); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 151, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_ident); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 151, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_2};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 151, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_t_6 = (__pyx_t_1 != __pyx_v_thread);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_6) {
-/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_5__str__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_5__str__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_4__str__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_4__str__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__str__", 0);
-
- /* "_pydevd_bundle/pydevd_cython.pyx":138
+ /* "_pydevd_bundle/pydevd_cython.pyx":152
*
- * def __str__(self):
- * return 'State:%s Stop:%s Cmd: %s Kill:%s' % ( # <<<<<<<<<<<<<<
- * self.pydev_state, self.pydev_step_stop, self.pydev_step_cmd, self.pydev_notify_kill)
+ * if threading._active.get(thread._ident) is not thread:
+ * return None # <<<<<<<<<<<<<<
*
+ * return thread
*/
- __Pyx_XDECREF(__pyx_r);
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":139
- * def __str__(self):
- * return 'State:%s Stop:%s Cmd: %s Kill:%s' % (
- * self.pydev_state, self.pydev_step_stop, self.pydev_step_cmd, self.pydev_notify_kill) # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":151
+ * return None
*
+ * if threading._active.get(thread._ident) is not thread: # <<<<<<<<<<<<<<
+ * return None
*
*/
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_step_cmd); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_self->pydev_notify_kill); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 139, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 139, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
- __Pyx_INCREF(__pyx_v_self->pydev_step_stop);
- __Pyx_GIVEREF(__pyx_v_self->pydev_step_stop);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_self->pydev_step_stop);
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_3);
- __pyx_t_1 = 0;
- __pyx_t_2 = 0;
- __pyx_t_3 = 0;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":138
+ /* "_pydevd_bundle/pydevd_cython.pyx":154
+ * return None
*
- * def __str__(self):
- * return 'State:%s Stop:%s Cmd: %s Kill:%s' % ( # <<<<<<<<<<<<<<
- * self.pydev_state, self.pydev_step_stop, self.pydev_step_cmd, self.pydev_notify_kill)
+ * return thread # <<<<<<<<<<<<<<
*
+ * # fmt: off
*/
- __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_State_s_Stop_s_Cmd_s_Kill_s, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_thread);
+ __pyx_r = __pyx_v_thread;
goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":137
- * return topmost_frame
- *
- * def __str__(self): # <<<<<<<<<<<<<<
- * return 'State:%s Stop:%s Cmd: %s Kill:%s' % (
- * self.pydev_state, self.pydev_step_stop, self.pydev_step_cmd, self.pydev_notify_kill)
+ /* "_pydevd_bundle/pydevd_cython.pyx":129
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef object _get_related_thread(self): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _get_related_thread(self):
*/
/* function exit code */
@@ -3375,44 +6294,66 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo._get_related_thread", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
__pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_thread);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-/* "_pydevd_bundle/pydevd_cython.pxd":2
- * cdef class PyDBAdditionalThreadInfo:
- * cdef public int pydev_state # <<<<<<<<<<<<<<
- * cdef public object pydev_step_stop # Actually, it's a frame or None
- * cdef public int pydev_original_step_cmd
- */
-
/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_3_get_related_thread(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_3_get_related_thread = {"_get_related_thread", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_3_get_related_thread, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_3_get_related_thread(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
+ __Pyx_RefNannySetupContext("_get_related_thread (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_nargs > 0)) {
+ __Pyx_RaiseArgtupleInvalid("_get_related_thread", 1, 0, 0, __pyx_nargs); return NULL;}
+ if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_get_related_thread", 0))) return NULL;
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_2_get_related_thread(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_2_get_related_thread(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("_get_related_thread", 1);
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo__get_related_thread(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 129, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
@@ -3421,7 +6362,7 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_state.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo._get_related_thread", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
@@ -3429,176 +6370,271 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
return __pyx_r;
}
-/* Python wrapper */
-static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
+/* "_pydevd_bundle/pydevd_cython.pyx":158
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef bint _is_stepping(self): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _is_stepping(self):
+ */
-static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_5_is_stepping(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static int __pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo__is_stepping(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, int __pyx_skip_dispatch) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- int __pyx_t_1;
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ unsigned int __pyx_t_5;
+ int __pyx_t_6;
+ int __pyx_t_7;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2, __pyx_L1_error)
- __pyx_v_self->pydev_state = __pyx_t_1;
-
- /* function exit code */
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_state.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "_pydevd_bundle/pydevd_cython.pxd":3
- * cdef class PyDBAdditionalThreadInfo:
- * cdef public int pydev_state
- * cdef public object pydev_step_stop # Actually, it's a frame or None # <<<<<<<<<<<<<<
- * cdef public int pydev_original_step_cmd
- * cdef public int pydev_step_cmd
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->pydev_step_stop);
- __pyx_r = __pyx_v_self->pydev_step_stop;
- goto __pyx_L0;
+ __Pyx_RefNannySetupContext("_is_stepping", 1);
+ /* Check if called by wrapper */
+ if (unlikely(__pyx_skip_dispatch)) ;
+ /* Check if overridden in Python */
+ else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+ static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+ if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+ PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+ #endif
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_stepping); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 158, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (!__Pyx_IsSameCFunction(__pyx_t_1, (void*) __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_5_is_stepping)) {
+ __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 158, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 158, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_6;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ goto __pyx_L0;
+ }
+ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+ __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+ __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+ if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
+ __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+ }
+ #endif
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+ }
+ #endif
+ }
- /* function exit code */
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
+ /* "_pydevd_bundle/pydevd_cython.pyx":163
+ * # ENDIF
+ * # fmt: on
+ * if self.pydev_state == STATE_RUN and self.pydev_step_cmd != -1: # <<<<<<<<<<<<<<
+ * # This means actually stepping in a step operation.
+ * return True
+ */
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_STATE_RUN); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 163, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 163, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 163, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (__pyx_t_7) {
+ } else {
+ __pyx_t_6 = __pyx_t_7;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __pyx_t_7 = (__pyx_v_self->pydev_step_cmd != -1L);
+ __pyx_t_6 = __pyx_t_7;
+ __pyx_L4_bool_binop_done:;
+ if (__pyx_t_6) {
-/* Python wrapper */
-static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+ /* "_pydevd_bundle/pydevd_cython.pyx":165
+ * if self.pydev_state == STATE_RUN and self.pydev_step_cmd != -1:
+ * # This means actually stepping in a step operation.
+ * return True # <<<<<<<<<<<<<<
+ *
+ * if self.pydev_state == STATE_SUSPEND and self.is_in_wait_loop:
+ */
+ __pyx_r = 1;
+ goto __pyx_L0;
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
+ /* "_pydevd_bundle/pydevd_cython.pyx":163
+ * # ENDIF
+ * # fmt: on
+ * if self.pydev_state == STATE_RUN and self.pydev_step_cmd != -1: # <<<<<<<<<<<<<<
+ * # This means actually stepping in a step operation.
+ * return True
+ */
+ }
-static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__", 0);
- __Pyx_INCREF(__pyx_v_value);
- __Pyx_GIVEREF(__pyx_v_value);
- __Pyx_GOTREF(__pyx_v_self->pydev_step_stop);
- __Pyx_DECREF(__pyx_v_self->pydev_step_stop);
- __pyx_v_self->pydev_step_stop = __pyx_v_value;
+ /* "_pydevd_bundle/pydevd_cython.pyx":167
+ * return True
+ *
+ * if self.pydev_state == STATE_SUSPEND and self.is_in_wait_loop: # <<<<<<<<<<<<<<
+ * # This means stepping because it was suspended but still didn't
+ * # reach a suspension point.
+ */
+ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 167, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_STATE_SUSPEND); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 167, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 167, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 167, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_7) {
+ } else {
+ __pyx_t_6 = __pyx_t_7;
+ goto __pyx_L7_bool_binop_done;
+ }
+ __pyx_t_6 = __pyx_v_self->is_in_wait_loop;
+ __pyx_L7_bool_binop_done:;
+ if (__pyx_t_6) {
- /* function exit code */
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
+ /* "_pydevd_bundle/pydevd_cython.pyx":170
+ * # This means stepping because it was suspended but still didn't
+ * # reach a suspension point.
+ * return True # <<<<<<<<<<<<<<
+ *
+ * return False
+ */
+ __pyx_r = 1;
+ goto __pyx_L0;
-/* Python wrapper */
-static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_5__del__(PyObject *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
+ /* "_pydevd_bundle/pydevd_cython.pyx":167
+ * return True
+ *
+ * if self.pydev_state == STATE_SUSPEND and self.is_in_wait_loop: # <<<<<<<<<<<<<<
+ * # This means stepping because it was suspended but still didn't
+ * # reach a suspension point.
+ */
+ }
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
+ /* "_pydevd_bundle/pydevd_cython.pyx":172
+ * return True
+ *
+ * return False # <<<<<<<<<<<<<<
+ *
+ * # fmt: off
+ */
+ __pyx_r = 0;
+ goto __pyx_L0;
-static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->pydev_step_stop);
- __Pyx_DECREF(__pyx_v_self->pydev_step_stop);
- __pyx_v_self->pydev_step_stop = Py_None;
+ /* "_pydevd_bundle/pydevd_cython.pyx":158
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef bint _is_stepping(self): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _is_stepping(self):
+ */
/* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo._is_stepping", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
+ __pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-/* "_pydevd_bundle/pydevd_cython.pxd":4
- * cdef public int pydev_state
- * cdef public object pydev_step_stop # Actually, it's a frame or None
- * cdef public int pydev_original_step_cmd # <<<<<<<<<<<<<<
- * cdef public int pydev_step_cmd
- * cdef public bint pydev_notify_kill
- */
-
/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_5_is_stepping(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_5_is_stepping = {"_is_stepping", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_5_is_stepping, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_5_is_stepping(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
+ __Pyx_RefNannySetupContext("_is_stepping (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_nargs > 0)) {
+ __Pyx_RaiseArgtupleInvalid("_is_stepping", 1, 0, 0, __pyx_nargs); return NULL;}
+ if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_is_stepping", 0))) return NULL;
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_4_is_stepping(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_4_is_stepping(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_1;
+ PyObject *__pyx_t_2 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("_is_stepping", 1);
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_original_step_cmd); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
+ __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo__is_stepping(__pyx_v_self, 1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 158, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 158, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_original_step_cmd.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo._is_stepping", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
@@ -3606,72 +6642,396 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
return __pyx_r;
}
-/* Python wrapper */
-static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
+/* "_pydevd_bundle/pydevd_cython.pyx":176
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef get_topmost_frame(self, thread): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def get_topmost_frame(self, thread):
+ */
-static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_7get_topmost_frame(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_get_topmost_frame(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_thread, int __pyx_skip_dispatch) {
+ PyObject *__pyx_v_current_frames = NULL;
+ PyObject *__pyx_v_topmost_frame = NULL;
+ PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- int __pyx_t_1;
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ unsigned int __pyx_t_5;
+ int __pyx_t_6;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 4, __pyx_L1_error)
- __pyx_v_self->pydev_original_step_cmd = __pyx_t_1;
+ __Pyx_RefNannySetupContext("get_topmost_frame", 1);
+ /* Check if called by wrapper */
+ if (unlikely(__pyx_skip_dispatch)) ;
+ /* Check if overridden in Python */
+ else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+ static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+ if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+ PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+ #endif
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_topmost_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (!__Pyx_IsSameCFunction(__pyx_t_1, (void*) __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_7get_topmost_frame)) {
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_thread};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ goto __pyx_L0;
+ }
+ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+ __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+ __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+ if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
+ __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+ }
+ #endif
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+ }
+ #endif
+ }
- /* function exit code */
- __pyx_r = 0;
+ /* "_pydevd_bundle/pydevd_cython.pyx":187
+ * """
+ * # sys._current_frames(): dictionary with thread id -> topmost frame
+ * current_frames = _current_frames() # <<<<<<<<<<<<<<
+ * topmost_frame = current_frames.get(thread._ident)
+ * if topmost_frame is None:
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_current_frames); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 187, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 187, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_v_current_frames = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":188
+ * # sys._current_frames(): dictionary with thread id -> topmost frame
+ * current_frames = _current_frames()
+ * topmost_frame = current_frames.get(thread._ident) # <<<<<<<<<<<<<<
+ * if topmost_frame is None:
+ * # Note: this is expected for dummy threads (so, getting the topmost frame should be
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_current_frames, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 188, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_ident); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 188, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 188, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_v_topmost_frame = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":189
+ * current_frames = _current_frames()
+ * topmost_frame = current_frames.get(thread._ident)
+ * if topmost_frame is None: # <<<<<<<<<<<<<<
+ * # Note: this is expected for dummy threads (so, getting the topmost frame should be
+ * # treated as optional).
+ */
+ __pyx_t_6 = (__pyx_v_topmost_frame == Py_None);
+ if (__pyx_t_6) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":192
+ * # Note: this is expected for dummy threads (so, getting the topmost frame should be
+ * # treated as optional).
+ * pydev_log.info( # <<<<<<<<<<<<<<
+ * "Unable to get topmost frame for thread: %s, thread.ident: %s, id(thread): %s\nCurrent frames: %s.\n" "GEVENT_SUPPORT: %s",
+ * thread,
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 192, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":195
+ * "Unable to get topmost frame for thread: %s, thread.ident: %s, id(thread): %s\nCurrent frames: %s.\n" "GEVENT_SUPPORT: %s",
+ * thread,
+ * thread.ident, # <<<<<<<<<<<<<<
+ * id(thread),
+ * current_frames,
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_ident_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 195, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":196
+ * thread,
+ * thread.ident,
+ * id(thread), # <<<<<<<<<<<<<<
+ * current_frames,
+ * SUPPORT_GEVENT,
+ */
+ __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_thread); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 196, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":198
+ * id(thread),
+ * current_frames,
+ * SUPPORT_GEVENT, # <<<<<<<<<<<<<<
+ * )
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_SUPPORT_GEVENT); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 198, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[7] = {__pyx_t_8, __pyx_kp_s_Unable_to_get_topmost_frame_for, __pyx_v_thread, __pyx_t_2, __pyx_t_4, __pyx_v_current_frames, __pyx_t_7};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 6+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":189
+ * current_frames = _current_frames()
+ * topmost_frame = current_frames.get(thread._ident)
+ * if topmost_frame is None: # <<<<<<<<<<<<<<
+ * # Note: this is expected for dummy threads (so, getting the topmost frame should be
+ * # treated as optional).
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":201
+ * )
+ *
+ * return topmost_frame # <<<<<<<<<<<<<<
+ *
+ * # fmt: off
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_topmost_frame);
+ __pyx_r = __pyx_v_topmost_frame;
goto __pyx_L0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":176
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef get_topmost_frame(self, thread): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def get_topmost_frame(self, thread):
+ */
+
+ /* function exit code */
__pyx_L1_error:;
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_original_step_cmd.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_8);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.get_topmost_frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
__pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_current_frames);
+ __Pyx_XDECREF(__pyx_v_topmost_frame);
+ __Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-/* "_pydevd_bundle/pydevd_cython.pxd":5
- * cdef public object pydev_step_stop # Actually, it's a frame or None
- * cdef public int pydev_original_step_cmd
- * cdef public int pydev_step_cmd # <<<<<<<<<<<<<<
- * cdef public bint pydev_notify_kill
- * cdef public object pydev_smart_step_stop # Actually, it's a frame or None
- */
-
/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_7get_topmost_frame(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_6get_topmost_frame, "\n Gets the topmost frame for the given thread. Note that it may be None\n and callers should remove the reference to the frame as soon as possible\n to avoid disturbing user code.\n ");
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_7get_topmost_frame = {"get_topmost_frame", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_7get_topmost_frame, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_6get_topmost_frame};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_7get_topmost_frame(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_thread = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
+ __Pyx_RefNannySetupContext("get_topmost_frame (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_thread,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_thread)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 176, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get_topmost_frame") < 0)) __PYX_ERR(0, 176, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v_thread = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("get_topmost_frame", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 176, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.get_topmost_frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_6get_topmost_frame(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), __pyx_v_thread);
/* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_6get_topmost_frame(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_thread) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("get_topmost_frame", 1);
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_step_cmd); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_get_topmost_frame(__pyx_v_self, __pyx_v_thread, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
@@ -3680,7 +7040,7 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_step_cmd.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.get_topmost_frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
@@ -3688,43 +7048,632 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
return __pyx_r;
}
-/* Python wrapper */
-static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
+/* "_pydevd_bundle/pydevd_cython.pyx":205
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef update_stepping_info(self): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def update_stepping_info(self):
+ */
-static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_9update_stepping_info(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_update_stepping_info(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, int __pyx_skip_dispatch) {
+ PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- int __pyx_t_1;
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ unsigned int __pyx_t_5;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 5, __pyx_L1_error)
- __pyx_v_self->pydev_step_cmd = __pyx_t_1;
-
- /* function exit code */
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_step_cmd.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "_pydevd_bundle/pydevd_cython.pxd":6
- * cdef public int pydev_original_step_cmd
+ __Pyx_RefNannySetupContext("update_stepping_info", 1);
+ /* Check if called by wrapper */
+ if (unlikely(__pyx_skip_dispatch)) ;
+ /* Check if overridden in Python */
+ else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+ static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+ if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+ PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+ #endif
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_update_stepping_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (!__Pyx_IsSameCFunction(__pyx_t_1, (void*) __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_9update_stepping_info)) {
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 205, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ goto __pyx_L0;
+ }
+ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+ __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+ __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+ if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
+ __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+ }
+ #endif
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+ }
+ #endif
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":210
+ * # ENDIF
+ * # fmt: on
+ * _update_stepping_info(self) # <<<<<<<<<<<<<<
+ *
+ * def __str__(self):
+ */
+ __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython__update_stepping_info(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 210, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":205
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef update_stepping_info(self): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def update_stepping_info(self):
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.update_stepping_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_9update_stepping_info(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_9update_stepping_info = {"update_stepping_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_9update_stepping_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_9update_stepping_info(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("update_stepping_info (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_nargs > 0)) {
+ __Pyx_RaiseArgtupleInvalid("update_stepping_info", 1, 0, 0, __pyx_nargs); return NULL;}
+ if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "update_stepping_info", 0))) return NULL;
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_8update_stepping_info(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_8update_stepping_info(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("update_stepping_info", 1);
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_update_stepping_info(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.update_stepping_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_bundle/pydevd_cython.pyx":212
+ * _update_stepping_info(self)
+ *
+ * def __str__(self): # <<<<<<<<<<<<<<
+ * return "State:%s Stop:%s Cmd: %s Kill:%s" % (self.pydev_state, self.pydev_step_stop, self.pydev_step_cmd, self.pydev_notify_kill)
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11__str__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11__str__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10__str__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10__str__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__str__", 1);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":213
+ *
+ * def __str__(self):
+ * return "State:%s Stop:%s Cmd: %s Kill:%s" % (self.pydev_state, self.pydev_step_stop, self.pydev_step_cmd, self.pydev_notify_kill) # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 213, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_step_cmd); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_self->pydev_notify_kill); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 213, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 213, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(0, 213, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_self->pydev_step_stop);
+ __Pyx_GIVEREF(__pyx_v_self->pydev_step_stop);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_self->pydev_step_stop)) __PYX_ERR(0, 213, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_2);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_3);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_3)) __PYX_ERR(0, 213, __pyx_L1_error);
+ __pyx_t_1 = 0;
+ __pyx_t_2 = 0;
+ __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_State_s_Stop_s_Cmd_s_Kill_s, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 213, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":212
+ * _update_stepping_info(self)
+ *
+ * def __str__(self): # <<<<<<<<<<<<<<
+ * return "State:%s Stop:%s Cmd: %s Kill:%s" % (self.pydev_state, self.pydev_step_stop, self.pydev_step_cmd, self.pydev_notify_kill)
+ *
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_bundle/pydevd_cython.pxd":2
+ * cdef class PyDBAdditionalThreadInfo:
+ * cdef public int pydev_state # <<<<<<<<<<<<<<
+ * cdef public object pydev_step_stop # Actually, it's a frame or None
+ * cdef public int pydev_original_step_cmd
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__get__", 1);
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_state.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
+ int __pyx_r;
+ int __pyx_t_1;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_v_self->pydev_state = __pyx_t_1;
+
+ /* function exit code */
+ __pyx_r = 0;
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_state.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = -1;
+ __pyx_L0:;
+ return __pyx_r;
+}
+
+/* "_pydevd_bundle/pydevd_cython.pxd":3
+ * cdef class PyDBAdditionalThreadInfo:
+ * cdef public int pydev_state
+ * cdef public object pydev_step_stop # Actually, it's a frame or None # <<<<<<<<<<<<<<
+ * cdef public int pydev_original_step_cmd
+ * cdef public int pydev_step_cmd
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__get__", 1);
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_self->pydev_step_stop);
+ __pyx_r = __pyx_v_self->pydev_step_stop;
+ goto __pyx_L0;
+
+ /* function exit code */
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__set__", 1);
+ __Pyx_INCREF(__pyx_v_value);
+ __Pyx_GIVEREF(__pyx_v_value);
+ __Pyx_GOTREF(__pyx_v_self->pydev_step_stop);
+ __Pyx_DECREF(__pyx_v_self->pydev_step_stop);
+ __pyx_v_self->pydev_step_stop = __pyx_v_value;
+
+ /* function exit code */
+ __pyx_r = 0;
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__del__", 1);
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ __Pyx_GOTREF(__pyx_v_self->pydev_step_stop);
+ __Pyx_DECREF(__pyx_v_self->pydev_step_stop);
+ __pyx_v_self->pydev_step_stop = Py_None;
+
+ /* function exit code */
+ __pyx_r = 0;
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_bundle/pydevd_cython.pxd":4
+ * cdef public int pydev_state
+ * cdef public object pydev_step_stop # Actually, it's a frame or None
+ * cdef public int pydev_original_step_cmd # <<<<<<<<<<<<<<
+ * cdef public int pydev_step_cmd
+ * cdef public bint pydev_notify_kill
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__get__", 1);
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_original_step_cmd); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_original_step_cmd.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
+ int __pyx_r;
+ int __pyx_t_1;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_v_self->pydev_original_step_cmd = __pyx_t_1;
+
+ /* function exit code */
+ __pyx_r = 0;
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_original_step_cmd.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = -1;
+ __pyx_L0:;
+ return __pyx_r;
+}
+
+/* "_pydevd_bundle/pydevd_cython.pxd":5
+ * cdef public object pydev_step_stop # Actually, it's a frame or None
+ * cdef public int pydev_original_step_cmd
+ * cdef public int pydev_step_cmd # <<<<<<<<<<<<<<
+ * cdef public bint pydev_notify_kill
+ * cdef public object pydev_smart_step_stop # Actually, it's a frame or None
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__get__", 1);
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_step_cmd); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_step_cmd.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
+ int __pyx_r;
+ int __pyx_t_1;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 5, __pyx_L1_error)
+ __pyx_v_self->pydev_step_cmd = __pyx_t_1;
+
+ /* function exit code */
+ __pyx_r = 0;
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_step_cmd.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = -1;
+ __pyx_L0:;
+ return __pyx_r;
+}
+
+/* "_pydevd_bundle/pydevd_cython.pxd":6
+ * cdef public int pydev_original_step_cmd
* cdef public int pydev_step_cmd
* cdef public bint pydev_notify_kill # <<<<<<<<<<<<<<
* cdef public object pydev_smart_step_stop # Actually, it's a frame or None
@@ -3734,9 +7683,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_17pydev_notify_kill_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_17pydev_notify_kill_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_17pydev_notify_kill___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -3751,7 +7702,7 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->pydev_notify_kill); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -3773,9 +7724,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_17pydev_notify_kill_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_17pydev_notify_kill_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_17pydev_notify_kill_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -3785,12 +7738,10 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_17pydev_notify_kill_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
- __Pyx_RefNannyDeclarations
int __pyx_t_1;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 6, __pyx_L1_error)
__pyx_v_self->pydev_notify_kill = __pyx_t_1;
@@ -3801,7 +7752,6 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_notify_kill.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
- __Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -3816,9 +7766,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -3829,7 +7781,7 @@ static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->pydev_smart_step_stop);
__pyx_r = __pyx_v_self->pydev_smart_step_stop;
@@ -3845,9 +7797,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -3858,7 +7812,7 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__", 0);
+ __Pyx_RefNannySetupContext("__set__", 1);
__Pyx_INCREF(__pyx_v_value);
__Pyx_GIVEREF(__pyx_v_value);
__Pyx_GOTREF(__pyx_v_self->pydev_smart_step_stop);
@@ -3874,9 +7828,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -3887,7 +7843,7 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->pydev_smart_step_stop);
@@ -3911,9 +7867,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_26pydev_django_resolve_frame_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_26pydev_django_resolve_frame_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_26pydev_django_resolve_frame___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -3928,7 +7886,7 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->pydev_django_resolve_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -3950,9 +7908,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_26pydev_django_resolve_frame_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_26pydev_django_resolve_frame_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_26pydev_django_resolve_frame_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -3962,12 +7922,10 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_26pydev_django_resolve_frame_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
- __Pyx_RefNannyDeclarations
int __pyx_t_1;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 8, __pyx_L1_error)
__pyx_v_self->pydev_django_resolve_frame = __pyx_t_1;
@@ -3978,7 +7936,6 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_django_resolve_frame.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
- __Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -3993,9 +7950,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -4006,7 +7965,7 @@ static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->pydev_call_from_jinja2);
__pyx_r = __pyx_v_self->pydev_call_from_jinja2;
@@ -4022,9 +7981,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -4035,7 +7996,7 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__", 0);
+ __Pyx_RefNannySetupContext("__set__", 1);
__Pyx_INCREF(__pyx_v_value);
__Pyx_GIVEREF(__pyx_v_value);
__Pyx_GOTREF(__pyx_v_self->pydev_call_from_jinja2);
@@ -4051,9 +8012,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -4064,7 +8027,7 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->pydev_call_from_jinja2);
@@ -4088,9 +8051,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -4101,7 +8066,7 @@ static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->pydev_call_inside_jinja2);
__pyx_r = __pyx_v_self->pydev_call_inside_jinja2;
@@ -4117,9 +8082,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -4130,7 +8097,7 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__", 0);
+ __Pyx_RefNannySetupContext("__set__", 1);
__Pyx_INCREF(__pyx_v_value);
__Pyx_GIVEREF(__pyx_v_value);
__Pyx_GOTREF(__pyx_v_self->pydev_call_inside_jinja2);
@@ -4146,9 +8113,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -4159,7 +8128,7 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->pydev_call_inside_jinja2);
@@ -4183,9 +8152,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10is_tracing_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10is_tracing_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10is_tracing___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -4200,7 +8171,7 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->is_tracing); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -4222,9 +8193,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10is_tracing_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10is_tracing_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10is_tracing_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -4234,12 +8207,10 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10is_tracing_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
- __Pyx_RefNannyDeclarations
int __pyx_t_1;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
__pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 11, __pyx_L1_error)
__pyx_v_self->is_tracing = __pyx_t_1;
@@ -4250,7 +8221,6 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.is_tracing.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
- __Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -4265,9 +8235,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -4278,7 +8250,7 @@ static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->conditional_breakpoint_exception);
__pyx_r = __pyx_v_self->conditional_breakpoint_exception;
@@ -4294,9 +8266,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -4311,8 +8285,8 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- if (!(likely(PyTuple_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_RefNannySetupContext("__set__", 1);
+ if (!(likely(PyTuple_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v_value))) __PYX_ERR(1, 12, __pyx_L1_error)
__pyx_t_1 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
@@ -4336,9 +8310,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -4349,7 +8325,7 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->conditional_breakpoint_exception);
@@ -4373,9 +8349,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -4386,7 +8364,7 @@ static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->pydev_message);
__pyx_r = __pyx_v_self->pydev_message;
@@ -4402,9 +8380,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -4419,8 +8399,8 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_RefNannySetupContext("__set__", 1);
+ if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(1, 13, __pyx_L1_error)
__pyx_t_1 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
@@ -4444,9 +8424,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -4457,7 +8439,7 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->pydev_message);
@@ -4481,9 +8463,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12suspend_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12suspend_type_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12suspend_type___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -4498,7 +8482,7 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->suspend_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -4520,9 +8504,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12suspend_type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12suspend_type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12suspend_type_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -4532,12 +8518,10 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12suspend_type_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
- __Pyx_RefNannyDeclarations
int __pyx_t_1;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
__pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 14, __pyx_L1_error)
__pyx_v_self->suspend_type = __pyx_t_1;
@@ -4548,7 +8532,6 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.suspend_type.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
- __Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -4563,9 +8546,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_next_line_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_next_line_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_next_line___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -4580,7 +8565,7 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_next_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -4602,9 +8587,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_next_line_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_next_line_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_next_line_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -4614,12 +8601,10 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_next_line_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
- __Pyx_RefNannyDeclarations
int __pyx_t_1;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
__pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 15, __pyx_L1_error)
__pyx_v_self->pydev_next_line = __pyx_t_1;
@@ -4630,7 +8615,6 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_next_line.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
- __Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -4645,9 +8629,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -4658,7 +8644,7 @@ static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->pydev_func_name);
__pyx_r = __pyx_v_self->pydev_func_name;
@@ -4674,9 +8660,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -4691,8 +8679,8 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(1, 16, __pyx_L1_error)
+ __Pyx_RefNannySetupContext("__set__", 1);
+ if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(1, 16, __pyx_L1_error)
__pyx_t_1 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
@@ -4716,9 +8704,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -4729,7 +8719,7 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->pydev_func_name);
@@ -4753,9 +8743,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22suspended_at_unhandled_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22suspended_at_unhandled_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22suspended_at_unhandled___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -4770,7 +8762,7 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->suspended_at_unhandled); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -4792,9 +8784,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22suspended_at_unhandled_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22suspended_at_unhandled_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22suspended_at_unhandled_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -4804,12 +8798,10 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22suspended_at_unhandled_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
- __Pyx_RefNannyDeclarations
int __pyx_t_1;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 17, __pyx_L1_error)
__pyx_v_self->suspended_at_unhandled = __pyx_t_1;
@@ -4820,7 +8812,6 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.suspended_at_unhandled.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
- __Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -4835,9 +8826,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -4848,7 +8841,7 @@ static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->trace_suspend_type);
__pyx_r = __pyx_v_self->trace_suspend_type;
@@ -4864,9 +8857,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -4881,8 +8876,8 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(1, 18, __pyx_L1_error)
+ __Pyx_RefNannySetupContext("__set__", 1);
+ if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(1, 18, __pyx_L1_error)
__pyx_t_1 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
@@ -4906,9 +8901,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -4919,7 +8916,7 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->trace_suspend_type);
@@ -4943,9 +8940,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -4956,7 +8955,7 @@ static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->top_level_thread_tracer_no_back_frames);
__pyx_r = __pyx_v_self->top_level_thread_tracer_no_back_frames;
@@ -4972,9 +8971,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -4985,7 +8986,7 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__", 0);
+ __Pyx_RefNannySetupContext("__set__", 1);
__Pyx_INCREF(__pyx_v_value);
__Pyx_GIVEREF(__pyx_v_value);
__Pyx_GOTREF(__pyx_v_self->top_level_thread_tracer_no_back_frames);
@@ -5001,9 +9002,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -5014,7 +9017,7 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->top_level_thread_tracer_no_back_frames);
@@ -5038,9 +9041,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -5051,7 +9056,7 @@ static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->top_level_thread_tracer_unhandled);
__pyx_r = __pyx_v_self->top_level_thread_tracer_unhandled;
@@ -5067,9 +9072,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -5080,7 +9087,7 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__", 0);
+ __Pyx_RefNannySetupContext("__set__", 1);
__Pyx_INCREF(__pyx_v_value);
__Pyx_GIVEREF(__pyx_v_value);
__Pyx_GOTREF(__pyx_v_self->top_level_thread_tracer_unhandled);
@@ -5096,9 +9103,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -5109,7 +9118,7 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->top_level_thread_tracer_unhandled);
@@ -5133,9 +9142,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -5146,7 +9157,7 @@ static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->thread_tracer);
__pyx_r = __pyx_v_self->thread_tracer;
@@ -5162,9 +9173,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -5175,7 +9188,7 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__", 0);
+ __Pyx_RefNannySetupContext("__set__", 1);
__Pyx_INCREF(__pyx_v_value);
__Pyx_GIVEREF(__pyx_v_value);
__Pyx_GOTREF(__pyx_v_self->thread_tracer);
@@ -5191,9 +9204,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -5204,7 +9219,7 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->thread_tracer);
@@ -5228,9 +9243,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -5241,7 +9258,7 @@ static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->step_in_initial_location);
__pyx_r = __pyx_v_self->step_in_initial_location;
@@ -5257,9 +9274,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -5270,7 +9289,7 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__", 0);
+ __Pyx_RefNannySetupContext("__set__", 1);
__Pyx_INCREF(__pyx_v_value);
__Pyx_GIVEREF(__pyx_v_value);
__Pyx_GOTREF(__pyx_v_self->step_in_initial_location);
@@ -5286,9 +9305,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -5299,7 +9320,7 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->step_in_initial_location);
@@ -5323,9 +9344,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_25pydev_smart_parent_offset_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_25pydev_smart_parent_offset_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_25pydev_smart_parent_offset___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -5340,7 +9363,7 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_smart_parent_offset); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 23, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -5362,9 +9385,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_25pydev_smart_parent_offset_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_25pydev_smart_parent_offset_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_25pydev_smart_parent_offset_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -5374,12 +9399,10 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_25pydev_smart_parent_offset_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
- __Pyx_RefNannyDeclarations
int __pyx_t_1;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
__pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 23, __pyx_L1_error)
__pyx_v_self->pydev_smart_parent_offset = __pyx_t_1;
@@ -5390,7 +9413,6 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_smart_parent_offset.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
- __Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -5405,9 +9427,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_smart_child_offset_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_smart_child_offset_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_smart_child_offset___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -5422,7 +9446,7 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_smart_child_offset); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 24, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -5444,9 +9468,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_smart_child_offset_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_smart_child_offset_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_smart_child_offset_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -5456,12 +9482,10 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_smart_child_offset_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
- __Pyx_RefNannyDeclarations
int __pyx_t_1;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
__pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 24, __pyx_L1_error)
__pyx_v_self->pydev_smart_child_offset = __pyx_t_1;
@@ -5472,7 +9496,6 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_smart_child_offset.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
- __Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -5487,9 +9510,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -5500,7 +9525,7 @@ static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->pydev_smart_step_into_variants);
__pyx_r = __pyx_v_self->pydev_smart_step_into_variants;
@@ -5516,9 +9541,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -5533,8 +9560,8 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- if (!(likely(PyTuple_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(1, 25, __pyx_L1_error)
+ __Pyx_RefNannySetupContext("__set__", 1);
+ if (!(likely(PyTuple_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v_value))) __PYX_ERR(1, 25, __pyx_L1_error)
__pyx_t_1 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
@@ -5558,9 +9585,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -5571,7 +9600,7 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->pydev_smart_step_into_variants);
@@ -5589,14 +9618,17 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
* cdef public tuple pydev_smart_step_into_variants
* cdef public dict target_id_to_smart_step_into_variant # <<<<<<<<<<<<<<
* cdef public bint pydev_use_scoped_step_frame
+ * cdef public object weak_thread
*/
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -5607,7 +9639,7 @@ static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->target_id_to_smart_step_into_variant);
__pyx_r = __pyx_v_self->target_id_to_smart_step_into_variant;
@@ -5623,9 +9655,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -5640,8 +9674,8 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- if (!(likely(PyDict_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(1, 26, __pyx_L1_error)
+ __Pyx_RefNannySetupContext("__set__", 1);
+ if (!(likely(PyDict_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_v_value))) __PYX_ERR(1, 26, __pyx_L1_error)
__pyx_t_1 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
@@ -5665,9 +9699,11 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -5678,7 +9714,7 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->target_id_to_smart_step_into_variant);
@@ -5695,14 +9731,18 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
* cdef public tuple pydev_smart_step_into_variants
* cdef public dict target_id_to_smart_step_into_variant
* cdef public bint pydev_use_scoped_step_frame # <<<<<<<<<<<<<<
+ * cdef public object weak_thread
+ * cdef public bint is_in_wait_loop
*/
/* Python wrapper */
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_27pydev_use_scoped_step_frame_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_27pydev_use_scoped_step_frame_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_27pydev_use_scoped_step_frame___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -5717,7 +9757,7 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->pydev_use_scoped_step_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 27, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -5739,9 +9779,11 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* Python wrapper */
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_27pydev_use_scoped_step_frame_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_27pydev_use_scoped_step_frame_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_27pydev_use_scoped_step_frame_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -5751,12 +9793,10 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_27pydev_use_scoped_step_frame_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
- __Pyx_RefNannyDeclarations
int __pyx_t_1;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 27, __pyx_L1_error)
__pyx_v_self->pydev_use_scoped_step_frame = __pyx_t_1;
@@ -5767,10 +9807,193 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
__Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_use_scoped_step_frame.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
+ return __pyx_r;
+}
+
+/* "_pydevd_bundle/pydevd_cython.pxd":28
+ * cdef public dict target_id_to_smart_step_into_variant
+ * cdef public bint pydev_use_scoped_step_frame
+ * cdef public object weak_thread # <<<<<<<<<<<<<<
+ * cdef public bint is_in_wait_loop
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__get__", 1);
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_self->weak_thread);
+ __pyx_r = __pyx_v_self->weak_thread;
+ goto __pyx_L0;
+
+ /* function exit code */
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__set__", 1);
+ __Pyx_INCREF(__pyx_v_value);
+ __Pyx_GIVEREF(__pyx_v_value);
+ __Pyx_GOTREF(__pyx_v_self->weak_thread);
+ __Pyx_DECREF(__pyx_v_self->weak_thread);
+ __pyx_v_self->weak_thread = __pyx_v_value;
+
+ /* function exit code */
+ __pyx_r = 0;
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
+
+ /* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__del__", 1);
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ __Pyx_GOTREF(__pyx_v_self->weak_thread);
+ __Pyx_DECREF(__pyx_v_self->weak_thread);
+ __pyx_v_self->weak_thread = Py_None;
+
+ /* function exit code */
+ __pyx_r = 0;
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_bundle/pydevd_cython.pxd":29
+ * cdef public bint pydev_use_scoped_step_frame
+ * cdef public object weak_thread
+ * cdef public bint is_in_wait_loop # <<<<<<<<<<<<<<
+ *
+ * cpdef get_topmost_frame(self, thread)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15is_in_wait_loop_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15is_in_wait_loop_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15is_in_wait_loop___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15is_in_wait_loop___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__get__", 1);
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_in_wait_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 29, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.is_in_wait_loop.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15is_in_wait_loop_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15is_in_wait_loop_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15is_in_wait_loop_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15is_in_wait_loop_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
+ int __pyx_r;
+ int __pyx_t_1;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 29, __pyx_L1_error)
+ __pyx_v_self->is_in_wait_loop = __pyx_t_1;
+
+ /* function exit code */
+ __pyx_r = 0;
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.is_in_wait_loop.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = -1;
+ __pyx_L0:;
+ return __pyx_r;
+}
+
/* "(tree fragment)":1
* def __reduce_cython__(self): # <<<<<<<<<<<<<<
* cdef tuple state
@@ -5778,19 +10001,47 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_
*/
/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13__reduce_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13__reduce_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_6__reduce_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_nargs > 0)) {
+ __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
+ if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12__reduce_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_6__reduce_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12__reduce_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) {
PyObject *__pyx_v_state = 0;
PyObject *__pyx_v__dict = 0;
int __pyx_v_use_setstate;
@@ -5809,113 +10060,120 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
PyObject *__pyx_t_11 = NULL;
PyObject *__pyx_t_12 = NULL;
PyObject *__pyx_t_13 = NULL;
- int __pyx_t_14;
+ PyObject *__pyx_t_14 = NULL;
int __pyx_t_15;
int __pyx_t_16;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__reduce_cython__", 0);
+ __Pyx_RefNannySetupContext("__reduce_cython__", 1);
/* "(tree fragment)":5
* cdef object _dict
* cdef bint use_setstate
- * state = (self.conditional_breakpoint_exception, self.is_tracing, self.pydev_call_from_jinja2, self.pydev_call_inside_jinja2, self.pydev_django_resolve_frame, self.pydev_func_name, self.pydev_message, self.pydev_next_line, self.pydev_notify_kill, self.pydev_original_step_cmd, self.pydev_smart_child_offset, self.pydev_smart_parent_offset, self.pydev_smart_step_into_variants, self.pydev_smart_step_stop, self.pydev_state, self.pydev_step_cmd, self.pydev_step_stop, self.pydev_use_scoped_step_frame, self.step_in_initial_location, self.suspend_type, self.suspended_at_unhandled, self.target_id_to_smart_step_into_variant, self.thread_tracer, self.top_level_thread_tracer_no_back_frames, self.top_level_thread_tracer_unhandled, self.trace_suspend_type) # <<<<<<<<<<<<<<
+ * state = (self.conditional_breakpoint_exception, self.is_in_wait_loop, self.is_tracing, self.pydev_call_from_jinja2, self.pydev_call_inside_jinja2, self.pydev_django_resolve_frame, self.pydev_func_name, self.pydev_message, self.pydev_next_line, self.pydev_notify_kill, self.pydev_original_step_cmd, self.pydev_smart_child_offset, self.pydev_smart_parent_offset, self.pydev_smart_step_into_variants, self.pydev_smart_step_stop, self.pydev_state, self.pydev_step_cmd, self.pydev_step_stop, self.pydev_use_scoped_step_frame, self.step_in_initial_location, self.suspend_type, self.suspended_at_unhandled, self.target_id_to_smart_step_into_variant, self.thread_tracer, self.top_level_thread_tracer_no_back_frames, self.top_level_thread_tracer_unhandled, self.trace_suspend_type, self.weak_thread) # <<<<<<<<<<<<<<
* _dict = getattr(self, '__dict__', None)
* if _dict is not None:
*/
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->is_tracing); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_in_wait_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->pydev_django_resolve_frame); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->is_tracing); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_next_line); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_self->pydev_django_resolve_frame); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_self->pydev_notify_kill); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_next_line); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_original_step_cmd); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_self->pydev_notify_kill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_smart_child_offset); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_original_step_cmd); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_smart_parent_offset); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_smart_child_offset); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_state); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_smart_parent_offset); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_step_cmd); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_state); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __pyx_t_10 = __Pyx_PyBool_FromLong(__pyx_v_self->pydev_use_scoped_step_frame); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_step_cmd); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_self->suspend_type); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyBool_FromLong(__pyx_v_self->pydev_use_scoped_step_frame); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_12 = __Pyx_PyBool_FromLong(__pyx_v_self->suspended_at_unhandled); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __pyx_t_12 = __Pyx_PyInt_From_int(__pyx_v_self->suspend_type); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
- __pyx_t_13 = PyTuple_New(26); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __pyx_t_13 = __Pyx_PyBool_FromLong(__pyx_v_self->suspended_at_unhandled); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
+ __pyx_t_14 = PyTuple_New(28); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
__Pyx_INCREF(__pyx_v_self->conditional_breakpoint_exception);
__Pyx_GIVEREF(__pyx_v_self->conditional_breakpoint_exception);
- PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_v_self->conditional_breakpoint_exception);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_v_self->conditional_breakpoint_exception)) __PYX_ERR(2, 5, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_2);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->pydev_call_from_jinja2);
__Pyx_GIVEREF(__pyx_v_self->pydev_call_from_jinja2);
- PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_v_self->pydev_call_from_jinja2);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 3, __pyx_v_self->pydev_call_from_jinja2)) __PYX_ERR(2, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->pydev_call_inside_jinja2);
__Pyx_GIVEREF(__pyx_v_self->pydev_call_inside_jinja2);
- PyTuple_SET_ITEM(__pyx_t_13, 3, __pyx_v_self->pydev_call_inside_jinja2);
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_13, 4, __pyx_t_2);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 4, __pyx_v_self->pydev_call_inside_jinja2)) __PYX_ERR(2, 5, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_3);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 5, __pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->pydev_func_name);
__Pyx_GIVEREF(__pyx_v_self->pydev_func_name);
- PyTuple_SET_ITEM(__pyx_t_13, 5, __pyx_v_self->pydev_func_name);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 6, __pyx_v_self->pydev_func_name)) __PYX_ERR(2, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->pydev_message);
__Pyx_GIVEREF(__pyx_v_self->pydev_message);
- PyTuple_SET_ITEM(__pyx_t_13, 6, __pyx_v_self->pydev_message);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_13, 7, __pyx_t_3);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 7, __pyx_v_self->pydev_message)) __PYX_ERR(2, 5, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_13, 8, __pyx_t_4);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 8, __pyx_t_4)) __PYX_ERR(2, 5, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_13, 9, __pyx_t_5);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 9, __pyx_t_5)) __PYX_ERR(2, 5, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_13, 10, __pyx_t_6);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 10, __pyx_t_6)) __PYX_ERR(2, 5, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_13, 11, __pyx_t_7);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 11, __pyx_t_7)) __PYX_ERR(2, 5, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_8);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 12, __pyx_t_8)) __PYX_ERR(2, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->pydev_smart_step_into_variants);
__Pyx_GIVEREF(__pyx_v_self->pydev_smart_step_into_variants);
- PyTuple_SET_ITEM(__pyx_t_13, 12, __pyx_v_self->pydev_smart_step_into_variants);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 13, __pyx_v_self->pydev_smart_step_into_variants)) __PYX_ERR(2, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->pydev_smart_step_stop);
__Pyx_GIVEREF(__pyx_v_self->pydev_smart_step_stop);
- PyTuple_SET_ITEM(__pyx_t_13, 13, __pyx_v_self->pydev_smart_step_stop);
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_13, 14, __pyx_t_8);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 14, __pyx_v_self->pydev_smart_step_stop)) __PYX_ERR(2, 5, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_13, 15, __pyx_t_9);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 15, __pyx_t_9)) __PYX_ERR(2, 5, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_10);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 16, __pyx_t_10)) __PYX_ERR(2, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->pydev_step_stop);
__Pyx_GIVEREF(__pyx_v_self->pydev_step_stop);
- PyTuple_SET_ITEM(__pyx_t_13, 16, __pyx_v_self->pydev_step_stop);
- __Pyx_GIVEREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_13, 17, __pyx_t_10);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 17, __pyx_v_self->pydev_step_stop)) __PYX_ERR(2, 5, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_11);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 18, __pyx_t_11)) __PYX_ERR(2, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->step_in_initial_location);
__Pyx_GIVEREF(__pyx_v_self->step_in_initial_location);
- PyTuple_SET_ITEM(__pyx_t_13, 18, __pyx_v_self->step_in_initial_location);
- __Pyx_GIVEREF(__pyx_t_11);
- PyTuple_SET_ITEM(__pyx_t_13, 19, __pyx_t_11);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 19, __pyx_v_self->step_in_initial_location)) __PYX_ERR(2, 5, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_12);
- PyTuple_SET_ITEM(__pyx_t_13, 20, __pyx_t_12);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 20, __pyx_t_12)) __PYX_ERR(2, 5, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_13);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 21, __pyx_t_13)) __PYX_ERR(2, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->target_id_to_smart_step_into_variant);
__Pyx_GIVEREF(__pyx_v_self->target_id_to_smart_step_into_variant);
- PyTuple_SET_ITEM(__pyx_t_13, 21, __pyx_v_self->target_id_to_smart_step_into_variant);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 22, __pyx_v_self->target_id_to_smart_step_into_variant)) __PYX_ERR(2, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->thread_tracer);
__Pyx_GIVEREF(__pyx_v_self->thread_tracer);
- PyTuple_SET_ITEM(__pyx_t_13, 22, __pyx_v_self->thread_tracer);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 23, __pyx_v_self->thread_tracer)) __PYX_ERR(2, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->top_level_thread_tracer_no_back_frames);
__Pyx_GIVEREF(__pyx_v_self->top_level_thread_tracer_no_back_frames);
- PyTuple_SET_ITEM(__pyx_t_13, 23, __pyx_v_self->top_level_thread_tracer_no_back_frames);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 24, __pyx_v_self->top_level_thread_tracer_no_back_frames)) __PYX_ERR(2, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->top_level_thread_tracer_unhandled);
__Pyx_GIVEREF(__pyx_v_self->top_level_thread_tracer_unhandled);
- PyTuple_SET_ITEM(__pyx_t_13, 24, __pyx_v_self->top_level_thread_tracer_unhandled);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 25, __pyx_v_self->top_level_thread_tracer_unhandled)) __PYX_ERR(2, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->trace_suspend_type);
__Pyx_GIVEREF(__pyx_v_self->trace_suspend_type);
- PyTuple_SET_ITEM(__pyx_t_13, 25, __pyx_v_self->trace_suspend_type);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 26, __pyx_v_self->trace_suspend_type)) __PYX_ERR(2, 5, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_self->weak_thread);
+ __Pyx_GIVEREF(__pyx_v_self->weak_thread);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 27, __pyx_v_self->weak_thread)) __PYX_ERR(2, 5, __pyx_L1_error);
__pyx_t_1 = 0;
__pyx_t_2 = 0;
__pyx_t_3 = 0;
@@ -5928,30 +10186,30 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
__pyx_t_10 = 0;
__pyx_t_11 = 0;
__pyx_t_12 = 0;
- __pyx_v_state = ((PyObject*)__pyx_t_13);
__pyx_t_13 = 0;
+ __pyx_v_state = ((PyObject*)__pyx_t_14);
+ __pyx_t_14 = 0;
/* "(tree fragment)":6
* cdef bint use_setstate
- * state = (self.conditional_breakpoint_exception, self.is_tracing, self.pydev_call_from_jinja2, self.pydev_call_inside_jinja2, self.pydev_django_resolve_frame, self.pydev_func_name, self.pydev_message, self.pydev_next_line, self.pydev_notify_kill, self.pydev_original_step_cmd, self.pydev_smart_child_offset, self.pydev_smart_parent_offset, self.pydev_smart_step_into_variants, self.pydev_smart_step_stop, self.pydev_state, self.pydev_step_cmd, self.pydev_step_stop, self.pydev_use_scoped_step_frame, self.step_in_initial_location, self.suspend_type, self.suspended_at_unhandled, self.target_id_to_smart_step_into_variant, self.thread_tracer, self.top_level_thread_tracer_no_back_frames, self.top_level_thread_tracer_unhandled, self.trace_suspend_type)
+ * state = (self.conditional_breakpoint_exception, self.is_in_wait_loop, self.is_tracing, self.pydev_call_from_jinja2, self.pydev_call_inside_jinja2, self.pydev_django_resolve_frame, self.pydev_func_name, self.pydev_message, self.pydev_next_line, self.pydev_notify_kill, self.pydev_original_step_cmd, self.pydev_smart_child_offset, self.pydev_smart_parent_offset, self.pydev_smart_step_into_variants, self.pydev_smart_step_stop, self.pydev_state, self.pydev_step_cmd, self.pydev_step_stop, self.pydev_use_scoped_step_frame, self.step_in_initial_location, self.suspend_type, self.suspended_at_unhandled, self.target_id_to_smart_step_into_variant, self.thread_tracer, self.top_level_thread_tracer_no_back_frames, self.top_level_thread_tracer_unhandled, self.trace_suspend_type, self.weak_thread)
* _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<<
* if _dict is not None:
* state += (_dict,)
*/
- __pyx_t_13 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_13);
- __pyx_v__dict = __pyx_t_13;
- __pyx_t_13 = 0;
+ __pyx_t_14 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 6, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __pyx_v__dict = __pyx_t_14;
+ __pyx_t_14 = 0;
/* "(tree fragment)":7
- * state = (self.conditional_breakpoint_exception, self.is_tracing, self.pydev_call_from_jinja2, self.pydev_call_inside_jinja2, self.pydev_django_resolve_frame, self.pydev_func_name, self.pydev_message, self.pydev_next_line, self.pydev_notify_kill, self.pydev_original_step_cmd, self.pydev_smart_child_offset, self.pydev_smart_parent_offset, self.pydev_smart_step_into_variants, self.pydev_smart_step_stop, self.pydev_state, self.pydev_step_cmd, self.pydev_step_stop, self.pydev_use_scoped_step_frame, self.step_in_initial_location, self.suspend_type, self.suspended_at_unhandled, self.target_id_to_smart_step_into_variant, self.thread_tracer, self.top_level_thread_tracer_no_back_frames, self.top_level_thread_tracer_unhandled, self.trace_suspend_type)
+ * state = (self.conditional_breakpoint_exception, self.is_in_wait_loop, self.is_tracing, self.pydev_call_from_jinja2, self.pydev_call_inside_jinja2, self.pydev_django_resolve_frame, self.pydev_func_name, self.pydev_message, self.pydev_next_line, self.pydev_notify_kill, self.pydev_original_step_cmd, self.pydev_smart_child_offset, self.pydev_smart_parent_offset, self.pydev_smart_step_into_variants, self.pydev_smart_step_stop, self.pydev_state, self.pydev_step_cmd, self.pydev_step_stop, self.pydev_use_scoped_step_frame, self.step_in_initial_location, self.suspend_type, self.suspended_at_unhandled, self.target_id_to_smart_step_into_variant, self.thread_tracer, self.top_level_thread_tracer_no_back_frames, self.top_level_thread_tracer_unhandled, self.trace_suspend_type, self.weak_thread)
* _dict = getattr(self, '__dict__', None)
* if _dict is not None: # <<<<<<<<<<<<<<
* state += (_dict,)
* use_setstate = True
*/
- __pyx_t_14 = (__pyx_v__dict != Py_None);
- __pyx_t_15 = (__pyx_t_14 != 0);
+ __pyx_t_15 = (__pyx_v__dict != Py_None);
if (__pyx_t_15) {
/* "(tree fragment)":8
@@ -5961,28 +10219,28 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
* use_setstate = True
* else:
*/
- __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 8, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_13);
+ __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 8, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
__Pyx_INCREF(__pyx_v__dict);
__Pyx_GIVEREF(__pyx_v__dict);
- PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_v__dict);
- __pyx_t_12 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 8, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_12));
- __pyx_t_12 = 0;
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_v__dict)) __PYX_ERR(2, 8, __pyx_L1_error);
+ __pyx_t_13 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 8, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_13);
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_13));
+ __pyx_t_13 = 0;
/* "(tree fragment)":9
* if _dict is not None:
* state += (_dict,)
* use_setstate = True # <<<<<<<<<<<<<<
* else:
- * use_setstate = self.conditional_breakpoint_exception is not None or self.pydev_call_from_jinja2 is not None or self.pydev_call_inside_jinja2 is not None or self.pydev_func_name is not None or self.pydev_message is not None or self.pydev_smart_step_into_variants is not None or self.pydev_smart_step_stop is not None or self.pydev_step_stop is not None or self.step_in_initial_location is not None or self.target_id_to_smart_step_into_variant is not None or self.thread_tracer is not None or self.top_level_thread_tracer_no_back_frames is not None or self.top_level_thread_tracer_unhandled is not None or self.trace_suspend_type is not None
+ * use_setstate = self.conditional_breakpoint_exception is not None or self.pydev_call_from_jinja2 is not None or self.pydev_call_inside_jinja2 is not None or self.pydev_func_name is not None or self.pydev_message is not None or self.pydev_smart_step_into_variants is not None or self.pydev_smart_step_stop is not None or self.pydev_step_stop is not None or self.step_in_initial_location is not None or self.target_id_to_smart_step_into_variant is not None or self.thread_tracer is not None or self.top_level_thread_tracer_no_back_frames is not None or self.top_level_thread_tracer_unhandled is not None or self.trace_suspend_type is not None or self.weak_thread is not None
*/
__pyx_v_use_setstate = 1;
/* "(tree fragment)":7
- * state = (self.conditional_breakpoint_exception, self.is_tracing, self.pydev_call_from_jinja2, self.pydev_call_inside_jinja2, self.pydev_django_resolve_frame, self.pydev_func_name, self.pydev_message, self.pydev_next_line, self.pydev_notify_kill, self.pydev_original_step_cmd, self.pydev_smart_child_offset, self.pydev_smart_parent_offset, self.pydev_smart_step_into_variants, self.pydev_smart_step_stop, self.pydev_state, self.pydev_step_cmd, self.pydev_step_stop, self.pydev_use_scoped_step_frame, self.step_in_initial_location, self.suspend_type, self.suspended_at_unhandled, self.target_id_to_smart_step_into_variant, self.thread_tracer, self.top_level_thread_tracer_no_back_frames, self.top_level_thread_tracer_unhandled, self.trace_suspend_type)
+ * state = (self.conditional_breakpoint_exception, self.is_in_wait_loop, self.is_tracing, self.pydev_call_from_jinja2, self.pydev_call_inside_jinja2, self.pydev_django_resolve_frame, self.pydev_func_name, self.pydev_message, self.pydev_next_line, self.pydev_notify_kill, self.pydev_original_step_cmd, self.pydev_smart_child_offset, self.pydev_smart_parent_offset, self.pydev_smart_step_into_variants, self.pydev_smart_step_stop, self.pydev_state, self.pydev_step_cmd, self.pydev_step_stop, self.pydev_use_scoped_step_frame, self.step_in_initial_location, self.suspend_type, self.suspended_at_unhandled, self.target_id_to_smart_step_into_variant, self.thread_tracer, self.top_level_thread_tracer_no_back_frames, self.top_level_thread_tracer_unhandled, self.trace_suspend_type, self.weak_thread)
* _dict = getattr(self, '__dict__', None)
* if _dict is not None: # <<<<<<<<<<<<<<
* state += (_dict,)
@@ -5994,105 +10252,97 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* "(tree fragment)":11
* use_setstate = True
* else:
- * use_setstate = self.conditional_breakpoint_exception is not None or self.pydev_call_from_jinja2 is not None or self.pydev_call_inside_jinja2 is not None or self.pydev_func_name is not None or self.pydev_message is not None or self.pydev_smart_step_into_variants is not None or self.pydev_smart_step_stop is not None or self.pydev_step_stop is not None or self.step_in_initial_location is not None or self.target_id_to_smart_step_into_variant is not None or self.thread_tracer is not None or self.top_level_thread_tracer_no_back_frames is not None or self.top_level_thread_tracer_unhandled is not None or self.trace_suspend_type is not None # <<<<<<<<<<<<<<
+ * use_setstate = self.conditional_breakpoint_exception is not None or self.pydev_call_from_jinja2 is not None or self.pydev_call_inside_jinja2 is not None or self.pydev_func_name is not None or self.pydev_message is not None or self.pydev_smart_step_into_variants is not None or self.pydev_smart_step_stop is not None or self.pydev_step_stop is not None or self.step_in_initial_location is not None or self.target_id_to_smart_step_into_variant is not None or self.thread_tracer is not None or self.top_level_thread_tracer_no_back_frames is not None or self.top_level_thread_tracer_unhandled is not None or self.trace_suspend_type is not None or self.weak_thread is not None # <<<<<<<<<<<<<<
* if use_setstate:
- * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0x75b3b02, None), state
+ * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, None), state
*/
/*else*/ {
- __pyx_t_14 = (__pyx_v_self->conditional_breakpoint_exception != ((PyObject*)Py_None));
- __pyx_t_16 = (__pyx_t_14 != 0);
+ __pyx_t_16 = (__pyx_v_self->conditional_breakpoint_exception != ((PyObject*)Py_None));
if (!__pyx_t_16) {
} else {
__pyx_t_15 = __pyx_t_16;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_16 = (__pyx_v_self->pydev_call_from_jinja2 != Py_None);
- __pyx_t_14 = (__pyx_t_16 != 0);
- if (!__pyx_t_14) {
+ if (!__pyx_t_16) {
} else {
- __pyx_t_15 = __pyx_t_14;
+ __pyx_t_15 = __pyx_t_16;
goto __pyx_L4_bool_binop_done;
}
- __pyx_t_14 = (__pyx_v_self->pydev_call_inside_jinja2 != Py_None);
- __pyx_t_16 = (__pyx_t_14 != 0);
+ __pyx_t_16 = (__pyx_v_self->pydev_call_inside_jinja2 != Py_None);
if (!__pyx_t_16) {
} else {
__pyx_t_15 = __pyx_t_16;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_16 = (__pyx_v_self->pydev_func_name != ((PyObject*)Py_None));
- __pyx_t_14 = (__pyx_t_16 != 0);
- if (!__pyx_t_14) {
+ if (!__pyx_t_16) {
} else {
- __pyx_t_15 = __pyx_t_14;
+ __pyx_t_15 = __pyx_t_16;
goto __pyx_L4_bool_binop_done;
}
- __pyx_t_14 = (__pyx_v_self->pydev_message != ((PyObject*)Py_None));
- __pyx_t_16 = (__pyx_t_14 != 0);
+ __pyx_t_16 = (__pyx_v_self->pydev_message != ((PyObject*)Py_None));
if (!__pyx_t_16) {
} else {
__pyx_t_15 = __pyx_t_16;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_16 = (__pyx_v_self->pydev_smart_step_into_variants != ((PyObject*)Py_None));
- __pyx_t_14 = (__pyx_t_16 != 0);
- if (!__pyx_t_14) {
+ if (!__pyx_t_16) {
} else {
- __pyx_t_15 = __pyx_t_14;
+ __pyx_t_15 = __pyx_t_16;
goto __pyx_L4_bool_binop_done;
}
- __pyx_t_14 = (__pyx_v_self->pydev_smart_step_stop != Py_None);
- __pyx_t_16 = (__pyx_t_14 != 0);
+ __pyx_t_16 = (__pyx_v_self->pydev_smart_step_stop != Py_None);
if (!__pyx_t_16) {
} else {
__pyx_t_15 = __pyx_t_16;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_16 = (__pyx_v_self->pydev_step_stop != Py_None);
- __pyx_t_14 = (__pyx_t_16 != 0);
- if (!__pyx_t_14) {
+ if (!__pyx_t_16) {
} else {
- __pyx_t_15 = __pyx_t_14;
+ __pyx_t_15 = __pyx_t_16;
goto __pyx_L4_bool_binop_done;
}
- __pyx_t_14 = (__pyx_v_self->step_in_initial_location != Py_None);
- __pyx_t_16 = (__pyx_t_14 != 0);
+ __pyx_t_16 = (__pyx_v_self->step_in_initial_location != Py_None);
if (!__pyx_t_16) {
} else {
__pyx_t_15 = __pyx_t_16;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_16 = (__pyx_v_self->target_id_to_smart_step_into_variant != ((PyObject*)Py_None));
- __pyx_t_14 = (__pyx_t_16 != 0);
- if (!__pyx_t_14) {
+ if (!__pyx_t_16) {
} else {
- __pyx_t_15 = __pyx_t_14;
+ __pyx_t_15 = __pyx_t_16;
goto __pyx_L4_bool_binop_done;
}
- __pyx_t_14 = (__pyx_v_self->thread_tracer != Py_None);
- __pyx_t_16 = (__pyx_t_14 != 0);
+ __pyx_t_16 = (__pyx_v_self->thread_tracer != Py_None);
if (!__pyx_t_16) {
} else {
__pyx_t_15 = __pyx_t_16;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_16 = (__pyx_v_self->top_level_thread_tracer_no_back_frames != Py_None);
- __pyx_t_14 = (__pyx_t_16 != 0);
- if (!__pyx_t_14) {
+ if (!__pyx_t_16) {
} else {
- __pyx_t_15 = __pyx_t_14;
+ __pyx_t_15 = __pyx_t_16;
goto __pyx_L4_bool_binop_done;
}
- __pyx_t_14 = (__pyx_v_self->top_level_thread_tracer_unhandled != Py_None);
- __pyx_t_16 = (__pyx_t_14 != 0);
+ __pyx_t_16 = (__pyx_v_self->top_level_thread_tracer_unhandled != Py_None);
if (!__pyx_t_16) {
} else {
__pyx_t_15 = __pyx_t_16;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_16 = (__pyx_v_self->trace_suspend_type != ((PyObject*)Py_None));
- __pyx_t_14 = (__pyx_t_16 != 0);
- __pyx_t_15 = __pyx_t_14;
+ if (!__pyx_t_16) {
+ } else {
+ __pyx_t_15 = __pyx_t_16;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __pyx_t_16 = (__pyx_v_self->weak_thread != Py_None);
+ __pyx_t_15 = __pyx_t_16;
__pyx_L4_bool_binop_done:;
__pyx_v_use_setstate = __pyx_t_15;
}
@@ -6100,91 +10350,90 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* "(tree fragment)":12
* else:
- * use_setstate = self.conditional_breakpoint_exception is not None or self.pydev_call_from_jinja2 is not None or self.pydev_call_inside_jinja2 is not None or self.pydev_func_name is not None or self.pydev_message is not None or self.pydev_smart_step_into_variants is not None or self.pydev_smart_step_stop is not None or self.pydev_step_stop is not None or self.step_in_initial_location is not None or self.target_id_to_smart_step_into_variant is not None or self.thread_tracer is not None or self.top_level_thread_tracer_no_back_frames is not None or self.top_level_thread_tracer_unhandled is not None or self.trace_suspend_type is not None
+ * use_setstate = self.conditional_breakpoint_exception is not None or self.pydev_call_from_jinja2 is not None or self.pydev_call_inside_jinja2 is not None or self.pydev_func_name is not None or self.pydev_message is not None or self.pydev_smart_step_into_variants is not None or self.pydev_smart_step_stop is not None or self.pydev_step_stop is not None or self.step_in_initial_location is not None or self.target_id_to_smart_step_into_variant is not None or self.thread_tracer is not None or self.top_level_thread_tracer_no_back_frames is not None or self.top_level_thread_tracer_unhandled is not None or self.trace_suspend_type is not None or self.weak_thread is not None
* if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0x75b3b02, None), state
+ * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, None), state
* else:
*/
- __pyx_t_15 = (__pyx_v_use_setstate != 0);
- if (__pyx_t_15) {
+ if (__pyx_v_use_setstate) {
/* "(tree fragment)":13
- * use_setstate = self.conditional_breakpoint_exception is not None or self.pydev_call_from_jinja2 is not None or self.pydev_call_inside_jinja2 is not None or self.pydev_func_name is not None or self.pydev_message is not None or self.pydev_smart_step_into_variants is not None or self.pydev_smart_step_stop is not None or self.pydev_step_stop is not None or self.step_in_initial_location is not None or self.target_id_to_smart_step_into_variant is not None or self.thread_tracer is not None or self.top_level_thread_tracer_no_back_frames is not None or self.top_level_thread_tracer_unhandled is not None or self.trace_suspend_type is not None
+ * use_setstate = self.conditional_breakpoint_exception is not None or self.pydev_call_from_jinja2 is not None or self.pydev_call_inside_jinja2 is not None or self.pydev_func_name is not None or self.pydev_message is not None or self.pydev_smart_step_into_variants is not None or self.pydev_smart_step_stop is not None or self.pydev_step_stop is not None or self.step_in_initial_location is not None or self.target_id_to_smart_step_into_variant is not None or self.thread_tracer is not None or self.top_level_thread_tracer_no_back_frames is not None or self.top_level_thread_tracer_unhandled is not None or self.trace_suspend_type is not None or self.weak_thread is not None
* if use_setstate:
- * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0x75b3b02, None), state # <<<<<<<<<<<<<<
+ * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, None), state # <<<<<<<<<<<<<<
* else:
- * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0x75b3b02, state)
+ * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, state)
*/
__Pyx_XDECREF(__pyx_r);
- __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_pyx_unpickle_PyDBAdditionalThr); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 13, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_pyx_unpickle_PyDBAdditionalThr); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
+ __pyx_t_14 = PyTuple_New(3); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
__Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
__Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_13, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_123419394);
- __Pyx_GIVEREF(__pyx_int_123419394);
- PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_int_123419394);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(2, 13, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_int_221489684);
+ __Pyx_GIVEREF(__pyx_int_221489684);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_int_221489684)) __PYX_ERR(2, 13, __pyx_L1_error);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
- PyTuple_SET_ITEM(__pyx_t_13, 2, Py_None);
- __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_12);
- PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 2, Py_None)) __PYX_ERR(2, 13, __pyx_L1_error);
+ __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
__Pyx_GIVEREF(__pyx_t_13);
- PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_13);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_13)) __PYX_ERR(2, 13, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_14);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_14)) __PYX_ERR(2, 13, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_state);
__Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_v_state);
- __pyx_t_12 = 0;
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_v_state)) __PYX_ERR(2, 13, __pyx_L1_error);
__pyx_t_13 = 0;
- __pyx_r = __pyx_t_11;
- __pyx_t_11 = 0;
+ __pyx_t_14 = 0;
+ __pyx_r = __pyx_t_12;
+ __pyx_t_12 = 0;
goto __pyx_L0;
/* "(tree fragment)":12
* else:
- * use_setstate = self.conditional_breakpoint_exception is not None or self.pydev_call_from_jinja2 is not None or self.pydev_call_inside_jinja2 is not None or self.pydev_func_name is not None or self.pydev_message is not None or self.pydev_smart_step_into_variants is not None or self.pydev_smart_step_stop is not None or self.pydev_step_stop is not None or self.step_in_initial_location is not None or self.target_id_to_smart_step_into_variant is not None or self.thread_tracer is not None or self.top_level_thread_tracer_no_back_frames is not None or self.top_level_thread_tracer_unhandled is not None or self.trace_suspend_type is not None
+ * use_setstate = self.conditional_breakpoint_exception is not None or self.pydev_call_from_jinja2 is not None or self.pydev_call_inside_jinja2 is not None or self.pydev_func_name is not None or self.pydev_message is not None or self.pydev_smart_step_into_variants is not None or self.pydev_smart_step_stop is not None or self.pydev_step_stop is not None or self.step_in_initial_location is not None or self.target_id_to_smart_step_into_variant is not None or self.thread_tracer is not None or self.top_level_thread_tracer_no_back_frames is not None or self.top_level_thread_tracer_unhandled is not None or self.trace_suspend_type is not None or self.weak_thread is not None
* if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0x75b3b02, None), state
+ * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, None), state
* else:
*/
}
/* "(tree fragment)":15
- * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0x75b3b02, None), state
+ * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, None), state
* else:
- * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0x75b3b02, state) # <<<<<<<<<<<<<<
+ * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, state) # <<<<<<<<<<<<<<
* def __setstate_cython__(self, __pyx_state):
* __pyx_unpickle_PyDBAdditionalThreadInfo__set_state(self, __pyx_state)
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_pyx_unpickle_PyDBAdditionalThr); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_13);
+ __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_pyx_unpickle_PyDBAdditionalThr); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __pyx_t_14 = PyTuple_New(3); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
__Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
__Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_13, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_123419394);
- __Pyx_GIVEREF(__pyx_int_123419394);
- PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_int_123419394);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(2, 15, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_int_221489684);
+ __Pyx_GIVEREF(__pyx_int_221489684);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_int_221489684)) __PYX_ERR(2, 15, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_state);
__Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_v_state);
- __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_11);
- PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_13);
- PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_13);
- __pyx_t_11 = 0;
- __pyx_t_13 = 0;
- __pyx_r = __pyx_t_12;
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_v_state)) __PYX_ERR(2, 15, __pyx_L1_error);
+ __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_13);
+ __Pyx_GIVEREF(__pyx_t_12);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12)) __PYX_ERR(2, 15, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_14);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_14)) __PYX_ERR(2, 15, __pyx_L1_error);
__pyx_t_12 = 0;
+ __pyx_t_14 = 0;
+ __pyx_r = __pyx_t_13;
+ __pyx_t_13 = 0;
goto __pyx_L0;
}
@@ -6209,6 +10458,7 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
+ __Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -6221,46 +10471,129 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
/* "(tree fragment)":16
* else:
- * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0x75b3b02, state)
+ * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, state)
* def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
* __pyx_unpickle_PyDBAdditionalThreadInfo__set_state(self, __pyx_state)
*/
/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15__setstate_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15__setstate_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v___pyx_state = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_8__setstate_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 16, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(2, 16, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v___pyx_state = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 16, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14__setstate_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), __pyx_v___pyx_state);
/* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_8__setstate_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14__setstate_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__setstate_cython__", 0);
+ __Pyx_RefNannySetupContext("__setstate_cython__", 1);
/* "(tree fragment)":17
- * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0x75b3b02, state)
+ * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, state)
* def __setstate_cython__(self, __pyx_state):
* __pyx_unpickle_PyDBAdditionalThreadInfo__set_state(self, __pyx_state) # <<<<<<<<<<<<<<
*/
- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(2, 17, __pyx_L1_error)
+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(2, 17, __pyx_L1_error)
__pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_PyDBAdditionalThreadInfo__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 17, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "(tree fragment)":16
* else:
- * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0x75b3b02, state)
+ * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, state)
* def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
* __pyx_unpickle_PyDBAdditionalThreadInfo__set_state(self, __pyx_state)
*/
@@ -6278,29 +10611,22 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThrea
return __pyx_r;
}
-/* "_pydevd_bundle/pydevd_cython.pyx":145
- *
- *
- * def set_additional_thread_info(thread): # <<<<<<<<<<<<<<
- * try:
- * additional_info = thread.additional_info
+/* "_pydevd_bundle/pydevd_cython.pyx":222
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef set_additional_thread_info(thread): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def set_additional_thread_info(thread):
*/
-/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_1set_additional_thread_info(PyObject *__pyx_self, PyObject *__pyx_v_thread); /*proto*/
-static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_1set_additional_thread_info = {"set_additional_thread_info", (PyCFunction)__pyx_pw_14_pydevd_bundle_13pydevd_cython_1set_additional_thread_info, METH_O, 0};
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_1set_additional_thread_info(PyObject *__pyx_self, PyObject *__pyx_v_thread) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("set_additional_thread_info (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_set_additional_thread_info(__pyx_self, ((PyObject *)__pyx_v_thread));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_set_additional_thread_info(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_thread) {
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_1set_additional_thread_info(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_set_additional_thread_info(PyObject *__pyx_v_thread, CYTHON_UNUSED int __pyx_skip_dispatch) {
PyObject *__pyx_v_additional_info = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
@@ -6309,26 +10635,30 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_set_additional_thread
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
int __pyx_t_5;
- int __pyx_t_6;
+ PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
PyObject *__pyx_t_9 = NULL;
PyObject *__pyx_t_10 = NULL;
PyObject *__pyx_t_11 = NULL;
PyObject *__pyx_t_12 = NULL;
- PyObject *__pyx_t_13 = NULL;
+ unsigned int __pyx_t_13;
PyObject *__pyx_t_14 = NULL;
PyObject *__pyx_t_15 = NULL;
PyObject *__pyx_t_16 = NULL;
PyObject *__pyx_t_17 = NULL;
+ PyObject *__pyx_t_18 = NULL;
+ PyObject *__pyx_t_19 = NULL;
+ int __pyx_t_20;
+ int __pyx_t_21;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("set_additional_thread_info", 0);
+ __Pyx_RefNannySetupContext("set_additional_thread_info", 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":146
- *
- * def set_additional_thread_info(thread):
+ /* "_pydevd_bundle/pydevd_cython.pyx":227
+ * # ENDIF
+ * # fmt: on
* try: # <<<<<<<<<<<<<<
* additional_info = thread.additional_info
* if additional_info is None:
@@ -6342,19 +10672,19 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_set_additional_thread
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":147
- * def set_additional_thread_info(thread):
+ /* "_pydevd_bundle/pydevd_cython.pyx":228
+ * # fmt: on
* try:
* additional_info = thread.additional_info # <<<<<<<<<<<<<<
* if additional_info is None:
* raise AttributeError()
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_additional_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 147, __pyx_L3_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_additional_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 228, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_v_additional_info = __pyx_t_4;
__pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":148
+ /* "_pydevd_bundle/pydevd_cython.pyx":229
* try:
* additional_info = thread.additional_info
* if additional_info is None: # <<<<<<<<<<<<<<
@@ -6362,23 +10692,22 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_set_additional_thread
* except:
*/
__pyx_t_5 = (__pyx_v_additional_info == Py_None);
- __pyx_t_6 = (__pyx_t_5 != 0);
- if (unlikely(__pyx_t_6)) {
+ if (unlikely(__pyx_t_5)) {
- /* "_pydevd_bundle/pydevd_cython.pyx":149
+ /* "_pydevd_bundle/pydevd_cython.pyx":230
* additional_info = thread.additional_info
* if additional_info is None:
* raise AttributeError() # <<<<<<<<<<<<<<
* except:
* with _set_additional_thread_info_lock:
*/
- __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_builtin_AttributeError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 149, __pyx_L3_error)
+ __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_builtin_AttributeError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 230, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __PYX_ERR(0, 149, __pyx_L3_error)
+ __PYX_ERR(0, 230, __pyx_L3_error)
- /* "_pydevd_bundle/pydevd_cython.pyx":148
+ /* "_pydevd_bundle/pydevd_cython.pyx":229
* try:
* additional_info = thread.additional_info
* if additional_info is None: # <<<<<<<<<<<<<<
@@ -6387,9 +10716,9 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_set_additional_thread
*/
}
- /* "_pydevd_bundle/pydevd_cython.pyx":146
- *
- * def set_additional_thread_info(thread):
+ /* "_pydevd_bundle/pydevd_cython.pyx":227
+ * # ENDIF
+ * # fmt: on
* try: # <<<<<<<<<<<<<<
* additional_info = thread.additional_info
* if additional_info is None:
@@ -6402,7 +10731,7 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_set_additional_thread
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":150
+ /* "_pydevd_bundle/pydevd_cython.pyx":231
* if additional_info is None:
* raise AttributeError()
* except: # <<<<<<<<<<<<<<
@@ -6411,12 +10740,12 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_set_additional_thread
*/
/*except:*/ {
__Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.set_additional_thread_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 150, __pyx_L5_except_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GOTREF(__pyx_t_8);
+ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(0, 231, __pyx_L5_except_error)
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_6);
+ __Pyx_XGOTREF(__pyx_t_7);
- /* "_pydevd_bundle/pydevd_cython.pyx":151
+ /* "_pydevd_bundle/pydevd_cython.pyx":232
* raise AttributeError()
* except:
* with _set_additional_thread_info_lock: # <<<<<<<<<<<<<<
@@ -6424,29 +10753,36 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_set_additional_thread
* # conditions.
*/
/*with:*/ {
- __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_set_additional_thread_info_lock); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 151, __pyx_L5_except_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_set_additional_thread_info_lock); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 232, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_9 = __Pyx_PyObject_LookupSpecial(__pyx_t_8, __pyx_n_s_exit); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 232, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_9);
- __pyx_t_10 = __Pyx_PyObject_LookupSpecial(__pyx_t_9, __pyx_n_s_exit); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 151, __pyx_L5_except_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_12 = __Pyx_PyObject_LookupSpecial(__pyx_t_9, __pyx_n_s_enter); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 151, __pyx_L12_error)
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_13 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
- __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
- if (likely(__pyx_t_13)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
- __Pyx_INCREF(__pyx_t_13);
+ __pyx_t_11 = __Pyx_PyObject_LookupSpecial(__pyx_t_8, __pyx_n_s_enter); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 232, __pyx_L12_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_12 = NULL;
+ __pyx_t_13 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_11))) {
+ __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_12)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
+ __Pyx_INCREF(__pyx_t_12);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_12, function);
+ __Pyx_DECREF_SET(__pyx_t_11, function);
+ __pyx_t_13 = 1;
}
}
- __pyx_t_11 = (__pyx_t_13) ? __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_13) : __Pyx_PyObject_CallNoArg(__pyx_t_12);
- __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 151, __pyx_L12_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_12, NULL};
+ __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_13, 0+__pyx_t_13);
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 232, __pyx_L12_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/*try:*/ {
{
__Pyx_PyThreadState_declare
@@ -6457,60 +10793,222 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_set_additional_thread
__Pyx_XGOTREF(__pyx_t_16);
/*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":154
+ /* "_pydevd_bundle/pydevd_cython.pyx":235
* # If it's not there, set it within a lock to avoid any racing
* # conditions.
- * additional_info = getattr(thread, 'additional_info', None) # <<<<<<<<<<<<<<
- * if additional_info is None:
- * additional_info = PyDBAdditionalThreadInfo()
+ * try: # <<<<<<<<<<<<<<
+ * additional_info = thread.additional_info
+ * except:
*/
- __pyx_t_9 = __Pyx_GetAttr3(__pyx_v_thread, __pyx_n_s_additional_info, Py_None); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 154, __pyx_L18_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_XDECREF_SET(__pyx_v_additional_info, __pyx_t_9);
- __pyx_t_9 = 0;
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
+ __Pyx_XGOTREF(__pyx_t_17);
+ __Pyx_XGOTREF(__pyx_t_18);
+ __Pyx_XGOTREF(__pyx_t_19);
+ /*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":155
+ /* "_pydevd_bundle/pydevd_cython.pyx":236
* # conditions.
- * additional_info = getattr(thread, 'additional_info', None)
- * if additional_info is None: # <<<<<<<<<<<<<<
- * additional_info = PyDBAdditionalThreadInfo()
- * thread.additional_info = additional_info
+ * try:
+ * additional_info = thread.additional_info # <<<<<<<<<<<<<<
+ * except:
+ * additional_info = None
*/
- __pyx_t_6 = (__pyx_v_additional_info == Py_None);
- __pyx_t_5 = (__pyx_t_6 != 0);
- if (__pyx_t_5) {
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_additional_info); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 236, __pyx_L26_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_XDECREF_SET(__pyx_v_additional_info, __pyx_t_8);
+ __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":156
- * additional_info = getattr(thread, 'additional_info', None)
- * if additional_info is None:
- * additional_info = PyDBAdditionalThreadInfo() # <<<<<<<<<<<<<<
- * thread.additional_info = additional_info
+ /* "_pydevd_bundle/pydevd_cython.pyx":235
+ * # If it's not there, set it within a lock to avoid any racing
+ * # conditions.
+ * try: # <<<<<<<<<<<<<<
+ * additional_info = thread.additional_info
+ * except:
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
+ __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
+ __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
+ goto __pyx_L33_try_end;
+ __pyx_L26_error:;
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":237
+ * try:
+ * additional_info = thread.additional_info
+ * except: # <<<<<<<<<<<<<<
+ * additional_info = None
*
*/
- __pyx_t_9 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 156, __pyx_L18_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF_SET(__pyx_v_additional_info, __pyx_t_9);
- __pyx_t_9 = 0;
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.set_additional_thread_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_10, &__pyx_t_11) < 0) __PYX_ERR(0, 237, __pyx_L28_except_error)
+ __Pyx_XGOTREF(__pyx_t_8);
+ __Pyx_XGOTREF(__pyx_t_10);
+ __Pyx_XGOTREF(__pyx_t_11);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":238
+ * additional_info = thread.additional_info
+ * except:
+ * additional_info = None # <<<<<<<<<<<<<<
+ *
+ * if additional_info is None:
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_additional_info, Py_None);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ goto __pyx_L27_exception_handled;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":155
+ /* "_pydevd_bundle/pydevd_cython.pyx":235
+ * # If it's not there, set it within a lock to avoid any racing
* # conditions.
- * additional_info = getattr(thread, 'additional_info', None)
- * if additional_info is None: # <<<<<<<<<<<<<<
- * additional_info = PyDBAdditionalThreadInfo()
- * thread.additional_info = additional_info
+ * try: # <<<<<<<<<<<<<<
+ * additional_info = thread.additional_info
+ * except:
*/
+ __pyx_L28_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_17);
+ __Pyx_XGIVEREF(__pyx_t_18);
+ __Pyx_XGIVEREF(__pyx_t_19);
+ __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
+ goto __pyx_L18_error;
+ __pyx_L27_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_17);
+ __Pyx_XGIVEREF(__pyx_t_18);
+ __Pyx_XGIVEREF(__pyx_t_19);
+ __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
+ __pyx_L33_try_end:;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":157
- * if additional_info is None:
- * additional_info = PyDBAdditionalThreadInfo()
- * thread.additional_info = additional_info # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":240
+ * additional_info = None
+ *
+ * if additional_info is None: # <<<<<<<<<<<<<<
+ * # Note: don't call PyDBAdditionalThreadInfo constructor at this
+ * # point as it can piggy-back into the debugger which could
+ */
+ __pyx_t_5 = (__pyx_v_additional_info == Py_None);
+ if (__pyx_t_5) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":245
+ * # get here again, rather get the global ref which was pre-created
+ * # and add a new entry only after we set thread.additional_info.
+ * additional_info = _next_additional_info[0] # <<<<<<<<<<<<<<
+ * thread.additional_info = additional_info
+ * additional_info.weak_thread = weakref.ref(thread)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_next_additional_info); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 245, __pyx_L18_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_11, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 245, __pyx_L18_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_DECREF_SET(__pyx_v_additional_info, __pyx_t_10);
+ __pyx_t_10 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":246
+ * # and add a new entry only after we set thread.additional_info.
+ * additional_info = _next_additional_info[0]
+ * thread.additional_info = additional_info # <<<<<<<<<<<<<<
+ * additional_info.weak_thread = weakref.ref(thread)
+ * add_additional_info(additional_info)
+ */
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_thread, __pyx_n_s_additional_info, __pyx_v_additional_info) < 0) __PYX_ERR(0, 246, __pyx_L18_error)
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":247
+ * additional_info = _next_additional_info[0]
+ * thread.additional_info = additional_info
+ * additional_info.weak_thread = weakref.ref(thread) # <<<<<<<<<<<<<<
+ * add_additional_info(additional_info)
+ * del _next_additional_info[:]
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_weakref); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 247, __pyx_L18_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_ref); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 247, __pyx_L18_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __pyx_t_11 = NULL;
+ __pyx_t_13 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_11)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_11);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_13 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_thread};
+ __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_13, 1+__pyx_t_13);
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 247, __pyx_L18_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_additional_info, __pyx_n_s_weak_thread, __pyx_t_10) < 0) __PYX_ERR(0, 247, __pyx_L18_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":248
+ * thread.additional_info = additional_info
+ * additional_info.weak_thread = weakref.ref(thread)
+ * add_additional_info(additional_info) # <<<<<<<<<<<<<<
+ * del _next_additional_info[:]
+ * _next_additional_info.append(PyDBAdditionalThreadInfo())
+ */
+ if (!(likely(((__pyx_v_additional_info) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_additional_info, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(0, 248, __pyx_L18_error)
+ __pyx_t_10 = __pyx_f_14_pydevd_bundle_13pydevd_cython_add_additional_info(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_additional_info), 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 248, __pyx_L18_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":249
+ * additional_info.weak_thread = weakref.ref(thread)
+ * add_additional_info(additional_info)
+ * del _next_additional_info[:] # <<<<<<<<<<<<<<
+ * _next_additional_info.append(PyDBAdditionalThreadInfo())
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_next_additional_info); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 249, __pyx_L18_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ if (__Pyx_PyObject_DelSlice(__pyx_t_10, 0, 0, NULL, NULL, &__pyx_slice__2, 0, 0, 1) < 0) __PYX_ERR(0, 249, __pyx_L18_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":250
+ * add_additional_info(additional_info)
+ * del _next_additional_info[:]
+ * _next_additional_info.append(PyDBAdditionalThreadInfo()) # <<<<<<<<<<<<<<
*
* return additional_info
*/
- if (__Pyx_PyObject_SetAttrStr(__pyx_v_thread, __pyx_n_s_additional_info, __pyx_v_additional_info) < 0) __PYX_ERR(0, 157, __pyx_L18_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_next_additional_info); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 250, __pyx_L18_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_8 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 250, __pyx_L18_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_20 = __Pyx_PyObject_Append(__pyx_t_10, __pyx_t_8); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 250, __pyx_L18_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":240
+ * additional_info = None
+ *
+ * if additional_info is None: # <<<<<<<<<<<<<<
+ * # Note: don't call PyDBAdditionalThreadInfo constructor at this
+ * # point as it can piggy-back into the debugger which could
+ */
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":151
+ /* "_pydevd_bundle/pydevd_cython.pyx":232
* raise AttributeError()
* except:
* with _set_additional_thread_info_lock: # <<<<<<<<<<<<<<
@@ -6523,38 +11021,38 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_set_additional_thread
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
goto __pyx_L25_try_end;
__pyx_L18_error:;
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/*except:*/ {
__Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.set_additional_thread_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_11, &__pyx_t_12) < 0) __PYX_ERR(0, 151, __pyx_L20_except_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GOTREF(__pyx_t_11);
+ if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_10, &__pyx_t_11) < 0) __PYX_ERR(0, 232, __pyx_L20_except_error)
+ __Pyx_XGOTREF(__pyx_t_8);
+ __Pyx_XGOTREF(__pyx_t_10);
+ __Pyx_XGOTREF(__pyx_t_11);
+ __pyx_t_12 = PyTuple_Pack(3, __pyx_t_8, __pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 232, __pyx_L20_except_error)
__Pyx_GOTREF(__pyx_t_12);
- __pyx_t_13 = PyTuple_Pack(3, __pyx_t_9, __pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 151, __pyx_L20_except_error)
- __Pyx_GOTREF(__pyx_t_13);
- __pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_13, NULL);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 151, __pyx_L20_except_error)
- __Pyx_GOTREF(__pyx_t_17);
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_17);
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
- if (__pyx_t_5 < 0) __PYX_ERR(0, 151, __pyx_L20_except_error)
- __pyx_t_6 = ((!(__pyx_t_5 != 0)) != 0);
- if (__pyx_t_6) {
- __Pyx_GIVEREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_11);
- __Pyx_XGIVEREF(__pyx_t_12);
- __Pyx_ErrRestoreWithState(__pyx_t_9, __pyx_t_11, __pyx_t_12);
- __pyx_t_9 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
- __PYX_ERR(0, 151, __pyx_L20_except_error)
+ __pyx_t_19 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_12, NULL);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 232, __pyx_L20_except_error)
+ __Pyx_GOTREF(__pyx_t_19);
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_19);
+ __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
+ if (__pyx_t_5 < 0) __PYX_ERR(0, 232, __pyx_L20_except_error)
+ __pyx_t_21 = (!__pyx_t_5);
+ if (unlikely(__pyx_t_21)) {
+ __Pyx_GIVEREF(__pyx_t_8);
+ __Pyx_GIVEREF(__pyx_t_10);
+ __Pyx_XGIVEREF(__pyx_t_11);
+ __Pyx_ErrRestoreWithState(__pyx_t_8, __pyx_t_10, __pyx_t_11);
+ __pyx_t_8 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
+ __PYX_ERR(0, 232, __pyx_L20_except_error)
}
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
goto __pyx_L19_exception_handled;
}
__pyx_L20_except_error:;
@@ -6573,10 +11071,10 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_set_additional_thread
}
/*finally:*/ {
/*normal exit:*/{
- if (__pyx_t_10) {
- __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__2, NULL);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 151, __pyx_L5_except_error)
+ if (__pyx_t_9) {
+ __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__3, NULL);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 232, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_16);
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
}
@@ -6584,26 +11082,26 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_set_additional_thread
}
__pyx_L17:;
}
- goto __pyx_L30;
+ goto __pyx_L40;
__pyx_L12_error:;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L5_except_error;
- __pyx_L30:;
+ __pyx_L40:;
}
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L4_exception_handled;
}
- __pyx_L5_except_error:;
- /* "_pydevd_bundle/pydevd_cython.pyx":146
- *
- * def set_additional_thread_info(thread):
+ /* "_pydevd_bundle/pydevd_cython.pyx":227
+ * # ENDIF
+ * # fmt: on
* try: # <<<<<<<<<<<<<<
* additional_info = thread.additional_info
* if additional_info is None:
*/
+ __pyx_L5_except_error:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
@@ -6617,38 +11115,38 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_set_additional_thread
__pyx_L8_try_end:;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":159
- * thread.additional_info = additional_info
+ /* "_pydevd_bundle/pydevd_cython.pyx":252
+ * _next_additional_info.append(PyDBAdditionalThreadInfo())
*
* return additional_info # <<<<<<<<<<<<<<
- * import linecache
- * import os.path
+ *
+ *
*/
__Pyx_XDECREF(__pyx_r);
- if (unlikely(!__pyx_v_additional_info)) { __Pyx_RaiseUnboundLocalError("additional_info"); __PYX_ERR(0, 159, __pyx_L1_error) }
+ if (unlikely(!__pyx_v_additional_info)) { __Pyx_RaiseUnboundLocalError("additional_info"); __PYX_ERR(0, 252, __pyx_L1_error) }
__Pyx_INCREF(__pyx_v_additional_info);
__pyx_r = __pyx_v_additional_info;
goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":145
- *
- *
- * def set_additional_thread_info(thread): # <<<<<<<<<<<<<<
- * try:
- * additional_info = thread.additional_info
+ /* "_pydevd_bundle/pydevd_cython.pyx":222
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef set_additional_thread_info(thread): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def set_additional_thread_info(thread):
*/
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
- __Pyx_XDECREF(__pyx_t_13);
__Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.set_additional_thread_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
+ __pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_additional_info);
__Pyx_XGIVEREF(__pyx_r);
@@ -6656,684 +11154,973 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_set_additional_thread
return __pyx_r;
}
-/* "_pydevd_bundle/pydevd_cython.pyx":177
- * except ImportError:
- *
- * def get_smart_step_into_variant_from_frame_offset(*args, **kwargs): # <<<<<<<<<<<<<<
- * return None
- *
- */
-
/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_3get_smart_step_into_variant_from_frame_offset(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_3get_smart_step_into_variant_from_frame_offset = {"get_smart_step_into_variant_from_frame_offset", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_3get_smart_step_into_variant_from_frame_offset, METH_VARARGS|METH_KEYWORDS, 0};
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_3get_smart_step_into_variant_from_frame_offset(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- CYTHON_UNUSED PyObject *__pyx_v_args = 0;
- CYTHON_UNUSED PyObject *__pyx_v_kwargs = 0;
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_1set_additional_thread_info(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_1set_additional_thread_info = {"set_additional_thread_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_1set_additional_thread_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_1set_additional_thread_info(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_thread = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("get_smart_step_into_variant_from_frame_offset (wrapper)", 0);
- if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "get_smart_step_into_variant_from_frame_offset", 1))) return NULL;
- __Pyx_INCREF(__pyx_args);
- __pyx_v_args = __pyx_args;
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_2get_smart_step_into_variant_from_frame_offset(__pyx_self, __pyx_v_args, __pyx_v_kwargs);
+ __Pyx_RefNannySetupContext("set_additional_thread_info (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_thread,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_thread)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 222, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "set_additional_thread_info") < 0)) __PYX_ERR(0, 222, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v_thread = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("set_additional_thread_info", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 222, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.set_additional_thread_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_set_additional_thread_info(__pyx_self, __pyx_v_thread);
/* function exit code */
- __Pyx_XDECREF(__pyx_v_args);
- __Pyx_XDECREF(__pyx_v_kwargs);
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_2get_smart_step_into_variant_from_frame_offset(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwargs) {
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_set_additional_thread_info(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_thread) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("get_smart_step_into_variant_from_frame_offset", 0);
-
- /* "_pydevd_bundle/pydevd_cython.pyx":178
- *
- * def get_smart_step_into_variant_from_frame_offset(*args, **kwargs):
- * return None # <<<<<<<<<<<<<<
- *
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- */
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("set_additional_thread_info", 1);
__Pyx_XDECREF(__pyx_r);
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython_set_additional_thread_info(__pyx_v_thread, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 222, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":177
- * except ImportError:
- *
- * def get_smart_step_into_variant_from_frame_offset(*args, **kwargs): # <<<<<<<<<<<<<<
- * return None
- *
- */
-
/* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.set_additional_thread_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-/* "_pydevd_bundle/pydevd_cython.pyx":213
- *
+/* "_pydevd_bundle/pydevd_cython.pyx":271
+ * # fmt: off
* # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * cdef is_unhandled_exception(container_obj, py_db, frame, int last_raise_line, set raise_lines): # <<<<<<<<<<<<<<
+ * cdef _update_stepping_info(PyDBAdditionalThreadInfo info): # <<<<<<<<<<<<<<
* # ELSE
- * # def is_unhandled_exception(container_obj, py_db, frame, last_raise_line, raise_lines):
+ * # def _update_stepping_info(info):
*/
-static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_is_unhandled_exception(PyObject *__pyx_v_container_obj, PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame, int __pyx_v_last_raise_line, PyObject *__pyx_v_raise_lines) {
- PyObject *__pyx_v_try_except_infos = NULL;
- PyObject *__pyx_v_valid_try_except_infos = NULL;
- PyObject *__pyx_v_try_except_info = NULL;
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython__update_stepping_info(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info) {
+ PyObject *__pyx_v_new_all_infos = NULL;
+ PyObject *__pyx_v_new_stepping = NULL;
+ PyObject *__pyx_v_py_db = NULL;
+ PyObject *__pyx_v_thread = NULL;
+ PyObject *__pyx_v_thread_id = NULL;
+ CYTHON_UNUSED PyObject *__pyx_v__queue = NULL;
+ PyObject *__pyx_v_event = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- int __pyx_t_3;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
+ unsigned int __pyx_t_5;
PyObject *__pyx_t_6 = NULL;
- Py_ssize_t __pyx_t_7;
- PyObject *(*__pyx_t_8)(PyObject *);
- PyObject *__pyx_t_9 = NULL;
- int __pyx_t_10;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ Py_ssize_t __pyx_t_9;
+ Py_ssize_t __pyx_t_10;
int __pyx_t_11;
+ int __pyx_t_12;
+ int __pyx_t_13;
+ int __pyx_t_14;
+ PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_16 = NULL;
+ int __pyx_t_17;
+ int __pyx_t_18;
+ PyObject *(*__pyx_t_19)(PyObject *);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("is_unhandled_exception", 0);
+ __Pyx_RefNannySetupContext("_update_stepping_info", 0);
+ __Pyx_INCREF((PyObject *)__pyx_v_info);
- /* "_pydevd_bundle/pydevd_cython.pyx":217
- * # def is_unhandled_exception(container_obj, py_db, frame, last_raise_line, raise_lines):
- * # ENDIF
- * if frame.f_lineno in raise_lines: # <<<<<<<<<<<<<<
- * return True
+ /* "_pydevd_bundle/pydevd_cython.pyx":280
+ * global _all_infos
*
+ * with _update_infos_lock: # <<<<<<<<<<<<<<
+ * # Removes entries that are no longer valid.
+ * new_all_infos = set()
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 217, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (unlikely(__pyx_v_raise_lines == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(0, 217, __pyx_L1_error)
- }
- __pyx_t_2 = (__Pyx_PySet_ContainsTF(__pyx_t_1, __pyx_v_raise_lines, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 217, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_3 = (__pyx_t_2 != 0);
- if (__pyx_t_3) {
+ /*with:*/ {
+ __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_14_pydevd_bundle_13pydevd_cython__update_infos_lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 280, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_14_pydevd_bundle_13pydevd_cython__update_infos_lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 280, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 280, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ /*try:*/ {
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
+ __Pyx_XGOTREF(__pyx_t_6);
+ __Pyx_XGOTREF(__pyx_t_7);
+ __Pyx_XGOTREF(__pyx_t_8);
+ /*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":218
- * # ENDIF
- * if frame.f_lineno in raise_lines:
- * return True # <<<<<<<<<<<<<<
- *
- * else:
+ /* "_pydevd_bundle/pydevd_cython.pyx":282
+ * with _update_infos_lock:
+ * # Removes entries that are no longer valid.
+ * new_all_infos = set() # <<<<<<<<<<<<<<
+ * for info in _all_infos:
+ * if info._get_related_thread() is not None:
*/
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(Py_True);
- __pyx_r = Py_True;
- goto __pyx_L0;
+ __pyx_t_2 = PySet_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 282, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_v_new_all_infos = ((PyObject*)__pyx_t_2);
+ __pyx_t_2 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":217
- * # def is_unhandled_exception(container_obj, py_db, frame, last_raise_line, raise_lines):
- * # ENDIF
- * if frame.f_lineno in raise_lines: # <<<<<<<<<<<<<<
- * return True
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":283
+ * # Removes entries that are no longer valid.
+ * new_all_infos = set()
+ * for info in _all_infos: # <<<<<<<<<<<<<<
+ * if info._get_related_thread() is not None:
+ * new_all_infos.add(info)
*/
- }
+ __pyx_t_9 = 0;
+ __pyx_t_3 = __Pyx_set_iterator(__pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos, 1, (&__pyx_t_10), (&__pyx_t_11)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 283, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_2);
+ __pyx_t_2 = __pyx_t_3;
+ __pyx_t_3 = 0;
+ while (1) {
+ __pyx_t_12 = __Pyx_set_iter_next(__pyx_t_2, __pyx_t_10, &__pyx_t_9, &__pyx_t_3, __pyx_t_11);
+ if (unlikely(__pyx_t_12 == 0)) break;
+ if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(0, 283, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(0, 283, __pyx_L7_error)
+ __Pyx_DECREF_SET(__pyx_v_info, ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_3));
+ __pyx_t_3 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":221
- *
- * else:
- * try_except_infos = container_obj.try_except_infos # <<<<<<<<<<<<<<
- * if try_except_infos is None:
- * container_obj.try_except_infos = try_except_infos = py_db.collect_try_except_info(frame.f_code)
+ /* "_pydevd_bundle/pydevd_cython.pyx":284
+ * new_all_infos = set()
+ * for info in _all_infos:
+ * if info._get_related_thread() is not None: # <<<<<<<<<<<<<<
+ * new_all_infos.add(info)
+ * _all_infos = new_all_infos
*/
- /*else*/ {
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_container_obj, __pyx_n_s_try_except_infos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_try_except_infos = __pyx_t_1;
- __pyx_t_1 = 0;
+ __pyx_t_3 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_info->__pyx_vtab)->_get_related_thread(__pyx_v_info, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 284, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_13 = (__pyx_t_3 != Py_None);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (__pyx_t_13) {
- /* "_pydevd_bundle/pydevd_cython.pyx":222
- * else:
- * try_except_infos = container_obj.try_except_infos
- * if try_except_infos is None: # <<<<<<<<<<<<<<
- * container_obj.try_except_infos = try_except_infos = py_db.collect_try_except_info(frame.f_code)
+ /* "_pydevd_bundle/pydevd_cython.pyx":285
+ * for info in _all_infos:
+ * if info._get_related_thread() is not None:
+ * new_all_infos.add(info) # <<<<<<<<<<<<<<
+ * _all_infos = new_all_infos
*
*/
- __pyx_t_3 = (__pyx_v_try_except_infos == Py_None);
- __pyx_t_2 = (__pyx_t_3 != 0);
- if (__pyx_t_2) {
+ __pyx_t_14 = PySet_Add(__pyx_v_new_all_infos, ((PyObject *)__pyx_v_info)); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 285, __pyx_L7_error)
- /* "_pydevd_bundle/pydevd_cython.pyx":223
- * try_except_infos = container_obj.try_except_infos
- * if try_except_infos is None:
- * container_obj.try_except_infos = try_except_infos = py_db.collect_try_except_info(frame.f_code) # <<<<<<<<<<<<<<
- *
- * if not try_except_infos:
+ /* "_pydevd_bundle/pydevd_cython.pyx":284
+ * new_all_infos = set()
+ * for info in _all_infos:
+ * if info._get_related_thread() is not None: # <<<<<<<<<<<<<<
+ * new_all_infos.add(info)
+ * _all_infos = new_all_infos
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_collect_try_except_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 223, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 223, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_6)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_6);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- }
- }
- __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__Pyx_PyObject_SetAttrStr(__pyx_v_container_obj, __pyx_n_s_try_except_infos, __pyx_t_1) < 0) __PYX_ERR(0, 223, __pyx_L1_error)
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_DECREF_SET(__pyx_v_try_except_infos, __pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":222
- * else:
- * try_except_infos = container_obj.try_except_infos
- * if try_except_infos is None: # <<<<<<<<<<<<<<
- * container_obj.try_except_infos = try_except_infos = py_db.collect_try_except_info(frame.f_code)
+ /* "_pydevd_bundle/pydevd_cython.pyx":286
+ * if info._get_related_thread() is not None:
+ * new_all_infos.add(info)
+ * _all_infos = new_all_infos # <<<<<<<<<<<<<<
*
+ * new_stepping = set()
*/
- }
+ __Pyx_INCREF(__pyx_v_new_all_infos);
+ __Pyx_XGOTREF(__pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos);
+ __Pyx_DECREF_SET(__pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos, __pyx_v_new_all_infos);
+ __Pyx_GIVEREF(__pyx_v_new_all_infos);
- /* "_pydevd_bundle/pydevd_cython.pyx":225
- * container_obj.try_except_infos = try_except_infos = py_db.collect_try_except_info(frame.f_code)
+ /* "_pydevd_bundle/pydevd_cython.pyx":288
+ * _all_infos = new_all_infos
*
- * if not try_except_infos: # <<<<<<<<<<<<<<
- * # Consider the last exception as unhandled because there's no try..except in it.
- * return True
- */
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_try_except_infos); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 225, __pyx_L1_error)
- __pyx_t_3 = ((!__pyx_t_2) != 0);
- if (__pyx_t_3) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":227
- * if not try_except_infos:
- * # Consider the last exception as unhandled because there's no try..except in it.
- * return True # <<<<<<<<<<<<<<
- * else:
- * # Now, consider only the try..except for the raise
+ * new_stepping = set() # <<<<<<<<<<<<<<
+ * for info in _all_infos:
+ * if info._is_stepping():
*/
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(Py_True);
- __pyx_r = Py_True;
- goto __pyx_L0;
+ __pyx_t_2 = PySet_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 288, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_v_new_stepping = ((PyObject*)__pyx_t_2);
+ __pyx_t_2 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":225
- * container_obj.try_except_infos = try_except_infos = py_db.collect_try_except_info(frame.f_code)
+ /* "_pydevd_bundle/pydevd_cython.pyx":289
*
- * if not try_except_infos: # <<<<<<<<<<<<<<
- * # Consider the last exception as unhandled because there's no try..except in it.
- * return True
+ * new_stepping = set()
+ * for info in _all_infos: # <<<<<<<<<<<<<<
+ * if info._is_stepping():
+ * new_stepping.add(info)
*/
- }
+ __pyx_t_10 = 0;
+ __pyx_t_3 = __Pyx_set_iterator(__pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos, 1, (&__pyx_t_9), (&__pyx_t_11)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 289, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_2);
+ __pyx_t_2 = __pyx_t_3;
+ __pyx_t_3 = 0;
+ while (1) {
+ __pyx_t_12 = __Pyx_set_iter_next(__pyx_t_2, __pyx_t_9, &__pyx_t_10, &__pyx_t_3, __pyx_t_11);
+ if (unlikely(__pyx_t_12 == 0)) break;
+ if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(0, 289, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(0, 289, __pyx_L7_error)
+ __Pyx_DECREF_SET(__pyx_v_info, ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_3));
+ __pyx_t_3 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":230
- * else:
- * # Now, consider only the try..except for the raise
- * valid_try_except_infos = [] # <<<<<<<<<<<<<<
- * for try_except_info in try_except_infos:
- * if try_except_info.is_line_in_try_block(last_raise_line):
+ /* "_pydevd_bundle/pydevd_cython.pyx":290
+ * new_stepping = set()
+ * for info in _all_infos:
+ * if info._is_stepping(): # <<<<<<<<<<<<<<
+ * new_stepping.add(info)
+ * _infos_stepping = new_stepping
*/
- /*else*/ {
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_valid_try_except_infos = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
+ __pyx_t_13 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_info->__pyx_vtab)->_is_stepping(__pyx_v_info, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 290, __pyx_L7_error)
+ if (__pyx_t_13) {
- /* "_pydevd_bundle/pydevd_cython.pyx":231
- * # Now, consider only the try..except for the raise
- * valid_try_except_infos = []
- * for try_except_info in try_except_infos: # <<<<<<<<<<<<<<
- * if try_except_info.is_line_in_try_block(last_raise_line):
- * valid_try_except_infos.append(try_except_info)
+ /* "_pydevd_bundle/pydevd_cython.pyx":291
+ * for info in _all_infos:
+ * if info._is_stepping():
+ * new_stepping.add(info) # <<<<<<<<<<<<<<
+ * _infos_stepping = new_stepping
+ *
*/
- if (likely(PyList_CheckExact(__pyx_v_try_except_infos)) || PyTuple_CheckExact(__pyx_v_try_except_infos)) {
- __pyx_t_1 = __pyx_v_try_except_infos; __Pyx_INCREF(__pyx_t_1); __pyx_t_7 = 0;
- __pyx_t_8 = NULL;
- } else {
- __pyx_t_7 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_try_except_infos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 231, __pyx_L1_error)
- }
- for (;;) {
- if (likely(!__pyx_t_8)) {
- if (likely(PyList_CheckExact(__pyx_t_1))) {
- if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 231, __pyx_L1_error)
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 231, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- #endif
- } else {
- if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 231, __pyx_L1_error)
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 231, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- #endif
- }
- } else {
- __pyx_t_4 = __pyx_t_8(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- PyObject* exc_type = PyErr_Occurred();
- if (exc_type) {
- if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(0, 231, __pyx_L1_error)
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XDECREF_SET(__pyx_v_try_except_info, __pyx_t_4);
- __pyx_t_4 = 0;
+ __pyx_t_14 = PySet_Add(__pyx_v_new_stepping, ((PyObject *)__pyx_v_info)); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 291, __pyx_L7_error)
- /* "_pydevd_bundle/pydevd_cython.pyx":232
- * valid_try_except_infos = []
- * for try_except_info in try_except_infos:
- * if try_except_info.is_line_in_try_block(last_raise_line): # <<<<<<<<<<<<<<
- * valid_try_except_infos.append(try_except_info)
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":290
+ * new_stepping = set()
+ * for info in _all_infos:
+ * if info._is_stepping(): # <<<<<<<<<<<<<<
+ * new_stepping.add(info)
+ * _infos_stepping = new_stepping
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_try_except_info, __pyx_n_s_is_line_in_try_block); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 232, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_last_raise_line); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 232, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_9 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_9)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_9);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
+ }
}
- }
- __pyx_t_4 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_9, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6);
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 232, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 232, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_3) {
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":233
- * for try_except_info in try_except_infos:
- * if try_except_info.is_line_in_try_block(last_raise_line):
- * valid_try_except_infos.append(try_except_info) # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":292
+ * if info._is_stepping():
+ * new_stepping.add(info)
+ * _infos_stepping = new_stepping # <<<<<<<<<<<<<<
*
- * if not valid_try_except_infos:
+ * py_db = get_global_debugger()
*/
- __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_valid_try_except_infos, __pyx_v_try_except_info); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 233, __pyx_L1_error)
+ __Pyx_INCREF(__pyx_v_new_stepping);
+ __Pyx_XGOTREF(__pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping);
+ __Pyx_DECREF_SET(__pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping, __pyx_v_new_stepping);
+ __Pyx_GIVEREF(__pyx_v_new_stepping);
- /* "_pydevd_bundle/pydevd_cython.pyx":232
- * valid_try_except_infos = []
- * for try_except_info in try_except_infos:
- * if try_except_info.is_line_in_try_block(last_raise_line): # <<<<<<<<<<<<<<
- * valid_try_except_infos.append(try_except_info)
+ /* "_pydevd_bundle/pydevd_cython.pyx":280
+ * global _all_infos
*
+ * with _update_infos_lock: # <<<<<<<<<<<<<<
+ * # Removes entries that are no longer valid.
+ * new_all_infos = set()
*/
}
-
- /* "_pydevd_bundle/pydevd_cython.pyx":231
- * # Now, consider only the try..except for the raise
- * valid_try_except_infos = []
- * for try_except_info in try_except_infos: # <<<<<<<<<<<<<<
- * if try_except_info.is_line_in_try_block(last_raise_line):
- * valid_try_except_infos.append(try_except_info)
- */
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ goto __pyx_L12_try_end;
+ __pyx_L7_error:;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython._update_stepping_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(0, 280, __pyx_L9_except_error)
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __pyx_t_15 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 280, __pyx_L9_except_error)
+ __Pyx_GOTREF(__pyx_t_15);
+ __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_15, NULL);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 280, __pyx_L9_except_error)
+ __Pyx_GOTREF(__pyx_t_16);
+ __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_16);
+ __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+ if (__pyx_t_13 < 0) __PYX_ERR(0, 280, __pyx_L9_except_error)
+ __pyx_t_17 = (!__pyx_t_13);
+ if (unlikely(__pyx_t_17)) {
+ __Pyx_GIVEREF(__pyx_t_2);
+ __Pyx_GIVEREF(__pyx_t_3);
+ __Pyx_XGIVEREF(__pyx_t_4);
+ __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+ __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0;
+ __PYX_ERR(0, 280, __pyx_L9_except_error)
+ }
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ goto __pyx_L8_exception_handled;
+ }
+ __pyx_L9_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_6);
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+ goto __pyx_L1_error;
+ __pyx_L8_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_6);
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+ __pyx_L12_try_end:;
}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ /*finally:*/ {
+ /*normal exit:*/{
+ if (__pyx_t_1) {
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__3, NULL);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 280, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+ goto __pyx_L6;
+ }
+ __pyx_L6:;
+ }
+ goto __pyx_L22;
+ __pyx_L3_error:;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ goto __pyx_L1_error;
+ __pyx_L22:;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":235
- * valid_try_except_infos.append(try_except_info)
- *
- * if not valid_try_except_infos: # <<<<<<<<<<<<<<
- * return True
+ /* "_pydevd_bundle/pydevd_cython.pyx":294
+ * _infos_stepping = new_stepping
*
+ * py_db = get_global_debugger() # <<<<<<<<<<<<<<
+ * if py_db is not None and not py_db.pydb_disposed:
+ * thread = info.weak_thread()
*/
- __pyx_t_3 = (PyList_GET_SIZE(__pyx_v_valid_try_except_infos) != 0);
- __pyx_t_2 = ((!__pyx_t_3) != 0);
- if (__pyx_t_2) {
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_get_global_debugger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 294, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_v_py_db = __pyx_t_4;
+ __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":236
- *
- * if not valid_try_except_infos:
- * return True # <<<<<<<<<<<<<<
- *
- * else:
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(Py_True);
- __pyx_r = Py_True;
- goto __pyx_L0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":235
- * valid_try_except_infos.append(try_except_info)
- *
- * if not valid_try_except_infos: # <<<<<<<<<<<<<<
- * return True
+ /* "_pydevd_bundle/pydevd_cython.pyx":295
*
+ * py_db = get_global_debugger()
+ * if py_db is not None and not py_db.pydb_disposed: # <<<<<<<<<<<<<<
+ * thread = info.weak_thread()
+ * if thread is not None:
*/
+ __pyx_t_13 = (__pyx_v_py_db != Py_None);
+ if (__pyx_t_13) {
+ } else {
+ __pyx_t_17 = __pyx_t_13;
+ goto __pyx_L24_bool_binop_done;
+ }
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_pydb_disposed); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 295, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 295, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_18 = (!__pyx_t_13);
+ __pyx_t_17 = __pyx_t_18;
+ __pyx_L24_bool_binop_done:;
+ if (__pyx_t_17) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":296
+ * py_db = get_global_debugger()
+ * if py_db is not None and not py_db.pydb_disposed:
+ * thread = info.weak_thread() # <<<<<<<<<<<<<<
+ * if thread is not None:
+ * thread_id = get_thread_id(thread)
+ */
+ __Pyx_INCREF(__pyx_v_info->weak_thread);
+ __pyx_t_3 = __pyx_v_info->weak_thread; __pyx_t_2 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
}
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 296, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_v_thread = __pyx_t_4;
+ __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":243
- * # where one try..except is inside the other with only a raise
- * # and it's gotten in the except line.
- * for try_except_info in try_except_infos: # <<<<<<<<<<<<<<
- * if try_except_info.is_line_in_except_block(frame.f_lineno):
- * if (
- */
- /*else*/ {
- if (likely(PyList_CheckExact(__pyx_v_try_except_infos)) || PyTuple_CheckExact(__pyx_v_try_except_infos)) {
- __pyx_t_1 = __pyx_v_try_except_infos; __Pyx_INCREF(__pyx_t_1); __pyx_t_7 = 0;
- __pyx_t_8 = NULL;
- } else {
- __pyx_t_7 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_try_except_infos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 243, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 243, __pyx_L1_error)
- }
- for (;;) {
- if (likely(!__pyx_t_8)) {
- if (likely(PyList_CheckExact(__pyx_t_1))) {
- if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 243, __pyx_L1_error)
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 243, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- #endif
- } else {
- if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 243, __pyx_L1_error)
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 243, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- #endif
- }
- } else {
- __pyx_t_4 = __pyx_t_8(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- PyObject* exc_type = PyErr_Occurred();
- if (exc_type) {
- if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(0, 243, __pyx_L1_error)
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XDECREF_SET(__pyx_v_try_except_info, __pyx_t_4);
- __pyx_t_4 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":244
- * # and it's gotten in the except line.
- * for try_except_info in try_except_infos:
- * if try_except_info.is_line_in_except_block(frame.f_lineno): # <<<<<<<<<<<<<<
- * if (
- * frame.f_lineno == try_except_info.except_line or
- */
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_try_except_info, __pyx_n_s_is_line_in_except_block); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 244, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 244, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_9 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_9)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_9);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- __pyx_t_4 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_9, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6);
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 244, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 244, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_2) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":246
- * if try_except_info.is_line_in_except_block(frame.f_lineno):
- * if (
- * frame.f_lineno == try_except_info.except_line or # <<<<<<<<<<<<<<
- * frame.f_lineno in try_except_info.raise_lines_in_except
- * ):
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 246, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_try_except_info, __pyx_n_s_except_line); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 246, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 246, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 246, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (!__pyx_t_3) {
- } else {
- __pyx_t_2 = __pyx_t_3;
- goto __pyx_L14_bool_binop_done;
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":247
- * if (
- * frame.f_lineno == try_except_info.except_line or
- * frame.f_lineno in try_except_info.raise_lines_in_except # <<<<<<<<<<<<<<
- * ):
- * # In a raise inside a try..except block or some except which doesn't
+ /* "_pydevd_bundle/pydevd_cython.pyx":297
+ * if py_db is not None and not py_db.pydb_disposed:
+ * thread = info.weak_thread()
+ * if thread is not None: # <<<<<<<<<<<<<<
+ * thread_id = get_thread_id(thread)
+ * _queue, event = py_db.get_internal_queue_and_event(thread_id)
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 247, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_try_except_info, __pyx_n_s_raise_lines_in_except); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 247, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_t_6, __pyx_t_5, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 247, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_11 = (__pyx_t_3 != 0);
- __pyx_t_2 = __pyx_t_11;
- __pyx_L14_bool_binop_done:;
+ __pyx_t_17 = (__pyx_v_thread != Py_None);
+ if (__pyx_t_17) {
- /* "_pydevd_bundle/pydevd_cython.pyx":245
- * for try_except_info in try_except_infos:
- * if try_except_info.is_line_in_except_block(frame.f_lineno):
- * if ( # <<<<<<<<<<<<<<
- * frame.f_lineno == try_except_info.except_line or
- * frame.f_lineno in try_except_info.raise_lines_in_except
+ /* "_pydevd_bundle/pydevd_cython.pyx":298
+ * thread = info.weak_thread()
+ * if thread is not None:
+ * thread_id = get_thread_id(thread) # <<<<<<<<<<<<<<
+ * _queue, event = py_db.get_internal_queue_and_event(thread_id)
+ * event.set()
*/
- if (__pyx_t_2) {
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_get_thread_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 298, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_thread};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 298, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_v_thread_id = __pyx_t_4;
+ __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":251
- * # In a raise inside a try..except block or some except which doesn't
- * # match the raised exception.
- * return True # <<<<<<<<<<<<<<
- * return False
+ /* "_pydevd_bundle/pydevd_cython.pyx":299
+ * if thread is not None:
+ * thread_id = get_thread_id(thread)
+ * _queue, event = py_db.get_internal_queue_and_event(thread_id) # <<<<<<<<<<<<<<
+ * event.set()
*
*/
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(Py_True);
- __pyx_r = Py_True;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":245
- * for try_except_info in try_except_infos:
- * if try_except_info.is_line_in_except_block(frame.f_lineno):
- * if ( # <<<<<<<<<<<<<<
- * frame.f_lineno == try_except_info.except_line or
- * frame.f_lineno in try_except_info.raise_lines_in_except
- */
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":244
- * # and it's gotten in the except line.
- * for try_except_info in try_except_infos:
- * if try_except_info.is_line_in_except_block(frame.f_lineno): # <<<<<<<<<<<<<<
- * if (
- * frame.f_lineno == try_except_info.except_line or
- */
- }
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_get_internal_queue_and_event); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 299, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_thread_id};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 299, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
+ PyObject* sequence = __pyx_t_4;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 2)) {
+ if (size > 2) __Pyx_RaiseTooManyValuesError(2);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 299, __pyx_L1_error)
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1);
+ } else {
+ __pyx_t_3 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_2 = PyList_GET_ITEM(sequence, 1);
+ }
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_2);
+ #else
+ __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 299, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 299, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ #endif
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ } else {
+ Py_ssize_t index = -1;
+ __pyx_t_15 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 299, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_15);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_19 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_15);
+ index = 0; __pyx_t_3 = __pyx_t_19(__pyx_t_15); if (unlikely(!__pyx_t_3)) goto __pyx_L27_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_3);
+ index = 1; __pyx_t_2 = __pyx_t_19(__pyx_t_15); if (unlikely(!__pyx_t_2)) goto __pyx_L27_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_2);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_15), 2) < 0) __PYX_ERR(0, 299, __pyx_L1_error)
+ __pyx_t_19 = NULL;
+ __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ goto __pyx_L28_unpacking_done;
+ __pyx_L27_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __pyx_t_19 = NULL;
+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+ __PYX_ERR(0, 299, __pyx_L1_error)
+ __pyx_L28_unpacking_done:;
+ }
+ __pyx_v__queue = __pyx_t_3;
+ __pyx_t_3 = 0;
+ __pyx_v_event = __pyx_t_2;
+ __pyx_t_2 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":243
- * # where one try..except is inside the other with only a raise
- * # and it's gotten in the except line.
- * for try_except_info in try_except_infos: # <<<<<<<<<<<<<<
- * if try_except_info.is_line_in_except_block(frame.f_lineno):
- * if (
+ /* "_pydevd_bundle/pydevd_cython.pyx":300
+ * thread_id = get_thread_id(thread)
+ * _queue, event = py_db.get_internal_queue_and_event(thread_id)
+ * event.set() # <<<<<<<<<<<<<<
+ *
+ * # fmt: off
*/
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_event, __pyx_n_s_set); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_5 = 1;
}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 300, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":297
+ * if py_db is not None and not py_db.pydb_disposed:
+ * thread = info.weak_thread()
+ * if thread is not None: # <<<<<<<<<<<<<<
+ * thread_id = get_thread_id(thread)
+ * _queue, event = py_db.get_internal_queue_and_event(thread_id)
+ */
}
- }
- /* "_pydevd_bundle/pydevd_cython.pyx":252
- * # match the raised exception.
- * return True
- * return False # <<<<<<<<<<<<<<
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":295
*
+ * py_db = get_global_debugger()
+ * if py_db is not None and not py_db.pydb_disposed: # <<<<<<<<<<<<<<
+ * thread = info.weak_thread()
+ * if thread is not None:
*/
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(Py_False);
- __pyx_r = Py_False;
- goto __pyx_L0;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":213
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":271
+ * # fmt: off
* # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * cdef is_unhandled_exception(container_obj, py_db, frame, int last_raise_line, set raise_lines): # <<<<<<<<<<<<<<
+ * cdef _update_stepping_info(PyDBAdditionalThreadInfo info): # <<<<<<<<<<<<<<
* # ELSE
- * # def is_unhandled_exception(container_obj, py_db, frame, last_raise_line, raise_lines):
+ * # def _update_stepping_info(info):
*/
/* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
__pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_9);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.is_unhandled_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython._update_stepping_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
- __Pyx_XDECREF(__pyx_v_try_except_infos);
- __Pyx_XDECREF(__pyx_v_valid_try_except_infos);
- __Pyx_XDECREF(__pyx_v_try_except_info);
+ __Pyx_XDECREF(__pyx_v_new_all_infos);
+ __Pyx_XDECREF(__pyx_v_new_stepping);
+ __Pyx_XDECREF(__pyx_v_py_db);
+ __Pyx_XDECREF(__pyx_v_thread);
+ __Pyx_XDECREF(__pyx_v_thread_id);
+ __Pyx_XDECREF(__pyx_v__queue);
+ __Pyx_XDECREF(__pyx_v_event);
+ __Pyx_XDECREF((PyObject *)__pyx_v_info);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-/* "_pydevd_bundle/pydevd_cython.pyx":258
- * cdef class _TryExceptContainerObj:
- * cdef public list try_except_infos;
- * def __init__(self): # <<<<<<<<<<<<<<
- * self.try_except_infos = None
+/* "_pydevd_bundle/pydevd_cython.pyx":304
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef add_additional_info(PyDBAdditionalThreadInfo info): # <<<<<<<<<<<<<<
* # ELSE
+ * # def add_additional_info(info):
*/
-/* Python wrapper */
-static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- int __pyx_r;
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_3add_additional_info(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_add_additional_info(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info, CYTHON_UNUSED int __pyx_skip_dispatch) {
+ PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
- if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
- if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj___init__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)__pyx_v_self));
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ unsigned int __pyx_t_5;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ int __pyx_t_9;
+ int __pyx_t_10;
+ PyObject *__pyx_t_11 = NULL;
+ PyObject *__pyx_t_12 = NULL;
+ int __pyx_t_13;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("add_additional_info", 1);
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
+ /* "_pydevd_bundle/pydevd_cython.pyx":309
+ * # ENDIF
+ * # fmt: on
+ * with _update_infos_lock: # <<<<<<<<<<<<<<
+ * _all_infos.add(info)
+ * if info._is_stepping():
+ */
+ /*with:*/ {
+ __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_14_pydevd_bundle_13pydevd_cython__update_infos_lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_14_pydevd_bundle_13pydevd_cython__update_infos_lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 309, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 309, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ /*try:*/ {
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
+ __Pyx_XGOTREF(__pyx_t_6);
+ __Pyx_XGOTREF(__pyx_t_7);
+ __Pyx_XGOTREF(__pyx_t_8);
+ /*try:*/ {
-static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj___init__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__init__", 0);
+ /* "_pydevd_bundle/pydevd_cython.pyx":310
+ * # fmt: on
+ * with _update_infos_lock:
+ * _all_infos.add(info) # <<<<<<<<<<<<<<
+ * if info._is_stepping():
+ * _infos_stepping.add(info)
+ */
+ if (unlikely(__pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos == Py_None)) {
+ PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add");
+ __PYX_ERR(0, 310, __pyx_L7_error)
+ }
+ __pyx_t_9 = PySet_Add(__pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos, ((PyObject *)__pyx_v_info)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 310, __pyx_L7_error)
- /* "_pydevd_bundle/pydevd_cython.pyx":259
- * cdef public list try_except_infos;
- * def __init__(self):
- * self.try_except_infos = None # <<<<<<<<<<<<<<
- * # ELSE
- * # class _TryExceptContainerObj(object):
+ /* "_pydevd_bundle/pydevd_cython.pyx":311
+ * with _update_infos_lock:
+ * _all_infos.add(info)
+ * if info._is_stepping(): # <<<<<<<<<<<<<<
+ * _infos_stepping.add(info)
+ *
*/
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->try_except_infos);
- __Pyx_DECREF(__pyx_v_self->try_except_infos);
- __pyx_v_self->try_except_infos = ((PyObject*)Py_None);
+ __pyx_t_10 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_info->__pyx_vtab)->_is_stepping(__pyx_v_info, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 311, __pyx_L7_error)
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":258
- * cdef class _TryExceptContainerObj:
- * cdef public list try_except_infos;
- * def __init__(self): # <<<<<<<<<<<<<<
- * self.try_except_infos = None
- * # ELSE
+ /* "_pydevd_bundle/pydevd_cython.pyx":312
+ * _all_infos.add(info)
+ * if info._is_stepping():
+ * _infos_stepping.add(info) # <<<<<<<<<<<<<<
+ *
+ * # fmt: off
*/
+ if (unlikely(__pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping == Py_None)) {
+ PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add");
+ __PYX_ERR(0, 312, __pyx_L7_error)
+ }
+ __pyx_t_9 = PySet_Add(__pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping, ((PyObject *)__pyx_v_info)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 312, __pyx_L7_error)
- /* function exit code */
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
+ /* "_pydevd_bundle/pydevd_cython.pyx":311
+ * with _update_infos_lock:
+ * _all_infos.add(info)
+ * if info._is_stepping(): # <<<<<<<<<<<<<<
+ * _infos_stepping.add(info)
+ *
+ */
+ }
-/* "_pydevd_bundle/pydevd_cython.pyx":257
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * cdef class _TryExceptContainerObj:
- * cdef public list try_except_infos; # <<<<<<<<<<<<<<
- * def __init__(self):
- * self.try_except_infos = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":309
+ * # ENDIF
+ * # fmt: on
+ * with _update_infos_lock: # <<<<<<<<<<<<<<
+ * _all_infos.add(info)
+ * if info._is_stepping():
*/
+ }
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ goto __pyx_L12_try_end;
+ __pyx_L7_error:;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.add_additional_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(0, 309, __pyx_L9_except_error)
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __pyx_t_11 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 309, __pyx_L9_except_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 309, __pyx_L9_except_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (__pyx_t_10 < 0) __PYX_ERR(0, 309, __pyx_L9_except_error)
+ __pyx_t_13 = (!__pyx_t_10);
+ if (unlikely(__pyx_t_13)) {
+ __Pyx_GIVEREF(__pyx_t_2);
+ __Pyx_GIVEREF(__pyx_t_3);
+ __Pyx_XGIVEREF(__pyx_t_4);
+ __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+ __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0;
+ __PYX_ERR(0, 309, __pyx_L9_except_error)
+ }
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ goto __pyx_L8_exception_handled;
+ }
+ __pyx_L9_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_6);
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+ goto __pyx_L1_error;
+ __pyx_L8_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_6);
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+ __pyx_L12_try_end:;
+ }
+ }
+ /*finally:*/ {
+ /*normal exit:*/{
+ if (__pyx_t_1) {
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__3, NULL);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 309, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+ goto __pyx_L6;
+ }
+ __pyx_L6:;
+ }
+ goto __pyx_L17;
+ __pyx_L3_error:;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ goto __pyx_L1_error;
+ __pyx_L17:;
+ }
-/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)__pyx_v_self));
+ /* "_pydevd_bundle/pydevd_cython.pyx":304
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef add_additional_info(PyDBAdditionalThreadInfo info): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def add_additional_info(info):
+ */
/* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->try_except_infos);
- __pyx_r = __pyx_v_self->try_except_infos;
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
-
- /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_11);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.add_additional_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
@@ -7341,570 +12128,544 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainer
}
/* Python wrapper */
-static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_3add_additional_info(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_3add_additional_info = {"add_additional_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_3add_additional_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_3add_additional_info(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+ __Pyx_RefNannySetupContext("add_additional_info (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 304, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "add_additional_info") < 0)) __PYX_ERR(0, 304, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)values[0]);
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("add_additional_info", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 304, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.add_additional_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo, 1, "info", 0))) __PYX_ERR(0, 304, __pyx_L1_error)
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_2add_additional_info(__pyx_self, __pyx_v_info);
/* function exit code */
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __pyx_r = NULL;
+ __pyx_L0:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_2add_additional_info(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info) {
+ PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- if (!(likely(PyList_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(0, 257, __pyx_L1_error)
- __pyx_t_1 = __pyx_v_value;
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->try_except_infos);
- __Pyx_DECREF(__pyx_v_self->try_except_infos);
- __pyx_v_self->try_except_infos = ((PyObject*)__pyx_t_1);
+ __Pyx_RefNannySetupContext("add_additional_info", 1);
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython_add_additional_info(__pyx_v_info, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 304, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
+ goto __pyx_L0;
/* function exit code */
- __pyx_r = 0;
- goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython._TryExceptContainerObj.try_except_infos.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.add_additional_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
__pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-/* Python wrapper */
-static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_5__del__(PyObject *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
+/* "_pydevd_bundle/pydevd_cython.pyx":316
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef remove_additional_info(PyDBAdditionalThreadInfo info): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def remove_additional_info(info):
+ */
-static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->try_except_infos);
- __Pyx_DECREF(__pyx_v_self->try_except_infos);
- __pyx_v_self->try_except_infos = ((PyObject*)Py_None);
-
- /* function exit code */
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "(tree fragment)":1
- * def __reduce_cython__(self): # <<<<<<<<<<<<<<
- * cdef tuple state
- * cdef object _dict
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_2__reduce_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_2__reduce_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self) {
- PyObject *__pyx_v_state = 0;
- PyObject *__pyx_v__dict = 0;
- int __pyx_v_use_setstate;
- PyObject *__pyx_r = NULL;
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_5remove_additional_info(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_remove_additional_info(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info, CYTHON_UNUSED int __pyx_skip_dispatch) {
+ PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- int __pyx_t_3;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
+ unsigned int __pyx_t_5;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ int __pyx_t_9;
+ PyObject *__pyx_t_10 = NULL;
+ PyObject *__pyx_t_11 = NULL;
+ int __pyx_t_12;
+ int __pyx_t_13;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__reduce_cython__", 0);
-
- /* "(tree fragment)":5
- * cdef object _dict
- * cdef bint use_setstate
- * state = (self.try_except_infos,) # <<<<<<<<<<<<<<
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None:
- */
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v_self->try_except_infos);
- __Pyx_GIVEREF(__pyx_v_self->try_except_infos);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->try_except_infos);
- __pyx_v_state = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "(tree fragment)":6
- * cdef bint use_setstate
- * state = (self.try_except_infos,)
- * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<<
- * if _dict is not None:
- * state += (_dict,)
- */
- __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v__dict = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "(tree fragment)":7
- * state = (self.try_except_infos,)
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None: # <<<<<<<<<<<<<<
- * state += (_dict,)
- * use_setstate = True
- */
- __pyx_t_2 = (__pyx_v__dict != Py_None);
- __pyx_t_3 = (__pyx_t_2 != 0);
- if (__pyx_t_3) {
-
- /* "(tree fragment)":8
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None:
- * state += (_dict,) # <<<<<<<<<<<<<<
- * use_setstate = True
- * else:
- */
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 8, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v__dict);
- __Pyx_GIVEREF(__pyx_v__dict);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict);
- __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 8, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4));
- __pyx_t_4 = 0;
-
- /* "(tree fragment)":9
- * if _dict is not None:
- * state += (_dict,)
- * use_setstate = True # <<<<<<<<<<<<<<
- * else:
- * use_setstate = self.try_except_infos is not None
- */
- __pyx_v_use_setstate = 1;
-
- /* "(tree fragment)":7
- * state = (self.try_except_infos,)
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None: # <<<<<<<<<<<<<<
- * state += (_dict,)
- * use_setstate = True
- */
- goto __pyx_L3;
- }
-
- /* "(tree fragment)":11
- * use_setstate = True
- * else:
- * use_setstate = self.try_except_infos is not None # <<<<<<<<<<<<<<
- * if use_setstate:
- * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xc8b6eb1, None), state
- */
- /*else*/ {
- __pyx_t_3 = (__pyx_v_self->try_except_infos != ((PyObject*)Py_None));
- __pyx_v_use_setstate = __pyx_t_3;
- }
- __pyx_L3:;
-
- /* "(tree fragment)":12
- * else:
- * use_setstate = self.try_except_infos is not None
- * if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xc8b6eb1, None), state
- * else:
- */
- __pyx_t_3 = (__pyx_v_use_setstate != 0);
- if (__pyx_t_3) {
-
- /* "(tree fragment)":13
- * use_setstate = self.try_except_infos is not None
- * if use_setstate:
- * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xc8b6eb1, None), state # <<<<<<<<<<<<<<
- * else:
- * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xc8b6eb1, state)
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle__TryExceptContain); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_210464433);
- __Pyx_GIVEREF(__pyx_int_210464433);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_210464433);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
- __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
- __Pyx_INCREF(__pyx_v_state);
- __Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
- __pyx_t_4 = 0;
- __pyx_t_1 = 0;
- __pyx_r = __pyx_t_5;
- __pyx_t_5 = 0;
- goto __pyx_L0;
-
- /* "(tree fragment)":12
- * else:
- * use_setstate = self.try_except_infos is not None
- * if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xc8b6eb1, None), state
- * else:
- */
- }
+ __Pyx_RefNannySetupContext("remove_additional_info", 1);
- /* "(tree fragment)":15
- * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xc8b6eb1, None), state
- * else:
- * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xc8b6eb1, state) # <<<<<<<<<<<<<<
- * def __setstate_cython__(self, __pyx_state):
- * __pyx_unpickle__TryExceptContainerObj__set_state(self, __pyx_state)
+ /* "_pydevd_bundle/pydevd_cython.pyx":321
+ * # ENDIF
+ * # fmt: on
+ * with _update_infos_lock: # <<<<<<<<<<<<<<
+ * _all_infos.discard(info)
+ * _infos_stepping.discard(info)
*/
- /*else*/ {
- __Pyx_XDECREF(__pyx_r);
- __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle__TryExceptContain); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error)
+ /*with:*/ {
+ __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_14_pydevd_bundle_13pydevd_cython__update_infos_lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 321, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_210464433);
- __Pyx_GIVEREF(__pyx_int_210464433);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_210464433);
- __Pyx_INCREF(__pyx_v_state);
- __Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_14_pydevd_bundle_13pydevd_cython__update_infos_lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = NULL;
__pyx_t_5 = 0;
- __pyx_t_1 = 0;
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- goto __pyx_L0;
- }
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 321, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ /*try:*/ {
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
+ __Pyx_XGOTREF(__pyx_t_6);
+ __Pyx_XGOTREF(__pyx_t_7);
+ __Pyx_XGOTREF(__pyx_t_8);
+ /*try:*/ {
- /* "(tree fragment)":1
- * def __reduce_cython__(self): # <<<<<<<<<<<<<<
- * cdef tuple state
- * cdef object _dict
+ /* "_pydevd_bundle/pydevd_cython.pyx":322
+ * # fmt: on
+ * with _update_infos_lock:
+ * _all_infos.discard(info) # <<<<<<<<<<<<<<
+ * _infos_stepping.discard(info)
+ *
*/
+ if (unlikely(__pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos == Py_None)) {
+ PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "discard");
+ __PYX_ERR(0, 322, __pyx_L7_error)
+ }
+ __pyx_t_9 = __Pyx_PySet_Discard(__pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos, ((PyObject *)__pyx_v_info)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 322, __pyx_L7_error)
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython._TryExceptContainerObj.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_state);
- __Pyx_XDECREF(__pyx_v__dict);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "(tree fragment)":16
- * else:
- * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xc8b6eb1, state)
- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
- * __pyx_unpickle__TryExceptContainerObj__set_state(self, __pyx_state)
+ /* "_pydevd_bundle/pydevd_cython.pyx":323
+ * with _update_infos_lock:
+ * _all_infos.discard(info)
+ * _infos_stepping.discard(info) # <<<<<<<<<<<<<<
+ *
+ *
*/
+ if (unlikely(__pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping == Py_None)) {
+ PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "discard");
+ __PYX_ERR(0, 323, __pyx_L7_error)
+ }
+ __pyx_t_9 = __Pyx_PySet_Discard(__pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping, ((PyObject *)__pyx_v_info)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 323, __pyx_L7_error)
-/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_4__setstate_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_4__setstate_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__setstate_cython__", 0);
-
- /* "(tree fragment)":17
- * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xc8b6eb1, state)
- * def __setstate_cython__(self, __pyx_state):
- * __pyx_unpickle__TryExceptContainerObj__set_state(self, __pyx_state) # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":321
+ * # ENDIF
+ * # fmt: on
+ * with _update_infos_lock: # <<<<<<<<<<<<<<
+ * _all_infos.discard(info)
+ * _infos_stepping.discard(info)
*/
- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(2, 17, __pyx_L1_error)
- __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle__TryExceptContainerObj__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 17, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ goto __pyx_L12_try_end;
+ __pyx_L7_error:;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.remove_additional_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(0, 321, __pyx_L9_except_error)
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __pyx_t_10 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 321, __pyx_L9_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 321, __pyx_L9_except_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ if (__pyx_t_12 < 0) __PYX_ERR(0, 321, __pyx_L9_except_error)
+ __pyx_t_13 = (!__pyx_t_12);
+ if (unlikely(__pyx_t_13)) {
+ __Pyx_GIVEREF(__pyx_t_2);
+ __Pyx_GIVEREF(__pyx_t_3);
+ __Pyx_XGIVEREF(__pyx_t_4);
+ __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+ __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0;
+ __PYX_ERR(0, 321, __pyx_L9_except_error)
+ }
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ goto __pyx_L8_exception_handled;
+ }
+ __pyx_L9_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_6);
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+ goto __pyx_L1_error;
+ __pyx_L8_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_6);
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+ __pyx_L12_try_end:;
+ }
+ }
+ /*finally:*/ {
+ /*normal exit:*/{
+ if (__pyx_t_1) {
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__3, NULL);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 321, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+ goto __pyx_L6;
+ }
+ __pyx_L6:;
+ }
+ goto __pyx_L16;
+ __pyx_L3_error:;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ goto __pyx_L1_error;
+ __pyx_L16:;
+ }
- /* "(tree fragment)":16
- * else:
- * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xc8b6eb1, state)
- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
- * __pyx_unpickle__TryExceptContainerObj__set_state(self, __pyx_state)
+ /* "_pydevd_bundle/pydevd_cython.pyx":316
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef remove_additional_info(PyDBAdditionalThreadInfo info): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def remove_additional_info(info):
*/
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython._TryExceptContainerObj.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_10);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.remove_additional_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-/* "_pydevd_bundle/pydevd_cython.pyx":294
- * cdef int should_skip
- * cdef object exc_info
- * def __init__(self, tuple args): # <<<<<<<<<<<<<<
- * self._args = args # In the cython version we don't need to pass the frame
- * self.should_skip = -1 # On cythonized version, put in instance.
- */
-
/* Python wrapper */
-static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_args = 0;
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_5remove_additional_info(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_5remove_additional_info = {"remove_additional_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_5remove_additional_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_5remove_additional_info(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- int __pyx_r;
+ PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+ __Pyx_RefNannySetupContext("remove_additional_info (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_args,0};
- PyObject* values[1] = {0};
- if (unlikely(__pyx_kwds)) {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,0};
+ if (__pyx_kwds) {
Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_args)) != 0)) kw_args--;
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 316, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 294, __pyx_L3_error)
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "remove_additional_info") < 0)) __PYX_ERR(0, 316, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
+ } else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
}
- __pyx_v_args = ((PyObject*)values[0]);
+ __pyx_v_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)values[0]);
}
- goto __pyx_L4_argument_unpacking_done;
+ goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 294, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("remove_additional_info", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 316, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.remove_additional_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
- return -1;
+ return NULL;
__pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_args), (&PyTuple_Type), 1, "args", 1))) __PYX_ERR(0, 294, __pyx_L1_error)
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame___init__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), __pyx_v_args);
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo, 1, "info", 0))) __PYX_ERR(0, 316, __pyx_L1_error)
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_4remove_additional_info(__pyx_self, __pyx_v_info);
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
- __pyx_r = -1;
+ __pyx_r = NULL;
__pyx_L0:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame___init__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_args) {
- int __pyx_r;
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_4remove_additional_info(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info) {
+ PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__init__", 0);
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("remove_additional_info", 1);
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython_remove_additional_info(__pyx_v_info, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 316, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":295
- * cdef object exc_info
- * def __init__(self, tuple args):
- * self._args = args # In the cython version we don't need to pass the frame # <<<<<<<<<<<<<<
- * self.should_skip = -1 # On cythonized version, put in instance.
- * self.exc_info = ()
- */
- __Pyx_INCREF(__pyx_v_args);
- __Pyx_GIVEREF(__pyx_v_args);
- __Pyx_GOTREF(__pyx_v_self->_args);
- __Pyx_DECREF(__pyx_v_self->_args);
- __pyx_v_self->_args = __pyx_v_args;
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.remove_additional_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":296
- * def __init__(self, tuple args):
- * self._args = args # In the cython version we don't need to pass the frame
- * self.should_skip = -1 # On cythonized version, put in instance. # <<<<<<<<<<<<<<
- * self.exc_info = ()
- * # ELSE
+/* "_pydevd_bundle/pydevd_cython.pyx":328
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef bint any_thread_stepping(): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def any_thread_stepping():
*/
- __pyx_v_self->should_skip = -1;
- /* "_pydevd_bundle/pydevd_cython.pyx":297
- * self._args = args # In the cython version we don't need to pass the frame
- * self.should_skip = -1 # On cythonized version, put in instance.
- * self.exc_info = () # <<<<<<<<<<<<<<
- * # ELSE
- * # should_skip = -1 # Default value in class (put in instance on set).
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_7any_thread_stepping(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static int __pyx_f_14_pydevd_bundle_13pydevd_cython_any_thread_stepping(CYTHON_UNUSED int __pyx_skip_dispatch) {
+ int __pyx_r;
+ int __pyx_t_1;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":333
+ * # ENDIF
+ * # fmt: on
+ * return bool(_infos_stepping) # <<<<<<<<<<<<<<
+ * import linecache
+ * import os.path
*/
- __Pyx_INCREF(__pyx_empty_tuple);
- __Pyx_GIVEREF(__pyx_empty_tuple);
- __Pyx_GOTREF(__pyx_v_self->exc_info);
- __Pyx_DECREF(__pyx_v_self->exc_info);
- __pyx_v_self->exc_info = __pyx_empty_tuple;
+ __pyx_t_1 = (__pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping != Py_None)&&(PySet_GET_SIZE(__pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping) != 0);
+ __pyx_r = (!(!__pyx_t_1));
+ goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":294
- * cdef int should_skip
- * cdef object exc_info
- * def __init__(self, tuple args): # <<<<<<<<<<<<<<
- * self._args = args # In the cython version we don't need to pass the frame
- * self.should_skip = -1 # On cythonized version, put in instance.
+ /* "_pydevd_bundle/pydevd_cython.pyx":328
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef bint any_thread_stepping(): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def any_thread_stepping():
*/
/* function exit code */
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
+ __pyx_L0:;
return __pyx_r;
}
-/* "_pydevd_bundle/pydevd_cython.pyx":308
- * # ENDIF
- *
- * def set_suspend(self, *args, **kwargs): # <<<<<<<<<<<<<<
- * self._args[0].set_suspend(*args, **kwargs)
- *
- */
-
/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_3set_suspend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_3set_suspend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_args = 0;
- PyObject *__pyx_v_kwargs = 0;
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_7any_thread_stepping(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_7any_thread_stepping = {"any_thread_stepping", (PyCFunction)__pyx_pw_14_pydevd_bundle_13pydevd_cython_7any_thread_stepping, METH_NOARGS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_7any_thread_stepping(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("set_suspend (wrapper)", 0);
- if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "set_suspend", 1))) return NULL;
- __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
- __Pyx_GOTREF(__pyx_v_kwargs);
- __Pyx_INCREF(__pyx_args);
- __pyx_v_args = __pyx_args;
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_2set_suspend(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);
+ __Pyx_RefNannySetupContext("any_thread_stepping (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_6any_thread_stepping(__pyx_self);
/* function exit code */
- __Pyx_XDECREF(__pyx_v_args);
- __Pyx_XDECREF(__pyx_v_kwargs);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_2set_suspend(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_6any_thread_stepping(CYTHON_UNUSED PyObject *__pyx_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_1;
PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("set_suspend", 0);
-
- /* "_pydevd_bundle/pydevd_cython.pyx":309
- *
- * def set_suspend(self, *args, **kwargs):
- * self._args[0].set_suspend(*args, **kwargs) # <<<<<<<<<<<<<<
- *
- * def do_wait_suspend(self, *args, **kwargs):
- */
- if (unlikely(__pyx_v_self->_args == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 309, __pyx_L1_error)
- }
- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 309, __pyx_L1_error)
+ __Pyx_RefNannySetupContext("any_thread_stepping", 1);
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython_any_thread_stepping(0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 328, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 328, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_v_args, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 309, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":308
- * # ENDIF
- *
- * def set_suspend(self, *args, **kwargs): # <<<<<<<<<<<<<<
- * self._args[0].set_suspend(*args, **kwargs)
- *
- */
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
+ goto __pyx_L0;
/* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
__pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.set_suspend", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.any_thread_stepping", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
@@ -7912,2851 +12673,2572 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_2set_suspe
return __pyx_r;
}
-/* "_pydevd_bundle/pydevd_cython.pyx":311
- * self._args[0].set_suspend(*args, **kwargs)
+/* "_pydevd_bundle/pydevd_cython.pyx":358
+ * except ImportError:
*
- * def do_wait_suspend(self, *args, **kwargs): # <<<<<<<<<<<<<<
- * self._args[0].do_wait_suspend(*args, **kwargs)
+ * def get_smart_step_into_variant_from_frame_offset(*args, **kwargs): # <<<<<<<<<<<<<<
+ * return None
*
*/
/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_5do_wait_suspend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_5do_wait_suspend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_args = 0;
- PyObject *__pyx_v_kwargs = 0;
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9get_smart_step_into_variant_from_frame_offset(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_9get_smart_step_into_variant_from_frame_offset = {"get_smart_step_into_variant_from_frame_offset", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9get_smart_step_into_variant_from_frame_offset, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9get_smart_step_into_variant_from_frame_offset(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ CYTHON_UNUSED PyObject *__pyx_v_args = 0;
+ CYTHON_UNUSED PyObject *__pyx_v_kwargs = 0;
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("do_wait_suspend (wrapper)", 0);
- if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "do_wait_suspend", 1))) return NULL;
- __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
- __Pyx_GOTREF(__pyx_v_kwargs);
+ __Pyx_RefNannySetupContext("get_smart_step_into_variant_from_frame_offset (wrapper)", 0);
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "get_smart_step_into_variant_from_frame_offset", 1))) return NULL;
__Pyx_INCREF(__pyx_args);
__pyx_v_args = __pyx_args;
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_4do_wait_suspend(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_8get_smart_step_into_variant_from_frame_offset(__pyx_self, __pyx_v_args, __pyx_v_kwargs);
/* function exit code */
- __Pyx_XDECREF(__pyx_v_args);
+ __Pyx_DECREF(__pyx_v_args);
__Pyx_XDECREF(__pyx_v_kwargs);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_4do_wait_suspend(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_8get_smart_step_into_variant_from_frame_offset(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwargs) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("do_wait_suspend", 0);
+ __Pyx_RefNannySetupContext("get_smart_step_into_variant_from_frame_offset", 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":312
+ /* "_pydevd_bundle/pydevd_cython.pyx":359
+ *
+ * def get_smart_step_into_variant_from_frame_offset(*args, **kwargs):
+ * return None # <<<<<<<<<<<<<<
*
- * def do_wait_suspend(self, *args, **kwargs):
- * self._args[0].do_wait_suspend(*args, **kwargs) # <<<<<<<<<<<<<<
*
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
*/
- if (unlikely(__pyx_v_self->_args == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 312, __pyx_L1_error)
- }
- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 312, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 312, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 312, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_v_args, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 312, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":311
- * self._args[0].set_suspend(*args, **kwargs)
+ /* "_pydevd_bundle/pydevd_cython.pyx":358
+ * except ImportError:
*
- * def do_wait_suspend(self, *args, **kwargs): # <<<<<<<<<<<<<<
- * self._args[0].do_wait_suspend(*args, **kwargs)
+ * def get_smart_step_into_variant_from_frame_offset(*args, **kwargs): # <<<<<<<<<<<<<<
+ * return None
*
*/
/* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.do_wait_suspend", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-/* "_pydevd_bundle/pydevd_cython.pyx":315
+/* "_pydevd_bundle/pydevd_cython.pyx":395
*
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * def trace_exception(self, frame, str event, arg): # <<<<<<<<<<<<<<
- * cdef bint should_stop;
- * cdef tuple exc_info;
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * def is_unhandled_exception(container_obj, py_db, frame, int last_raise_line, set raise_lines): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def is_unhandled_exception(container_obj, py_db, frame, last_raise_line, raise_lines):
*/
/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_7trace_exception(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_7trace_exception(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_11is_unhandled_exception(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_11is_unhandled_exception = {"is_unhandled_exception", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_11is_unhandled_exception, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_11is_unhandled_exception(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_container_obj = 0;
+ PyObject *__pyx_v_py_db = 0;
PyObject *__pyx_v_frame = 0;
- PyObject *__pyx_v_event = 0;
- PyObject *__pyx_v_arg = 0;
+ int __pyx_v_last_raise_line;
+ PyObject *__pyx_v_raise_lines = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[5] = {0,0,0,0,0};
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("trace_exception (wrapper)", 0);
+ __Pyx_RefNannySetupContext("is_unhandled_exception (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_frame,&__pyx_n_s_event,&__pyx_n_s_arg,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_container_obj,&__pyx_n_s_py_db,&__pyx_n_s_frame,&__pyx_n_s_last_raise_line,&__pyx_n_s_raise_lines,0};
+ if (__pyx_kwds) {
Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+ switch (__pyx_nargs) {
+ case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
+ CYTHON_FALLTHROUGH;
+ case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ CYTHON_FALLTHROUGH;
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_frame)) != 0)) kw_args--;
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_container_obj)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 395, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_event)) != 0)) kw_args--;
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_py_db)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 395, __pyx_L3_error)
else {
- __Pyx_RaiseArgtupleInvalid("trace_exception", 1, 3, 3, 1); __PYX_ERR(0, 315, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("is_unhandled_exception", 1, 5, 5, 1); __PYX_ERR(0, 395, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_arg)) != 0)) kw_args--;
+ if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 395, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("is_unhandled_exception", 1, 5, 5, 2); __PYX_ERR(0, 395, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 3:
+ if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_last_raise_line)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 395, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("is_unhandled_exception", 1, 5, 5, 3); __PYX_ERR(0, 395, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 4:
+ if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_raise_lines)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 395, __pyx_L3_error)
else {
- __Pyx_RaiseArgtupleInvalid("trace_exception", 1, 3, 3, 2); __PYX_ERR(0, 315, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("is_unhandled_exception", 1, 5, 5, 4); __PYX_ERR(0, 395, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "trace_exception") < 0)) __PYX_ERR(0, 315, __pyx_L3_error)
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "is_unhandled_exception") < 0)) __PYX_ERR(0, 395, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+ } else if (unlikely(__pyx_nargs != 5)) {
goto __pyx_L5_argtuple_error;
} else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- }
- __pyx_v_frame = values[0];
- __pyx_v_event = ((PyObject*)values[1]);
- __pyx_v_arg = values[2];
- }
- goto __pyx_L4_argument_unpacking_done;
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
+ values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
+ }
+ __pyx_v_container_obj = values[0];
+ __pyx_v_py_db = values[1];
+ __pyx_v_frame = values[2];
+ __pyx_v_last_raise_line = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_last_raise_line == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 395, __pyx_L3_error)
+ __pyx_v_raise_lines = ((PyObject*)values[4]);
+ }
+ goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("trace_exception", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 315, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("is_unhandled_exception", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 395, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.is_unhandled_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_event), (&PyString_Type), 1, "event", 1))) __PYX_ERR(0, 315, __pyx_L1_error)
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_6trace_exception(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), __pyx_v_frame, __pyx_v_event, __pyx_v_arg);
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_raise_lines), (&PySet_Type), 1, "raise_lines", 1))) __PYX_ERR(0, 395, __pyx_L1_error)
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_10is_unhandled_exception(__pyx_self, __pyx_v_container_obj, __pyx_v_py_db, __pyx_v_frame, __pyx_v_last_raise_line, __pyx_v_raise_lines);
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_6trace_exception(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg) {
- int __pyx_v_should_stop;
- PyObject *__pyx_v_exc_info = 0;
- PyObject *__pyx_v_frame_skips_cache = NULL;
- PyObject *__pyx_v_frame_cache_key = NULL;
- PyObject *__pyx_v_custom_key = NULL;
- PyObject *__pyx_v_container_obj = NULL;
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_10is_unhandled_exception(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_container_obj, PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame, int __pyx_v_last_raise_line, PyObject *__pyx_v_raise_lines) {
+ PyObject *__pyx_v_try_except_infos = NULL;
+ PyObject *__pyx_v_valid_try_except_infos = NULL;
+ PyObject *__pyx_v_try_except_info = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- int __pyx_t_1;
+ PyObject *__pyx_t_1 = NULL;
int __pyx_t_2;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *(*__pyx_t_7)(PyObject *);
- int __pyx_t_8;
- int __pyx_t_9;
+ unsigned int __pyx_t_6;
+ int __pyx_t_7;
+ Py_ssize_t __pyx_t_8;
+ PyObject *(*__pyx_t_9)(PyObject *);
+ PyObject *__pyx_t_10 = NULL;
+ int __pyx_t_11;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("trace_exception", 0);
- __Pyx_INCREF(__pyx_v_frame);
+ __Pyx_RefNannySetupContext("is_unhandled_exception", 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":321
- * # def trace_exception(self, frame, event, arg):
+ /* "_pydevd_bundle/pydevd_cython.pyx":399
+ * # def is_unhandled_exception(container_obj, py_db, frame, last_raise_line, raise_lines):
* # ENDIF
- * if event == 'exception': # <<<<<<<<<<<<<<
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg)
+ * if frame.f_lineno in raise_lines: # <<<<<<<<<<<<<<
+ * return True
*
*/
- __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_exception, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 321, __pyx_L1_error)
- __pyx_t_2 = (__pyx_t_1 != 0);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 399, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (unlikely(__pyx_v_raise_lines == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+ __PYX_ERR(0, 399, __pyx_L1_error)
+ }
+ __pyx_t_2 = (__Pyx_PySet_ContainsTF(__pyx_t_1, __pyx_v_raise_lines, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 399, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (__pyx_t_2) {
- /* "_pydevd_bundle/pydevd_cython.pyx":322
+ /* "_pydevd_bundle/pydevd_cython.pyx":400
* # ENDIF
- * if event == 'exception':
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg) # <<<<<<<<<<<<<<
+ * if frame.f_lineno in raise_lines:
+ * return True # <<<<<<<<<<<<<<
*
- * if should_stop:
+ * else:
*/
- __pyx_t_3 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_should_stop_on_exception(__pyx_v_self, __pyx_v_frame, __pyx_v_event, __pyx_v_arg); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 322, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
- PyObject* sequence = __pyx_t_3;
- Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
- if (unlikely(size != 2)) {
- if (size > 2) __Pyx_RaiseTooManyValuesError(2);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 322, __pyx_L1_error)
- }
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1);
- } else {
- __pyx_t_4 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_5 = PyList_GET_ITEM(sequence, 1);
- }
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_5);
- #else
- __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 322, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 322, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- #endif
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else {
- Py_ssize_t index = -1;
- __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 322, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
- index = 0; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_4);
- index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_5);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(0, 322, __pyx_L1_error)
- __pyx_t_7 = NULL;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- goto __pyx_L5_unpacking_done;
- __pyx_L4_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_7 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 322, __pyx_L1_error)
- __pyx_L5_unpacking_done:;
- }
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 322, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_should_stop = __pyx_t_2;
- __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_5);
- __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_True);
+ __pyx_r = Py_True;
+ goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":324
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg)
+ /* "_pydevd_bundle/pydevd_cython.pyx":399
+ * # def is_unhandled_exception(container_obj, py_db, frame, last_raise_line, raise_lines):
+ * # ENDIF
+ * if frame.f_lineno in raise_lines: # <<<<<<<<<<<<<<
+ * return True
*
- * if should_stop: # <<<<<<<<<<<<<<
- * if self._handle_exception(frame, event, arg, EXCEPTION_TYPE_HANDLED):
- * return self.trace_dispatch
*/
- __pyx_t_2 = (__pyx_v_should_stop != 0);
- if (__pyx_t_2) {
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":325
- *
- * if should_stop:
- * if self._handle_exception(frame, event, arg, EXCEPTION_TYPE_HANDLED): # <<<<<<<<<<<<<<
- * return self.trace_dispatch
+ /* "_pydevd_bundle/pydevd_cython.pyx":403
*
+ * else:
+ * try_except_infos = container_obj.try_except_infos # <<<<<<<<<<<<<<
+ * if try_except_infos is None:
+ * container_obj.try_except_infos = try_except_infos = py_db.collect_try_except_info(frame.f_code)
*/
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_EXCEPTION_TYPE_HANDLED); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 325, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- if (!(likely(PyString_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 325, __pyx_L1_error)
- __pyx_t_5 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_handle_exception(__pyx_v_self, __pyx_v_frame, __pyx_v_event, __pyx_v_arg, ((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 325, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 325, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (__pyx_t_2) {
+ /*else*/ {
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_container_obj, __pyx_n_s_try_except_infos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 403, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_try_except_infos = __pyx_t_1;
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":326
- * if should_stop:
- * if self._handle_exception(frame, event, arg, EXCEPTION_TYPE_HANDLED):
- * return self.trace_dispatch # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":404
+ * else:
+ * try_except_infos = container_obj.try_except_infos
+ * if try_except_infos is None: # <<<<<<<<<<<<<<
+ * container_obj.try_except_infos = try_except_infos = py_db.collect_try_except_info(frame.f_code)
*
- * elif event == 'return':
*/
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 326, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_r = __pyx_t_5;
- __pyx_t_5 = 0;
- goto __pyx_L0;
+ __pyx_t_2 = (__pyx_v_try_except_infos == Py_None);
+ if (__pyx_t_2) {
- /* "_pydevd_bundle/pydevd_cython.pyx":325
- *
- * if should_stop:
- * if self._handle_exception(frame, event, arg, EXCEPTION_TYPE_HANDLED): # <<<<<<<<<<<<<<
- * return self.trace_dispatch
+ /* "_pydevd_bundle/pydevd_cython.pyx":405
+ * try_except_infos = container_obj.try_except_infos
+ * if try_except_infos is None:
+ * container_obj.try_except_infos = try_except_infos = py_db.collect_try_except_info(frame.f_code) # <<<<<<<<<<<<<<
*
+ * if not try_except_infos:
*/
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_collect_try_except_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 405, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 405, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 405, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_container_obj, __pyx_n_s_try_except_infos, __pyx_t_1) < 0) __PYX_ERR(0, 405, __pyx_L1_error)
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_DECREF_SET(__pyx_v_try_except_infos, __pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":324
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg)
+ /* "_pydevd_bundle/pydevd_cython.pyx":404
+ * else:
+ * try_except_infos = container_obj.try_except_infos
+ * if try_except_infos is None: # <<<<<<<<<<<<<<
+ * container_obj.try_except_infos = try_except_infos = py_db.collect_try_except_info(frame.f_code)
*
- * if should_stop: # <<<<<<<<<<<<<<
- * if self._handle_exception(frame, event, arg, EXCEPTION_TYPE_HANDLED):
- * return self.trace_dispatch
*/
}
- /* "_pydevd_bundle/pydevd_cython.pyx":321
- * # def trace_exception(self, frame, event, arg):
- * # ENDIF
- * if event == 'exception': # <<<<<<<<<<<<<<
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg)
+ /* "_pydevd_bundle/pydevd_cython.pyx":407
+ * container_obj.try_except_infos = try_except_infos = py_db.collect_try_except_info(frame.f_code)
*
+ * if not try_except_infos: # <<<<<<<<<<<<<<
+ * # Consider the last exception as unhandled because there's no try..except in it.
+ * return True
*/
- goto __pyx_L3;
- }
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_try_except_infos); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 407, __pyx_L1_error)
+ __pyx_t_7 = (!__pyx_t_2);
+ if (__pyx_t_7) {
- /* "_pydevd_bundle/pydevd_cython.pyx":328
- * return self.trace_dispatch
- *
- * elif event == 'return': # <<<<<<<<<<<<<<
- * exc_info = self.exc_info
- * if exc_info and arg is None:
+ /* "_pydevd_bundle/pydevd_cython.pyx":409
+ * if not try_except_infos:
+ * # Consider the last exception as unhandled because there's no try..except in it.
+ * return True # <<<<<<<<<<<<<<
+ * else:
+ * # Now, consider only the try..except for the raise
*/
- __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_return, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 328, __pyx_L1_error)
- __pyx_t_1 = (__pyx_t_2 != 0);
- if (__pyx_t_1) {
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_True);
+ __pyx_r = Py_True;
+ goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":329
+ /* "_pydevd_bundle/pydevd_cython.pyx":407
+ * container_obj.try_except_infos = try_except_infos = py_db.collect_try_except_info(frame.f_code)
*
- * elif event == 'return':
- * exc_info = self.exc_info # <<<<<<<<<<<<<<
- * if exc_info and arg is None:
- * frame_skips_cache, frame_cache_key = self._args[4], self._args[5]
- */
- if (!(likely(PyTuple_CheckExact(__pyx_v_self->exc_info))||((__pyx_v_self->exc_info) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_self->exc_info)->tp_name), 0))) __PYX_ERR(0, 329, __pyx_L1_error)
- __pyx_t_5 = __pyx_v_self->exc_info;
- __Pyx_INCREF(__pyx_t_5);
- __pyx_v_exc_info = ((PyObject*)__pyx_t_5);
- __pyx_t_5 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":330
- * elif event == 'return':
- * exc_info = self.exc_info
- * if exc_info and arg is None: # <<<<<<<<<<<<<<
- * frame_skips_cache, frame_cache_key = self._args[4], self._args[5]
- * custom_key = (frame_cache_key, 'try_exc_info')
+ * if not try_except_infos: # <<<<<<<<<<<<<<
+ * # Consider the last exception as unhandled because there's no try..except in it.
+ * return True
*/
- __pyx_t_2 = (__pyx_v_exc_info != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_exc_info) != 0);
- if (__pyx_t_2) {
- } else {
- __pyx_t_1 = __pyx_t_2;
- goto __pyx_L9_bool_binop_done;
}
- __pyx_t_2 = (__pyx_v_arg == Py_None);
- __pyx_t_8 = (__pyx_t_2 != 0);
- __pyx_t_1 = __pyx_t_8;
- __pyx_L9_bool_binop_done:;
- if (__pyx_t_1) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":331
- * exc_info = self.exc_info
- * if exc_info and arg is None:
- * frame_skips_cache, frame_cache_key = self._args[4], self._args[5] # <<<<<<<<<<<<<<
- * custom_key = (frame_cache_key, 'try_exc_info')
- * container_obj = frame_skips_cache.get(custom_key)
- */
- if (unlikely(__pyx_v_self->_args == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 331, __pyx_L1_error)
- }
- __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 331, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (unlikely(__pyx_v_self->_args == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 331, __pyx_L1_error)
- }
- __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 331, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_v_frame_skips_cache = __pyx_t_5;
- __pyx_t_5 = 0;
- __pyx_v_frame_cache_key = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":332
- * if exc_info and arg is None:
- * frame_skips_cache, frame_cache_key = self._args[4], self._args[5]
- * custom_key = (frame_cache_key, 'try_exc_info') # <<<<<<<<<<<<<<
- * container_obj = frame_skips_cache.get(custom_key)
- * if container_obj is None:
- */
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 332, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_v_frame_cache_key);
- __Pyx_GIVEREF(__pyx_v_frame_cache_key);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_frame_cache_key);
- __Pyx_INCREF(__pyx_n_s_try_exc_info);
- __Pyx_GIVEREF(__pyx_n_s_try_exc_info);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_try_exc_info);
- __pyx_v_custom_key = ((PyObject*)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":333
- * frame_skips_cache, frame_cache_key = self._args[4], self._args[5]
- * custom_key = (frame_cache_key, 'try_exc_info')
- * container_obj = frame_skips_cache.get(custom_key) # <<<<<<<<<<<<<<
- * if container_obj is None:
- * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj()
- */
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame_skips_cache, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 333, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_v_custom_key) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_custom_key);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 333, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_v_container_obj = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":334
- * custom_key = (frame_cache_key, 'try_exc_info')
- * container_obj = frame_skips_cache.get(custom_key)
- * if container_obj is None: # <<<<<<<<<<<<<<
- * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj()
- * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and \
- */
- __pyx_t_1 = (__pyx_v_container_obj == Py_None);
- __pyx_t_8 = (__pyx_t_1 != 0);
- if (__pyx_t_8) {
- /* "_pydevd_bundle/pydevd_cython.pyx":335
- * container_obj = frame_skips_cache.get(custom_key)
- * if container_obj is None:
- * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj() # <<<<<<<<<<<<<<
- * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and \
- * self.handle_user_exception(frame):
- */
- __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 335, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_DECREF_SET(__pyx_v_container_obj, __pyx_t_3);
- if (unlikely(PyObject_SetItem(__pyx_v_frame_skips_cache, __pyx_v_custom_key, __pyx_t_3) < 0)) __PYX_ERR(0, 335, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":334
- * custom_key = (frame_cache_key, 'try_exc_info')
- * container_obj = frame_skips_cache.get(custom_key)
- * if container_obj is None: # <<<<<<<<<<<<<<
- * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj()
- * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and \
+ /* "_pydevd_bundle/pydevd_cython.pyx":412
+ * else:
+ * # Now, consider only the try..except for the raise
+ * valid_try_except_infos = [] # <<<<<<<<<<<<<<
+ * for try_except_info in try_except_infos:
+ * if try_except_info.is_line_in_try_block(last_raise_line):
*/
- }
+ /*else*/ {
+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 412, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_valid_try_except_infos = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":336
- * if container_obj is None:
- * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj()
- * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and \ # <<<<<<<<<<<<<<
- * self.handle_user_exception(frame):
- * return self.trace_dispatch
+ /* "_pydevd_bundle/pydevd_cython.pyx":413
+ * # Now, consider only the try..except for the raise
+ * valid_try_except_infos = []
+ * for try_except_info in try_except_infos: # <<<<<<<<<<<<<<
+ * if try_except_info.is_line_in_try_block(last_raise_line):
+ * valid_try_except_infos.append(try_except_info)
*/
- if (unlikely(__pyx_v_self->_args == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 336, __pyx_L1_error)
- }
- __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 336, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- if (unlikely(__pyx_v_exc_info == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 336, __pyx_L1_error)
- }
- __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_exc_info, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 336, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 336, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(__pyx_v_exc_info == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 336, __pyx_L1_error)
- }
- __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_exc_info, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 336, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (!(likely(PySet_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 336, __pyx_L1_error)
- __pyx_t_4 = __pyx_f_14_pydevd_bundle_13pydevd_cython_is_unhandled_exception(__pyx_v_container_obj, __pyx_t_3, __pyx_v_frame, __pyx_t_9, ((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 336, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 336, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_1) {
+ if (likely(PyList_CheckExact(__pyx_v_try_except_infos)) || PyTuple_CheckExact(__pyx_v_try_except_infos)) {
+ __pyx_t_1 = __pyx_v_try_except_infos; __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_8 = 0;
+ __pyx_t_9 = NULL;
} else {
- __pyx_t_8 = __pyx_t_1;
- goto __pyx_L13_bool_binop_done;
+ __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_try_except_infos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 413, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 413, __pyx_L1_error)
}
+ for (;;) {
+ if (likely(!__pyx_t_9)) {
+ if (likely(PyList_CheckExact(__pyx_t_1))) {
+ {
+ Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
+ #if !CYTHON_ASSUME_SAFE_MACROS
+ if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 413, __pyx_L1_error)
+ #endif
+ if (__pyx_t_8 >= __pyx_temp) break;
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(0, 413, __pyx_L1_error)
+ #else
+ __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 413, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ #endif
+ } else {
+ {
+ Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
+ #if !CYTHON_ASSUME_SAFE_MACROS
+ if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 413, __pyx_L1_error)
+ #endif
+ if (__pyx_t_8 >= __pyx_temp) break;
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(0, 413, __pyx_L1_error)
+ #else
+ __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 413, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ #endif
+ }
+ } else {
+ __pyx_t_3 = __pyx_t_9(__pyx_t_1);
+ if (unlikely(!__pyx_t_3)) {
+ PyObject* exc_type = PyErr_Occurred();
+ if (exc_type) {
+ if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+ else __PYX_ERR(0, 413, __pyx_L1_error)
+ }
+ break;
+ }
+ __Pyx_GOTREF(__pyx_t_3);
+ }
+ __Pyx_XDECREF_SET(__pyx_v_try_except_info, __pyx_t_3);
+ __pyx_t_3 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":337
- * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj()
- * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and \
- * self.handle_user_exception(frame): # <<<<<<<<<<<<<<
- * return self.trace_dispatch
+ /* "_pydevd_bundle/pydevd_cython.pyx":414
+ * valid_try_except_infos = []
+ * for try_except_info in try_except_infos:
+ * if try_except_info.is_line_in_try_block(last_raise_line): # <<<<<<<<<<<<<<
+ * valid_try_except_infos.append(try_except_info)
*
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_user_exception); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 337, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_try_except_info, __pyx_n_s_is_line_in_try_block); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 414, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_last_raise_line); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 414, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_10 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_10);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_6 = 1;
+ }
}
- }
- __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_v_frame) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_frame);
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 337, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 337, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __pyx_t_1;
- __pyx_L13_bool_binop_done:;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_t_5};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 414, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 414, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (__pyx_t_7) {
- /* "_pydevd_bundle/pydevd_cython.pyx":336
- * if container_obj is None:
- * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj()
- * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and \ # <<<<<<<<<<<<<<
- * self.handle_user_exception(frame):
- * return self.trace_dispatch
+ /* "_pydevd_bundle/pydevd_cython.pyx":415
+ * for try_except_info in try_except_infos:
+ * if try_except_info.is_line_in_try_block(last_raise_line):
+ * valid_try_except_infos.append(try_except_info) # <<<<<<<<<<<<<<
+ *
+ * if not valid_try_except_infos:
*/
- if (__pyx_t_8) {
+ __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_valid_try_except_infos, __pyx_v_try_except_info); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 415, __pyx_L1_error)
- /* "_pydevd_bundle/pydevd_cython.pyx":338
- * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and \
- * self.handle_user_exception(frame):
- * return self.trace_dispatch # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":414
+ * valid_try_except_infos = []
+ * for try_except_info in try_except_infos:
+ * if try_except_info.is_line_in_try_block(last_raise_line): # <<<<<<<<<<<<<<
+ * valid_try_except_infos.append(try_except_info)
*
- * return self.trace_exception
*/
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- goto __pyx_L0;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":336
- * if container_obj is None:
- * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj()
- * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and \ # <<<<<<<<<<<<<<
- * self.handle_user_exception(frame):
- * return self.trace_dispatch
+ /* "_pydevd_bundle/pydevd_cython.pyx":413
+ * # Now, consider only the try..except for the raise
+ * valid_try_except_infos = []
+ * for try_except_info in try_except_infos: # <<<<<<<<<<<<<<
+ * if try_except_info.is_line_in_try_block(last_raise_line):
+ * valid_try_except_infos.append(try_except_info)
*/
}
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":330
- * elif event == 'return':
- * exc_info = self.exc_info
- * if exc_info and arg is None: # <<<<<<<<<<<<<<
- * frame_skips_cache, frame_cache_key = self._args[4], self._args[5]
- * custom_key = (frame_cache_key, 'try_exc_info')
- */
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":328
- * return self.trace_dispatch
+ /* "_pydevd_bundle/pydevd_cython.pyx":417
+ * valid_try_except_infos.append(try_except_info)
+ *
+ * if not valid_try_except_infos: # <<<<<<<<<<<<<<
+ * return True
*
- * elif event == 'return': # <<<<<<<<<<<<<<
- * exc_info = self.exc_info
- * if exc_info and arg is None:
*/
- }
- __pyx_L3:;
+ __pyx_t_7 = (PyList_GET_SIZE(__pyx_v_valid_try_except_infos) != 0);
+ __pyx_t_2 = (!__pyx_t_7);
+ if (__pyx_t_2) {
- /* "_pydevd_bundle/pydevd_cython.pyx":340
- * return self.trace_dispatch
+ /* "_pydevd_bundle/pydevd_cython.pyx":418
*
- * return self.trace_exception # <<<<<<<<<<<<<<
+ * if not valid_try_except_infos:
+ * return True # <<<<<<<<<<<<<<
*
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * else:
*/
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_exception); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- goto __pyx_L0;
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_True);
+ __pyx_r = Py_True;
+ goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":315
+ /* "_pydevd_bundle/pydevd_cython.pyx":417
+ * valid_try_except_infos.append(try_except_info)
+ *
+ * if not valid_try_except_infos: # <<<<<<<<<<<<<<
+ * return True
*
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * def trace_exception(self, frame, str event, arg): # <<<<<<<<<<<<<<
- * cdef bint should_stop;
- * cdef tuple exc_info;
*/
+ }
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_exc_info);
- __Pyx_XDECREF(__pyx_v_frame_skips_cache);
- __Pyx_XDECREF(__pyx_v_frame_cache_key);
- __Pyx_XDECREF(__pyx_v_custom_key);
- __Pyx_XDECREF(__pyx_v_container_obj);
- __Pyx_XDECREF(__pyx_v_frame);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "_pydevd_bundle/pydevd_cython.pyx":343
- *
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * cdef _should_stop_on_exception(self, frame, str event, arg): # <<<<<<<<<<<<<<
- * cdef PyDBAdditionalThreadInfo info;
- * cdef bint should_stop;
+ /* "_pydevd_bundle/pydevd_cython.pyx":425
+ * # where one try..except is inside the other with only a raise
+ * # and it's gotten in the except line.
+ * for try_except_info in try_except_infos: # <<<<<<<<<<<<<<
+ * if try_except_info.is_line_in_except_block(frame.f_lineno):
+ * if frame.f_lineno == try_except_info.except_line or frame.f_lineno in try_except_info.raise_lines_in_except:
*/
+ /*else*/ {
+ if (likely(PyList_CheckExact(__pyx_v_try_except_infos)) || PyTuple_CheckExact(__pyx_v_try_except_infos)) {
+ __pyx_t_1 = __pyx_v_try_except_infos; __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_8 = 0;
+ __pyx_t_9 = NULL;
+ } else {
+ __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_try_except_infos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 425, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 425, __pyx_L1_error)
+ }
+ for (;;) {
+ if (likely(!__pyx_t_9)) {
+ if (likely(PyList_CheckExact(__pyx_t_1))) {
+ {
+ Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
+ #if !CYTHON_ASSUME_SAFE_MACROS
+ if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 425, __pyx_L1_error)
+ #endif
+ if (__pyx_t_8 >= __pyx_temp) break;
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(0, 425, __pyx_L1_error)
+ #else
+ __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 425, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ #endif
+ } else {
+ {
+ Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
+ #if !CYTHON_ASSUME_SAFE_MACROS
+ if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 425, __pyx_L1_error)
+ #endif
+ if (__pyx_t_8 >= __pyx_temp) break;
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(0, 425, __pyx_L1_error)
+ #else
+ __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 425, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ #endif
+ }
+ } else {
+ __pyx_t_3 = __pyx_t_9(__pyx_t_1);
+ if (unlikely(!__pyx_t_3)) {
+ PyObject* exc_type = PyErr_Occurred();
+ if (exc_type) {
+ if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+ else __PYX_ERR(0, 425, __pyx_L1_error)
+ }
+ break;
+ }
+ __Pyx_GOTREF(__pyx_t_3);
+ }
+ __Pyx_XDECREF_SET(__pyx_v_try_except_info, __pyx_t_3);
+ __pyx_t_3 = 0;
-static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__should_stop_on_exception(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, CYTHON_UNUSED PyObject *__pyx_v_event, PyObject *__pyx_v_arg) {
- struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info = 0;
- int __pyx_v_should_stop;
- int __pyx_v_was_just_raised;
- PyObject *__pyx_v_check_excs = 0;
- PyObject *__pyx_v_main_debugger = NULL;
- PyObject *__pyx_v_exception = NULL;
- PyObject *__pyx_v_value = NULL;
- PyObject *__pyx_v_trace = NULL;
- PyObject *__pyx_v_exception_breakpoint = NULL;
- PyObject *__pyx_v_result = NULL;
- PyObject *__pyx_v_exc_break_user = NULL;
- PyObject *__pyx_v_exc_break_caught = NULL;
- PyObject *__pyx_v_exc_break = NULL;
- PyObject *__pyx_v_is_user_uncaught = NULL;
- PyObject *__pyx_v_exc_info = NULL;
- PyObject *__pyx_v_lines = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *(*__pyx_t_6)(PyObject *);
- int __pyx_t_7;
- int __pyx_t_8;
- PyObject *__pyx_t_9 = NULL;
- PyObject *__pyx_t_10 = NULL;
- PyObject *__pyx_t_11 = NULL;
- int __pyx_t_12;
- PyObject *__pyx_t_13 = NULL;
- PyObject *__pyx_t_14 = NULL;
- int __pyx_t_15;
- Py_ssize_t __pyx_t_16;
- PyObject *__pyx_t_17 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_should_stop_on_exception", 0);
- __Pyx_INCREF(__pyx_v_frame);
+ /* "_pydevd_bundle/pydevd_cython.pyx":426
+ * # and it's gotten in the except line.
+ * for try_except_info in try_except_infos:
+ * if try_except_info.is_line_in_except_block(frame.f_lineno): # <<<<<<<<<<<<<<
+ * if frame.f_lineno == try_except_info.except_line or frame.f_lineno in try_except_info.raise_lines_in_except:
+ * # In a raise inside a try..except block or some except which doesn't
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_try_except_info, __pyx_n_s_is_line_in_except_block); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 426, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 426, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_10 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_10);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_t_5};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 426, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 426, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (__pyx_t_2) {
- /* "_pydevd_bundle/pydevd_cython.pyx":353
- *
- * # main_debugger, _filename, info, _thread = self._args
- * main_debugger = self._args[0] # <<<<<<<<<<<<<<
- * info = self._args[2]
- * should_stop = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":427
+ * for try_except_info in try_except_infos:
+ * if try_except_info.is_line_in_except_block(frame.f_lineno):
+ * if frame.f_lineno == try_except_info.except_line or frame.f_lineno in try_except_info.raise_lines_in_except: # <<<<<<<<<<<<<<
+ * # In a raise inside a try..except block or some except which doesn't
+ * # match the raised exception.
*/
- if (unlikely(__pyx_v_self->_args == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 353, __pyx_L1_error)
- }
- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 353, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_main_debugger = __pyx_t_1;
- __pyx_t_1 = 0;
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 427, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_try_except_info, __pyx_n_s_except_line); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 427, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 427, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 427, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (!__pyx_t_7) {
+ } else {
+ __pyx_t_2 = __pyx_t_7;
+ goto __pyx_L15_bool_binop_done;
+ }
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 427, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_try_except_info, __pyx_n_s_raise_lines_in_except); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 427, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_t_5, __pyx_t_4, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 427, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_2 = __pyx_t_7;
+ __pyx_L15_bool_binop_done:;
+ if (__pyx_t_2) {
- /* "_pydevd_bundle/pydevd_cython.pyx":354
- * # main_debugger, _filename, info, _thread = self._args
- * main_debugger = self._args[0]
- * info = self._args[2] # <<<<<<<<<<<<<<
- * should_stop = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":430
+ * # In a raise inside a try..except block or some except which doesn't
+ * # match the raised exception.
+ * return True # <<<<<<<<<<<<<<
+ * return False
*
*/
- if (unlikely(__pyx_v_self->_args == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 354, __pyx_L1_error)
- }
- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 354, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(0, 354, __pyx_L1_error)
- __pyx_v_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_1);
- __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_True);
+ __pyx_r = Py_True;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":355
- * main_debugger = self._args[0]
- * info = self._args[2]
- * should_stop = False # <<<<<<<<<<<<<<
- *
- * # 2 = 2
+ /* "_pydevd_bundle/pydevd_cython.pyx":427
+ * for try_except_info in try_except_infos:
+ * if try_except_info.is_line_in_except_block(frame.f_lineno):
+ * if frame.f_lineno == try_except_info.except_line or frame.f_lineno in try_except_info.raise_lines_in_except: # <<<<<<<<<<<<<<
+ * # In a raise inside a try..except block or some except which doesn't
+ * # match the raised exception.
*/
- __pyx_v_should_stop = 0;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":358
- *
- * # 2 = 2
- * if info.pydev_state != 2: # and breakpoint is not None: # <<<<<<<<<<<<<<
- * exception, value, trace = arg
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":426
+ * # and it's gotten in the except line.
+ * for try_except_info in try_except_infos:
+ * if try_except_info.is_line_in_except_block(frame.f_lineno): # <<<<<<<<<<<<<<
+ * if frame.f_lineno == try_except_info.except_line or frame.f_lineno in try_except_info.raise_lines_in_except:
+ * # In a raise inside a try..except block or some except which doesn't
*/
- __pyx_t_2 = ((__pyx_v_info->pydev_state != 2) != 0);
- if (__pyx_t_2) {
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":359
- * # 2 = 2
- * if info.pydev_state != 2: # and breakpoint is not None:
- * exception, value, trace = arg # <<<<<<<<<<<<<<
- *
- * if trace is not None and hasattr(trace, 'tb_next'):
+ /* "_pydevd_bundle/pydevd_cython.pyx":425
+ * # where one try..except is inside the other with only a raise
+ * # and it's gotten in the except line.
+ * for try_except_info in try_except_infos: # <<<<<<<<<<<<<<
+ * if try_except_info.is_line_in_except_block(frame.f_lineno):
+ * if frame.f_lineno == try_except_info.except_line or frame.f_lineno in try_except_info.raise_lines_in_except:
*/
- if ((likely(PyTuple_CheckExact(__pyx_v_arg))) || (PyList_CheckExact(__pyx_v_arg))) {
- PyObject* sequence = __pyx_v_arg;
- Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
- if (unlikely(size != 3)) {
- if (size > 3) __Pyx_RaiseTooManyValuesError(3);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 359, __pyx_L1_error)
- }
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
- __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2);
- } else {
- __pyx_t_1 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_3 = PyList_GET_ITEM(sequence, 1);
- __pyx_t_4 = PyList_GET_ITEM(sequence, 2);
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_4);
- #else
- __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 359, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 359, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 359, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- #endif
- } else {
- Py_ssize_t index = -1;
- __pyx_t_5 = PyObject_GetIter(__pyx_v_arg); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 359, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
- index = 0; __pyx_t_1 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L4_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_1);
- index = 1; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_3);
- index = 2; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_4);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 359, __pyx_L1_error)
- __pyx_t_6 = NULL;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- goto __pyx_L5_unpacking_done;
- __pyx_L4_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_6 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 359, __pyx_L1_error)
- __pyx_L5_unpacking_done:;
}
- __pyx_v_exception = __pyx_t_1;
- __pyx_t_1 = 0;
- __pyx_v_value = __pyx_t_3;
- __pyx_t_3 = 0;
- __pyx_v_trace = __pyx_t_4;
- __pyx_t_4 = 0;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":361
- * exception, value, trace = arg
- *
- * if trace is not None and hasattr(trace, 'tb_next'): # <<<<<<<<<<<<<<
- * # on jython trace is None on the first event and it may not have a tb_next.
+ /* "_pydevd_bundle/pydevd_cython.pyx":431
+ * # match the raised exception.
+ * return True
+ * return False # <<<<<<<<<<<<<<
*
- */
- __pyx_t_7 = (__pyx_v_trace != Py_None);
- __pyx_t_8 = (__pyx_t_7 != 0);
- if (__pyx_t_8) {
- } else {
- __pyx_t_2 = __pyx_t_8;
- goto __pyx_L7_bool_binop_done;
- }
- __pyx_t_8 = __Pyx_HasAttr(__pyx_v_trace, __pyx_n_s_tb_next); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 361, __pyx_L1_error)
- __pyx_t_7 = (__pyx_t_8 != 0);
- __pyx_t_2 = __pyx_t_7;
- __pyx_L7_bool_binop_done:;
- if (__pyx_t_2) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":364
- * # on jython trace is None on the first event and it may not have a tb_next.
*
- * should_stop = False # <<<<<<<<<<<<<<
- * exception_breakpoint = None
- * try:
*/
- __pyx_v_should_stop = 0;
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_False);
+ __pyx_r = Py_False;
+ goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":365
+ /* "_pydevd_bundle/pydevd_cython.pyx":395
*
- * should_stop = False
- * exception_breakpoint = None # <<<<<<<<<<<<<<
- * try:
- * if main_debugger.plugin is not None:
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * def is_unhandled_exception(container_obj, py_db, frame, int last_raise_line, set raise_lines): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def is_unhandled_exception(container_obj, py_db, frame, last_raise_line, raise_lines):
*/
- __Pyx_INCREF(Py_None);
- __pyx_v_exception_breakpoint = Py_None;
- /* "_pydevd_bundle/pydevd_cython.pyx":366
- * should_stop = False
- * exception_breakpoint = None
- * try: # <<<<<<<<<<<<<<
- * if main_debugger.plugin is not None:
- * result = main_debugger.plugin.exception_break(main_debugger, self, frame, self._args, arg)
- */
- {
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
- __Pyx_XGOTREF(__pyx_t_9);
- __Pyx_XGOTREF(__pyx_t_10);
- __Pyx_XGOTREF(__pyx_t_11);
- /*try:*/ {
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_10);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.is_unhandled_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_try_except_infos);
+ __Pyx_XDECREF(__pyx_v_valid_try_except_infos);
+ __Pyx_XDECREF(__pyx_v_try_except_info);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":367
- * exception_breakpoint = None
- * try:
- * if main_debugger.plugin is not None: # <<<<<<<<<<<<<<
- * result = main_debugger.plugin.exception_break(main_debugger, self, frame, self._args, arg)
- * if result:
+/* "_pydevd_bundle/pydevd_cython.pyx":437
+ * cdef class _TryExceptContainerObj:
+ * cdef public list try_except_infos;
+ * def __init__(self): # <<<<<<<<<<<<<<
+ * self.try_except_infos = None
+ * # ELSE
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_plugin); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 367, __pyx_L9_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = (__pyx_t_4 != Py_None);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_7 = (__pyx_t_2 != 0);
- if (__pyx_t_7) {
- /* "_pydevd_bundle/pydevd_cython.pyx":368
- * try:
- * if main_debugger.plugin is not None:
- * result = main_debugger.plugin.exception_break(main_debugger, self, frame, self._args, arg) # <<<<<<<<<<<<<<
- * if result:
- * should_stop, frame = result
- */
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_plugin); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 368, __pyx_L9_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exception_break); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 368, __pyx_L9_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = NULL;
- __pyx_t_12 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
- __pyx_t_12 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[6] = {__pyx_t_3, __pyx_v_main_debugger, ((PyObject *)__pyx_v_self), __pyx_v_frame, __pyx_v_self->_args, __pyx_v_arg};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 5+__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 368, __pyx_L9_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[6] = {__pyx_t_3, __pyx_v_main_debugger, ((PyObject *)__pyx_v_self), __pyx_v_frame, __pyx_v_self->_args, __pyx_v_arg};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 5+__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 368, __pyx_L9_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(5+__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 368, __pyx_L9_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (__pyx_t_3) {
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
- }
- __Pyx_INCREF(__pyx_v_main_debugger);
- __Pyx_GIVEREF(__pyx_v_main_debugger);
- PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_12, __pyx_v_main_debugger);
- __Pyx_INCREF(((PyObject *)__pyx_v_self));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
- PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_12, ((PyObject *)__pyx_v_self));
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_12, __pyx_v_frame);
- __Pyx_INCREF(__pyx_v_self->_args);
- __Pyx_GIVEREF(__pyx_v_self->_args);
- PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_12, __pyx_v_self->_args);
- __Pyx_INCREF(__pyx_v_arg);
- __Pyx_GIVEREF(__pyx_v_arg);
- PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_12, __pyx_v_arg);
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 368, __pyx_L9_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_result = __pyx_t_4;
- __pyx_t_4 = 0;
+/* Python wrapper */
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_nargs > 0)) {
+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1;}
+ if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj___init__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)__pyx_v_self));
- /* "_pydevd_bundle/pydevd_cython.pyx":369
- * if main_debugger.plugin is not None:
- * result = main_debugger.plugin.exception_break(main_debugger, self, frame, self._args, arg)
- * if result: # <<<<<<<<<<<<<<
- * should_stop, frame = result
- * except:
- */
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 369, __pyx_L9_error)
- if (__pyx_t_7) {
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":370
- * result = main_debugger.plugin.exception_break(main_debugger, self, frame, self._args, arg)
- * if result:
- * should_stop, frame = result # <<<<<<<<<<<<<<
- * except:
- * pydev_log.exception()
- */
- if ((likely(PyTuple_CheckExact(__pyx_v_result))) || (PyList_CheckExact(__pyx_v_result))) {
- PyObject* sequence = __pyx_v_result;
- Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
- if (unlikely(size != 2)) {
- if (size > 2) __Pyx_RaiseTooManyValuesError(2);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 370, __pyx_L9_error)
- }
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1);
- } else {
- __pyx_t_4 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_1 = PyList_GET_ITEM(sequence, 1);
- }
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_1);
- #else
- __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 370, __pyx_L9_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 370, __pyx_L9_error)
- __Pyx_GOTREF(__pyx_t_1);
- #endif
- } else {
- Py_ssize_t index = -1;
- __pyx_t_5 = PyObject_GetIter(__pyx_v_result); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 370, __pyx_L9_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
- index = 0; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L17_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_4);
- index = 1; __pyx_t_1 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L17_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_1);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 2) < 0) __PYX_ERR(0, 370, __pyx_L9_error)
- __pyx_t_6 = NULL;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- goto __pyx_L18_unpacking_done;
- __pyx_L17_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_6 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 370, __pyx_L9_error)
- __pyx_L18_unpacking_done:;
- }
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 370, __pyx_L9_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_should_stop = __pyx_t_7;
- __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_1);
- __pyx_t_1 = 0;
+static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj___init__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self) {
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__init__", 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":369
- * if main_debugger.plugin is not None:
- * result = main_debugger.plugin.exception_break(main_debugger, self, frame, self._args, arg)
- * if result: # <<<<<<<<<<<<<<
- * should_stop, frame = result
- * except:
+ /* "_pydevd_bundle/pydevd_cython.pyx":438
+ * cdef public list try_except_infos;
+ * def __init__(self):
+ * self.try_except_infos = None # <<<<<<<<<<<<<<
+ * # ELSE
+ * # class _TryExceptContainerObj(object):
*/
- }
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ __Pyx_GOTREF(__pyx_v_self->try_except_infos);
+ __Pyx_DECREF(__pyx_v_self->try_except_infos);
+ __pyx_v_self->try_except_infos = ((PyObject*)Py_None);
- /* "_pydevd_bundle/pydevd_cython.pyx":367
- * exception_breakpoint = None
- * try:
- * if main_debugger.plugin is not None: # <<<<<<<<<<<<<<
- * result = main_debugger.plugin.exception_break(main_debugger, self, frame, self._args, arg)
- * if result:
+ /* "_pydevd_bundle/pydevd_cython.pyx":437
+ * cdef class _TryExceptContainerObj:
+ * cdef public list try_except_infos;
+ * def __init__(self): # <<<<<<<<<<<<<<
+ * self.try_except_infos = None
+ * # ELSE
*/
- }
- /* "_pydevd_bundle/pydevd_cython.pyx":366
- * should_stop = False
- * exception_breakpoint = None
- * try: # <<<<<<<<<<<<<<
- * if main_debugger.plugin is not None:
- * result = main_debugger.plugin.exception_break(main_debugger, self, frame, self._args, arg)
- */
- }
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- goto __pyx_L14_try_end;
- __pyx_L9_error:;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ /* function exit code */
+ __pyx_r = 0;
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":371
- * if result:
- * should_stop, frame = result
- * except: # <<<<<<<<<<<<<<
- * pydev_log.exception()
- *
+/* "_pydevd_bundle/pydevd_cython.pyx":436
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef class _TryExceptContainerObj:
+ * cdef public list try_except_infos; # <<<<<<<<<<<<<<
+ * def __init__(self):
+ * self.try_except_infos = None
*/
- /*except:*/ {
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._should_stop_on_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_5) < 0) __PYX_ERR(0, 371, __pyx_L11_except_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GOTREF(__pyx_t_5);
- /* "_pydevd_bundle/pydevd_cython.pyx":372
- * should_stop, frame = result
- * except:
- * pydev_log.exception() # <<<<<<<<<<<<<<
- *
- * if not should_stop:
- */
- __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 372, __pyx_L11_except_error)
- __Pyx_GOTREF(__pyx_t_13);
- __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_exception); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 372, __pyx_L11_except_error)
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- __pyx_t_13 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) {
- __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_14);
- if (likely(__pyx_t_13)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
- __Pyx_INCREF(__pyx_t_13);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_14, function);
- }
- }
- __pyx_t_3 = (__pyx_t_13) ? __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_13) : __Pyx_PyObject_CallNoArg(__pyx_t_14);
- __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 372, __pyx_L11_except_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- goto __pyx_L10_exception_handled;
- }
- __pyx_L11_except_error:;
+/* Python wrapper */
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)__pyx_v_self));
- /* "_pydevd_bundle/pydevd_cython.pyx":366
- * should_stop = False
- * exception_breakpoint = None
- * try: # <<<<<<<<<<<<<<
- * if main_debugger.plugin is not None:
- * result = main_debugger.plugin.exception_break(main_debugger, self, frame, self._args, arg)
- */
- __Pyx_XGIVEREF(__pyx_t_9);
- __Pyx_XGIVEREF(__pyx_t_10);
- __Pyx_XGIVEREF(__pyx_t_11);
- __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
- goto __pyx_L1_error;
- __pyx_L10_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_9);
- __Pyx_XGIVEREF(__pyx_t_10);
- __Pyx_XGIVEREF(__pyx_t_11);
- __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
- __pyx_L14_try_end:;
- }
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":374
- * pydev_log.exception()
- *
- * if not should_stop: # <<<<<<<<<<<<<<
- * # Apply checks that don't need the exception breakpoint (where we shouldn't ever stop).
- * if exception == SystemExit and main_debugger.ignore_system_exit_code(value):
- */
- __pyx_t_7 = ((!(__pyx_v_should_stop != 0)) != 0);
- if (__pyx_t_7) {
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__get__", 1);
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_self->try_except_infos);
+ __pyx_r = __pyx_v_self->try_except_infos;
+ goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":376
- * if not should_stop:
- * # Apply checks that don't need the exception breakpoint (where we shouldn't ever stop).
- * if exception == SystemExit and main_debugger.ignore_system_exit_code(value): # <<<<<<<<<<<<<<
- * pass
- *
- */
- __pyx_t_5 = PyObject_RichCompare(__pyx_v_exception, __pyx_builtin_SystemExit, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 376, __pyx_L1_error)
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 376, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (__pyx_t_2) {
- } else {
- __pyx_t_7 = __pyx_t_2;
- goto __pyx_L23_bool_binop_done;
- }
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_ignore_system_exit_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 376, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_1)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- }
- }
- __pyx_t_5 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_1, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_value);
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 376, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 376, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_7 = __pyx_t_2;
- __pyx_L23_bool_binop_done:;
- if (__pyx_t_7) {
- goto __pyx_L22;
- }
+ /* function exit code */
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":379
- * pass
- *
- * elif exception in (GeneratorExit, StopIteration, StopAsyncIteration): # <<<<<<<<<<<<<<
- * # These exceptions are control-flow related (they work as a generator
- * # pause), so, we shouldn't stop on them.
- */
- __Pyx_INCREF(__pyx_v_exception);
- __pyx_t_5 = __pyx_v_exception;
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_builtin_GeneratorExit, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 379, __pyx_L1_error)
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 379, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (!__pyx_t_2) {
- } else {
- __pyx_t_7 = __pyx_t_2;
- goto __pyx_L25_bool_binop_done;
- }
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_builtin_StopIteration, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 379, __pyx_L1_error)
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 379, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (!__pyx_t_2) {
- } else {
- __pyx_t_7 = __pyx_t_2;
- goto __pyx_L25_bool_binop_done;
- }
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_StopAsyncIteration); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 379, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 379, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 379, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_7 = __pyx_t_2;
- __pyx_L25_bool_binop_done:;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_2 = (__pyx_t_7 != 0);
- if (__pyx_t_2) {
- goto __pyx_L22;
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":384
- * pass
- *
- * elif ignore_exception_trace(trace): # <<<<<<<<<<<<<<
- * pass
- *
- */
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ignore_exception_trace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 384, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
- }
- }
- __pyx_t_5 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_v_trace) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_trace);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 384, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 384, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (__pyx_t_2) {
- goto __pyx_L22;
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":388
- *
- * else:
- * was_just_raised = trace.tb_next is None # <<<<<<<<<<<<<<
- *
- * # It was not handled by any plugin, lets check exception breakpoints.
- */
- /*else*/ {
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace, __pyx_n_s_tb_next); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 388, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_2 = (__pyx_t_5 == Py_None);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_v_was_just_raised = __pyx_t_2;
+/* Python wrapper */
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)__pyx_v_self), ((PyObject *)__pyx_v_value));
- /* "_pydevd_bundle/pydevd_cython.pyx":391
- *
- * # It was not handled by any plugin, lets check exception breakpoints.
- * check_excs = [] # <<<<<<<<<<<<<<
- *
- * # Note: check user unhandled before regular exceptions.
- */
- __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 391, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_v_check_excs = ((PyObject*)__pyx_t_5);
- __pyx_t_5 = 0;
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":394
- *
- * # Note: check user unhandled before regular exceptions.
- * exc_break_user = main_debugger.get_exception_breakpoint( # <<<<<<<<<<<<<<
- * exception, main_debugger.break_on_user_uncaught_exceptions)
- * if exc_break_user is not None:
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_get_exception_breakpoint); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 394, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self, PyObject *__pyx_v_value) {
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__set__", 1);
+ if (!(likely(PyList_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_v_value))) __PYX_ERR(0, 436, __pyx_L1_error)
+ __pyx_t_1 = __pyx_v_value;
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_GIVEREF(__pyx_t_1);
+ __Pyx_GOTREF(__pyx_v_self->try_except_infos);
+ __Pyx_DECREF(__pyx_v_self->try_except_infos);
+ __pyx_v_self->try_except_infos = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":395
- * # Note: check user unhandled before regular exceptions.
- * exc_break_user = main_debugger.get_exception_breakpoint(
- * exception, main_debugger.break_on_user_uncaught_exceptions) # <<<<<<<<<<<<<<
- * if exc_break_user is not None:
- * check_excs.append((exc_break_user, True))
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_break_on_user_uncaught_exception); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 395, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = NULL;
- __pyx_t_12 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
- __pyx_t_12 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_exception, __pyx_t_4};
- __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 394, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_exception, __pyx_t_4};
- __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 394, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_14 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 394, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_14);
- if (__pyx_t_3) {
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_3); __pyx_t_3 = NULL;
- }
- __Pyx_INCREF(__pyx_v_exception);
- __Pyx_GIVEREF(__pyx_v_exception);
- PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_12, __pyx_v_exception);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_12, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_14, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 394, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_exc_break_user = __pyx_t_5;
- __pyx_t_5 = 0;
+ /* function exit code */
+ __pyx_r = 0;
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython._TryExceptContainerObj.try_except_infos.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = -1;
+ __pyx_L0:;
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":396
- * exc_break_user = main_debugger.get_exception_breakpoint(
- * exception, main_debugger.break_on_user_uncaught_exceptions)
- * if exc_break_user is not None: # <<<<<<<<<<<<<<
- * check_excs.append((exc_break_user, True))
- *
- */
- __pyx_t_2 = (__pyx_v_exc_break_user != Py_None);
- __pyx_t_7 = (__pyx_t_2 != 0);
- if (__pyx_t_7) {
+/* Python wrapper */
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)__pyx_v_self));
- /* "_pydevd_bundle/pydevd_cython.pyx":397
- * exception, main_debugger.break_on_user_uncaught_exceptions)
- * if exc_break_user is not None:
- * check_excs.append((exc_break_user, True)) # <<<<<<<<<<<<<<
- *
- * exc_break_caught = main_debugger.get_exception_breakpoint(
- */
- __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 397, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_INCREF(__pyx_v_exc_break_user);
- __Pyx_GIVEREF(__pyx_v_exc_break_user);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_exc_break_user);
- __Pyx_INCREF(Py_True);
- __Pyx_GIVEREF(Py_True);
- PyTuple_SET_ITEM(__pyx_t_5, 1, Py_True);
- __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_check_excs, __pyx_t_5); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(0, 397, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":396
- * exc_break_user = main_debugger.get_exception_breakpoint(
- * exception, main_debugger.break_on_user_uncaught_exceptions)
- * if exc_break_user is not None: # <<<<<<<<<<<<<<
- * check_excs.append((exc_break_user, True))
- *
- */
- }
+static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self) {
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__del__", 1);
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ __Pyx_GOTREF(__pyx_v_self->try_except_infos);
+ __Pyx_DECREF(__pyx_v_self->try_except_infos);
+ __pyx_v_self->try_except_infos = ((PyObject*)Py_None);
- /* "_pydevd_bundle/pydevd_cython.pyx":399
- * check_excs.append((exc_break_user, True))
- *
- * exc_break_caught = main_debugger.get_exception_breakpoint( # <<<<<<<<<<<<<<
- * exception, main_debugger.break_on_caught_exceptions)
- * if exc_break_caught is not None:
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_get_exception_breakpoint); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 399, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ /* function exit code */
+ __pyx_r = 0;
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":400
- *
- * exc_break_caught = main_debugger.get_exception_breakpoint(
- * exception, main_debugger.break_on_caught_exceptions) # <<<<<<<<<<<<<<
- * if exc_break_caught is not None:
- * check_excs.append((exc_break_caught, False))
+/* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
*/
- __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_break_on_caught_exceptions); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 400, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_4 = NULL;
- __pyx_t_12 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
- __pyx_t_12 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_exception, __pyx_t_14};
- __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 399, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_exception, __pyx_t_14};
- __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 399, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- } else
- #endif
- {
- __pyx_t_3 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 399, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- if (__pyx_t_4) {
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
- }
- __Pyx_INCREF(__pyx_v_exception);
- __Pyx_GIVEREF(__pyx_v_exception);
- PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_12, __pyx_v_exception);
- __Pyx_GIVEREF(__pyx_t_14);
- PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_12, __pyx_t_14);
- __pyx_t_14 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 399, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_exc_break_caught = __pyx_t_5;
- __pyx_t_5 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":401
- * exc_break_caught = main_debugger.get_exception_breakpoint(
- * exception, main_debugger.break_on_caught_exceptions)
- * if exc_break_caught is not None: # <<<<<<<<<<<<<<
- * check_excs.append((exc_break_caught, False))
- *
- */
- __pyx_t_7 = (__pyx_v_exc_break_caught != Py_None);
- __pyx_t_2 = (__pyx_t_7 != 0);
- if (__pyx_t_2) {
+/* Python wrapper */
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_3__reduce_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_3__reduce_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_nargs > 0)) {
+ __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
+ if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_2__reduce_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)__pyx_v_self));
- /* "_pydevd_bundle/pydevd_cython.pyx":402
- * exception, main_debugger.break_on_caught_exceptions)
- * if exc_break_caught is not None:
- * check_excs.append((exc_break_caught, False)) # <<<<<<<<<<<<<<
- *
- * for exc_break, is_user_uncaught in check_excs:
- */
- __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 402, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_INCREF(__pyx_v_exc_break_caught);
- __Pyx_GIVEREF(__pyx_v_exc_break_caught);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_exc_break_caught);
- __Pyx_INCREF(Py_False);
- __Pyx_GIVEREF(Py_False);
- PyTuple_SET_ITEM(__pyx_t_5, 1, Py_False);
- __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_check_excs, __pyx_t_5); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(0, 402, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":401
- * exc_break_caught = main_debugger.get_exception_breakpoint(
- * exception, main_debugger.break_on_caught_exceptions)
- * if exc_break_caught is not None: # <<<<<<<<<<<<<<
- * check_excs.append((exc_break_caught, False))
- *
- */
- }
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_2__reduce_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self) {
+ PyObject *__pyx_v_state = 0;
+ PyObject *__pyx_v__dict = 0;
+ int __pyx_v_use_setstate;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__reduce_cython__", 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":404
- * check_excs.append((exc_break_caught, False))
- *
- * for exc_break, is_user_uncaught in check_excs: # <<<<<<<<<<<<<<
- * # Initially mark that it should stop and then go into exclusions.
- * should_stop = True
+ /* "(tree fragment)":5
+ * cdef object _dict
+ * cdef bint use_setstate
+ * state = (self.try_except_infos,) # <<<<<<<<<<<<<<
+ * _dict = getattr(self, '__dict__', None)
+ * if _dict is not None:
*/
- __pyx_t_5 = __pyx_v_check_excs; __Pyx_INCREF(__pyx_t_5); __pyx_t_16 = 0;
- for (;;) {
- if (__pyx_t_16 >= PyList_GET_SIZE(__pyx_t_5)) break;
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_16); __Pyx_INCREF(__pyx_t_1); __pyx_t_16++; if (unlikely(0 < 0)) __PYX_ERR(0, 404, __pyx_L1_error)
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 404, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- #endif
- if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
- PyObject* sequence = __pyx_t_1;
- Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
- if (unlikely(size != 2)) {
- if (size > 2) __Pyx_RaiseTooManyValuesError(2);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 404, __pyx_L1_error)
- }
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_14 = PyTuple_GET_ITEM(sequence, 1);
- } else {
- __pyx_t_3 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_14 = PyList_GET_ITEM(sequence, 1);
- }
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_14);
- #else
- __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 404, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_14 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 404, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_14);
- #endif
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else {
- Py_ssize_t index = -1;
- __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 404, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext;
- index = 0; __pyx_t_3 = __pyx_t_6(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L32_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_3);
- index = 1; __pyx_t_14 = __pyx_t_6(__pyx_t_4); if (unlikely(!__pyx_t_14)) goto __pyx_L32_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_14);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_4), 2) < 0) __PYX_ERR(0, 404, __pyx_L1_error)
- __pyx_t_6 = NULL;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- goto __pyx_L33_unpacking_done;
- __pyx_L32_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 404, __pyx_L1_error)
- __pyx_L33_unpacking_done:;
- }
- __Pyx_XDECREF_SET(__pyx_v_exc_break, __pyx_t_3);
- __pyx_t_3 = 0;
- __Pyx_XDECREF_SET(__pyx_v_is_user_uncaught, __pyx_t_14);
- __pyx_t_14 = 0;
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_v_self->try_except_infos);
+ __Pyx_GIVEREF(__pyx_v_self->try_except_infos);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->try_except_infos)) __PYX_ERR(2, 5, __pyx_L1_error);
+ __pyx_v_state = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":406
- * for exc_break, is_user_uncaught in check_excs:
- * # Initially mark that it should stop and then go into exclusions.
- * should_stop = True # <<<<<<<<<<<<<<
- *
- * if main_debugger.exclude_exception_by_filter(exc_break, trace):
+ /* "(tree fragment)":6
+ * cdef bint use_setstate
+ * state = (self.try_except_infos,)
+ * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<<
+ * if _dict is not None:
+ * state += (_dict,)
*/
- __pyx_v_should_stop = 1;
+ __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v__dict = __pyx_t_1;
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":408
- * should_stop = True
- *
- * if main_debugger.exclude_exception_by_filter(exc_break, trace): # <<<<<<<<<<<<<<
- * pydev_log.debug("Ignore exception %s in library %s -- (%s)" % (exception, frame.f_code.co_filename, frame.f_code.co_name))
- * should_stop = False
+ /* "(tree fragment)":7
+ * state = (self.try_except_infos,)
+ * _dict = getattr(self, '__dict__', None)
+ * if _dict is not None: # <<<<<<<<<<<<<<
+ * state += (_dict,)
+ * use_setstate = True
*/
- __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_exclude_exception_by_filter); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 408, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_3 = NULL;
- __pyx_t_12 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_14))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_14);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_14, function);
- __pyx_t_12 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_14)) {
- PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_exc_break, __pyx_v_trace};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 408, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_14)) {
- PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_exc_break, __pyx_v_trace};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 408, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 408, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (__pyx_t_3) {
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
- }
- __Pyx_INCREF(__pyx_v_exc_break);
- __Pyx_GIVEREF(__pyx_v_exc_break);
- PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_12, __pyx_v_exc_break);
- __Pyx_INCREF(__pyx_v_trace);
- __Pyx_GIVEREF(__pyx_v_trace);
- PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_12, __pyx_v_trace);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 408, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 408, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_2) {
+ __pyx_t_2 = (__pyx_v__dict != Py_None);
+ if (__pyx_t_2) {
- /* "_pydevd_bundle/pydevd_cython.pyx":409
- *
- * if main_debugger.exclude_exception_by_filter(exc_break, trace):
- * pydev_log.debug("Ignore exception %s in library %s -- (%s)" % (exception, frame.f_code.co_filename, frame.f_code.co_name)) # <<<<<<<<<<<<<<
- * should_stop = False
- *
+ /* "(tree fragment)":8
+ * _dict = getattr(self, '__dict__', None)
+ * if _dict is not None:
+ * state += (_dict,) # <<<<<<<<<<<<<<
+ * use_setstate = True
+ * else:
*/
- __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 409, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_debug); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 409, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 409, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 409, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 409, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_co_name); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 409, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_13);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __pyx_t_14 = PyTuple_New(3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 409, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_INCREF(__pyx_v_exception);
- __Pyx_GIVEREF(__pyx_v_exception);
- PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_v_exception);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_13);
- PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_t_13);
- __pyx_t_3 = 0;
- __pyx_t_13 = 0;
- __pyx_t_13 = __Pyx_PyString_Format(__pyx_kp_s_Ignore_exception_s_in_library_s, __pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 409, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_13);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __pyx_t_14 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_14)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_14);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- }
- }
- __pyx_t_1 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_14, __pyx_t_13) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_13);
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 409, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 8, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_v__dict);
+ __Pyx_GIVEREF(__pyx_v__dict);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict)) __PYX_ERR(2, 8, __pyx_L1_error);
+ __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 8, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3));
+ __pyx_t_3 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":410
- * if main_debugger.exclude_exception_by_filter(exc_break, trace):
- * pydev_log.debug("Ignore exception %s in library %s -- (%s)" % (exception, frame.f_code.co_filename, frame.f_code.co_name))
- * should_stop = False # <<<<<<<<<<<<<<
- *
- * elif exc_break.condition is not None and \
+ /* "(tree fragment)":9
+ * if _dict is not None:
+ * state += (_dict,)
+ * use_setstate = True # <<<<<<<<<<<<<<
+ * else:
+ * use_setstate = self.try_except_infos is not None
*/
- __pyx_v_should_stop = 0;
+ __pyx_v_use_setstate = 1;
- /* "_pydevd_bundle/pydevd_cython.pyx":408
- * should_stop = True
- *
- * if main_debugger.exclude_exception_by_filter(exc_break, trace): # <<<<<<<<<<<<<<
- * pydev_log.debug("Ignore exception %s in library %s -- (%s)" % (exception, frame.f_code.co_filename, frame.f_code.co_name))
- * should_stop = False
+ /* "(tree fragment)":7
+ * state = (self.try_except_infos,)
+ * _dict = getattr(self, '__dict__', None)
+ * if _dict is not None: # <<<<<<<<<<<<<<
+ * state += (_dict,)
+ * use_setstate = True
*/
- goto __pyx_L34;
- }
+ goto __pyx_L3;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":412
- * should_stop = False
- *
- * elif exc_break.condition is not None and \ # <<<<<<<<<<<<<<
- * not main_debugger.handle_breakpoint_condition(info, exc_break, frame):
- * should_stop = False
+ /* "(tree fragment)":11
+ * use_setstate = True
+ * else:
+ * use_setstate = self.try_except_infos is not None # <<<<<<<<<<<<<<
+ * if use_setstate:
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, None), state
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc_break, __pyx_n_s_condition); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 412, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_7 = (__pyx_t_1 != Py_None);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_8 = (__pyx_t_7 != 0);
- if (__pyx_t_8) {
- } else {
- __pyx_t_2 = __pyx_t_8;
- goto __pyx_L35_bool_binop_done;
- }
+ /*else*/ {
+ __pyx_t_2 = (__pyx_v_self->try_except_infos != ((PyObject*)Py_None));
+ __pyx_v_use_setstate = __pyx_t_2;
+ }
+ __pyx_L3:;
- /* "_pydevd_bundle/pydevd_cython.pyx":413
- *
- * elif exc_break.condition is not None and \
- * not main_debugger.handle_breakpoint_condition(info, exc_break, frame): # <<<<<<<<<<<<<<
- * should_stop = False
- *
+ /* "(tree fragment)":12
+ * else:
+ * use_setstate = self.try_except_infos is not None
+ * if use_setstate: # <<<<<<<<<<<<<<
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, None), state
+ * else:
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_handle_breakpoint_condition); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 413, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_13 = NULL;
- __pyx_t_12 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_13)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_13);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- __pyx_t_12 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[4] = {__pyx_t_13, ((PyObject *)__pyx_v_info), __pyx_v_exc_break, __pyx_v_frame};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_12, 3+__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 413, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[4] = {__pyx_t_13, ((PyObject *)__pyx_v_info), __pyx_v_exc_break, __pyx_v_frame};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_12, 3+__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 413, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- {
- __pyx_t_14 = PyTuple_New(3+__pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 413, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_14);
- if (__pyx_t_13) {
- __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
- }
- __Pyx_INCREF(((PyObject *)__pyx_v_info));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_info));
- PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_12, ((PyObject *)__pyx_v_info));
- __Pyx_INCREF(__pyx_v_exc_break);
- __Pyx_GIVEREF(__pyx_v_exc_break);
- PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_12, __pyx_v_exc_break);
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_14, 2+__pyx_t_12, __pyx_v_frame);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 413, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 413, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_7 = ((!__pyx_t_8) != 0);
- __pyx_t_2 = __pyx_t_7;
- __pyx_L35_bool_binop_done:;
+ if (__pyx_v_use_setstate) {
- /* "_pydevd_bundle/pydevd_cython.pyx":412
- * should_stop = False
- *
- * elif exc_break.condition is not None and \ # <<<<<<<<<<<<<<
- * not main_debugger.handle_breakpoint_condition(info, exc_break, frame):
- * should_stop = False
+ /* "(tree fragment)":13
+ * use_setstate = self.try_except_infos is not None
+ * if use_setstate:
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, None), state # <<<<<<<<<<<<<<
+ * else:
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, state)
*/
- if (__pyx_t_2) {
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle__TryExceptContain); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(2, 13, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_int_230645316);
+ __Pyx_GIVEREF(__pyx_int_230645316);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_230645316)) __PYX_ERR(2, 13, __pyx_L1_error);
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(2, 13, __pyx_L1_error);
+ __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_3);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3)) __PYX_ERR(2, 13, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_state);
+ __Pyx_GIVEREF(__pyx_v_state);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state)) __PYX_ERR(2, 13, __pyx_L1_error);
+ __pyx_t_3 = 0;
+ __pyx_t_1 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
+ goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":414
- * elif exc_break.condition is not None and \
- * not main_debugger.handle_breakpoint_condition(info, exc_break, frame):
- * should_stop = False # <<<<<<<<<<<<<<
- *
- * elif is_user_uncaught:
+ /* "(tree fragment)":12
+ * else:
+ * use_setstate = self.try_except_infos is not None
+ * if use_setstate: # <<<<<<<<<<<<<<
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, None), state
+ * else:
*/
- __pyx_v_should_stop = 0;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":412
- * should_stop = False
- *
- * elif exc_break.condition is not None and \ # <<<<<<<<<<<<<<
- * not main_debugger.handle_breakpoint_condition(info, exc_break, frame):
- * should_stop = False
+ /* "(tree fragment)":15
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, None), state
+ * else:
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, state) # <<<<<<<<<<<<<<
+ * def __setstate_cython__(self, __pyx_state):
+ * __pyx_unpickle__TryExceptContainerObj__set_state(self, __pyx_state)
*/
- goto __pyx_L34;
- }
+ /*else*/ {
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle__TryExceptContain); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(2, 15, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_int_230645316);
+ __Pyx_GIVEREF(__pyx_int_230645316);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_230645316)) __PYX_ERR(2, 15, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_state);
+ __Pyx_GIVEREF(__pyx_v_state);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(2, 15, __pyx_L1_error);
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_4);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(2, 15, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error);
+ __pyx_t_4 = 0;
+ __pyx_t_1 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":416
- * should_stop = False
- *
- * elif is_user_uncaught: # <<<<<<<<<<<<<<
- * # Note: we don't stop here, we just collect the exc_info to use later on...
- * should_stop = False
+ /* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_is_user_uncaught); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 416, __pyx_L1_error)
- if (__pyx_t_2) {
- /* "_pydevd_bundle/pydevd_cython.pyx":418
- * elif is_user_uncaught:
- * # Note: we don't stop here, we just collect the exc_info to use later on...
- * should_stop = False # <<<<<<<<<<<<<<
- * if not main_debugger.apply_files_filter(frame, frame.f_code.co_filename, True) \
- * and (frame.f_back is None or main_debugger.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)):
- */
- __pyx_v_should_stop = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":419
- * # Note: we don't stop here, we just collect the exc_info to use later on...
- * should_stop = False
- * if not main_debugger.apply_files_filter(frame, frame.f_code.co_filename, True) \ # <<<<<<<<<<<<<<
- * and (frame.f_back is None or main_debugger.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)):
- * # User uncaught means that we're currently in user code but the code
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 419, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 419, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 419, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_13);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __pyx_t_14 = NULL;
- __pyx_t_12 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_14)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_14);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- __pyx_t_12 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[4] = {__pyx_t_14, __pyx_v_frame, __pyx_t_13, Py_True};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_12, 3+__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 419, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[4] = {__pyx_t_14, __pyx_v_frame, __pyx_t_13, Py_True};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_12, 3+__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 419, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- } else
- #endif
- {
- __pyx_t_3 = PyTuple_New(3+__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 419, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- if (__pyx_t_14) {
- __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_14); __pyx_t_14 = NULL;
- }
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_12, __pyx_v_frame);
- __Pyx_GIVEREF(__pyx_t_13);
- PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_12, __pyx_t_13);
- __Pyx_INCREF(Py_True);
- __Pyx_GIVEREF(Py_True);
- PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_12, Py_True);
- __pyx_t_13 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 419, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 419, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_8 = ((!__pyx_t_7) != 0);
- if (__pyx_t_8) {
- } else {
- __pyx_t_2 = __pyx_t_8;
- goto __pyx_L38_bool_binop_done;
- }
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython._TryExceptContainerObj.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_state);
+ __Pyx_XDECREF(__pyx_v__dict);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":420
- * should_stop = False
- * if not main_debugger.apply_files_filter(frame, frame.f_code.co_filename, True) \
- * and (frame.f_back is None or main_debugger.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)): # <<<<<<<<<<<<<<
- * # User uncaught means that we're currently in user code but the code
- * # up the stack is library code.
+/* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle__TryExceptContainerObj__set_state(self, __pyx_state)
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 420, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = (__pyx_t_1 == Py_None);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_7 = (__pyx_t_8 != 0);
- if (!__pyx_t_7) {
- } else {
- __pyx_t_2 = __pyx_t_7;
- goto __pyx_L38_bool_binop_done;
- }
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 420, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 420, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 420, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_13);
- __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_f_code); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 420, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 420, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_13);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __pyx_t_14 = NULL;
- __pyx_t_12 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_14)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_14);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- __pyx_t_12 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[4] = {__pyx_t_14, __pyx_t_3, __pyx_t_13, Py_True};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_12, 3+__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 420, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[4] = {__pyx_t_14, __pyx_t_3, __pyx_t_13, Py_True};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_12, 3+__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 420, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- } else
- #endif
- {
- __pyx_t_17 = PyTuple_New(3+__pyx_t_12); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 420, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_17);
- if (__pyx_t_14) {
- __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_14); __pyx_t_14 = NULL;
- }
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_12, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_13);
- PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_12, __pyx_t_13);
- __Pyx_INCREF(Py_True);
- __Pyx_GIVEREF(Py_True);
- PyTuple_SET_ITEM(__pyx_t_17, 2+__pyx_t_12, Py_True);
- __pyx_t_3 = 0;
- __pyx_t_13 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 420, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 420, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_2 = __pyx_t_7;
- __pyx_L38_bool_binop_done:;
- /* "_pydevd_bundle/pydevd_cython.pyx":419
- * # Note: we don't stop here, we just collect the exc_info to use later on...
- * should_stop = False
- * if not main_debugger.apply_files_filter(frame, frame.f_code.co_filename, True) \ # <<<<<<<<<<<<<<
- * and (frame.f_back is None or main_debugger.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)):
- * # User uncaught means that we're currently in user code but the code
- */
- if (__pyx_t_2) {
+/* Python wrapper */
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_5__setstate_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_5__setstate_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v___pyx_state = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 16, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(2, 16, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v___pyx_state = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 16, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython._TryExceptContainerObj.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_4__setstate_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)__pyx_v_self), __pyx_v___pyx_state);
- /* "_pydevd_bundle/pydevd_cython.pyx":423
- * # User uncaught means that we're currently in user code but the code
- * # up the stack is library code.
- * exc_info = self.exc_info # <<<<<<<<<<<<<<
- * if not exc_info:
- * exc_info = (arg, frame.f_lineno, set([frame.f_lineno]))
- */
- __pyx_t_1 = __pyx_v_self->exc_info;
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_XDECREF_SET(__pyx_v_exc_info, __pyx_t_1);
- __pyx_t_1 = 0;
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":424
- * # up the stack is library code.
- * exc_info = self.exc_info
- * if not exc_info: # <<<<<<<<<<<<<<
- * exc_info = (arg, frame.f_lineno, set([frame.f_lineno]))
- * else:
- */
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_exc_info); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 424, __pyx_L1_error)
- __pyx_t_7 = ((!__pyx_t_2) != 0);
- if (__pyx_t_7) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":425
- * exc_info = self.exc_info
- * if not exc_info:
- * exc_info = (arg, frame.f_lineno, set([frame.f_lineno])) # <<<<<<<<<<<<<<
- * else:
- * lines = exc_info[2]
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 425, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 425, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_17 = PySet_New(0); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 425, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_17);
- if (PySet_Add(__pyx_t_17, __pyx_t_4) < 0) __PYX_ERR(0, 425, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 425, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_v_arg);
- __Pyx_GIVEREF(__pyx_v_arg);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_arg);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_17);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_17);
- __pyx_t_1 = 0;
- __pyx_t_17 = 0;
- __Pyx_DECREF_SET(__pyx_v_exc_info, __pyx_t_4);
- __pyx_t_4 = 0;
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_4__setstate_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__setstate_cython__", 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":424
- * # up the stack is library code.
- * exc_info = self.exc_info
- * if not exc_info: # <<<<<<<<<<<<<<
- * exc_info = (arg, frame.f_lineno, set([frame.f_lineno]))
- * else:
+ /* "(tree fragment)":17
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, state)
+ * def __setstate_cython__(self, __pyx_state):
+ * __pyx_unpickle__TryExceptContainerObj__set_state(self, __pyx_state) # <<<<<<<<<<<<<<
*/
- goto __pyx_L41;
- }
+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(2, 17, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle__TryExceptContainerObj__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 17, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":427
- * exc_info = (arg, frame.f_lineno, set([frame.f_lineno]))
- * else:
- * lines = exc_info[2] # <<<<<<<<<<<<<<
- * lines.add(frame.f_lineno)
- * exc_info = (arg, frame.f_lineno, lines)
+ /* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle__TryExceptContainerObj__set_state(self, __pyx_state)
*/
- /*else*/ {
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_exc_info, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 427, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_XDECREF_SET(__pyx_v_lines, __pyx_t_4);
- __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":428
- * else:
- * lines = exc_info[2]
- * lines.add(frame.f_lineno) # <<<<<<<<<<<<<<
- * exc_info = (arg, frame.f_lineno, lines)
- * self.exc_info = exc_info
- */
- __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_v_lines, __pyx_n_s_add); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 428, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_17);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 428, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_13 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_17))) {
- __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_17);
- if (likely(__pyx_t_13)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_17);
- __Pyx_INCREF(__pyx_t_13);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_17, function);
- }
- }
- __pyx_t_4 = (__pyx_t_13) ? __Pyx_PyObject_Call2Args(__pyx_t_17, __pyx_t_13, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_17, __pyx_t_1);
- __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 428, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython._TryExceptContainerObj.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":429
- * lines = exc_info[2]
- * lines.add(frame.f_lineno)
- * exc_info = (arg, frame.f_lineno, lines) # <<<<<<<<<<<<<<
- * self.exc_info = exc_info
- * else:
+/* "_pydevd_bundle/pydevd_cython.pyx":470
+ * cdef int should_skip
+ * cdef object exc_info
+ * def __init__(self, tuple args): # <<<<<<<<<<<<<<
+ * self._args = args # In the cython version we don't need to pass the frame
+ * self.should_skip = -1 # On cythonized version, put in instance.
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 429, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_17 = PyTuple_New(3); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 429, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_17);
- __Pyx_INCREF(__pyx_v_arg);
- __Pyx_GIVEREF(__pyx_v_arg);
- PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_v_arg);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_17, 1, __pyx_t_4);
- __Pyx_INCREF(__pyx_v_lines);
- __Pyx_GIVEREF(__pyx_v_lines);
- PyTuple_SET_ITEM(__pyx_t_17, 2, __pyx_v_lines);
- __pyx_t_4 = 0;
- __Pyx_DECREF_SET(__pyx_v_exc_info, __pyx_t_17);
- __pyx_t_17 = 0;
- }
- __pyx_L41:;
- /* "_pydevd_bundle/pydevd_cython.pyx":430
- * lines.add(frame.f_lineno)
- * exc_info = (arg, frame.f_lineno, lines)
- * self.exc_info = exc_info # <<<<<<<<<<<<<<
- * else:
- * # I.e.: these are only checked if we're not dealing with user uncaught exceptions.
- */
- __Pyx_INCREF(__pyx_v_exc_info);
- __Pyx_GIVEREF(__pyx_v_exc_info);
- __Pyx_GOTREF(__pyx_v_self->exc_info);
- __Pyx_DECREF(__pyx_v_self->exc_info);
- __pyx_v_self->exc_info = __pyx_v_exc_info;
+/* Python wrapper */
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_args = 0;
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_args,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_args)) != 0)) {
+ (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 470, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 470, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+ }
+ __pyx_v_args = ((PyObject*)values[0]);
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 470, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return -1;
+ __pyx_L4_argument_unpacking_done:;
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_args), (&PyTuple_Type), 1, "args", 1))) __PYX_ERR(0, 470, __pyx_L1_error)
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame___init__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), __pyx_v_args);
- /* "_pydevd_bundle/pydevd_cython.pyx":419
- * # Note: we don't stop here, we just collect the exc_info to use later on...
- * should_stop = False
- * if not main_debugger.apply_files_filter(frame, frame.f_code.co_filename, True) \ # <<<<<<<<<<<<<<
- * and (frame.f_back is None or main_debugger.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)):
- * # User uncaught means that we're currently in user code but the code
- */
- }
+ /* function exit code */
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __pyx_r = -1;
+ __pyx_L0:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":416
- * should_stop = False
- *
- * elif is_user_uncaught: # <<<<<<<<<<<<<<
- * # Note: we don't stop here, we just collect the exc_info to use later on...
- * should_stop = False
- */
- goto __pyx_L34;
- }
+static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame___init__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_args) {
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__init__", 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":433
- * else:
- * # I.e.: these are only checked if we're not dealing with user uncaught exceptions.
- * if exc_break.notify_on_first_raise_only and main_debugger.skip_on_exceptions_thrown_in_same_context \ # <<<<<<<<<<<<<<
- * and not was_just_raised and not just_raised(trace.tb_next):
- * # In this case we never stop if it was just raised, so, to know if it was the first we
+ /* "_pydevd_bundle/pydevd_cython.pyx":471
+ * cdef object exc_info
+ * def __init__(self, tuple args):
+ * self._args = args # In the cython version we don't need to pass the frame # <<<<<<<<<<<<<<
+ * self.should_skip = -1 # On cythonized version, put in instance.
+ * self.exc_info = ()
*/
- /*else*/ {
- __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc_break, __pyx_n_s_notify_on_first_raise_only); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 433, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_17);
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_17); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 433, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
- if (__pyx_t_2) {
- } else {
- __pyx_t_7 = __pyx_t_2;
- goto __pyx_L43_bool_binop_done;
- }
+ __Pyx_INCREF(__pyx_v_args);
+ __Pyx_GIVEREF(__pyx_v_args);
+ __Pyx_GOTREF(__pyx_v_self->_args);
+ __Pyx_DECREF(__pyx_v_self->_args);
+ __pyx_v_self->_args = __pyx_v_args;
- /* "_pydevd_bundle/pydevd_cython.pyx":434
- * # I.e.: these are only checked if we're not dealing with user uncaught exceptions.
- * if exc_break.notify_on_first_raise_only and main_debugger.skip_on_exceptions_thrown_in_same_context \
- * and not was_just_raised and not just_raised(trace.tb_next): # <<<<<<<<<<<<<<
- * # In this case we never stop if it was just raised, so, to know if it was the first we
- * # need to check if we're in the 2nd method.
+ /* "_pydevd_bundle/pydevd_cython.pyx":472
+ * def __init__(self, tuple args):
+ * self._args = args # In the cython version we don't need to pass the frame
+ * self.should_skip = -1 # On cythonized version, put in instance. # <<<<<<<<<<<<<<
+ * self.exc_info = ()
+ * # ELSE
*/
- __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_skip_on_exceptions_thrown_in_sam); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 433, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_17);
-
- /* "_pydevd_bundle/pydevd_cython.pyx":433
- * else:
- * # I.e.: these are only checked if we're not dealing with user uncaught exceptions.
- * if exc_break.notify_on_first_raise_only and main_debugger.skip_on_exceptions_thrown_in_same_context \ # <<<<<<<<<<<<<<
- * and not was_just_raised and not just_raised(trace.tb_next):
- * # In this case we never stop if it was just raised, so, to know if it was the first we
- */
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_17); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 433, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
- if (__pyx_t_2) {
- } else {
- __pyx_t_7 = __pyx_t_2;
- goto __pyx_L43_bool_binop_done;
- }
+ __pyx_v_self->should_skip = -1;
- /* "_pydevd_bundle/pydevd_cython.pyx":434
- * # I.e.: these are only checked if we're not dealing with user uncaught exceptions.
- * if exc_break.notify_on_first_raise_only and main_debugger.skip_on_exceptions_thrown_in_same_context \
- * and not was_just_raised and not just_raised(trace.tb_next): # <<<<<<<<<<<<<<
- * # In this case we never stop if it was just raised, so, to know if it was the first we
- * # need to check if we're in the 2nd method.
+ /* "_pydevd_bundle/pydevd_cython.pyx":473
+ * self._args = args # In the cython version we don't need to pass the frame
+ * self.should_skip = -1 # On cythonized version, put in instance.
+ * self.exc_info = () # <<<<<<<<<<<<<<
+ * # ELSE
+ * # should_skip = -1 # Default value in class (put in instance on set).
*/
- __pyx_t_2 = ((!(__pyx_v_was_just_raised != 0)) != 0);
- if (__pyx_t_2) {
- } else {
- __pyx_t_7 = __pyx_t_2;
- goto __pyx_L43_bool_binop_done;
- }
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_just_raised); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 434, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace, __pyx_n_s_tb_next); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 434, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_13 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_13)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_13);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- }
- }
- __pyx_t_17 = (__pyx_t_13) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_13, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1);
- __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 434, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_17);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_17); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 434, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
- __pyx_t_8 = ((!__pyx_t_2) != 0);
- __pyx_t_7 = __pyx_t_8;
- __pyx_L43_bool_binop_done:;
+ __Pyx_INCREF(__pyx_empty_tuple);
+ __Pyx_GIVEREF(__pyx_empty_tuple);
+ __Pyx_GOTREF(__pyx_v_self->exc_info);
+ __Pyx_DECREF(__pyx_v_self->exc_info);
+ __pyx_v_self->exc_info = __pyx_empty_tuple;
- /* "_pydevd_bundle/pydevd_cython.pyx":433
- * else:
- * # I.e.: these are only checked if we're not dealing with user uncaught exceptions.
- * if exc_break.notify_on_first_raise_only and main_debugger.skip_on_exceptions_thrown_in_same_context \ # <<<<<<<<<<<<<<
- * and not was_just_raised and not just_raised(trace.tb_next):
- * # In this case we never stop if it was just raised, so, to know if it was the first we
+ /* "_pydevd_bundle/pydevd_cython.pyx":470
+ * cdef int should_skip
+ * cdef object exc_info
+ * def __init__(self, tuple args): # <<<<<<<<<<<<<<
+ * self._args = args # In the cython version we don't need to pass the frame
+ * self.should_skip = -1 # On cythonized version, put in instance.
*/
- if (__pyx_t_7) {
- /* "_pydevd_bundle/pydevd_cython.pyx":437
- * # In this case we never stop if it was just raised, so, to know if it was the first we
- * # need to check if we're in the 2nd method.
- * should_stop = False # I.e.: we stop only when we're at the caller of a method that throws an exception # <<<<<<<<<<<<<<
+ /* function exit code */
+ __pyx_r = 0;
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_bundle/pydevd_cython.pyx":491
+ * # ENDIF
+ *
+ * def set_suspend(self, *args, **kwargs): # <<<<<<<<<<<<<<
+ * self._args[0].set_suspend(*args, **kwargs)
*
- * elif exc_break.notify_on_first_raise_only and not main_debugger.skip_on_exceptions_thrown_in_same_context \
*/
- __pyx_v_should_stop = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":433
- * else:
- * # I.e.: these are only checked if we're not dealing with user uncaught exceptions.
- * if exc_break.notify_on_first_raise_only and main_debugger.skip_on_exceptions_thrown_in_same_context \ # <<<<<<<<<<<<<<
- * and not was_just_raised and not just_raised(trace.tb_next):
- * # In this case we never stop if it was just raised, so, to know if it was the first we
- */
- goto __pyx_L42;
- }
+/* Python wrapper */
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_3set_suspend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_3set_suspend = {"set_suspend", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_3set_suspend, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_3set_suspend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_args = 0;
+ PyObject *__pyx_v_kwargs = 0;
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("set_suspend (wrapper)", 0);
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "set_suspend", 1))) return NULL;
+ if (unlikely(__pyx_kwds)) {
+ __pyx_v_kwargs = __Pyx_KwargsAsDict_VARARGS(__pyx_kwds, __pyx_kwvalues);
+ if (unlikely(!__pyx_v_kwargs)) return NULL;
+ __Pyx_GOTREF(__pyx_v_kwargs);
+ } else {
+ __pyx_v_kwargs = PyDict_New();
+ if (unlikely(!__pyx_v_kwargs)) return NULL;
+ __Pyx_GOTREF(__pyx_v_kwargs);
+ }
+ __Pyx_INCREF(__pyx_args);
+ __pyx_v_args = __pyx_args;
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_2set_suspend(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);
- /* "_pydevd_bundle/pydevd_cython.pyx":439
- * should_stop = False # I.e.: we stop only when we're at the caller of a method that throws an exception
- *
- * elif exc_break.notify_on_first_raise_only and not main_debugger.skip_on_exceptions_thrown_in_same_context \ # <<<<<<<<<<<<<<
- * and not was_just_raised:
- * should_stop = False # I.e.: we stop only when it was just raised
- */
- __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc_break, __pyx_n_s_notify_on_first_raise_only); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 439, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_17);
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_17); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 439, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
- if (__pyx_t_8) {
- } else {
- __pyx_t_7 = __pyx_t_8;
- goto __pyx_L47_bool_binop_done;
- }
+ /* function exit code */
+ __Pyx_DECREF(__pyx_v_args);
+ __Pyx_DECREF(__pyx_v_kwargs);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_2set_suspend(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("set_suspend", 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":440
+ /* "_pydevd_bundle/pydevd_cython.pyx":492
*
- * elif exc_break.notify_on_first_raise_only and not main_debugger.skip_on_exceptions_thrown_in_same_context \
- * and not was_just_raised: # <<<<<<<<<<<<<<
- * should_stop = False # I.e.: we stop only when it was just raised
+ * def set_suspend(self, *args, **kwargs):
+ * self._args[0].set_suspend(*args, **kwargs) # <<<<<<<<<<<<<<
*
+ * def do_wait_suspend(self, *args, **kwargs):
*/
- __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_skip_on_exceptions_thrown_in_sam); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 439, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_17);
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 492, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 492, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 492, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 492, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_v_args, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 492, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":439
- * should_stop = False # I.e.: we stop only when we're at the caller of a method that throws an exception
+ /* "_pydevd_bundle/pydevd_cython.pyx":491
+ * # ENDIF
+ *
+ * def set_suspend(self, *args, **kwargs): # <<<<<<<<<<<<<<
+ * self._args[0].set_suspend(*args, **kwargs)
*
- * elif exc_break.notify_on_first_raise_only and not main_debugger.skip_on_exceptions_thrown_in_same_context \ # <<<<<<<<<<<<<<
- * and not was_just_raised:
- * should_stop = False # I.e.: we stop only when it was just raised
*/
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_17); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 439, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
- __pyx_t_2 = ((!__pyx_t_8) != 0);
- if (__pyx_t_2) {
- } else {
- __pyx_t_7 = __pyx_t_2;
- goto __pyx_L47_bool_binop_done;
- }
- /* "_pydevd_bundle/pydevd_cython.pyx":440
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.set_suspend", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_bundle/pydevd_cython.pyx":494
+ * self._args[0].set_suspend(*args, **kwargs)
*
- * elif exc_break.notify_on_first_raise_only and not main_debugger.skip_on_exceptions_thrown_in_same_context \
- * and not was_just_raised: # <<<<<<<<<<<<<<
- * should_stop = False # I.e.: we stop only when it was just raised
+ * def do_wait_suspend(self, *args, **kwargs): # <<<<<<<<<<<<<<
+ * self._args[0].do_wait_suspend(*args, **kwargs)
*
*/
- __pyx_t_2 = ((!(__pyx_v_was_just_raised != 0)) != 0);
- __pyx_t_7 = __pyx_t_2;
- __pyx_L47_bool_binop_done:;
- /* "_pydevd_bundle/pydevd_cython.pyx":439
- * should_stop = False # I.e.: we stop only when we're at the caller of a method that throws an exception
- *
- * elif exc_break.notify_on_first_raise_only and not main_debugger.skip_on_exceptions_thrown_in_same_context \ # <<<<<<<<<<<<<<
- * and not was_just_raised:
- * should_stop = False # I.e.: we stop only when it was just raised
- */
- if (__pyx_t_7) {
+/* Python wrapper */
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_5do_wait_suspend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_5do_wait_suspend = {"do_wait_suspend", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_5do_wait_suspend, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_5do_wait_suspend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_args = 0;
+ PyObject *__pyx_v_kwargs = 0;
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("do_wait_suspend (wrapper)", 0);
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "do_wait_suspend", 1))) return NULL;
+ if (unlikely(__pyx_kwds)) {
+ __pyx_v_kwargs = __Pyx_KwargsAsDict_VARARGS(__pyx_kwds, __pyx_kwvalues);
+ if (unlikely(!__pyx_v_kwargs)) return NULL;
+ __Pyx_GOTREF(__pyx_v_kwargs);
+ } else {
+ __pyx_v_kwargs = PyDict_New();
+ if (unlikely(!__pyx_v_kwargs)) return NULL;
+ __Pyx_GOTREF(__pyx_v_kwargs);
+ }
+ __Pyx_INCREF(__pyx_args);
+ __pyx_v_args = __pyx_args;
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_4do_wait_suspend(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);
- /* "_pydevd_bundle/pydevd_cython.pyx":441
- * elif exc_break.notify_on_first_raise_only and not main_debugger.skip_on_exceptions_thrown_in_same_context \
- * and not was_just_raised:
- * should_stop = False # I.e.: we stop only when it was just raised # <<<<<<<<<<<<<<
- *
- * elif was_just_raised and main_debugger.skip_on_exceptions_thrown_in_same_context:
- */
- __pyx_v_should_stop = 0;
+ /* function exit code */
+ __Pyx_DECREF(__pyx_v_args);
+ __Pyx_DECREF(__pyx_v_kwargs);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":439
- * should_stop = False # I.e.: we stop only when we're at the caller of a method that throws an exception
- *
- * elif exc_break.notify_on_first_raise_only and not main_debugger.skip_on_exceptions_thrown_in_same_context \ # <<<<<<<<<<<<<<
- * and not was_just_raised:
- * should_stop = False # I.e.: we stop only when it was just raised
- */
- goto __pyx_L42;
- }
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_4do_wait_suspend(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("do_wait_suspend", 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":443
- * should_stop = False # I.e.: we stop only when it was just raised
+ /* "_pydevd_bundle/pydevd_cython.pyx":495
*
- * elif was_just_raised and main_debugger.skip_on_exceptions_thrown_in_same_context: # <<<<<<<<<<<<<<
- * # Option: Don't break if an exception is caught in the same function from which it is thrown
- * should_stop = False
- */
- __pyx_t_2 = (__pyx_v_was_just_raised != 0);
- if (__pyx_t_2) {
- } else {
- __pyx_t_7 = __pyx_t_2;
- goto __pyx_L50_bool_binop_done;
- }
- __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_skip_on_exceptions_thrown_in_sam); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 443, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_17);
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_17); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 443, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
- __pyx_t_7 = __pyx_t_2;
- __pyx_L50_bool_binop_done:;
- if (__pyx_t_7) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":445
- * elif was_just_raised and main_debugger.skip_on_exceptions_thrown_in_same_context:
- * # Option: Don't break if an exception is caught in the same function from which it is thrown
- * should_stop = False # <<<<<<<<<<<<<<
+ * def do_wait_suspend(self, *args, **kwargs):
+ * self._args[0].do_wait_suspend(*args, **kwargs) # <<<<<<<<<<<<<<
*
- * if should_stop:
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
*/
- __pyx_v_should_stop = 0;
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 495, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 495, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 495, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 495, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_v_args, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 495, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":443
- * should_stop = False # I.e.: we stop only when it was just raised
+ /* "_pydevd_bundle/pydevd_cython.pyx":494
+ * self._args[0].set_suspend(*args, **kwargs)
+ *
+ * def do_wait_suspend(self, *args, **kwargs): # <<<<<<<<<<<<<<
+ * self._args[0].do_wait_suspend(*args, **kwargs)
*
- * elif was_just_raised and main_debugger.skip_on_exceptions_thrown_in_same_context: # <<<<<<<<<<<<<<
- * # Option: Don't break if an exception is caught in the same function from which it is thrown
- * should_stop = False
*/
- }
- __pyx_L42:;
- }
- __pyx_L34:;
- /* "_pydevd_bundle/pydevd_cython.pyx":447
- * should_stop = False
- *
- * if should_stop: # <<<<<<<<<<<<<<
- * exception_breakpoint = exc_break
- * try:
- */
- __pyx_t_7 = (__pyx_v_should_stop != 0);
- if (__pyx_t_7) {
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.do_wait_suspend", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":448
+/* "_pydevd_bundle/pydevd_cython.pyx":498
*
- * if should_stop:
- * exception_breakpoint = exc_break # <<<<<<<<<<<<<<
- * try:
- * info.pydev_message = exc_break.qname
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * def trace_exception(self, frame, str event, arg): # <<<<<<<<<<<<<<
+ * cdef bint should_stop;
+ * cdef tuple exc_info;
*/
- __Pyx_INCREF(__pyx_v_exc_break);
- __Pyx_DECREF_SET(__pyx_v_exception_breakpoint, __pyx_v_exc_break);
- /* "_pydevd_bundle/pydevd_cython.pyx":449
- * if should_stop:
- * exception_breakpoint = exc_break
- * try: # <<<<<<<<<<<<<<
- * info.pydev_message = exc_break.qname
- * except:
- */
- {
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
- __Pyx_XGOTREF(__pyx_t_11);
- __Pyx_XGOTREF(__pyx_t_10);
- __Pyx_XGOTREF(__pyx_t_9);
- /*try:*/ {
+/* Python wrapper */
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_7trace_exception(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_7trace_exception = {"trace_exception", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_7trace_exception, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_7trace_exception(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_frame = 0;
+ PyObject *__pyx_v_event = 0;
+ PyObject *__pyx_v_arg = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[3] = {0,0,0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("trace_exception (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_frame,&__pyx_n_s_event,&__pyx_n_s_arg,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ CYTHON_FALLTHROUGH;
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ CYTHON_FALLTHROUGH;
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 498, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ CYTHON_FALLTHROUGH;
+ case 1:
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_event)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 498, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("trace_exception", 1, 3, 3, 1); __PYX_ERR(0, 498, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 2:
+ if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 498, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("trace_exception", 1, 3, 3, 2); __PYX_ERR(0, 498, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "trace_exception") < 0)) __PYX_ERR(0, 498, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 3)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ }
+ __pyx_v_frame = values[0];
+ __pyx_v_event = ((PyObject*)values[1]);
+ __pyx_v_arg = values[2];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("trace_exception", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 498, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_event), (&PyString_Type), 1, "event", 1))) __PYX_ERR(0, 498, __pyx_L1_error)
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_6trace_exception(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), __pyx_v_frame, __pyx_v_event, __pyx_v_arg);
- /* "_pydevd_bundle/pydevd_cython.pyx":450
- * exception_breakpoint = exc_break
- * try:
- * info.pydev_message = exc_break.qname # <<<<<<<<<<<<<<
- * except:
- * info.pydev_message = exc_break.qname.encode('utf-8')
- */
- __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc_break, __pyx_n_s_qname); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 450, __pyx_L53_error)
- __Pyx_GOTREF(__pyx_t_17);
- if (!(likely(PyString_CheckExact(__pyx_t_17))||((__pyx_t_17) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_17)->tp_name), 0))) __PYX_ERR(0, 450, __pyx_L53_error)
- __Pyx_GIVEREF(__pyx_t_17);
- __Pyx_GOTREF(__pyx_v_info->pydev_message);
- __Pyx_DECREF(__pyx_v_info->pydev_message);
- __pyx_v_info->pydev_message = ((PyObject*)__pyx_t_17);
- __pyx_t_17 = 0;
+ /* function exit code */
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __pyx_r = NULL;
+ __pyx_L0:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":449
- * if should_stop:
- * exception_breakpoint = exc_break
- * try: # <<<<<<<<<<<<<<
- * info.pydev_message = exc_break.qname
- * except:
- */
- }
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- goto __pyx_L60_try_end;
- __pyx_L53_error:;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_6trace_exception(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg) {
+ int __pyx_v_should_stop;
+ PyObject *__pyx_v_exc_info = 0;
+ PyObject *__pyx_v_frame_skips_cache = NULL;
+ PyObject *__pyx_v_frame_cache_key = NULL;
+ PyObject *__pyx_v_custom_key = NULL;
+ PyObject *__pyx_v_container_obj = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ int __pyx_t_1;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ unsigned int __pyx_t_8;
+ PyObject *(*__pyx_t_9)(PyObject *);
+ int __pyx_t_10;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("trace_exception", 0);
+ __Pyx_INCREF(__pyx_v_frame);
- /* "_pydevd_bundle/pydevd_cython.pyx":451
- * try:
- * info.pydev_message = exc_break.qname
- * except: # <<<<<<<<<<<<<<
- * info.pydev_message = exc_break.qname.encode('utf-8')
- * break
+ /* "_pydevd_bundle/pydevd_cython.pyx":504
+ * # def trace_exception(self, frame, event, arg):
+ * # ENDIF
+ * if event == "exception": # <<<<<<<<<<<<<<
+ * should_stop, frame, exc_info = should_stop_on_exception(self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info)
+ * self.exc_info = exc_info
*/
- /*except:*/ {
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._should_stop_on_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_17, &__pyx_t_4, &__pyx_t_1) < 0) __PYX_ERR(0, 451, __pyx_L55_except_error)
- __Pyx_GOTREF(__pyx_t_17);
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_exception, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 504, __pyx_L1_error)
+ if (__pyx_t_1) {
- /* "_pydevd_bundle/pydevd_cython.pyx":452
- * info.pydev_message = exc_break.qname
- * except:
- * info.pydev_message = exc_break.qname.encode('utf-8') # <<<<<<<<<<<<<<
- * break
+ /* "_pydevd_bundle/pydevd_cython.pyx":505
+ * # ENDIF
+ * if event == "exception":
+ * should_stop, frame, exc_info = should_stop_on_exception(self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info) # <<<<<<<<<<<<<<
+ * self.exc_info = exc_info
*
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc_break, __pyx_n_s_qname); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 452, __pyx_L55_except_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_encode); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 452, __pyx_L55_except_error)
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_14))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_14);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_14, function);
- }
- }
- __pyx_t_13 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_14, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_kp_s_utf_8);
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 452, __pyx_L55_except_error)
- __Pyx_GOTREF(__pyx_t_13);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- if (!(likely(PyString_CheckExact(__pyx_t_13))||((__pyx_t_13) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_13)->tp_name), 0))) __PYX_ERR(0, 452, __pyx_L55_except_error)
- __Pyx_GIVEREF(__pyx_t_13);
- __Pyx_GOTREF(__pyx_v_info->pydev_message);
- __Pyx_DECREF(__pyx_v_info->pydev_message);
- __pyx_v_info->pydev_message = ((PyObject*)__pyx_t_13);
- __pyx_t_13 = 0;
- __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L54_exception_handled;
- }
- __pyx_L55_except_error:;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":449
- * if should_stop:
- * exception_breakpoint = exc_break
- * try: # <<<<<<<<<<<<<<
- * info.pydev_message = exc_break.qname
- * except:
- */
- __Pyx_XGIVEREF(__pyx_t_11);
- __Pyx_XGIVEREF(__pyx_t_10);
- __Pyx_XGIVEREF(__pyx_t_9);
- __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
- goto __pyx_L1_error;
- __pyx_L54_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_11);
- __Pyx_XGIVEREF(__pyx_t_10);
- __Pyx_XGIVEREF(__pyx_t_9);
- __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
- __pyx_L60_try_end:;
- }
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_should_stop_on_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 505, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 505, __pyx_L1_error)
+ }
+ __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 505, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 505, __pyx_L1_error)
+ }
+ __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 505, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 505, __pyx_L1_error)
+ }
+ __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 505, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = NULL;
+ __pyx_t_8 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_8 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[7] = {__pyx_t_7, __pyx_t_4, __pyx_t_5, __pyx_v_frame, __pyx_t_6, __pyx_v_arg, __pyx_v_self->exc_info};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 6+__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 505, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
+ PyObject* sequence = __pyx_t_2;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 3)) {
+ if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 505, __pyx_L1_error)
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);
+ __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2);
+ } else {
+ __pyx_t_3 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_6 = PyList_GET_ITEM(sequence, 1);
+ __pyx_t_5 = PyList_GET_ITEM(sequence, 2);
+ }
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_5);
+ #else
+ __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 505, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 505, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 505, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ #endif
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ } else {
+ Py_ssize_t index = -1;
+ __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 505, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4);
+ index = 0; __pyx_t_3 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_3);
+ index = 1; __pyx_t_6 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_6)) goto __pyx_L4_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_6);
+ index = 2; __pyx_t_5 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_5);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_4), 3) < 0) __PYX_ERR(0, 505, __pyx_L1_error)
+ __pyx_t_9 = NULL;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ goto __pyx_L5_unpacking_done;
+ __pyx_L4_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_9 = NULL;
+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+ __PYX_ERR(0, 505, __pyx_L1_error)
+ __pyx_L5_unpacking_done:;
+ }
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 505, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (!(likely(PyTuple_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_5))) __PYX_ERR(0, 505, __pyx_L1_error)
+ __pyx_v_should_stop = __pyx_t_1;
+ __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_6);
+ __pyx_t_6 = 0;
+ __pyx_v_exc_info = ((PyObject*)__pyx_t_5);
+ __pyx_t_5 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":453
- * except:
- * info.pydev_message = exc_break.qname.encode('utf-8')
- * break # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":506
+ * if event == "exception":
+ * should_stop, frame, exc_info = should_stop_on_exception(self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info)
+ * self.exc_info = exc_info # <<<<<<<<<<<<<<
*
- * if should_stop:
+ * if should_stop:
*/
- goto __pyx_L31_break;
+ __Pyx_INCREF(__pyx_v_exc_info);
+ __Pyx_GIVEREF(__pyx_v_exc_info);
+ __Pyx_GOTREF(__pyx_v_self->exc_info);
+ __Pyx_DECREF(__pyx_v_self->exc_info);
+ __pyx_v_self->exc_info = __pyx_v_exc_info;
- /* "_pydevd_bundle/pydevd_cython.pyx":447
- * should_stop = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":508
+ * self.exc_info = exc_info
*
- * if should_stop: # <<<<<<<<<<<<<<
- * exception_breakpoint = exc_break
- * try:
+ * if should_stop: # <<<<<<<<<<<<<<
+ * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED):
+ * return self.trace_dispatch
*/
- }
+ if (__pyx_v_should_stop) {
- /* "_pydevd_bundle/pydevd_cython.pyx":404
- * check_excs.append((exc_break_caught, False))
+ /* "_pydevd_bundle/pydevd_cython.pyx":509
*
- * for exc_break, is_user_uncaught in check_excs: # <<<<<<<<<<<<<<
- * # Initially mark that it should stop and then go into exclusions.
- * should_stop = True
- */
- }
- __pyx_L31_break:;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- __pyx_L22:;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":374
- * pydev_log.exception()
+ * if should_stop:
+ * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): # <<<<<<<<<<<<<<
+ * return self.trace_dispatch
*
- * if not should_stop: # <<<<<<<<<<<<<<
- * # Apply checks that don't need the exception breakpoint (where we shouldn't ever stop).
- * if exception == SystemExit and main_debugger.ignore_system_exit_code(value):
*/
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_handle_exception); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 509, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 509, __pyx_L1_error)
+ }
+ __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 509, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 509, __pyx_L1_error)
+ }
+ __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 509, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_EXCEPTION_TYPE_HANDLED); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 509, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = NULL;
+ __pyx_t_8 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ __pyx_t_8 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[6] = {__pyx_t_7, __pyx_t_6, __pyx_t_3, __pyx_v_frame, __pyx_v_arg, __pyx_t_4};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 5+__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 509, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 509, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (__pyx_t_1) {
- /* "_pydevd_bundle/pydevd_cython.pyx":455
- * break
+ /* "_pydevd_bundle/pydevd_cython.pyx":510
+ * if should_stop:
+ * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED):
+ * return self.trace_dispatch # <<<<<<<<<<<<<<
*
- * if should_stop: # <<<<<<<<<<<<<<
- * # Always add exception to frame (must remove later after we proceed).
- * add_exception_to_frame(frame, (exception, value, trace))
+ * elif event == "return":
*/
- __pyx_t_7 = (__pyx_v_should_stop != 0);
- if (__pyx_t_7) {
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 510, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
+ goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":457
- * if should_stop:
- * # Always add exception to frame (must remove later after we proceed).
- * add_exception_to_frame(frame, (exception, value, trace)) # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":509
+ *
+ * if should_stop:
+ * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): # <<<<<<<<<<<<<<
+ * return self.trace_dispatch
*
- * if exception_breakpoint is not None and exception_breakpoint.expression is not None:
*/
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_add_exception_to_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 457, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 457, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_v_exception);
- __Pyx_GIVEREF(__pyx_v_exception);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_exception);
- __Pyx_INCREF(__pyx_v_value);
- __Pyx_GIVEREF(__pyx_v_value);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_value);
- __Pyx_INCREF(__pyx_v_trace);
- __Pyx_GIVEREF(__pyx_v_trace);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_trace);
- __pyx_t_17 = NULL;
- __pyx_t_12 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_17)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_17);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
- __pyx_t_12 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[3] = {__pyx_t_17, __pyx_v_frame, __pyx_t_4};
- __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 457, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[3] = {__pyx_t_17, __pyx_v_frame, __pyx_t_4};
- __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 457, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_13 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 457, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_13);
- if (__pyx_t_17) {
- __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_17); __pyx_t_17 = NULL;
- }
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_12, __pyx_v_frame);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_12, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_13, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 457, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":459
- * add_exception_to_frame(frame, (exception, value, trace))
- *
- * if exception_breakpoint is not None and exception_breakpoint.expression is not None: # <<<<<<<<<<<<<<
- * main_debugger.handle_breakpoint_expression(exception_breakpoint, info, frame)
+ /* "_pydevd_bundle/pydevd_cython.pyx":508
+ * self.exc_info = exc_info
*
+ * if should_stop: # <<<<<<<<<<<<<<
+ * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED):
+ * return self.trace_dispatch
*/
- __pyx_t_2 = (__pyx_v_exception_breakpoint != Py_None);
- __pyx_t_8 = (__pyx_t_2 != 0);
- if (__pyx_t_8) {
- } else {
- __pyx_t_7 = __pyx_t_8;
- goto __pyx_L65_bool_binop_done;
- }
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_exception_breakpoint, __pyx_n_s_expression); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 459, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_8 = (__pyx_t_5 != Py_None);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_2 = (__pyx_t_8 != 0);
- __pyx_t_7 = __pyx_t_2;
- __pyx_L65_bool_binop_done:;
- if (__pyx_t_7) {
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":460
- *
- * if exception_breakpoint is not None and exception_breakpoint.expression is not None:
- * main_debugger.handle_breakpoint_expression(exception_breakpoint, info, frame) # <<<<<<<<<<<<<<
- *
- * return should_stop, frame
+ /* "_pydevd_bundle/pydevd_cython.pyx":504
+ * # def trace_exception(self, frame, event, arg):
+ * # ENDIF
+ * if event == "exception": # <<<<<<<<<<<<<<
+ * should_stop, frame, exc_info = should_stop_on_exception(self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info)
+ * self.exc_info = exc_info
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_handle_breakpoint_expression); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 460, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_13 = NULL;
- __pyx_t_12 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_13)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_13);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
- __pyx_t_12 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[4] = {__pyx_t_13, __pyx_v_exception_breakpoint, ((PyObject *)__pyx_v_info), __pyx_v_frame};
- __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 3+__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 460, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[4] = {__pyx_t_13, __pyx_v_exception_breakpoint, ((PyObject *)__pyx_v_info), __pyx_v_frame};
- __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 3+__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 460, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(3+__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 460, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (__pyx_t_13) {
- __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_13); __pyx_t_13 = NULL;
- }
- __Pyx_INCREF(__pyx_v_exception_breakpoint);
- __Pyx_GIVEREF(__pyx_v_exception_breakpoint);
- PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_12, __pyx_v_exception_breakpoint);
- __Pyx_INCREF(((PyObject *)__pyx_v_info));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_info));
- PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_12, ((PyObject *)__pyx_v_info));
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_12, __pyx_v_frame);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 460, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ goto __pyx_L3;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":459
- * add_exception_to_frame(frame, (exception, value, trace))
- *
- * if exception_breakpoint is not None and exception_breakpoint.expression is not None: # <<<<<<<<<<<<<<
- * main_debugger.handle_breakpoint_expression(exception_breakpoint, info, frame)
+ /* "_pydevd_bundle/pydevd_cython.pyx":512
+ * return self.trace_dispatch
*
+ * elif event == "return": # <<<<<<<<<<<<<<
+ * exc_info = self.exc_info
+ * if exc_info and arg is None:
*/
- }
+ __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_return, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 512, __pyx_L1_error)
+ if (__pyx_t_1) {
- /* "_pydevd_bundle/pydevd_cython.pyx":455
- * break
+ /* "_pydevd_bundle/pydevd_cython.pyx":513
*
- * if should_stop: # <<<<<<<<<<<<<<
- * # Always add exception to frame (must remove later after we proceed).
- * add_exception_to_frame(frame, (exception, value, trace))
+ * elif event == "return":
+ * exc_info = self.exc_info # <<<<<<<<<<<<<<
+ * if exc_info and arg is None:
+ * frame_skips_cache, frame_cache_key = self._args[4], self._args[5]
*/
- }
+ if (!(likely(PyTuple_CheckExact(__pyx_v_self->exc_info))||((__pyx_v_self->exc_info) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v_self->exc_info))) __PYX_ERR(0, 513, __pyx_L1_error)
+ __pyx_t_2 = __pyx_v_self->exc_info;
+ __Pyx_INCREF(__pyx_t_2);
+ __pyx_v_exc_info = ((PyObject*)__pyx_t_2);
+ __pyx_t_2 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":361
- * exception, value, trace = arg
- *
- * if trace is not None and hasattr(trace, 'tb_next'): # <<<<<<<<<<<<<<
- * # on jython trace is None on the first event and it may not have a tb_next.
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":514
+ * elif event == "return":
+ * exc_info = self.exc_info
+ * if exc_info and arg is None: # <<<<<<<<<<<<<<
+ * frame_skips_cache, frame_cache_key = self._args[4], self._args[5]
+ * custom_key = (frame_cache_key, "try_exc_info")
*/
+ __pyx_t_10 = (__pyx_v_exc_info != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_exc_info) != 0);
+ if (__pyx_t_10) {
+ } else {
+ __pyx_t_1 = __pyx_t_10;
+ goto __pyx_L9_bool_binop_done;
}
+ __pyx_t_10 = (__pyx_v_arg == Py_None);
+ __pyx_t_1 = __pyx_t_10;
+ __pyx_L9_bool_binop_done:;
+ if (__pyx_t_1) {
- /* "_pydevd_bundle/pydevd_cython.pyx":358
- *
- * # 2 = 2
- * if info.pydev_state != 2: # and breakpoint is not None: # <<<<<<<<<<<<<<
- * exception, value, trace = arg
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":515
+ * exc_info = self.exc_info
+ * if exc_info and arg is None:
+ * frame_skips_cache, frame_cache_key = self._args[4], self._args[5] # <<<<<<<<<<<<<<
+ * custom_key = (frame_cache_key, "try_exc_info")
+ * container_obj = frame_skips_cache.get(custom_key)
*/
- }
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 515, __pyx_L1_error)
+ }
+ __pyx_t_2 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 515, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 515, __pyx_L1_error)
+ }
+ __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 515, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_v_frame_skips_cache = __pyx_t_2;
+ __pyx_t_2 = 0;
+ __pyx_v_frame_cache_key = __pyx_t_5;
+ __pyx_t_5 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":462
- * main_debugger.handle_breakpoint_expression(exception_breakpoint, info, frame)
- *
- * return should_stop, frame # <<<<<<<<<<<<<<
- *
- * def handle_user_exception(self, frame):
+ /* "_pydevd_bundle/pydevd_cython.pyx":516
+ * if exc_info and arg is None:
+ * frame_skips_cache, frame_cache_key = self._args[4], self._args[5]
+ * custom_key = (frame_cache_key, "try_exc_info") # <<<<<<<<<<<<<<
+ * container_obj = frame_skips_cache.get(custom_key)
+ * if container_obj is None:
*/
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_should_stop); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 462, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 462, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_frame);
- __pyx_t_5 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
+ __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 516, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_INCREF(__pyx_v_frame_cache_key);
+ __Pyx_GIVEREF(__pyx_v_frame_cache_key);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_frame_cache_key)) __PYX_ERR(0, 516, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_n_s_try_exc_info);
+ __Pyx_GIVEREF(__pyx_n_s_try_exc_info);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_n_s_try_exc_info)) __PYX_ERR(0, 516, __pyx_L1_error);
+ __pyx_v_custom_key = ((PyObject*)__pyx_t_5);
+ __pyx_t_5 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":343
- *
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * cdef _should_stop_on_exception(self, frame, str event, arg): # <<<<<<<<<<<<<<
- * cdef PyDBAdditionalThreadInfo info;
- * cdef bint should_stop;
+ /* "_pydevd_bundle/pydevd_cython.pyx":517
+ * frame_skips_cache, frame_cache_key = self._args[4], self._args[5]
+ * custom_key = (frame_cache_key, "try_exc_info")
+ * container_obj = frame_skips_cache.get(custom_key) # <<<<<<<<<<<<<<
+ * if container_obj is None:
+ * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj()
*/
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame_skips_cache, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 517, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = NULL;
+ __pyx_t_8 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_8 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_custom_key};
+ __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 517, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_v_container_obj = __pyx_t_5;
+ __pyx_t_5 = 0;
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_13);
- __Pyx_XDECREF(__pyx_t_14);
- __Pyx_XDECREF(__pyx_t_17);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._should_stop_on_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_info);
- __Pyx_XDECREF(__pyx_v_check_excs);
- __Pyx_XDECREF(__pyx_v_main_debugger);
- __Pyx_XDECREF(__pyx_v_exception);
- __Pyx_XDECREF(__pyx_v_value);
- __Pyx_XDECREF(__pyx_v_trace);
- __Pyx_XDECREF(__pyx_v_exception_breakpoint);
- __Pyx_XDECREF(__pyx_v_result);
- __Pyx_XDECREF(__pyx_v_exc_break_user);
- __Pyx_XDECREF(__pyx_v_exc_break_caught);
- __Pyx_XDECREF(__pyx_v_exc_break);
- __Pyx_XDECREF(__pyx_v_is_user_uncaught);
- __Pyx_XDECREF(__pyx_v_exc_info);
- __Pyx_XDECREF(__pyx_v_lines);
- __Pyx_XDECREF(__pyx_v_frame);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
+ /* "_pydevd_bundle/pydevd_cython.pyx":518
+ * custom_key = (frame_cache_key, "try_exc_info")
+ * container_obj = frame_skips_cache.get(custom_key)
+ * if container_obj is None: # <<<<<<<<<<<<<<
+ * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj()
+ * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and self.handle_user_exception(
+ */
+ __pyx_t_1 = (__pyx_v_container_obj == Py_None);
+ if (__pyx_t_1) {
-/* "_pydevd_bundle/pydevd_cython.pyx":464
- * return should_stop, frame
- *
- * def handle_user_exception(self, frame): # <<<<<<<<<<<<<<
- * exc_info = self.exc_info
- * if exc_info:
+ /* "_pydevd_bundle/pydevd_cython.pyx":519
+ * container_obj = frame_skips_cache.get(custom_key)
+ * if container_obj is None:
+ * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj() # <<<<<<<<<<<<<<
+ * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and self.handle_user_exception(
+ * frame
*/
+ __pyx_t_5 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 519, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_DECREF_SET(__pyx_v_container_obj, __pyx_t_5);
+ if (unlikely((PyObject_SetItem(__pyx_v_frame_skips_cache, __pyx_v_custom_key, __pyx_t_5) < 0))) __PYX_ERR(0, 519, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_9handle_user_exception(PyObject *__pyx_v_self, PyObject *__pyx_v_frame); /*proto*/
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_9handle_user_exception(PyObject *__pyx_v_self, PyObject *__pyx_v_frame) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("handle_user_exception (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_8handle_user_exception(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), ((PyObject *)__pyx_v_frame));
+ /* "_pydevd_bundle/pydevd_cython.pyx":518
+ * custom_key = (frame_cache_key, "try_exc_info")
+ * container_obj = frame_skips_cache.get(custom_key)
+ * if container_obj is None: # <<<<<<<<<<<<<<
+ * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj()
+ * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and self.handle_user_exception(
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":520
+ * if container_obj is None:
+ * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj()
+ * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and self.handle_user_exception( # <<<<<<<<<<<<<<
+ * frame
+ * ):
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_is_unhandled_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 520, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 520, __pyx_L1_error)
+ }
+ __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 520, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ if (unlikely(__pyx_v_exc_info == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 520, __pyx_L1_error)
+ }
+ __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_exc_info, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 520, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (unlikely(__pyx_v_exc_info == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 520, __pyx_L1_error)
+ }
+ __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v_exc_info, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 520, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = NULL;
+ __pyx_t_8 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_8 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[6] = {__pyx_t_7, __pyx_v_container_obj, __pyx_t_4, __pyx_v_frame, __pyx_t_3, __pyx_t_6};
+ __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_8, 5+__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 520, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 520, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (__pyx_t_10) {
+ } else {
+ __pyx_t_1 = __pyx_t_10;
+ goto __pyx_L13_bool_binop_done;
+ }
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_user_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 520, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":521
+ * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj()
+ * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and self.handle_user_exception(
+ * frame # <<<<<<<<<<<<<<
+ * ):
+ * return self.trace_dispatch
+ */
+ __pyx_t_6 = NULL;
+ __pyx_t_8 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_8 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_frame};
+ __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 520, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":520
+ * if container_obj is None:
+ * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj()
+ * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and self.handle_user_exception( # <<<<<<<<<<<<<<
+ * frame
+ * ):
+ */
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 520, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_1 = __pyx_t_10;
+ __pyx_L13_bool_binop_done:;
+ if (__pyx_t_1) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":523
+ * frame
+ * ):
+ * return self.trace_dispatch # <<<<<<<<<<<<<<
+ *
+ * return self.trace_exception
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 523, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_r = __pyx_t_5;
+ __pyx_t_5 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":520
+ * if container_obj is None:
+ * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj()
+ * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and self.handle_user_exception( # <<<<<<<<<<<<<<
+ * frame
+ * ):
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":514
+ * elif event == "return":
+ * exc_info = self.exc_info
+ * if exc_info and arg is None: # <<<<<<<<<<<<<<
+ * frame_skips_cache, frame_cache_key = self._args[4], self._args[5]
+ * custom_key = (frame_cache_key, "try_exc_info")
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":512
+ * return self.trace_dispatch
+ *
+ * elif event == "return": # <<<<<<<<<<<<<<
+ * exc_info = self.exc_info
+ * if exc_info and arg is None:
+ */
+ }
+ __pyx_L3:;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":525
+ * return self.trace_dispatch
+ *
+ * return self.trace_exception # <<<<<<<<<<<<<<
+ *
+ * def handle_user_exception(self, frame):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_exception); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 525, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_r = __pyx_t_5;
+ __pyx_t_5 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":498
+ *
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * def trace_exception(self, frame, str event, arg): # <<<<<<<<<<<<<<
+ * cdef bint should_stop;
+ * cdef tuple exc_info;
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_exc_info);
+ __Pyx_XDECREF(__pyx_v_frame_skips_cache);
+ __Pyx_XDECREF(__pyx_v_frame_cache_key);
+ __Pyx_XDECREF(__pyx_v_custom_key);
+ __Pyx_XDECREF(__pyx_v_container_obj);
+ __Pyx_XDECREF(__pyx_v_frame);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_bundle/pydevd_cython.pyx":527
+ * return self.trace_exception
+ *
+ * def handle_user_exception(self, frame): # <<<<<<<<<<<<<<
+ * exc_info = self.exc_info
+ * if exc_info:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_9handle_user_exception(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_9handle_user_exception = {"handle_user_exception", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_9handle_user_exception, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_9handle_user_exception(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_frame = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("handle_user_exception (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_frame,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 527, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "handle_user_exception") < 0)) __PYX_ERR(0, 527, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v_frame = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("handle_user_exception", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 527, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.handle_user_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_8handle_user_exception(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), __pyx_v_frame);
/* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -10769,66 +15251,106 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_8handle_us
int __pyx_t_2;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ unsigned int __pyx_t_9;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("handle_user_exception", 0);
+ __Pyx_RefNannySetupContext("handle_user_exception", 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":465
+ /* "_pydevd_bundle/pydevd_cython.pyx":528
*
* def handle_user_exception(self, frame):
* exc_info = self.exc_info # <<<<<<<<<<<<<<
* if exc_info:
- * return self._handle_exception(frame, 'exception', exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
+ * return handle_exception(self._args[0], self._args[3], frame, exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
*/
__pyx_t_1 = __pyx_v_self->exc_info;
__Pyx_INCREF(__pyx_t_1);
__pyx_v_exc_info = __pyx_t_1;
__pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":466
+ /* "_pydevd_bundle/pydevd_cython.pyx":529
* def handle_user_exception(self, frame):
* exc_info = self.exc_info
* if exc_info: # <<<<<<<<<<<<<<
- * return self._handle_exception(frame, 'exception', exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
+ * return handle_exception(self._args[0], self._args[3], frame, exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
* return False
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_exc_info); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 466, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_exc_info); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 529, __pyx_L1_error)
if (__pyx_t_2) {
- /* "_pydevd_bundle/pydevd_cython.pyx":467
+ /* "_pydevd_bundle/pydevd_cython.pyx":530
* exc_info = self.exc_info
* if exc_info:
- * return self._handle_exception(frame, 'exception', exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED) # <<<<<<<<<<<<<<
+ * return handle_exception(self._args[0], self._args[3], frame, exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED) # <<<<<<<<<<<<<<
* return False
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_exc_info, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 467, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 467, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_handle_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 530, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- if (!(likely(PyString_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 467, __pyx_L1_error)
- __pyx_t_4 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_handle_exception(__pyx_v_self, __pyx_v_frame, __pyx_n_s_exception, __pyx_t_1, ((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 467, __pyx_L1_error)
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 530, __pyx_L1_error)
+ }
+ __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 530, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 530, __pyx_L1_error)
+ }
+ __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 530, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_exc_info, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 530, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 530, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_9 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[6] = {__pyx_t_8, __pyx_t_4, __pyx_t_5, __pyx_v_frame, __pyx_t_6, __pyx_t_7};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_9, 5+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":466
+ /* "_pydevd_bundle/pydevd_cython.pyx":529
* def handle_user_exception(self, frame):
* exc_info = self.exc_info
* if exc_info: # <<<<<<<<<<<<<<
- * return self._handle_exception(frame, 'exception', exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
+ * return handle_exception(self._args[0], self._args[3], frame, exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
* return False
*/
}
- /* "_pydevd_bundle/pydevd_cython.pyx":468
+ /* "_pydevd_bundle/pydevd_cython.pyx":531
* if exc_info:
- * return self._handle_exception(frame, 'exception', exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
+ * return handle_exception(self._args[0], self._args[3], frame, exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
* return False # <<<<<<<<<<<<<<
*
* # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
@@ -10838,8 +15360,8 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_8handle_us
__pyx_r = Py_False;
goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":464
- * return should_stop, frame
+ /* "_pydevd_bundle/pydevd_cython.pyx":527
+ * return self.trace_exception
*
* def handle_user_exception(self, frame): # <<<<<<<<<<<<<<
* exc_info = self.exc_info
@@ -10851,6 +15373,10 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_8handle_us
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.handle_user_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -10860,4287 +15386,2991 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_8handle_us
return __pyx_r;
}
-/* "_pydevd_bundle/pydevd_cython.pyx":471
+/* "_pydevd_bundle/pydevd_cython.pyx":534
*
* # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * cdef _handle_exception(self, frame, str event, arg, str exception_type): # <<<<<<<<<<<<<<
- * cdef bint stopped;
- * cdef tuple abs_real_path_and_base;
+ * cdef get_func_name(self, frame): # <<<<<<<<<<<<<<
+ * cdef str func_name
+ * # ELSE
*/
-static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__handle_exception(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg, PyObject *__pyx_v_exception_type) {
- int __pyx_v_stopped;
- PyObject *__pyx_v_abs_real_path_and_base = 0;
- PyObject *__pyx_v_absolute_filename = 0;
- PyObject *__pyx_v_canonical_normalized_filename = 0;
- PyObject *__pyx_v_filename_to_lines_where_exceptions_are_ignored = 0;
- PyObject *__pyx_v_lines_ignored = 0;
- PyObject *__pyx_v_frame_id_to_frame = 0;
- PyObject *__pyx_v_merged = 0;
- PyObject *__pyx_v_trace_obj = 0;
- PyObject *__pyx_v_main_debugger = 0;
- PyObject *__pyx_v_initial_trace_obj = NULL;
- PyObject *__pyx_v_check_trace_obj = NULL;
- PyObject *__pyx_v_curr_stat = NULL;
- PyObject *__pyx_v_last_stat = NULL;
- PyObject *__pyx_v_from_user_input = NULL;
- PyObject *__pyx_v_exc_lineno = NULL;
- PyObject *__pyx_v_line = NULL;
- PyObject *__pyx_v_thread = NULL;
- PyObject *__pyx_v_f = NULL;
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_get_func_name(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame) {
+ PyObject *__pyx_v_func_name = 0;
+ PyObject *__pyx_v_code_obj = NULL;
+ PyObject *__pyx_v_cls_name = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- int __pyx_t_3;
- int __pyx_t_4;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- Py_ssize_t __pyx_t_6;
- PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ unsigned int __pyx_t_7;
+ int __pyx_t_8;
PyObject *__pyx_t_9 = NULL;
PyObject *__pyx_t_10 = NULL;
PyObject *__pyx_t_11 = NULL;
- PyObject *__pyx_t_12 = NULL;
- int __pyx_t_13;
- PyObject *__pyx_t_14 = NULL;
- PyObject *__pyx_t_15 = NULL;
- int __pyx_t_16;
- PyObject *__pyx_t_17 = NULL;
- int __pyx_t_18;
- char const *__pyx_t_19;
- PyObject *__pyx_t_20 = NULL;
- PyObject *__pyx_t_21 = NULL;
- PyObject *__pyx_t_22 = NULL;
- PyObject *__pyx_t_23 = NULL;
- PyObject *__pyx_t_24 = NULL;
- PyObject *__pyx_t_25 = NULL;
- char const *__pyx_t_26;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_handle_exception", 0);
- __Pyx_INCREF(__pyx_v_frame);
+ __Pyx_RefNannySetupContext("get_func_name", 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":485
- * # def _handle_exception(self, frame, event, arg, exception_type):
- * # ENDIF
- * stopped = False # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":539
+ * # def get_func_name(self, frame):
+ * # ENDIF
+ * code_obj = frame.f_code # <<<<<<<<<<<<<<
+ * func_name = code_obj.co_name
* try:
- * # print('_handle_exception', frame.f_lineno, frame.f_code.co_name)
- */
- __pyx_v_stopped = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":486
- * # ENDIF
- * stopped = False
- * try: # <<<<<<<<<<<<<<
- * # print('_handle_exception', frame.f_lineno, frame.f_code.co_name)
- *
*/
- /*try:*/ {
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 539, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_code_obj = __pyx_t_1;
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":490
- *
- * # We have 3 things in arg: exception type, description, traceback object
- * trace_obj = arg[2] # <<<<<<<<<<<<<<
- * main_debugger = self._args[0]
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":540
+ * # ENDIF
+ * code_obj = frame.f_code
+ * func_name = code_obj.co_name # <<<<<<<<<<<<<<
+ * try:
+ * cls_name = get_clsname_for_code(code_obj, frame)
*/
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_arg, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 490, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_trace_obj = __pyx_t_1;
- __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_code_obj, __pyx_n_s_co_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 540, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(0, 540, __pyx_L1_error)
+ __pyx_v_func_name = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":491
- * # We have 3 things in arg: exception type, description, traceback object
- * trace_obj = arg[2]
- * main_debugger = self._args[0] # <<<<<<<<<<<<<<
- *
- * initial_trace_obj = trace_obj
+ /* "_pydevd_bundle/pydevd_cython.pyx":541
+ * code_obj = frame.f_code
+ * func_name = code_obj.co_name
+ * try: # <<<<<<<<<<<<<<
+ * cls_name = get_clsname_for_code(code_obj, frame)
+ * if cls_name is not None:
*/
- if (unlikely(__pyx_v_self->_args == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 491, __pyx_L4_error)
- }
- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 491, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_main_debugger = __pyx_t_1;
- __pyx_t_1 = 0;
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_4);
+ /*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":493
- * main_debugger = self._args[0]
- *
- * initial_trace_obj = trace_obj # <<<<<<<<<<<<<<
- * if trace_obj.tb_next is None and trace_obj.tb_frame is frame:
- * # I.e.: tb_next should be only None in the context it was thrown (trace_obj.tb_frame is frame is just a double check).
+ /* "_pydevd_bundle/pydevd_cython.pyx":542
+ * func_name = code_obj.co_name
+ * try:
+ * cls_name = get_clsname_for_code(code_obj, frame) # <<<<<<<<<<<<<<
+ * if cls_name is not None:
+ * return "%s.%s" % (cls_name, func_name)
*/
- __Pyx_INCREF(__pyx_v_trace_obj);
- __pyx_v_initial_trace_obj = __pyx_v_trace_obj;
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_get_clsname_for_code); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 542, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = NULL;
+ __pyx_t_7 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ __pyx_t_7 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_code_obj, __pyx_v_frame};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 542, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ }
+ __pyx_v_cls_name = __pyx_t_1;
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":494
- *
- * initial_trace_obj = trace_obj
- * if trace_obj.tb_next is None and trace_obj.tb_frame is frame: # <<<<<<<<<<<<<<
- * # I.e.: tb_next should be only None in the context it was thrown (trace_obj.tb_frame is frame is just a double check).
- * pass
+ /* "_pydevd_bundle/pydevd_cython.pyx":543
+ * try:
+ * cls_name = get_clsname_for_code(code_obj, frame)
+ * if cls_name is not None: # <<<<<<<<<<<<<<
+ * return "%s.%s" % (cls_name, func_name)
+ * else:
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace_obj, __pyx_n_s_tb_next); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 494, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = (__pyx_t_1 == Py_None);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_4 = (__pyx_t_3 != 0);
- if (__pyx_t_4) {
- } else {
- __pyx_t_2 = __pyx_t_4;
- goto __pyx_L7_bool_binop_done;
- }
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace_obj, __pyx_n_s_tb_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 494, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = (__pyx_t_1 == __pyx_v_frame);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_3 = (__pyx_t_4 != 0);
- __pyx_t_2 = __pyx_t_3;
- __pyx_L7_bool_binop_done:;
- if (__pyx_t_2) {
- goto __pyx_L6;
- }
+ __pyx_t_8 = (__pyx_v_cls_name != Py_None);
+ if (__pyx_t_8) {
- /* "_pydevd_bundle/pydevd_cython.pyx":499
+ /* "_pydevd_bundle/pydevd_cython.pyx":544
+ * cls_name = get_clsname_for_code(code_obj, frame)
+ * if cls_name is not None:
+ * return "%s.%s" % (cls_name, func_name) # <<<<<<<<<<<<<<
* else:
- * # Get the trace_obj from where the exception was raised...
- * while trace_obj.tb_next is not None: # <<<<<<<<<<<<<<
- * trace_obj = trace_obj.tb_next
- *
+ * return func_name
*/
- /*else*/ {
- while (1) {
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace_obj, __pyx_n_s_tb_next); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 499, __pyx_L4_error)
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 544, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = (__pyx_t_1 != Py_None);
+ __Pyx_INCREF(__pyx_v_cls_name);
+ __Pyx_GIVEREF(__pyx_v_cls_name);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_cls_name)) __PYX_ERR(0, 544, __pyx_L3_error);
+ __Pyx_INCREF(__pyx_v_func_name);
+ __Pyx_GIVEREF(__pyx_v_func_name);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_func_name)) __PYX_ERR(0, 544, __pyx_L3_error);
+ __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_s_s, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 544, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_3 = (__pyx_t_2 != 0);
- if (!__pyx_t_3) break;
+ __pyx_r = __pyx_t_5;
+ __pyx_t_5 = 0;
+ goto __pyx_L7_try_return;
- /* "_pydevd_bundle/pydevd_cython.pyx":500
- * # Get the trace_obj from where the exception was raised...
- * while trace_obj.tb_next is not None:
- * trace_obj = trace_obj.tb_next # <<<<<<<<<<<<<<
- *
- * if main_debugger.ignore_exceptions_thrown_in_lines_with_ignore_exception:
+ /* "_pydevd_bundle/pydevd_cython.pyx":543
+ * try:
+ * cls_name = get_clsname_for_code(code_obj, frame)
+ * if cls_name is not None: # <<<<<<<<<<<<<<
+ * return "%s.%s" % (cls_name, func_name)
+ * else:
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace_obj, __pyx_n_s_tb_next); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 500, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF_SET(__pyx_v_trace_obj, __pyx_t_1);
- __pyx_t_1 = 0;
}
- }
- __pyx_L6:;
- /* "_pydevd_bundle/pydevd_cython.pyx":502
- * trace_obj = trace_obj.tb_next
- *
- * if main_debugger.ignore_exceptions_thrown_in_lines_with_ignore_exception: # <<<<<<<<<<<<<<
- * for check_trace_obj in (initial_trace_obj, trace_obj):
- * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame)
+ /* "_pydevd_bundle/pydevd_cython.pyx":546
+ * return "%s.%s" % (cls_name, func_name)
+ * else:
+ * return func_name # <<<<<<<<<<<<<<
+ * except:
+ * pydev_log.exception()
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_ignore_exceptions_thrown_in_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 502, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 502, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_3) {
+ /*else*/ {
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_func_name);
+ __pyx_r = __pyx_v_func_name;
+ goto __pyx_L7_try_return;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":503
- *
- * if main_debugger.ignore_exceptions_thrown_in_lines_with_ignore_exception:
- * for check_trace_obj in (initial_trace_obj, trace_obj): # <<<<<<<<<<<<<<
- * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame)
- * absolute_filename = abs_real_path_and_base[0]
+ /* "_pydevd_bundle/pydevd_cython.pyx":541
+ * code_obj = frame.f_code
+ * func_name = code_obj.co_name
+ * try: # <<<<<<<<<<<<<<
+ * cls_name = get_clsname_for_code(code_obj, frame)
+ * if cls_name is not None:
*/
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 503, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v_initial_trace_obj);
- __Pyx_GIVEREF(__pyx_v_initial_trace_obj);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_initial_trace_obj);
- __Pyx_INCREF(__pyx_v_trace_obj);
- __Pyx_GIVEREF(__pyx_v_trace_obj);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_trace_obj);
- __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- for (;;) {
- if (__pyx_t_6 >= 2) break;
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 503, __pyx_L4_error)
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 503, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- #endif
- __Pyx_XDECREF_SET(__pyx_v_check_trace_obj, __pyx_t_1);
- __pyx_t_1 = 0;
+ }
+ __pyx_L3_error:;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":504
- * if main_debugger.ignore_exceptions_thrown_in_lines_with_ignore_exception:
- * for check_trace_obj in (initial_trace_obj, trace_obj):
- * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame) # <<<<<<<<<<<<<<
- * absolute_filename = abs_real_path_and_base[0]
- * canonical_normalized_filename = abs_real_path_and_base[1]
+ /* "_pydevd_bundle/pydevd_cython.pyx":547
+ * else:
+ * return func_name
+ * except: # <<<<<<<<<<<<<<
+ * pydev_log.exception()
+ * return func_name
*/
- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_get_abs_path_real_path_and_base); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 504, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_check_trace_obj, __pyx_n_s_tb_frame); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 504, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
- if (likely(__pyx_t_9)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_9);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_7, function);
- }
- }
- __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 504, __pyx_L4_error)
- __Pyx_XDECREF_SET(__pyx_v_abs_real_path_and_base, ((PyObject*)__pyx_t_1));
- __pyx_t_1 = 0;
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.get_func_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_6) < 0) __PYX_ERR(0, 547, __pyx_L5_except_error)
+ __Pyx_XGOTREF(__pyx_t_5);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_6);
- /* "_pydevd_bundle/pydevd_cython.pyx":505
- * for check_trace_obj in (initial_trace_obj, trace_obj):
- * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame)
- * absolute_filename = abs_real_path_and_base[0] # <<<<<<<<<<<<<<
- * canonical_normalized_filename = abs_real_path_and_base[1]
+ /* "_pydevd_bundle/pydevd_cython.pyx":548
+ * return func_name
+ * except:
+ * pydev_log.exception() # <<<<<<<<<<<<<<
+ * return func_name
*
*/
- if (unlikely(__pyx_v_abs_real_path_and_base == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 505, __pyx_L4_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 548, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_exception); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 548, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = NULL;
+ __pyx_t_7 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_11))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
+ __Pyx_INCREF(__pyx_t_10);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_11, function);
+ __pyx_t_7 = 1;
}
- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_abs_real_path_and_base, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 505, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 505, __pyx_L4_error)
- __Pyx_XDECREF_SET(__pyx_v_absolute_filename, ((PyObject*)__pyx_t_1));
- __pyx_t_1 = 0;
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
+ __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 548, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":506
- * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame)
- * absolute_filename = abs_real_path_and_base[0]
- * canonical_normalized_filename = abs_real_path_and_base[1] # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":549
+ * except:
+ * pydev_log.exception()
+ * return func_name # <<<<<<<<<<<<<<
*
- * filename_to_lines_where_exceptions_are_ignored = self.filename_to_lines_where_exceptions_are_ignored
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
*/
- if (unlikely(__pyx_v_abs_real_path_and_base == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 506, __pyx_L4_error)
- }
- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_abs_real_path_and_base, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 506, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 506, __pyx_L4_error)
- __Pyx_XDECREF_SET(__pyx_v_canonical_normalized_filename, ((PyObject*)__pyx_t_1));
- __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_func_name);
+ __pyx_r = __pyx_v_func_name;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L6_except_return;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":508
- * canonical_normalized_filename = abs_real_path_and_base[1]
- *
- * filename_to_lines_where_exceptions_are_ignored = self.filename_to_lines_where_exceptions_are_ignored # <<<<<<<<<<<<<<
- *
- * lines_ignored = filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename)
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filename_to_lines_where_exceptio); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 508, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 508, __pyx_L4_error)
- __Pyx_XDECREF_SET(__pyx_v_filename_to_lines_where_exceptions_are_ignored, ((PyObject*)__pyx_t_1));
- __pyx_t_1 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":510
- * filename_to_lines_where_exceptions_are_ignored = self.filename_to_lines_where_exceptions_are_ignored
- *
- * lines_ignored = filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename) # <<<<<<<<<<<<<<
- * if lines_ignored is None:
- * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {}
+ /* "_pydevd_bundle/pydevd_cython.pyx":541
+ * code_obj = frame.f_code
+ * func_name = code_obj.co_name
+ * try: # <<<<<<<<<<<<<<
+ * cls_name = get_clsname_for_code(code_obj, frame)
+ * if cls_name is not None:
*/
- if (unlikely(__pyx_v_filename_to_lines_where_exceptions_are_ignored == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 510, __pyx_L4_error)
- }
- __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_filename_to_lines_where_exceptions_are_ignored, __pyx_v_canonical_normalized_filename, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 510, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 510, __pyx_L4_error)
- __Pyx_XDECREF_SET(__pyx_v_lines_ignored, ((PyObject*)__pyx_t_1));
- __pyx_t_1 = 0;
+ __pyx_L5_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_XGIVEREF(__pyx_t_4);
+ __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+ goto __pyx_L1_error;
+ __pyx_L7_try_return:;
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_XGIVEREF(__pyx_t_4);
+ __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+ goto __pyx_L0;
+ __pyx_L6_except_return:;
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_XGIVEREF(__pyx_t_4);
+ __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+ goto __pyx_L0;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":511
- *
- * lines_ignored = filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename)
- * if lines_ignored is None: # <<<<<<<<<<<<<<
- * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {}
+ /* "_pydevd_bundle/pydevd_cython.pyx":534
*
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef get_func_name(self, frame): # <<<<<<<<<<<<<<
+ * cdef str func_name
+ * # ELSE
*/
- __pyx_t_3 = (__pyx_v_lines_ignored == ((PyObject*)Py_None));
- __pyx_t_2 = (__pyx_t_3 != 0);
- if (__pyx_t_2) {
- /* "_pydevd_bundle/pydevd_cython.pyx":512
- * lines_ignored = filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename)
- * if lines_ignored is None:
- * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {} # <<<<<<<<<<<<<<
- *
- * try:
- */
- __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 512, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_DECREF_SET(__pyx_v_lines_ignored, __pyx_t_1);
- if (unlikely(__pyx_v_filename_to_lines_where_exceptions_are_ignored == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 512, __pyx_L4_error)
- }
- if (unlikely(PyDict_SetItem(__pyx_v_filename_to_lines_where_exceptions_are_ignored, __pyx_v_canonical_normalized_filename, __pyx_t_1) < 0)) __PYX_ERR(0, 512, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_11);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.get_func_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_func_name);
+ __Pyx_XDECREF(__pyx_v_code_obj);
+ __Pyx_XDECREF(__pyx_v_cls_name);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":511
- *
- * lines_ignored = filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename)
- * if lines_ignored is None: # <<<<<<<<<<<<<<
- * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {}
+/* "_pydevd_bundle/pydevd_cython.pyx":552
*
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _show_return_values(self, frame, arg): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _show_return_values(self, frame, arg):
*/
- }
- /* "_pydevd_bundle/pydevd_cython.pyx":514
- * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {}
- *
- * try: # <<<<<<<<<<<<<<
- * curr_stat = os.stat(absolute_filename)
- * curr_stat = (curr_stat.st_size, curr_stat.st_mtime)
- */
- {
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
- __Pyx_XGOTREF(__pyx_t_10);
- __Pyx_XGOTREF(__pyx_t_11);
- __Pyx_XGOTREF(__pyx_t_12);
- /*try:*/ {
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__show_return_values(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_arg) {
+ PyObject *__pyx_v_f_locals_back = NULL;
+ PyObject *__pyx_v_return_values_dict = NULL;
+ PyObject *__pyx_v_name = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ int __pyx_t_6;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ unsigned int __pyx_t_9;
+ PyObject *__pyx_t_10 = NULL;
+ PyObject *__pyx_t_11 = NULL;
+ int __pyx_t_12;
+ int __pyx_t_13;
+ char const *__pyx_t_14;
+ PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_16 = NULL;
+ PyObject *__pyx_t_17 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_show_return_values", 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":515
- *
- * try:
- * curr_stat = os.stat(absolute_filename) # <<<<<<<<<<<<<<
- * curr_stat = (curr_stat.st_size, curr_stat.st_mtime)
- * except:
+ /* "_pydevd_bundle/pydevd_cython.pyx":556
+ * # def _show_return_values(self, frame, arg):
+ * # ENDIF
+ * try: # <<<<<<<<<<<<<<
+ * try:
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
*/
- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_os); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 515, __pyx_L15_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_stat); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 515, __pyx_L15_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_7)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_7);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
- }
- }
- __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_7, __pyx_v_absolute_filename) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_absolute_filename);
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 515, __pyx_L15_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_XDECREF_SET(__pyx_v_curr_stat, __pyx_t_1);
- __pyx_t_1 = 0;
+ /*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":516
- * try:
- * curr_stat = os.stat(absolute_filename)
- * curr_stat = (curr_stat.st_size, curr_stat.st_mtime) # <<<<<<<<<<<<<<
- * except:
- * curr_stat = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":557
+ * # ENDIF
+ * try:
+ * try: # <<<<<<<<<<<<<<
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ * if f_locals_back is not None:
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_curr_stat, __pyx_n_s_st_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 516, __pyx_L15_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_curr_stat, __pyx_n_s_st_mtime); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 516, __pyx_L15_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 516, __pyx_L15_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_8);
- __pyx_t_1 = 0;
- __pyx_t_8 = 0;
- __Pyx_DECREF_SET(__pyx_v_curr_stat, __pyx_t_7);
- __pyx_t_7 = 0;
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+ /*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":514
- * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {}
- *
- * try: # <<<<<<<<<<<<<<
- * curr_stat = os.stat(absolute_filename)
- * curr_stat = (curr_stat.st_size, curr_stat.st_mtime)
+ /* "_pydevd_bundle/pydevd_cython.pyx":558
+ * try:
+ * try:
+ * f_locals_back = getattr(frame.f_back, "f_locals", None) # <<<<<<<<<<<<<<
+ * if f_locals_back is not None:
+ * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None)
*/
- }
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
- goto __pyx_L22_try_end;
- __pyx_L15_error:;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 558, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_GetAttr3(__pyx_t_4, __pyx_n_s_f_locals, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 558, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_f_locals_back = __pyx_t_5;
+ __pyx_t_5 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":517
- * curr_stat = os.stat(absolute_filename)
- * curr_stat = (curr_stat.st_size, curr_stat.st_mtime)
- * except: # <<<<<<<<<<<<<<
- * curr_stat = None
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":559
+ * try:
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ * if f_locals_back is not None: # <<<<<<<<<<<<<<
+ * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None)
+ * if return_values_dict is None:
*/
- /*except:*/ {
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._handle_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_1) < 0) __PYX_ERR(0, 517, __pyx_L17_except_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = (__pyx_v_f_locals_back != Py_None);
+ if (__pyx_t_6) {
- /* "_pydevd_bundle/pydevd_cython.pyx":518
- * curr_stat = (curr_stat.st_size, curr_stat.st_mtime)
- * except:
- * curr_stat = None # <<<<<<<<<<<<<<
- *
- * last_stat = self.filename_to_stat_info.get(absolute_filename)
+ /* "_pydevd_bundle/pydevd_cython.pyx":560
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ * if f_locals_back is not None:
+ * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None) # <<<<<<<<<<<<<<
+ * if return_values_dict is None:
+ * return_values_dict = {}
*/
- __Pyx_INCREF(Py_None);
- __Pyx_XDECREF_SET(__pyx_v_curr_stat, Py_None);
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_locals_back, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 560, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_RETURN_VALUES_DICT); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 560, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_9 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_t_7, Py_None};
+ __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_9, 2+__pyx_t_9);
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L16_exception_handled;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 560, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
}
- __pyx_L17_except_error:;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":514
- * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {}
- *
- * try: # <<<<<<<<<<<<<<
- * curr_stat = os.stat(absolute_filename)
- * curr_stat = (curr_stat.st_size, curr_stat.st_mtime)
- */
- __Pyx_XGIVEREF(__pyx_t_10);
- __Pyx_XGIVEREF(__pyx_t_11);
- __Pyx_XGIVEREF(__pyx_t_12);
- __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
- goto __pyx_L4_error;
- __pyx_L16_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_10);
- __Pyx_XGIVEREF(__pyx_t_11);
- __Pyx_XGIVEREF(__pyx_t_12);
- __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
- __pyx_L22_try_end:;
- }
+ __pyx_v_return_values_dict = __pyx_t_5;
+ __pyx_t_5 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":520
- * curr_stat = None
- *
- * last_stat = self.filename_to_stat_info.get(absolute_filename) # <<<<<<<<<<<<<<
- * if last_stat != curr_stat:
- * self.filename_to_stat_info[absolute_filename] = curr_stat
+ /* "_pydevd_bundle/pydevd_cython.pyx":561
+ * if f_locals_back is not None:
+ * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None)
+ * if return_values_dict is None: # <<<<<<<<<<<<<<
+ * return_values_dict = {}
+ * f_locals_back[RETURN_VALUES_DICT] = return_values_dict
*/
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filename_to_stat_info); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 520, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_get); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 520, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_8);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_7, function);
- }
- }
- __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_v_absolute_filename) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_absolute_filename);
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 520, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF_SET(__pyx_v_last_stat, __pyx_t_1);
- __pyx_t_1 = 0;
+ __pyx_t_6 = (__pyx_v_return_values_dict == Py_None);
+ if (__pyx_t_6) {
- /* "_pydevd_bundle/pydevd_cython.pyx":521
- *
- * last_stat = self.filename_to_stat_info.get(absolute_filename)
- * if last_stat != curr_stat: # <<<<<<<<<<<<<<
- * self.filename_to_stat_info[absolute_filename] = curr_stat
- * lines_ignored.clear()
+ /* "_pydevd_bundle/pydevd_cython.pyx":562
+ * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None)
+ * if return_values_dict is None:
+ * return_values_dict = {} # <<<<<<<<<<<<<<
+ * f_locals_back[RETURN_VALUES_DICT] = return_values_dict
+ * name = self.get_func_name(frame)
*/
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_last_stat, __pyx_v_curr_stat, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 521, __pyx_L4_error)
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 521, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_2) {
+ __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 562, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF_SET(__pyx_v_return_values_dict, __pyx_t_5);
+ __pyx_t_5 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":522
- * last_stat = self.filename_to_stat_info.get(absolute_filename)
- * if last_stat != curr_stat:
- * self.filename_to_stat_info[absolute_filename] = curr_stat # <<<<<<<<<<<<<<
- * lines_ignored.clear()
- * try:
+ /* "_pydevd_bundle/pydevd_cython.pyx":563
+ * if return_values_dict is None:
+ * return_values_dict = {}
+ * f_locals_back[RETURN_VALUES_DICT] = return_values_dict # <<<<<<<<<<<<<<
+ * name = self.get_func_name(frame)
+ * return_values_dict[name] = arg
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filename_to_stat_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 522, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_v_absolute_filename, __pyx_v_curr_stat) < 0)) __PYX_ERR(0, 522, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_RETURN_VALUES_DICT); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 563, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ if (unlikely((PyObject_SetItem(__pyx_v_f_locals_back, __pyx_t_5, __pyx_v_return_values_dict) < 0))) __PYX_ERR(0, 563, __pyx_L6_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":523
- * if last_stat != curr_stat:
- * self.filename_to_stat_info[absolute_filename] = curr_stat
- * lines_ignored.clear() # <<<<<<<<<<<<<<
- * try:
- * linecache.checkcache(absolute_filename)
+ /* "_pydevd_bundle/pydevd_cython.pyx":561
+ * if f_locals_back is not None:
+ * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None)
+ * if return_values_dict is None: # <<<<<<<<<<<<<<
+ * return_values_dict = {}
+ * f_locals_back[RETURN_VALUES_DICT] = return_values_dict
*/
- if (unlikely(__pyx_v_lines_ignored == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "clear");
- __PYX_ERR(0, 523, __pyx_L4_error)
}
- __pyx_t_13 = __Pyx_PyDict_Clear(__pyx_v_lines_ignored); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 523, __pyx_L4_error)
-
- /* "_pydevd_bundle/pydevd_cython.pyx":524
- * self.filename_to_stat_info[absolute_filename] = curr_stat
- * lines_ignored.clear()
- * try: # <<<<<<<<<<<<<<
- * linecache.checkcache(absolute_filename)
- * except:
- */
- {
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __Pyx_ExceptionSave(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10);
- __Pyx_XGOTREF(__pyx_t_12);
- __Pyx_XGOTREF(__pyx_t_11);
- __Pyx_XGOTREF(__pyx_t_10);
- /*try:*/ {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":525
- * lines_ignored.clear()
- * try:
- * linecache.checkcache(absolute_filename) # <<<<<<<<<<<<<<
- * except:
- * pydev_log.exception('Error in linecache.checkcache(%r)', absolute_filename)
- */
- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_linecache); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 525, __pyx_L26_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_checkcache); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 525, __pyx_L26_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_7)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_7);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
- }
- }
- __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_7, __pyx_v_absolute_filename) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_absolute_filename);
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 525, __pyx_L26_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":524
- * self.filename_to_stat_info[absolute_filename] = curr_stat
- * lines_ignored.clear()
- * try: # <<<<<<<<<<<<<<
- * linecache.checkcache(absolute_filename)
- * except:
+ /* "_pydevd_bundle/pydevd_cython.pyx":564
+ * return_values_dict = {}
+ * f_locals_back[RETURN_VALUES_DICT] = return_values_dict
+ * name = self.get_func_name(frame) # <<<<<<<<<<<<<<
+ * return_values_dict[name] = arg
+ * except:
*/
- }
- __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- goto __pyx_L33_try_end;
- __pyx_L26_error:;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_5 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->get_func_name(__pyx_v_self, __pyx_v_frame); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 564, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_v_name = __pyx_t_5;
+ __pyx_t_5 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":526
- * try:
- * linecache.checkcache(absolute_filename)
- * except: # <<<<<<<<<<<<<<
- * pydev_log.exception('Error in linecache.checkcache(%r)', absolute_filename)
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":565
+ * f_locals_back[RETURN_VALUES_DICT] = return_values_dict
+ * name = self.get_func_name(frame)
+ * return_values_dict[name] = arg # <<<<<<<<<<<<<<
+ * except:
+ * pydev_log.exception()
*/
- /*except:*/ {
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._handle_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_8, &__pyx_t_7) < 0) __PYX_ERR(0, 526, __pyx_L28_except_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_GOTREF(__pyx_t_7);
+ if (unlikely((PyObject_SetItem(__pyx_v_return_values_dict, __pyx_v_name, __pyx_v_arg) < 0))) __PYX_ERR(0, 565, __pyx_L6_error)
- /* "_pydevd_bundle/pydevd_cython.pyx":527
- * linecache.checkcache(absolute_filename)
- * except:
- * pydev_log.exception('Error in linecache.checkcache(%r)', absolute_filename) # <<<<<<<<<<<<<<
- *
- * from_user_input = main_debugger.filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename)
+ /* "_pydevd_bundle/pydevd_cython.pyx":559
+ * try:
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ * if f_locals_back is not None: # <<<<<<<<<<<<<<
+ * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None)
+ * if return_values_dict is None:
*/
- __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 527, __pyx_L28_except_error)
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_exception); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 527, __pyx_L28_except_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __pyx_t_14 = NULL;
- __pyx_t_16 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_15))) {
- __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_15);
- if (likely(__pyx_t_14)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15);
- __Pyx_INCREF(__pyx_t_14);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_15, function);
- __pyx_t_16 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_15)) {
- PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_kp_s_Error_in_linecache_checkcache_r, __pyx_v_absolute_filename};
- __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 527, __pyx_L28_except_error)
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_15)) {
- PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_kp_s_Error_in_linecache_checkcache_r, __pyx_v_absolute_filename};
- __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 527, __pyx_L28_except_error)
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- } else
- #endif
- {
- __pyx_t_17 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 527, __pyx_L28_except_error)
- __Pyx_GOTREF(__pyx_t_17);
- if (__pyx_t_14) {
- __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_14); __pyx_t_14 = NULL;
- }
- __Pyx_INCREF(__pyx_kp_s_Error_in_linecache_checkcache_r);
- __Pyx_GIVEREF(__pyx_kp_s_Error_in_linecache_checkcache_r);
- PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_16, __pyx_kp_s_Error_in_linecache_checkcache_r);
- __Pyx_INCREF(__pyx_v_absolute_filename);
- __Pyx_GIVEREF(__pyx_v_absolute_filename);
- PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_16, __pyx_v_absolute_filename);
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_17, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 527, __pyx_L28_except_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
- }
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- goto __pyx_L27_exception_handled;
- }
- __pyx_L28_except_error:;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":524
- * self.filename_to_stat_info[absolute_filename] = curr_stat
- * lines_ignored.clear()
- * try: # <<<<<<<<<<<<<<
- * linecache.checkcache(absolute_filename)
- * except:
+ /* "_pydevd_bundle/pydevd_cython.pyx":557
+ * # ENDIF
+ * try:
+ * try: # <<<<<<<<<<<<<<
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ * if f_locals_back is not None:
*/
- __Pyx_XGIVEREF(__pyx_t_12);
- __Pyx_XGIVEREF(__pyx_t_11);
- __Pyx_XGIVEREF(__pyx_t_10);
- __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10);
- goto __pyx_L4_error;
- __pyx_L27_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_12);
- __Pyx_XGIVEREF(__pyx_t_11);
- __Pyx_XGIVEREF(__pyx_t_10);
- __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10);
- __pyx_L33_try_end:;
- }
+ }
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L11_try_end;
+ __pyx_L6_error:;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":521
- *
- * last_stat = self.filename_to_stat_info.get(absolute_filename)
- * if last_stat != curr_stat: # <<<<<<<<<<<<<<
- * self.filename_to_stat_info[absolute_filename] = curr_stat
- * lines_ignored.clear()
+ /* "_pydevd_bundle/pydevd_cython.pyx":566
+ * name = self.get_func_name(frame)
+ * return_values_dict[name] = arg
+ * except: # <<<<<<<<<<<<<<
+ * pydev_log.exception()
+ * finally:
*/
- }
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._show_return_values", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 566, __pyx_L8_except_error)
+ __Pyx_XGOTREF(__pyx_t_5);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_7);
- /* "_pydevd_bundle/pydevd_cython.pyx":529
- * pydev_log.exception('Error in linecache.checkcache(%r)', absolute_filename)
- *
- * from_user_input = main_debugger.filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename) # <<<<<<<<<<<<<<
- * if from_user_input:
- * merged = {}
+ /* "_pydevd_bundle/pydevd_cython.pyx":567
+ * return_values_dict[name] = arg
+ * except:
+ * pydev_log.exception() # <<<<<<<<<<<<<<
+ * finally:
+ * f_locals_back = None
*/
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_filename_to_lines_where_exceptio); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 529, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 529, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_8);
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 567, __pyx_L8_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_exception); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 567, __pyx_L8_except_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_11))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
+ __Pyx_INCREF(__pyx_t_10);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
+ __Pyx_DECREF_SET(__pyx_t_11, function);
+ __pyx_t_9 = 1;
}
}
- __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_8, __pyx_v_canonical_normalized_filename) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_canonical_normalized_filename);
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 529, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF_SET(__pyx_v_from_user_input, __pyx_t_7);
- __pyx_t_7 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":530
- *
- * from_user_input = main_debugger.filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename)
- * if from_user_input: # <<<<<<<<<<<<<<
- * merged = {}
- * merged.update(lines_ignored)
- */
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_user_input); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 530, __pyx_L4_error)
- if (__pyx_t_2) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":531
- * from_user_input = main_debugger.filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename)
- * if from_user_input:
- * merged = {} # <<<<<<<<<<<<<<
- * merged.update(lines_ignored)
- * # Override what we have with the related entries that the user entered
- */
- __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 531, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_XDECREF_SET(__pyx_v_merged, ((PyObject*)__pyx_t_7));
- __pyx_t_7 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":532
- * if from_user_input:
- * merged = {}
- * merged.update(lines_ignored) # <<<<<<<<<<<<<<
- * # Override what we have with the related entries that the user entered
- * merged.update(from_user_input)
- */
- __pyx_t_7 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_update, __pyx_v_merged, __pyx_v_lines_ignored); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 532, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 567, __pyx_L8_except_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ goto __pyx_L7_exception_handled;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":534
- * merged.update(lines_ignored)
- * # Override what we have with the related entries that the user entered
- * merged.update(from_user_input) # <<<<<<<<<<<<<<
- * else:
- * merged = lines_ignored
+ /* "_pydevd_bundle/pydevd_cython.pyx":557
+ * # ENDIF
+ * try:
+ * try: # <<<<<<<<<<<<<<
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ * if f_locals_back is not None:
*/
- __pyx_t_7 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_update, __pyx_v_merged, __pyx_v_from_user_input); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 534, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_L8_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L4_error;
+ __pyx_L7_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ __pyx_L11_try_end:;
+ }
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":530
+ /* "_pydevd_bundle/pydevd_cython.pyx":569
+ * pydev_log.exception()
+ * finally:
+ * f_locals_back = None # <<<<<<<<<<<<<<
*
- * from_user_input = main_debugger.filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename)
- * if from_user_input: # <<<<<<<<<<<<<<
- * merged = {}
- * merged.update(lines_ignored)
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
*/
- goto __pyx_L36;
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":536
- * merged.update(from_user_input)
- * else:
- * merged = lines_ignored # <<<<<<<<<<<<<<
- *
- * exc_lineno = check_trace_obj.tb_lineno
- */
- /*else*/ {
- __Pyx_INCREF(__pyx_v_lines_ignored);
- __Pyx_XDECREF_SET(__pyx_v_merged, __pyx_v_lines_ignored);
- }
- __pyx_L36:;
+ /*finally:*/ {
+ /*normal exit:*/{
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_f_locals_back, Py_None);
+ goto __pyx_L5;
+ }
+ __pyx_L4_error:;
+ /*exception exit:*/{
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
+ if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0)) __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_15);
+ __Pyx_XGOTREF(__pyx_t_16);
+ __Pyx_XGOTREF(__pyx_t_17);
+ __pyx_t_12 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
+ {
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_f_locals_back, Py_None);
+ }
+ if (PY_MAJOR_VERSION >= 3) {
+ __Pyx_XGIVEREF(__pyx_t_15);
+ __Pyx_XGIVEREF(__pyx_t_16);
+ __Pyx_XGIVEREF(__pyx_t_17);
+ __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
+ }
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_ErrRestore(__pyx_t_3, __pyx_t_2, __pyx_t_1);
+ __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
+ __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
+ goto __pyx_L1_error;
+ }
+ __pyx_L5:;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":538
- * merged = lines_ignored
- *
- * exc_lineno = check_trace_obj.tb_lineno # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":552
*
- * # print ('lines ignored', lines_ignored)
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _show_return_values(self, frame, arg): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _show_return_values(self, frame, arg):
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_check_trace_obj, __pyx_n_s_tb_lineno); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 538, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_XDECREF_SET(__pyx_v_exc_lineno, __pyx_t_7);
- __pyx_t_7 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":544
- * # print ('merged', merged, 'curr', exc_lineno)
- *
- * if exc_lineno not in merged: # Note: check on merged but update lines_ignored. # <<<<<<<<<<<<<<
- * try:
- * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals)
- */
- if (unlikely(__pyx_v_merged == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(0, 544, __pyx_L4_error)
- }
- __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_exc_lineno, __pyx_v_merged, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 544, __pyx_L4_error)
- __pyx_t_3 = (__pyx_t_2 != 0);
- if (__pyx_t_3) {
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_11);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._show_return_values", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_f_locals_back);
+ __Pyx_XDECREF(__pyx_v_return_values_dict);
+ __Pyx_XDECREF(__pyx_v_name);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":545
+/* "_pydevd_bundle/pydevd_cython.pyx":572
*
- * if exc_lineno not in merged: # Note: check on merged but update lines_ignored.
- * try: # <<<<<<<<<<<<<<
- * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals)
- * except:
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _remove_return_values(self, py_db, frame): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _remove_return_values(self, py_db, frame):
*/
- {
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
- __Pyx_XGOTREF(__pyx_t_10);
- __Pyx_XGOTREF(__pyx_t_11);
- __Pyx_XGOTREF(__pyx_t_12);
- /*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":546
- * if exc_lineno not in merged: # Note: check on merged but update lines_ignored.
- * try:
- * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals) # <<<<<<<<<<<<<<
- * except:
- * pydev_log.exception('Error in linecache.getline(%r, %s, f_globals)', absolute_filename, exc_lineno)
- */
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_linecache); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 546, __pyx_L38_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_getline); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 546, __pyx_L38_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_check_trace_obj, __pyx_n_s_tb_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 546, __pyx_L38_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_f_globals); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 546, __pyx_L38_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = NULL;
- __pyx_t_16 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_1)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
- __pyx_t_16 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[4] = {__pyx_t_1, __pyx_v_absolute_filename, __pyx_v_exc_lineno, __pyx_t_9};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_16, 3+__pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 546, __pyx_L38_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[4] = {__pyx_t_1, __pyx_v_absolute_filename, __pyx_v_exc_lineno, __pyx_t_9};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_16, 3+__pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 546, __pyx_L38_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(3+__pyx_t_16); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 546, __pyx_L38_error)
- __Pyx_GOTREF(__pyx_t_15);
- if (__pyx_t_1) {
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_1); __pyx_t_1 = NULL;
- }
- __Pyx_INCREF(__pyx_v_absolute_filename);
- __Pyx_GIVEREF(__pyx_v_absolute_filename);
- PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_16, __pyx_v_absolute_filename);
- __Pyx_INCREF(__pyx_v_exc_lineno);
- __Pyx_GIVEREF(__pyx_v_exc_lineno);
- PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_16, __pyx_v_exc_lineno);
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_15, 2+__pyx_t_16, __pyx_t_9);
- __pyx_t_9 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 546, __pyx_L38_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- }
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_XDECREF_SET(__pyx_v_line, __pyx_t_7);
- __pyx_t_7 = 0;
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__remove_return_values(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame) {
+ PyObject *__pyx_v_f_locals_back = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ unsigned int __pyx_t_8;
+ int __pyx_t_9;
+ PyObject *__pyx_t_10 = NULL;
+ PyObject *__pyx_t_11 = NULL;
+ int __pyx_t_12;
+ int __pyx_t_13;
+ char const *__pyx_t_14;
+ PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_16 = NULL;
+ PyObject *__pyx_t_17 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_remove_return_values", 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":545
- *
- * if exc_lineno not in merged: # Note: check on merged but update lines_ignored.
- * try: # <<<<<<<<<<<<<<
- * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals)
- * except:
+ /* "_pydevd_bundle/pydevd_cython.pyx":576
+ * # def _remove_return_values(self, py_db, frame):
+ * # ENDIF
+ * try: # <<<<<<<<<<<<<<
+ * try:
+ * # Showing return values was turned off, we should remove them from locals dict.
*/
- }
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
- goto __pyx_L45_try_end;
- __pyx_L38_error:;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ /*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":547
- * try:
- * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals)
- * except: # <<<<<<<<<<<<<<
- * pydev_log.exception('Error in linecache.getline(%r, %s, f_globals)', absolute_filename, exc_lineno)
- * line = ''
+ /* "_pydevd_bundle/pydevd_cython.pyx":577
+ * # ENDIF
+ * try:
+ * try: # <<<<<<<<<<<<<<
+ * # Showing return values was turned off, we should remove them from locals dict.
+ * # The values can be in the current frame or in the back one
*/
- /*except:*/ {
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._handle_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_15) < 0) __PYX_ERR(0, 547, __pyx_L40_except_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_GOTREF(__pyx_t_15);
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+ /*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":548
- * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals)
- * except:
- * pydev_log.exception('Error in linecache.getline(%r, %s, f_globals)', absolute_filename, exc_lineno) # <<<<<<<<<<<<<<
- * line = ''
+ /* "_pydevd_bundle/pydevd_cython.pyx":580
+ * # Showing return values was turned off, we should remove them from locals dict.
+ * # The values can be in the current frame or in the back one
+ * frame.f_locals.pop(RETURN_VALUES_DICT, None) # <<<<<<<<<<<<<<
*
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
*/
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 548, __pyx_L40_except_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_exception); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 548, __pyx_L40_except_error)
- __Pyx_GOTREF(__pyx_t_17);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = NULL;
- __pyx_t_16 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_17))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_17);
- if (likely(__pyx_t_1)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_17);
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_17, function);
- __pyx_t_16 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_17)) {
- PyObject *__pyx_temp[4] = {__pyx_t_1, __pyx_kp_s_Error_in_linecache_getline_r_s_f, __pyx_v_absolute_filename, __pyx_v_exc_lineno};
- __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_17, __pyx_temp+1-__pyx_t_16, 3+__pyx_t_16); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 548, __pyx_L40_except_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_17)) {
- PyObject *__pyx_temp[4] = {__pyx_t_1, __pyx_kp_s_Error_in_linecache_getline_r_s_f, __pyx_v_absolute_filename, __pyx_v_exc_lineno};
- __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_17, __pyx_temp+1-__pyx_t_16, 3+__pyx_t_16); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 548, __pyx_L40_except_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- } else
- #endif
- {
- __pyx_t_14 = PyTuple_New(3+__pyx_t_16); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 548, __pyx_L40_except_error)
- __Pyx_GOTREF(__pyx_t_14);
- if (__pyx_t_1) {
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_1); __pyx_t_1 = NULL;
- }
- __Pyx_INCREF(__pyx_kp_s_Error_in_linecache_getline_r_s_f);
- __Pyx_GIVEREF(__pyx_kp_s_Error_in_linecache_getline_r_s_f);
- PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_16, __pyx_kp_s_Error_in_linecache_getline_r_s_f);
- __Pyx_INCREF(__pyx_v_absolute_filename);
- __Pyx_GIVEREF(__pyx_v_absolute_filename);
- PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_16, __pyx_v_absolute_filename);
- __Pyx_INCREF(__pyx_v_exc_lineno);
- __Pyx_GIVEREF(__pyx_v_exc_lineno);
- PyTuple_SET_ITEM(__pyx_t_14, 2+__pyx_t_16, __pyx_v_exc_lineno);
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_17, __pyx_t_14, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 548, __pyx_L40_except_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- }
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_locals); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 580, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_pop); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 580, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_RETURN_VALUES_DICT); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 580, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = NULL;
+ __pyx_t_8 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ __pyx_t_8 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_5, Py_None};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 580, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":549
- * except:
- * pydev_log.exception('Error in linecache.getline(%r, %s, f_globals)', absolute_filename, exc_lineno)
- * line = '' # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":582
+ * frame.f_locals.pop(RETURN_VALUES_DICT, None)
*
- * if IGNORE_EXCEPTION_TAG.match(line) is not None:
+ * f_locals_back = getattr(frame.f_back, "f_locals", None) # <<<<<<<<<<<<<<
+ * if f_locals_back is not None:
+ * f_locals_back.pop(RETURN_VALUES_DICT, None)
*/
- __Pyx_INCREF(__pyx_kp_s_);
- __Pyx_XDECREF_SET(__pyx_v_line, __pyx_kp_s_);
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- goto __pyx_L39_exception_handled;
- }
- __pyx_L40_except_error:;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 582, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_GetAttr3(__pyx_t_4, __pyx_n_s_f_locals, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 582, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_f_locals_back = __pyx_t_6;
+ __pyx_t_6 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":545
+ /* "_pydevd_bundle/pydevd_cython.pyx":583
*
- * if exc_lineno not in merged: # Note: check on merged but update lines_ignored.
- * try: # <<<<<<<<<<<<<<
- * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals)
- * except:
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ * if f_locals_back is not None: # <<<<<<<<<<<<<<
+ * f_locals_back.pop(RETURN_VALUES_DICT, None)
+ * except:
*/
- __Pyx_XGIVEREF(__pyx_t_10);
- __Pyx_XGIVEREF(__pyx_t_11);
- __Pyx_XGIVEREF(__pyx_t_12);
- __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
- goto __pyx_L4_error;
- __pyx_L39_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_10);
- __Pyx_XGIVEREF(__pyx_t_11);
- __Pyx_XGIVEREF(__pyx_t_12);
- __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
- __pyx_L45_try_end:;
- }
+ __pyx_t_9 = (__pyx_v_f_locals_back != Py_None);
+ if (__pyx_t_9) {
- /* "_pydevd_bundle/pydevd_cython.pyx":551
- * line = ''
- *
- * if IGNORE_EXCEPTION_TAG.match(line) is not None: # <<<<<<<<<<<<<<
- * lines_ignored[exc_lineno] = 1
- * return False
+ /* "_pydevd_bundle/pydevd_cython.pyx":584
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ * if f_locals_back is not None:
+ * f_locals_back.pop(RETURN_VALUES_DICT, None) # <<<<<<<<<<<<<<
+ * except:
+ * pydev_log.exception()
*/
- __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_IGNORE_EXCEPTION_TAG); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 551, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_match); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 551, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_8);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_locals_back, __pyx_n_s_pop); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 584, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_RETURN_VALUES_DICT); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 584, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = NULL;
+ __pyx_t_8 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_7, function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_8 = 1;
}
}
- __pyx_t_15 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_v_line) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_line);
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 551, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_3 = (__pyx_t_15 != Py_None);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- __pyx_t_2 = (__pyx_t_3 != 0);
- if (__pyx_t_2) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":552
- *
- * if IGNORE_EXCEPTION_TAG.match(line) is not None:
- * lines_ignored[exc_lineno] = 1 # <<<<<<<<<<<<<<
- * return False
- * else:
- */
- if (unlikely(__pyx_v_lines_ignored == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 552, __pyx_L4_error)
- }
- if (unlikely(PyDict_SetItem(__pyx_v_lines_ignored, __pyx_v_exc_lineno, __pyx_int_1) < 0)) __PYX_ERR(0, 552, __pyx_L4_error)
-
- /* "_pydevd_bundle/pydevd_cython.pyx":553
- * if IGNORE_EXCEPTION_TAG.match(line) is not None:
- * lines_ignored[exc_lineno] = 1
- * return False # <<<<<<<<<<<<<<
- * else:
- * # Put in the cache saying not to ignore
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(Py_False);
- __pyx_r = Py_False;
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_5, Py_None};
+ __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- goto __pyx_L3_return;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":551
- * line = ''
- *
- * if IGNORE_EXCEPTION_TAG.match(line) is not None: # <<<<<<<<<<<<<<
- * lines_ignored[exc_lineno] = 1
- * return False
- */
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":556
- * else:
- * # Put in the cache saying not to ignore
- * lines_ignored[exc_lineno] = 0 # <<<<<<<<<<<<<<
- * else:
- * # Ok, dict has it already cached, so, let's check it...
- */
- /*else*/ {
- if (unlikely(__pyx_v_lines_ignored == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 556, __pyx_L4_error)
- }
- if (unlikely(PyDict_SetItem(__pyx_v_lines_ignored, __pyx_v_exc_lineno, __pyx_int_0) < 0)) __PYX_ERR(0, 556, __pyx_L4_error)
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 584, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
}
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":544
- * # print ('merged', merged, 'curr', exc_lineno)
+ /* "_pydevd_bundle/pydevd_cython.pyx":583
*
- * if exc_lineno not in merged: # Note: check on merged but update lines_ignored. # <<<<<<<<<<<<<<
- * try:
- * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals)
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ * if f_locals_back is not None: # <<<<<<<<<<<<<<
+ * f_locals_back.pop(RETURN_VALUES_DICT, None)
+ * except:
*/
- goto __pyx_L37;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":559
- * else:
- * # Ok, dict has it already cached, so, let's check it...
- * if merged.get(exc_lineno, 0): # <<<<<<<<<<<<<<
- * return False
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":577
+ * # ENDIF
+ * try:
+ * try: # <<<<<<<<<<<<<<
+ * # Showing return values was turned off, we should remove them from locals dict.
+ * # The values can be in the current frame or in the back one
*/
- /*else*/ {
- if (unlikely(__pyx_v_merged == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 559, __pyx_L4_error)
- }
- __pyx_t_15 = __Pyx_PyDict_GetItemDefault(__pyx_v_merged, __pyx_v_exc_lineno, __pyx_int_0); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 559, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_15);
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_15); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 559, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- if (__pyx_t_2) {
+ }
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L11_try_end;
+ __pyx_L6_error:;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":560
- * # Ok, dict has it already cached, so, let's check it...
- * if merged.get(exc_lineno, 0):
- * return False # <<<<<<<<<<<<<<
- *
- * thread = self._args[3]
+ /* "_pydevd_bundle/pydevd_cython.pyx":585
+ * if f_locals_back is not None:
+ * f_locals_back.pop(RETURN_VALUES_DICT, None)
+ * except: # <<<<<<<<<<<<<<
+ * pydev_log.exception()
+ * finally:
*/
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(Py_False);
- __pyx_r = Py_False;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- goto __pyx_L3_return;
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._remove_return_values", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_4, &__pyx_t_5) < 0) __PYX_ERR(0, 585, __pyx_L8_except_error)
+ __Pyx_XGOTREF(__pyx_t_6);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_5);
- /* "_pydevd_bundle/pydevd_cython.pyx":559
- * else:
- * # Ok, dict has it already cached, so, let's check it...
- * if merged.get(exc_lineno, 0): # <<<<<<<<<<<<<<
- * return False
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":586
+ * f_locals_back.pop(RETURN_VALUES_DICT, None)
+ * except:
+ * pydev_log.exception() # <<<<<<<<<<<<<<
+ * finally:
+ * f_locals_back = None
*/
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 586, __pyx_L8_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_exception); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 586, __pyx_L8_except_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = NULL;
+ __pyx_t_8 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_11))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
+ __Pyx_INCREF(__pyx_t_10);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_11, function);
+ __pyx_t_8 = 1;
}
}
- __pyx_L37:;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":503
- *
- * if main_debugger.ignore_exceptions_thrown_in_lines_with_ignore_exception:
- * for check_trace_obj in (initial_trace_obj, trace_obj): # <<<<<<<<<<<<<<
- * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame)
- * absolute_filename = abs_real_path_and_base[0]
- */
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 586, __pyx_L8_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ goto __pyx_L7_exception_handled;
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":502
- * trace_obj = trace_obj.tb_next
- *
- * if main_debugger.ignore_exceptions_thrown_in_lines_with_ignore_exception: # <<<<<<<<<<<<<<
- * for check_trace_obj in (initial_trace_obj, trace_obj):
- * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame)
+ /* "_pydevd_bundle/pydevd_cython.pyx":577
+ * # ENDIF
+ * try:
+ * try: # <<<<<<<<<<<<<<
+ * # Showing return values was turned off, we should remove them from locals dict.
+ * # The values can be in the current frame or in the back one
*/
+ __pyx_L8_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L4_error;
+ __pyx_L7_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ __pyx_L11_try_end:;
}
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":562
- * return False
- *
- * thread = self._args[3] # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":588
+ * pydev_log.exception()
+ * finally:
+ * f_locals_back = None # <<<<<<<<<<<<<<
*
- * try:
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
*/
- if (unlikely(__pyx_v_self->_args == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 562, __pyx_L4_error)
+ /*finally:*/ {
+ /*normal exit:*/{
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_f_locals_back, Py_None);
+ goto __pyx_L5;
}
- __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 562, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_v_thread = __pyx_t_5;
- __pyx_t_5 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":564
- * thread = self._args[3]
- *
- * try: # <<<<<<<<<<<<<<
- * frame_id_to_frame = {}
- * frame_id_to_frame[id(frame)] = frame
- */
- {
+ __pyx_L4_error:;
+ /*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
- __Pyx_ExceptionSave(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10);
- __Pyx_XGOTREF(__pyx_t_12);
- __Pyx_XGOTREF(__pyx_t_11);
- __Pyx_XGOTREF(__pyx_t_10);
- /*try:*/ {
+ __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
+ if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0)) __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_15);
+ __Pyx_XGOTREF(__pyx_t_16);
+ __Pyx_XGOTREF(__pyx_t_17);
+ __pyx_t_12 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
+ {
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_f_locals_back, Py_None);
+ }
+ if (PY_MAJOR_VERSION >= 3) {
+ __Pyx_XGIVEREF(__pyx_t_15);
+ __Pyx_XGIVEREF(__pyx_t_16);
+ __Pyx_XGIVEREF(__pyx_t_17);
+ __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
+ }
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_ErrRestore(__pyx_t_3, __pyx_t_2, __pyx_t_1);
+ __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
+ __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
+ goto __pyx_L1_error;
+ }
+ __pyx_L5:;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":565
+ /* "_pydevd_bundle/pydevd_cython.pyx":572
*
- * try:
- * frame_id_to_frame = {} # <<<<<<<<<<<<<<
- * frame_id_to_frame[id(frame)] = frame
- * f = trace_obj.tb_frame
- */
- __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 565, __pyx_L50_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_v_frame_id_to_frame = ((PyObject*)__pyx_t_5);
- __pyx_t_5 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":566
- * try:
- * frame_id_to_frame = {}
- * frame_id_to_frame[id(frame)] = frame # <<<<<<<<<<<<<<
- * f = trace_obj.tb_frame
- * while f is not None:
- */
- __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_frame); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 566, __pyx_L50_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (unlikely(PyDict_SetItem(__pyx_v_frame_id_to_frame, __pyx_t_5, __pyx_v_frame) < 0)) __PYX_ERR(0, 566, __pyx_L50_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":567
- * frame_id_to_frame = {}
- * frame_id_to_frame[id(frame)] = frame
- * f = trace_obj.tb_frame # <<<<<<<<<<<<<<
- * while f is not None:
- * frame_id_to_frame[id(f)] = f
- */
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace_obj, __pyx_n_s_tb_frame); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 567, __pyx_L50_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_v_f = __pyx_t_5;
- __pyx_t_5 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":568
- * frame_id_to_frame[id(frame)] = frame
- * f = trace_obj.tb_frame
- * while f is not None: # <<<<<<<<<<<<<<
- * frame_id_to_frame[id(f)] = f
- * f = f.f_back
- */
- while (1) {
- __pyx_t_2 = (__pyx_v_f != Py_None);
- __pyx_t_3 = (__pyx_t_2 != 0);
- if (!__pyx_t_3) break;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":569
- * f = trace_obj.tb_frame
- * while f is not None:
- * frame_id_to_frame[id(f)] = f # <<<<<<<<<<<<<<
- * f = f.f_back
- * f = None
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _remove_return_values(self, py_db, frame): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _remove_return_values(self, py_db, frame):
*/
- __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_f); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 569, __pyx_L50_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (unlikely(PyDict_SetItem(__pyx_v_frame_id_to_frame, __pyx_t_5, __pyx_v_f) < 0)) __PYX_ERR(0, 569, __pyx_L50_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":570
- * while f is not None:
- * frame_id_to_frame[id(f)] = f
- * f = f.f_back # <<<<<<<<<<<<<<
- * f = None
- *
- */
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 570, __pyx_L50_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_5);
- __pyx_t_5 = 0;
- }
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_11);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._remove_return_values", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_f_locals_back);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":571
- * frame_id_to_frame[id(f)] = f
- * f = f.f_back
- * f = None # <<<<<<<<<<<<<<
+/* "_pydevd_bundle/pydevd_cython.pyx":591
*
- * stopped = True
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _get_unfiltered_back_frame(self, py_db, frame): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _get_unfiltered_back_frame(self, py_db, frame):
*/
- __Pyx_INCREF(Py_None);
- __Pyx_DECREF_SET(__pyx_v_f, Py_None);
- /* "_pydevd_bundle/pydevd_cython.pyx":573
- * f = None
- *
- * stopped = True # <<<<<<<<<<<<<<
- * main_debugger.send_caught_exception_stack(thread, arg, id(frame))
- * try:
- */
- __pyx_v_stopped = 1;
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__get_unfiltered_back_frame(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame) {
+ PyObject *__pyx_v_f = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_2;
+ int __pyx_t_3;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ unsigned int __pyx_t_7;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_get_unfiltered_back_frame", 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":574
- *
- * stopped = True
- * main_debugger.send_caught_exception_stack(thread, arg, id(frame)) # <<<<<<<<<<<<<<
- * try:
- * self.set_suspend(thread, 137)
+ /* "_pydevd_bundle/pydevd_cython.pyx":595
+ * # def _get_unfiltered_back_frame(self, py_db, frame):
+ * # ENDIF
+ * f = frame.f_back # <<<<<<<<<<<<<<
+ * while f is not None:
+ * if not py_db.is_files_filter_enabled:
*/
- __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_send_caught_exception_stack); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 574, __pyx_L50_error)
- __Pyx_GOTREF(__pyx_t_15);
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_frame); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 574, __pyx_L50_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = NULL;
- __pyx_t_16 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_15))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_15);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15);
- __Pyx_INCREF(__pyx_t_8);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_15, function);
- __pyx_t_16 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_15)) {
- PyObject *__pyx_temp[4] = {__pyx_t_8, __pyx_v_thread, __pyx_v_arg, __pyx_t_7};
- __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_16, 3+__pyx_t_16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 574, __pyx_L50_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_15)) {
- PyObject *__pyx_temp[4] = {__pyx_t_8, __pyx_v_thread, __pyx_v_arg, __pyx_t_7};
- __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_16, 3+__pyx_t_16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 574, __pyx_L50_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(3+__pyx_t_16); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 574, __pyx_L50_error)
- __Pyx_GOTREF(__pyx_t_9);
- if (__pyx_t_8) {
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
- }
- __Pyx_INCREF(__pyx_v_thread);
- __Pyx_GIVEREF(__pyx_v_thread);
- PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_16, __pyx_v_thread);
- __Pyx_INCREF(__pyx_v_arg);
- __Pyx_GIVEREF(__pyx_v_arg);
- PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_16, __pyx_v_arg);
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_16, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 574, __pyx_L50_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 595, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_f = __pyx_t_1;
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":575
- * stopped = True
- * main_debugger.send_caught_exception_stack(thread, arg, id(frame))
- * try: # <<<<<<<<<<<<<<
- * self.set_suspend(thread, 137)
- * self.do_wait_suspend(thread, frame, event, arg, exception_type=exception_type)
+ /* "_pydevd_bundle/pydevd_cython.pyx":596
+ * # ENDIF
+ * f = frame.f_back
+ * while f is not None: # <<<<<<<<<<<<<<
+ * if not py_db.is_files_filter_enabled:
+ * return f
*/
- /*try:*/ {
+ while (1) {
+ __pyx_t_2 = (__pyx_v_f != Py_None);
+ if (!__pyx_t_2) break;
- /* "_pydevd_bundle/pydevd_cython.pyx":576
- * main_debugger.send_caught_exception_stack(thread, arg, id(frame))
- * try:
- * self.set_suspend(thread, 137) # <<<<<<<<<<<<<<
- * self.do_wait_suspend(thread, frame, event, arg, exception_type=exception_type)
- * finally:
+ /* "_pydevd_bundle/pydevd_cython.pyx":597
+ * f = frame.f_back
+ * while f is not None:
+ * if not py_db.is_files_filter_enabled: # <<<<<<<<<<<<<<
+ * return f
+ *
*/
- __pyx_t_15 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 576, __pyx_L59_error)
- __Pyx_GOTREF(__pyx_t_15);
- __pyx_t_9 = NULL;
- __pyx_t_16 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_15))) {
- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_15);
- if (likely(__pyx_t_9)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15);
- __Pyx_INCREF(__pyx_t_9);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_15, function);
- __pyx_t_16 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_15)) {
- PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_v_thread, __pyx_int_137};
- __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 576, __pyx_L59_error)
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_15)) {
- PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_v_thread, __pyx_int_137};
- __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 576, __pyx_L59_error)
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- } else
- #endif
- {
- __pyx_t_7 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 576, __pyx_L59_error)
- __Pyx_GOTREF(__pyx_t_7);
- if (__pyx_t_9) {
- __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_9); __pyx_t_9 = NULL;
- }
- __Pyx_INCREF(__pyx_v_thread);
- __Pyx_GIVEREF(__pyx_v_thread);
- PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_16, __pyx_v_thread);
- __Pyx_INCREF(__pyx_int_137);
- __Pyx_GIVEREF(__pyx_int_137);
- PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_16, __pyx_int_137);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 576, __pyx_L59_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_is_files_filter_enabled); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 597, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_3 = (!__pyx_t_2);
+ if (__pyx_t_3) {
- /* "_pydevd_bundle/pydevd_cython.pyx":577
- * try:
- * self.set_suspend(thread, 137)
- * self.do_wait_suspend(thread, frame, event, arg, exception_type=exception_type) # <<<<<<<<<<<<<<
- * finally:
- * main_debugger.send_caught_exception_stack_proceeded(thread)
+ /* "_pydevd_bundle/pydevd_cython.pyx":598
+ * while f is not None:
+ * if not py_db.is_files_filter_enabled:
+ * return f # <<<<<<<<<<<<<<
+ *
+ * else:
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 577, __pyx_L59_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_15 = PyTuple_New(4); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 577, __pyx_L59_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_INCREF(__pyx_v_thread);
- __Pyx_GIVEREF(__pyx_v_thread);
- PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_v_thread);
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_v_frame);
- __Pyx_INCREF(__pyx_v_event);
- __Pyx_GIVEREF(__pyx_v_event);
- PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_v_event);
- __Pyx_INCREF(__pyx_v_arg);
- __Pyx_GIVEREF(__pyx_v_arg);
- PyTuple_SET_ITEM(__pyx_t_15, 3, __pyx_v_arg);
- __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 577, __pyx_L59_error)
- __Pyx_GOTREF(__pyx_t_7);
- if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_exception_type, __pyx_v_exception_type) < 0) __PYX_ERR(0, 577, __pyx_L59_error)
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 577, __pyx_L59_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_f);
+ __pyx_r = __pyx_v_f;
+ goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":579
- * self.do_wait_suspend(thread, frame, event, arg, exception_type=exception_type)
- * finally:
- * main_debugger.send_caught_exception_stack_proceeded(thread) # <<<<<<<<<<<<<<
- * except:
- * pydev_log.exception()
+ /* "_pydevd_bundle/pydevd_cython.pyx":597
+ * f = frame.f_back
+ * while f is not None:
+ * if not py_db.is_files_filter_enabled: # <<<<<<<<<<<<<<
+ * return f
+ *
*/
- /*finally:*/ {
- /*normal exit:*/{
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_send_caught_exception_stack_proc); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 579, __pyx_L50_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_15 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
- __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_7);
- if (likely(__pyx_t_15)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_15);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_7, function);
- }
- }
- __pyx_t_9 = (__pyx_t_15) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_15, __pyx_v_thread) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_thread);
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 579, __pyx_L50_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- goto __pyx_L60;
- }
- __pyx_L59_error:;
- /*exception exit:*/{
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25);
- if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22) < 0)) __Pyx_ErrFetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
- __Pyx_XGOTREF(__pyx_t_20);
- __Pyx_XGOTREF(__pyx_t_21);
- __Pyx_XGOTREF(__pyx_t_22);
- __Pyx_XGOTREF(__pyx_t_23);
- __Pyx_XGOTREF(__pyx_t_24);
- __Pyx_XGOTREF(__pyx_t_25);
- __pyx_t_16 = __pyx_lineno; __pyx_t_18 = __pyx_clineno; __pyx_t_19 = __pyx_filename;
- {
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_send_caught_exception_stack_proc); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 579, __pyx_L62_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_15 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
- __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_7);
- if (likely(__pyx_t_15)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_15);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_7, function);
- }
- }
- __pyx_t_9 = (__pyx_t_15) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_15, __pyx_v_thread) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_thread);
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 579, __pyx_L62_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- if (PY_MAJOR_VERSION >= 3) {
- __Pyx_XGIVEREF(__pyx_t_23);
- __Pyx_XGIVEREF(__pyx_t_24);
- __Pyx_XGIVEREF(__pyx_t_25);
- __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_24, __pyx_t_25);
- }
- __Pyx_XGIVEREF(__pyx_t_20);
- __Pyx_XGIVEREF(__pyx_t_21);
- __Pyx_XGIVEREF(__pyx_t_22);
- __Pyx_ErrRestore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
- __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0;
- __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_18; __pyx_filename = __pyx_t_19;
- goto __pyx_L50_error;
- __pyx_L62_error:;
- if (PY_MAJOR_VERSION >= 3) {
- __Pyx_XGIVEREF(__pyx_t_23);
- __Pyx_XGIVEREF(__pyx_t_24);
- __Pyx_XGIVEREF(__pyx_t_25);
- __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_24, __pyx_t_25);
- }
- __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
- __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
- __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
- __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0;
- goto __pyx_L50_error;
- }
- __pyx_L60:;
- }
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":564
- * thread = self._args[3]
+ /* "_pydevd_bundle/pydevd_cython.pyx":601
+ *
+ * else:
+ * if py_db.apply_files_filter(f, f.f_code.co_filename, False): # <<<<<<<<<<<<<<
+ * f = f.f_back
*
- * try: # <<<<<<<<<<<<<<
- * frame_id_to_frame = {}
- * frame_id_to_frame[id(frame)] = frame
*/
+ /*else*/ {
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 601, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_code); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 601, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 601, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = NULL;
+ __pyx_t_7 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_7 = 1;
+ }
}
- __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- goto __pyx_L55_try_end;
- __pyx_L50_error:;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_5, __pyx_v_f, __pyx_t_6, Py_False};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 3+__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 601, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 601, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_3) {
- /* "_pydevd_bundle/pydevd_cython.pyx":580
- * finally:
- * main_debugger.send_caught_exception_stack_proceeded(thread)
- * except: # <<<<<<<<<<<<<<
- * pydev_log.exception()
+ /* "_pydevd_bundle/pydevd_cython.pyx":602
+ * else:
+ * if py_db.apply_files_filter(f, f.f_code.co_filename, False):
+ * f = f.f_back # <<<<<<<<<<<<<<
*
+ * else:
*/
- /*except:*/ {
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._handle_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_7, &__pyx_t_15) < 0) __PYX_ERR(0, 580, __pyx_L52_except_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GOTREF(__pyx_t_15);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 602, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_1);
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":581
- * main_debugger.send_caught_exception_stack_proceeded(thread)
- * except:
- * pydev_log.exception() # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":601
+ *
+ * else:
+ * if py_db.apply_files_filter(f, f.f_code.co_filename, False): # <<<<<<<<<<<<<<
+ * f = f.f_back
*
- * main_debugger.set_trace_for_frame_and_parents(frame)
*/
- __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 581, __pyx_L52_except_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_exception); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 581, __pyx_L52_except_error)
- __Pyx_GOTREF(__pyx_t_17);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_17))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_17);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_17);
- __Pyx_INCREF(__pyx_t_8);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_17, function);
- }
- }
- __pyx_t_5 = (__pyx_t_8) ? __Pyx_PyObject_CallOneArg(__pyx_t_17, __pyx_t_8) : __Pyx_PyObject_CallNoArg(__pyx_t_17);
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 581, __pyx_L52_except_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- goto __pyx_L51_exception_handled;
+ goto __pyx_L6;
}
- __pyx_L52_except_error:;
- /* "_pydevd_bundle/pydevd_cython.pyx":564
- * thread = self._args[3]
+ /* "_pydevd_bundle/pydevd_cython.pyx":605
*
- * try: # <<<<<<<<<<<<<<
- * frame_id_to_frame = {}
- * frame_id_to_frame[id(frame)] = frame
- */
- __Pyx_XGIVEREF(__pyx_t_12);
- __Pyx_XGIVEREF(__pyx_t_11);
- __Pyx_XGIVEREF(__pyx_t_10);
- __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10);
- goto __pyx_L4_error;
- __pyx_L51_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_12);
- __Pyx_XGIVEREF(__pyx_t_11);
- __Pyx_XGIVEREF(__pyx_t_10);
- __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10);
- __pyx_L55_try_end:;
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":583
- * pydev_log.exception()
+ * else:
+ * return f # <<<<<<<<<<<<<<
*
- * main_debugger.set_trace_for_frame_and_parents(frame) # <<<<<<<<<<<<<<
- * finally:
- * # Make sure the user cannot see the '__exception__' we added after we leave the suspend state.
+ * return f
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_set_trace_for_frame_and_parents); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 583, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_9 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
- if (likely(__pyx_t_9)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_9);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_7, function);
+ /*else*/ {
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_f);
+ __pyx_r = __pyx_v_f;
+ goto __pyx_L0;
}
+ __pyx_L6:;
}
- __pyx_t_15 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_v_frame) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_frame);
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 583, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":586
- * finally:
- * # Make sure the user cannot see the '__exception__' we added after we leave the suspend state.
- * remove_exception_from_frame(frame) # <<<<<<<<<<<<<<
- * # Clear some local variables...
- * frame = None
- */
- /*finally:*/ {
- /*normal exit:*/{
- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_remove_exception_from_frame); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 586, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_9 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
- if (likely(__pyx_t_9)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_9);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_7, function);
- }
- }
- __pyx_t_15 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_v_frame) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_frame);
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 586, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":588
- * remove_exception_from_frame(frame)
- * # Clear some local variables...
- * frame = None # <<<<<<<<<<<<<<
- * trace_obj = None
- * initial_trace_obj = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":607
+ * return f
+ *
+ * return f # <<<<<<<<<<<<<<
+ *
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
*/
- __Pyx_INCREF(Py_None);
- __Pyx_DECREF_SET(__pyx_v_frame, Py_None);
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_f);
+ __pyx_r = __pyx_v_f;
+ goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":589
- * # Clear some local variables...
- * frame = None
- * trace_obj = None # <<<<<<<<<<<<<<
- * initial_trace_obj = None
- * check_trace_obj = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":591
+ *
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _get_unfiltered_back_frame(self, py_db, frame): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _get_unfiltered_back_frame(self, py_db, frame):
*/
- __Pyx_INCREF(Py_None);
- __Pyx_DECREF_SET(__pyx_v_trace_obj, Py_None);
- /* "_pydevd_bundle/pydevd_cython.pyx":590
- * frame = None
- * trace_obj = None
- * initial_trace_obj = None # <<<<<<<<<<<<<<
- * check_trace_obj = None
- * f = None
- */
- __Pyx_INCREF(Py_None);
- __Pyx_DECREF_SET(__pyx_v_initial_trace_obj, Py_None);
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._get_unfiltered_back_frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_f);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
- /* "_pydevd_bundle/pydevd_cython.pyx":591
- * trace_obj = None
- * initial_trace_obj = None
- * check_trace_obj = None # <<<<<<<<<<<<<<
- * f = None
- * frame_id_to_frame = None
+/* "_pydevd_bundle/pydevd_cython.pyx":610
+ *
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _is_same_frame(self, target_frame, current_frame): # <<<<<<<<<<<<<<
+ * cdef PyDBAdditionalThreadInfo info;
+ * # ELSE
*/
- __Pyx_INCREF(Py_None);
- __Pyx_XDECREF_SET(__pyx_v_check_trace_obj, Py_None);
- /* "_pydevd_bundle/pydevd_cython.pyx":592
- * initial_trace_obj = None
- * check_trace_obj = None
- * f = None # <<<<<<<<<<<<<<
- * frame_id_to_frame = None
- * main_debugger = None
- */
- __Pyx_INCREF(Py_None);
- __Pyx_XDECREF_SET(__pyx_v_f, Py_None);
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__is_same_frame(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_target_frame, PyObject *__pyx_v_current_frame) {
+ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info = 0;
+ PyObject *__pyx_v_f = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ int __pyx_t_1;
+ PyObject *__pyx_t_2 = NULL;
+ int __pyx_t_3;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_is_same_frame", 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":593
- * check_trace_obj = None
- * f = None
- * frame_id_to_frame = None # <<<<<<<<<<<<<<
- * main_debugger = None
- * thread = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":615
+ * # def _is_same_frame(self, target_frame, current_frame):
+ * # ENDIF
+ * if target_frame is current_frame: # <<<<<<<<<<<<<<
+ * return True
+ *
*/
- __Pyx_INCREF(Py_None);
- __Pyx_XDECREF_SET(__pyx_v_frame_id_to_frame, ((PyObject*)Py_None));
+ __pyx_t_1 = (__pyx_v_target_frame == __pyx_v_current_frame);
+ if (__pyx_t_1) {
- /* "_pydevd_bundle/pydevd_cython.pyx":594
- * f = None
- * frame_id_to_frame = None
- * main_debugger = None # <<<<<<<<<<<<<<
- * thread = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":616
+ * # ENDIF
+ * if target_frame is current_frame:
+ * return True # <<<<<<<<<<<<<<
*
+ * info = self._args[2]
*/
- __Pyx_INCREF(Py_None);
- __Pyx_DECREF_SET(__pyx_v_main_debugger, Py_None);
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_True);
+ __pyx_r = Py_True;
+ goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":595
- * frame_id_to_frame = None
- * main_debugger = None
- * thread = None # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":615
+ * # def _is_same_frame(self, target_frame, current_frame):
+ * # ENDIF
+ * if target_frame is current_frame: # <<<<<<<<<<<<<<
+ * return True
*
- * return stopped
*/
- __Pyx_INCREF(Py_None);
- __Pyx_XDECREF_SET(__pyx_v_thread, Py_None);
- goto __pyx_L5;
- }
- __pyx_L4_error:;
- /*exception exit:*/{
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_25, &__pyx_t_24, &__pyx_t_23);
- if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
- __Pyx_XGOTREF(__pyx_t_10);
- __Pyx_XGOTREF(__pyx_t_11);
- __Pyx_XGOTREF(__pyx_t_12);
- __Pyx_XGOTREF(__pyx_t_25);
- __Pyx_XGOTREF(__pyx_t_24);
- __Pyx_XGOTREF(__pyx_t_23);
- __pyx_t_18 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_26 = __pyx_filename;
- {
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":586
- * finally:
- * # Make sure the user cannot see the '__exception__' we added after we leave the suspend state.
- * remove_exception_from_frame(frame) # <<<<<<<<<<<<<<
- * # Clear some local variables...
- * frame = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":618
+ * return True
+ *
+ * info = self._args[2] # <<<<<<<<<<<<<<
+ * if info.pydev_use_scoped_step_frame:
+ * # If using scoped step we don't check the target, we just need to check
*/
- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_remove_exception_from_frame); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 586, __pyx_L66_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_9 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
- if (likely(__pyx_t_9)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_9);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_7, function);
- }
- }
- __pyx_t_15 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_v_frame) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_frame);
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 586, __pyx_L66_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 618, __pyx_L1_error)
+ }
+ __pyx_t_2 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 618, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(0, 618, __pyx_L1_error)
+ __pyx_v_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_2);
+ __pyx_t_2 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":588
- * remove_exception_from_frame(frame)
- * # Clear some local variables...
- * frame = None # <<<<<<<<<<<<<<
- * trace_obj = None
- * initial_trace_obj = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":619
+ *
+ * info = self._args[2]
+ * if info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
+ * # If using scoped step we don't check the target, we just need to check
+ * # if the current matches the same heuristic where the target was defined.
*/
- __Pyx_INCREF(Py_None);
- __Pyx_DECREF_SET(__pyx_v_frame, Py_None);
+ if (__pyx_v_info->pydev_use_scoped_step_frame) {
- /* "_pydevd_bundle/pydevd_cython.pyx":589
- * # Clear some local variables...
- * frame = None
- * trace_obj = None # <<<<<<<<<<<<<<
- * initial_trace_obj = None
- * check_trace_obj = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":622
+ * # If using scoped step we don't check the target, we just need to check
+ * # if the current matches the same heuristic where the target was defined.
+ * if target_frame is not None and current_frame is not None: # <<<<<<<<<<<<<<
+ * if target_frame.f_code.co_filename == current_frame.f_code.co_filename:
+ * # The co_name may be different (it may include the line number), but
*/
- __Pyx_INCREF(Py_None);
- __Pyx_XDECREF_SET(__pyx_v_trace_obj, Py_None);
+ __pyx_t_3 = (__pyx_v_target_frame != Py_None);
+ if (__pyx_t_3) {
+ } else {
+ __pyx_t_1 = __pyx_t_3;
+ goto __pyx_L6_bool_binop_done;
+ }
+ __pyx_t_3 = (__pyx_v_current_frame != Py_None);
+ __pyx_t_1 = __pyx_t_3;
+ __pyx_L6_bool_binop_done:;
+ if (__pyx_t_1) {
- /* "_pydevd_bundle/pydevd_cython.pyx":590
- * frame = None
- * trace_obj = None
- * initial_trace_obj = None # <<<<<<<<<<<<<<
- * check_trace_obj = None
- * f = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":623
+ * # if the current matches the same heuristic where the target was defined.
+ * if target_frame is not None and current_frame is not None:
+ * if target_frame.f_code.co_filename == current_frame.f_code.co_filename: # <<<<<<<<<<<<<<
+ * # The co_name may be different (it may include the line number), but
+ * # the filename must still be the same.
*/
- __Pyx_INCREF(Py_None);
- __Pyx_XDECREF_SET(__pyx_v_initial_trace_obj, Py_None);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_target_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 623, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 623, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_current_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 623, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 623, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 623, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 623, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (__pyx_t_1) {
- /* "_pydevd_bundle/pydevd_cython.pyx":591
- * trace_obj = None
- * initial_trace_obj = None
- * check_trace_obj = None # <<<<<<<<<<<<<<
- * f = None
- * frame_id_to_frame = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":626
+ * # The co_name may be different (it may include the line number), but
+ * # the filename must still be the same.
+ * f = current_frame.f_back # <<<<<<<<<<<<<<
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
+ * f = f.f_back
*/
- __Pyx_INCREF(Py_None);
- __Pyx_XDECREF_SET(__pyx_v_check_trace_obj, Py_None);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_current_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 626, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_v_f = __pyx_t_2;
+ __pyx_t_2 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":592
- * initial_trace_obj = None
- * check_trace_obj = None
- * f = None # <<<<<<<<<<<<<<
- * frame_id_to_frame = None
- * main_debugger = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":627
+ * # the filename must still be the same.
+ * f = current_frame.f_back
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: # <<<<<<<<<<<<<<
+ * f = f.f_back
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
*/
- __Pyx_INCREF(Py_None);
- __Pyx_XDECREF_SET(__pyx_v_f, Py_None);
+ __pyx_t_3 = (__pyx_v_f != Py_None);
+ if (__pyx_t_3) {
+ } else {
+ __pyx_t_1 = __pyx_t_3;
+ goto __pyx_L10_bool_binop_done;
+ }
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 627, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_co_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 627, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 627, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 627, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = PyObject_RichCompare(__pyx_t_5, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 627, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 627, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_1 = __pyx_t_3;
+ __pyx_L10_bool_binop_done:;
+ if (__pyx_t_1) {
- /* "_pydevd_bundle/pydevd_cython.pyx":593
- * check_trace_obj = None
- * f = None
- * frame_id_to_frame = None # <<<<<<<<<<<<<<
- * main_debugger = None
- * thread = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":628
+ * f = current_frame.f_back
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
+ * f = f.f_back # <<<<<<<<<<<<<<
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
+ * return True
*/
- __Pyx_INCREF(Py_None);
- __Pyx_XDECREF_SET(__pyx_v_frame_id_to_frame, ((PyObject*)Py_None));
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 628, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_2);
+ __pyx_t_2 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":594
- * f = None
- * frame_id_to_frame = None
- * main_debugger = None # <<<<<<<<<<<<<<
- * thread = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":629
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
+ * f = f.f_back
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: # <<<<<<<<<<<<<<
+ * return True
*
*/
- __Pyx_INCREF(Py_None);
- __Pyx_XDECREF_SET(__pyx_v_main_debugger, Py_None);
+ __pyx_t_3 = (__pyx_v_f != Py_None);
+ if (__pyx_t_3) {
+ } else {
+ __pyx_t_1 = __pyx_t_3;
+ goto __pyx_L13_bool_binop_done;
+ }
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 629, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_co_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 629, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 629, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_2, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 629, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 629, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 629, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_1 = __pyx_t_3;
+ __pyx_L13_bool_binop_done:;
+ if (__pyx_t_1) {
- /* "_pydevd_bundle/pydevd_cython.pyx":595
- * frame_id_to_frame = None
- * main_debugger = None
- * thread = None # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":630
+ * f = f.f_back
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
+ * return True # <<<<<<<<<<<<<<
*
- * return stopped
- */
- __Pyx_INCREF(Py_None);
- __Pyx_XDECREF_SET(__pyx_v_thread, Py_None);
- }
- if (PY_MAJOR_VERSION >= 3) {
- __Pyx_XGIVEREF(__pyx_t_25);
- __Pyx_XGIVEREF(__pyx_t_24);
- __Pyx_XGIVEREF(__pyx_t_23);
- __Pyx_ExceptionReset(__pyx_t_25, __pyx_t_24, __pyx_t_23);
- }
- __Pyx_XGIVEREF(__pyx_t_10);
- __Pyx_XGIVEREF(__pyx_t_11);
- __Pyx_XGIVEREF(__pyx_t_12);
- __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
- __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0;
- __pyx_lineno = __pyx_t_18; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_26;
- goto __pyx_L1_error;
- __pyx_L66_error:;
- if (PY_MAJOR_VERSION >= 3) {
- __Pyx_XGIVEREF(__pyx_t_25);
- __Pyx_XGIVEREF(__pyx_t_24);
- __Pyx_XGIVEREF(__pyx_t_23);
- __Pyx_ExceptionReset(__pyx_t_25, __pyx_t_24, __pyx_t_23);
- }
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0;
- goto __pyx_L1_error;
- }
- __pyx_L3_return: {
- __pyx_t_23 = __pyx_r;
- __pyx_r = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":586
- * finally:
- * # Make sure the user cannot see the '__exception__' we added after we leave the suspend state.
- * remove_exception_from_frame(frame) # <<<<<<<<<<<<<<
- * # Clear some local variables...
- * frame = None
- */
- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_remove_exception_from_frame); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 586, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_9 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
- if (likely(__pyx_t_9)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_9);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_7, function);
- }
- }
- __pyx_t_15 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_v_frame) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_frame);
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 586, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":588
- * remove_exception_from_frame(frame)
- * # Clear some local variables...
- * frame = None # <<<<<<<<<<<<<<
- * trace_obj = None
- * initial_trace_obj = None
- */
- __Pyx_INCREF(Py_None);
- __Pyx_DECREF_SET(__pyx_v_frame, Py_None);
-
- /* "_pydevd_bundle/pydevd_cython.pyx":589
- * # Clear some local variables...
- * frame = None
- * trace_obj = None # <<<<<<<<<<<<<<
- * initial_trace_obj = None
- * check_trace_obj = None
- */
- __Pyx_INCREF(Py_None);
- __Pyx_DECREF_SET(__pyx_v_trace_obj, Py_None);
-
- /* "_pydevd_bundle/pydevd_cython.pyx":590
- * frame = None
- * trace_obj = None
- * initial_trace_obj = None # <<<<<<<<<<<<<<
- * check_trace_obj = None
- * f = None
+ * return False
*/
- __Pyx_INCREF(Py_None);
- __Pyx_DECREF_SET(__pyx_v_initial_trace_obj, Py_None);
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_True);
+ __pyx_r = Py_True;
+ goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":591
- * trace_obj = None
- * initial_trace_obj = None
- * check_trace_obj = None # <<<<<<<<<<<<<<
- * f = None
- * frame_id_to_frame = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":629
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
+ * f = f.f_back
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: # <<<<<<<<<<<<<<
+ * return True
+ *
*/
- __Pyx_INCREF(Py_None);
- __Pyx_XDECREF_SET(__pyx_v_check_trace_obj, Py_None);
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":592
- * initial_trace_obj = None
- * check_trace_obj = None
- * f = None # <<<<<<<<<<<<<<
- * frame_id_to_frame = None
- * main_debugger = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":627
+ * # the filename must still be the same.
+ * f = current_frame.f_back
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: # <<<<<<<<<<<<<<
+ * f = f.f_back
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
*/
- __Pyx_INCREF(Py_None);
- __Pyx_XDECREF_SET(__pyx_v_f, Py_None);
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":593
- * check_trace_obj = None
- * f = None
- * frame_id_to_frame = None # <<<<<<<<<<<<<<
- * main_debugger = None
- * thread = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":623
+ * # if the current matches the same heuristic where the target was defined.
+ * if target_frame is not None and current_frame is not None:
+ * if target_frame.f_code.co_filename == current_frame.f_code.co_filename: # <<<<<<<<<<<<<<
+ * # The co_name may be different (it may include the line number), but
+ * # the filename must still be the same.
*/
- __Pyx_INCREF(Py_None);
- __Pyx_XDECREF_SET(__pyx_v_frame_id_to_frame, ((PyObject*)Py_None));
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":594
- * f = None
- * frame_id_to_frame = None
- * main_debugger = None # <<<<<<<<<<<<<<
- * thread = None
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":622
+ * # If using scoped step we don't check the target, we just need to check
+ * # if the current matches the same heuristic where the target was defined.
+ * if target_frame is not None and current_frame is not None: # <<<<<<<<<<<<<<
+ * if target_frame.f_code.co_filename == current_frame.f_code.co_filename:
+ * # The co_name may be different (it may include the line number), but
*/
- __Pyx_INCREF(Py_None);
- __Pyx_DECREF_SET(__pyx_v_main_debugger, Py_None);
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":595
- * frame_id_to_frame = None
- * main_debugger = None
- * thread = None # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":619
*
- * return stopped
+ * info = self._args[2]
+ * if info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
+ * # If using scoped step we don't check the target, we just need to check
+ * # if the current matches the same heuristic where the target was defined.
*/
- __Pyx_INCREF(Py_None);
- __Pyx_XDECREF_SET(__pyx_v_thread, Py_None);
- __pyx_r = __pyx_t_23;
- __pyx_t_23 = 0;
- goto __pyx_L0;
- }
- __pyx_L5:;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":597
- * thread = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":632
+ * return True
*
- * return stopped # <<<<<<<<<<<<<<
+ * return False # <<<<<<<<<<<<<<
*
* # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_15 = __Pyx_PyBool_FromLong(__pyx_v_stopped); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 597, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __pyx_r = __pyx_t_15;
- __pyx_t_15 = 0;
+ __Pyx_INCREF(Py_False);
+ __pyx_r = Py_False;
goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":471
+ /* "_pydevd_bundle/pydevd_cython.pyx":610
*
* # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * cdef _handle_exception(self, frame, str event, arg, str exception_type): # <<<<<<<<<<<<<<
- * cdef bint stopped;
- * cdef tuple abs_real_path_and_base;
+ * cdef _is_same_frame(self, target_frame, current_frame): # <<<<<<<<<<<<<<
+ * cdef PyDBAdditionalThreadInfo info;
+ * # ELSE
*/
/* function exit code */
__pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
- __Pyx_XDECREF(__pyx_t_14);
- __Pyx_XDECREF(__pyx_t_15);
- __Pyx_XDECREF(__pyx_t_17);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._handle_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._is_same_frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
- __Pyx_XDECREF(__pyx_v_abs_real_path_and_base);
- __Pyx_XDECREF(__pyx_v_absolute_filename);
- __Pyx_XDECREF(__pyx_v_canonical_normalized_filename);
- __Pyx_XDECREF(__pyx_v_filename_to_lines_where_exceptions_are_ignored);
- __Pyx_XDECREF(__pyx_v_lines_ignored);
- __Pyx_XDECREF(__pyx_v_frame_id_to_frame);
- __Pyx_XDECREF(__pyx_v_merged);
- __Pyx_XDECREF(__pyx_v_trace_obj);
- __Pyx_XDECREF(__pyx_v_main_debugger);
- __Pyx_XDECREF(__pyx_v_initial_trace_obj);
- __Pyx_XDECREF(__pyx_v_check_trace_obj);
- __Pyx_XDECREF(__pyx_v_curr_stat);
- __Pyx_XDECREF(__pyx_v_last_stat);
- __Pyx_XDECREF(__pyx_v_from_user_input);
- __Pyx_XDECREF(__pyx_v_exc_lineno);
- __Pyx_XDECREF(__pyx_v_line);
- __Pyx_XDECREF(__pyx_v_thread);
+ __Pyx_XDECREF((PyObject *)__pyx_v_info);
__Pyx_XDECREF(__pyx_v_f);
- __Pyx_XDECREF(__pyx_v_frame);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-/* "_pydevd_bundle/pydevd_cython.pyx":600
+/* "_pydevd_bundle/pydevd_cython.pyx":635
*
* # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * cdef get_func_name(self, frame): # <<<<<<<<<<<<<<
- * cdef str func_name
- * # ELSE
+ * cpdef trace_dispatch(self, frame, str event, arg): # <<<<<<<<<<<<<<
+ * cdef tuple abs_path_canonical_path_and_base;
+ * cdef bint is_exception_event;
*/
-static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_get_func_name(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame) {
- PyObject *__pyx_v_func_name = 0;
- PyObject *__pyx_v_code_obj = NULL;
- PyObject *__pyx_v_cls_name = NULL;
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_11trace_dispatch(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_trace_dispatch(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg, int __pyx_skip_dispatch) {
+ PyObject *__pyx_v_abs_path_canonical_path_and_base = 0;
+ int __pyx_v_is_exception_event;
+ int __pyx_v_has_exception_breakpoints;
+ int __pyx_v_can_skip;
+ int __pyx_v_stop;
+ int __pyx_v_stop_on_plugin_breakpoint;
+ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info = 0;
+ int __pyx_v_step_cmd;
+ int __pyx_v_line;
+ int __pyx_v_is_line;
+ int __pyx_v_is_call;
+ int __pyx_v_is_return;
+ int __pyx_v_should_stop;
+ PyObject *__pyx_v_breakpoints_for_file = 0;
+ PyObject *__pyx_v_stop_info = 0;
+ PyObject *__pyx_v_curr_func_name = 0;
+ PyObject *__pyx_v_frame_skips_cache = 0;
+ PyObject *__pyx_v_frame_cache_key = 0;
+ PyObject *__pyx_v_line_cache_key = 0;
+ int __pyx_v_breakpoints_in_line_cache;
+ int __pyx_v_breakpoints_in_frame_cache;
+ int __pyx_v_has_breakpoint_in_frame;
+ int __pyx_v_bp_line;
+ PyObject *__pyx_v_bp = 0;
+ int __pyx_v_pydev_smart_parent_offset;
+ int __pyx_v_pydev_smart_child_offset;
+ PyObject *__pyx_v_pydev_smart_step_into_variants = 0;
+ PyObject *__pyx_v_py_db = NULL;
+ PyObject *__pyx_v_thread = NULL;
+ PyObject *__pyx_v_plugin_manager = NULL;
+ PyObject *__pyx_v_stop_frame = NULL;
+ PyObject *__pyx_v_function_breakpoint_on_call_event = NULL;
+ PyObject *__pyx_v_returns_cache_key = NULL;
+ PyObject *__pyx_v_return_lines = NULL;
+ PyObject *__pyx_v_x = NULL;
+ PyObject *__pyx_v_f = NULL;
+ PyObject *__pyx_v_exc_info = NULL;
+ PyObject *__pyx_v_func_lines = NULL;
+ PyObject *__pyx_v_offset_and_lineno = NULL;
+ PyObject *__pyx_v_breakpoint = NULL;
+ PyObject *__pyx_v_stop_reason = NULL;
+ PyObject *__pyx_v_bp_type = NULL;
+ PyObject *__pyx_v_new_frame = NULL;
+ PyObject *__pyx_v_result = NULL;
+ PyObject *__pyx_v_eval_result = NULL;
+ PyObject *__pyx_v_cmd = NULL;
+ PyObject *__pyx_v_exc = NULL;
+ long __pyx_v_should_skip;
+ PyObject *__pyx_v_plugin_stop = NULL;
+ PyObject *__pyx_v_force_check_project_scope = NULL;
+ PyObject *__pyx_v_filename = NULL;
+ PyObject *__pyx_v_f2 = NULL;
+ PyObject *__pyx_v_back = NULL;
+ PyObject *__pyx_v_smart_step_into_variant = NULL;
+ PyObject *__pyx_v_children_variants = NULL;
+ PyObject *__pyx_v_f_code = NULL;
+ PyObject *__pyx_v_back_absolute_filename = NULL;
+ CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
+ PyObject *__pyx_v_base = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
+ unsigned int __pyx_t_5;
PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
+ PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
int __pyx_t_9;
int __pyx_t_10;
- PyObject *__pyx_t_11 = NULL;
- PyObject *__pyx_t_12 = NULL;
+ int __pyx_t_11;
+ int __pyx_t_12;
+ Py_ssize_t __pyx_t_13;
+ PyObject *(*__pyx_t_14)(PyObject *);
+ PyObject *(*__pyx_t_15)(PyObject *);
+ int __pyx_t_16;
+ PyObject *__pyx_t_17 = NULL;
+ PyObject *__pyx_t_18 = NULL;
+ PyObject *__pyx_t_19 = NULL;
+ int __pyx_t_20;
+ Py_ssize_t __pyx_t_21;
+ PyObject *__pyx_t_22 = NULL;
+ char const *__pyx_t_23;
+ PyObject *__pyx_t_24 = NULL;
+ PyObject *__pyx_t_25 = NULL;
+ PyObject *__pyx_t_26 = NULL;
+ PyObject *__pyx_t_27 = NULL;
+ PyObject *__pyx_t_28 = NULL;
+ PyObject *__pyx_t_29 = NULL;
+ char const *__pyx_t_30;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_func_name", 0);
-
- /* "_pydevd_bundle/pydevd_cython.pyx":605
- * # def get_func_name(self, frame):
- * # ENDIF
- * code_obj = frame.f_code # <<<<<<<<<<<<<<
- * func_name = code_obj.co_name
- * try:
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 605, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_code_obj = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":606
- * # ENDIF
- * code_obj = frame.f_code
- * func_name = code_obj.co_name # <<<<<<<<<<<<<<
- * try:
- * cls_name = get_clsname_for_code(code_obj, frame)
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_code_obj, __pyx_n_s_co_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 606, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 606, __pyx_L1_error)
- __pyx_v_func_name = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
+ __Pyx_RefNannySetupContext("trace_dispatch", 0);
+ __Pyx_INCREF(__pyx_v_frame);
+ /* Check if called by wrapper */
+ if (unlikely(__pyx_skip_dispatch)) ;
+ /* Check if overridden in Python */
+ else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+ static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+ if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+ PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+ #endif
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 635, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (!__Pyx_IsSameCFunction(__pyx_t_1, (void*) __pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_11trace_dispatch)) {
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_v_frame, __pyx_v_event, __pyx_v_arg};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 635, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ goto __pyx_L0;
+ }
+ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+ __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+ __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+ if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
+ __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+ }
+ #endif
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+ }
+ #endif
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":607
- * code_obj = frame.f_code
- * func_name = code_obj.co_name
+ /* "_pydevd_bundle/pydevd_cython.pyx":675
+ * # generation be better split among what each part does).
+ *
* try: # <<<<<<<<<<<<<<
- * cls_name = get_clsname_for_code(code_obj, frame)
- * if cls_name is not None:
+ * # DEBUG = '_debugger_case_yield_from.py' in frame.f_code.co_filename
+ * py_db, abs_path_canonical_path_and_base, info, thread, frame_skips_cache, frame_cache_key = self._args
*/
- {
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
- __Pyx_XGOTREF(__pyx_t_2);
- __Pyx_XGOTREF(__pyx_t_3);
- __Pyx_XGOTREF(__pyx_t_4);
- /*try:*/ {
+ /*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":608
- * func_name = code_obj.co_name
+ /* "_pydevd_bundle/pydevd_cython.pyx":677
* try:
- * cls_name = get_clsname_for_code(code_obj, frame) # <<<<<<<<<<<<<<
- * if cls_name is not None:
- * return "%s.%s" % (cls_name, func_name)
+ * # DEBUG = '_debugger_case_yield_from.py' in frame.f_code.co_filename
+ * py_db, abs_path_canonical_path_and_base, info, thread, frame_skips_cache, frame_cache_key = self._args # <<<<<<<<<<<<<<
+ * # if DEBUG: print('frame trace_dispatch %s %s %s %s %s %s, stop: %s' % (frame.f_lineno, frame.f_code.co_name, frame.f_code.co_filename, event, constant_to_str(info.pydev_step_cmd), arg, info.pydev_step_stop))
+ * info.is_tracing += 1
*/
- __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_get_clsname_for_code); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 608, __pyx_L3_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = NULL;
- __pyx_t_7 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_6)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_6);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- __pyx_t_7 = 1;
- }
+ __pyx_t_1 = __pyx_v_self->_args;
+ __Pyx_INCREF(__pyx_t_1);
+ if (likely(__pyx_t_1 != Py_None)) {
+ PyObject* sequence = __pyx_t_1;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 6)) {
+ if (size > 6) __Pyx_RaiseTooManyValuesError(6);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 677, __pyx_L4_error)
}
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_code_obj, __pyx_v_frame};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 608, __pyx_L3_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_code_obj, __pyx_v_frame};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 608, __pyx_L3_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
+ __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2);
+ __pyx_t_6 = PyTuple_GET_ITEM(sequence, 3);
+ __pyx_t_7 = PyTuple_GET_ITEM(sequence, 4);
+ __pyx_t_8 = PyTuple_GET_ITEM(sequence, 5);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_8);
+ #else
{
- __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 608, __pyx_L3_error)
- __Pyx_GOTREF(__pyx_t_8);
- if (__pyx_t_6) {
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
- }
- __Pyx_INCREF(__pyx_v_code_obj);
- __Pyx_GIVEREF(__pyx_v_code_obj);
- PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_code_obj);
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_frame);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 608, __pyx_L3_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ Py_ssize_t i;
+ PyObject** temps[6] = {&__pyx_t_2,&__pyx_t_3,&__pyx_t_4,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8};
+ for (i=0; i < 6; i++) {
+ PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 677, __pyx_L4_error)
+ __Pyx_GOTREF(item);
+ *(temps[i]) = item;
+ }
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_v_cls_name = __pyx_t_1;
- __pyx_t_1 = 0;
+ #endif
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ } else {
+ __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 677, __pyx_L4_error)
+ }
+ if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_3))) __PYX_ERR(0, 677, __pyx_L4_error)
+ if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(0, 677, __pyx_L4_error)
+ if (!(likely(PyDict_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_7))) __PYX_ERR(0, 677, __pyx_L4_error)
+ __pyx_v_py_db = __pyx_t_2;
+ __pyx_t_2 = 0;
+ __pyx_v_abs_path_canonical_path_and_base = ((PyObject*)__pyx_t_3);
+ __pyx_t_3 = 0;
+ __pyx_v_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_4);
+ __pyx_t_4 = 0;
+ __pyx_v_thread = __pyx_t_6;
+ __pyx_t_6 = 0;
+ __pyx_v_frame_skips_cache = ((PyObject*)__pyx_t_7);
+ __pyx_t_7 = 0;
+ __pyx_v_frame_cache_key = __pyx_t_8;
+ __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":609
- * try:
- * cls_name = get_clsname_for_code(code_obj, frame)
- * if cls_name is not None: # <<<<<<<<<<<<<<
- * return "%s.%s" % (cls_name, func_name)
- * else:
+ /* "_pydevd_bundle/pydevd_cython.pyx":679
+ * py_db, abs_path_canonical_path_and_base, info, thread, frame_skips_cache, frame_cache_key = self._args
+ * # if DEBUG: print('frame trace_dispatch %s %s %s %s %s %s, stop: %s' % (frame.f_lineno, frame.f_code.co_name, frame.f_code.co_filename, event, constant_to_str(info.pydev_step_cmd), arg, info.pydev_step_stop))
+ * info.is_tracing += 1 # <<<<<<<<<<<<<<
+ *
+ * # TODO: This shouldn't be needed. The fact that frame.f_lineno
*/
- __pyx_t_9 = (__pyx_v_cls_name != Py_None);
- __pyx_t_10 = (__pyx_t_9 != 0);
- if (__pyx_t_10) {
+ __pyx_v_info->is_tracing = (__pyx_v_info->is_tracing + 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":610
- * cls_name = get_clsname_for_code(code_obj, frame)
- * if cls_name is not None:
- * return "%s.%s" % (cls_name, func_name) # <<<<<<<<<<<<<<
- * else:
- * return func_name
+ /* "_pydevd_bundle/pydevd_cython.pyx":684
+ * # is None seems like a bug in Python 3.11.
+ * # Reported in: https://github.com/python/cpython/issues/94485
+ * line = frame.f_lineno or 0 # Workaround or case where frame.f_lineno is None # <<<<<<<<<<<<<<
+ * line_cache_key = (frame_cache_key, line)
+ *
*/
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 610, __pyx_L3_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v_cls_name);
- __Pyx_GIVEREF(__pyx_v_cls_name);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_cls_name);
- __Pyx_INCREF(__pyx_v_func_name);
- __Pyx_GIVEREF(__pyx_v_func_name);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_func_name);
- __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_s_s, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 610, __pyx_L3_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_r = __pyx_t_5;
- __pyx_t_5 = 0;
- goto __pyx_L7_try_return;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 684, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 684, __pyx_L4_error)
+ if (!__pyx_t_10) {
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ } else {
+ __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 684, __pyx_L4_error)
+ __pyx_t_9 = __pyx_t_11;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ goto __pyx_L6_bool_binop_done;
+ }
+ __pyx_t_9 = 0;
+ __pyx_L6_bool_binop_done:;
+ __pyx_v_line = __pyx_t_9;
- /* "_pydevd_bundle/pydevd_cython.pyx":609
- * try:
- * cls_name = get_clsname_for_code(code_obj, frame)
- * if cls_name is not None: # <<<<<<<<<<<<<<
- * return "%s.%s" % (cls_name, func_name)
- * else:
+ /* "_pydevd_bundle/pydevd_cython.pyx":685
+ * # Reported in: https://github.com/python/cpython/issues/94485
+ * line = frame.f_lineno or 0 # Workaround or case where frame.f_lineno is None
+ * line_cache_key = (frame_cache_key, line) # <<<<<<<<<<<<<<
+ *
+ * if py_db.pydb_disposed:
*/
- }
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 685, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 685, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_INCREF(__pyx_v_frame_cache_key);
+ __Pyx_GIVEREF(__pyx_v_frame_cache_key);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_frame_cache_key)) __PYX_ERR(0, 685, __pyx_L4_error);
+ __Pyx_GIVEREF(__pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_1)) __PYX_ERR(0, 685, __pyx_L4_error);
+ __pyx_t_1 = 0;
+ __pyx_v_line_cache_key = ((PyObject*)__pyx_t_8);
+ __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":612
- * return "%s.%s" % (cls_name, func_name)
- * else:
- * return func_name # <<<<<<<<<<<<<<
- * except:
- * pydev_log.exception()
+ /* "_pydevd_bundle/pydevd_cython.pyx":687
+ * line_cache_key = (frame_cache_key, line)
+ *
+ * if py_db.pydb_disposed: # <<<<<<<<<<<<<<
+ * return None if event == "call" else NO_FTRACE
+ *
*/
- /*else*/ {
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_func_name);
- __pyx_r = __pyx_v_func_name;
- goto __pyx_L7_try_return;
- }
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_pydb_disposed); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 687, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 687, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":607
- * code_obj = frame.f_code
- * func_name = code_obj.co_name
- * try: # <<<<<<<<<<<<<<
- * cls_name = get_clsname_for_code(code_obj, frame)
- * if cls_name is not None:
+ /* "_pydevd_bundle/pydevd_cython.pyx":688
+ *
+ * if py_db.pydb_disposed:
+ * return None if event == "call" else NO_FTRACE # <<<<<<<<<<<<<<
+ *
+ * plugin_manager = py_db.plugin
*/
- }
- __pyx_L3_error:;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 688, __pyx_L4_error)
+ if (__pyx_t_10) {
+ __Pyx_INCREF(Py_None);
+ __pyx_t_8 = Py_None;
+ } else {
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 688, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_8 = __pyx_t_1;
+ __pyx_t_1 = 0;
+ }
+ __pyx_r = __pyx_t_8;
+ __pyx_t_8 = 0;
+ goto __pyx_L3_return;
- /* "_pydevd_bundle/pydevd_cython.pyx":613
- * else:
- * return func_name
- * except: # <<<<<<<<<<<<<<
- * pydev_log.exception()
- * return func_name
+ /* "_pydevd_bundle/pydevd_cython.pyx":687
+ * line_cache_key = (frame_cache_key, line)
+ *
+ * if py_db.pydb_disposed: # <<<<<<<<<<<<<<
+ * return None if event == "call" else NO_FTRACE
+ *
*/
- /*except:*/ {
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.get_func_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_8) < 0) __PYX_ERR(0, 613, __pyx_L5_except_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_t_8);
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":614
- * return func_name
- * except:
- * pydev_log.exception() # <<<<<<<<<<<<<<
- * return func_name
+ /* "_pydevd_bundle/pydevd_cython.pyx":690
+ * return None if event == "call" else NO_FTRACE
*
+ * plugin_manager = py_db.plugin # <<<<<<<<<<<<<<
+ * has_exception_breakpoints = (
+ * py_db.break_on_caught_exceptions or py_db.break_on_user_uncaught_exceptions or py_db.has_plugin_exception_breaks
*/
- __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 614, __pyx_L5_except_error)
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_exception); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 614, __pyx_L5_except_error)
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_11 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
- __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12);
- if (likely(__pyx_t_11)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
- __Pyx_INCREF(__pyx_t_11);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_12, function);
- }
- }
- __pyx_t_6 = (__pyx_t_11) ? __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_11) : __Pyx_PyObject_CallNoArg(__pyx_t_12);
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 614, __pyx_L5_except_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_plugin); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 690, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_v_plugin_manager = __pyx_t_8;
+ __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":615
- * except:
- * pydev_log.exception()
- * return func_name # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":692
+ * plugin_manager = py_db.plugin
+ * has_exception_breakpoints = (
+ * py_db.break_on_caught_exceptions or py_db.break_on_user_uncaught_exceptions or py_db.has_plugin_exception_breaks # <<<<<<<<<<<<<<
+ * )
*
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
*/
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_func_name);
- __pyx_r = __pyx_v_func_name;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- goto __pyx_L6_except_return;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_break_on_caught_exceptions); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 692, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 692, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (!__pyx_t_12) {
+ } else {
+ __pyx_t_10 = __pyx_t_12;
+ goto __pyx_L9_bool_binop_done;
}
- __pyx_L5_except_error:;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_break_on_user_uncaught_exception); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 692, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 692, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (!__pyx_t_12) {
+ } else {
+ __pyx_t_10 = __pyx_t_12;
+ goto __pyx_L9_bool_binop_done;
+ }
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_has_plugin_exception_breaks); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 692, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 692, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_10 = __pyx_t_12;
+ __pyx_L9_bool_binop_done:;
+ __pyx_v_has_exception_breakpoints = __pyx_t_10;
- /* "_pydevd_bundle/pydevd_cython.pyx":607
- * code_obj = frame.f_code
- * func_name = code_obj.co_name
- * try: # <<<<<<<<<<<<<<
- * cls_name = get_clsname_for_code(code_obj, frame)
- * if cls_name is not None:
+ /* "_pydevd_bundle/pydevd_cython.pyx":695
+ * )
+ *
+ * stop_frame = info.pydev_step_stop # <<<<<<<<<<<<<<
+ * step_cmd = info.pydev_step_cmd
+ * function_breakpoint_on_call_event = None
*/
- __Pyx_XGIVEREF(__pyx_t_2);
- __Pyx_XGIVEREF(__pyx_t_3);
- __Pyx_XGIVEREF(__pyx_t_4);
- __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
- goto __pyx_L1_error;
- __pyx_L7_try_return:;
- __Pyx_XGIVEREF(__pyx_t_2);
- __Pyx_XGIVEREF(__pyx_t_3);
- __Pyx_XGIVEREF(__pyx_t_4);
- __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
- goto __pyx_L0;
- __pyx_L6_except_return:;
- __Pyx_XGIVEREF(__pyx_t_2);
- __Pyx_XGIVEREF(__pyx_t_3);
- __Pyx_XGIVEREF(__pyx_t_4);
- __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
- goto __pyx_L0;
- }
+ __pyx_t_8 = __pyx_v_info->pydev_step_stop;
+ __Pyx_INCREF(__pyx_t_8);
+ __pyx_v_stop_frame = __pyx_t_8;
+ __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":600
+ /* "_pydevd_bundle/pydevd_cython.pyx":696
+ *
+ * stop_frame = info.pydev_step_stop
+ * step_cmd = info.pydev_step_cmd # <<<<<<<<<<<<<<
+ * function_breakpoint_on_call_event = None
*
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * cdef get_func_name(self, frame): # <<<<<<<<<<<<<<
- * cdef str func_name
- * # ELSE
*/
+ __pyx_t_9 = __pyx_v_info->pydev_step_cmd;
+ __pyx_v_step_cmd = __pyx_t_9;
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_11);
- __Pyx_XDECREF(__pyx_t_12);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.get_func_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_func_name);
- __Pyx_XDECREF(__pyx_v_code_obj);
- __Pyx_XDECREF(__pyx_v_cls_name);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
+ /* "_pydevd_bundle/pydevd_cython.pyx":697
+ * stop_frame = info.pydev_step_stop
+ * step_cmd = info.pydev_step_cmd
+ * function_breakpoint_on_call_event = None # <<<<<<<<<<<<<<
+ *
+ * if frame.f_code.co_flags & 0xA0: # 0xa0 == CO_GENERATOR = 0x20 | CO_COROUTINE = 0x80
+ */
+ __Pyx_INCREF(Py_None);
+ __pyx_v_function_breakpoint_on_call_event = Py_None;
-/* "_pydevd_bundle/pydevd_cython.pyx":618
+ /* "_pydevd_bundle/pydevd_cython.pyx":699
+ * function_breakpoint_on_call_event = None
*
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * cdef _show_return_values(self, frame, arg): # <<<<<<<<<<<<<<
- * # ELSE
- * # def _show_return_values(self, frame, arg):
+ * if frame.f_code.co_flags & 0xA0: # 0xa0 == CO_GENERATOR = 0x20 | CO_COROUTINE = 0x80 # <<<<<<<<<<<<<<
+ * # Dealing with coroutines and generators:
+ * # When in a coroutine we change the perceived event to the debugger because
*/
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 699, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_co_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 699, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = __Pyx_PyInt_AndObjC(__pyx_t_1, __pyx_int_160, 0xA0, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 699, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 699, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_10) {
-static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__show_return_values(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_arg) {
- PyObject *__pyx_v_f_locals_back = NULL;
- PyObject *__pyx_v_return_values_dict = NULL;
- PyObject *__pyx_v_name = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_t_6;
- int __pyx_t_7;
- PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
- int __pyx_t_10;
- PyObject *__pyx_t_11 = NULL;
- PyObject *__pyx_t_12 = NULL;
- int __pyx_t_13;
- char const *__pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
- PyObject *__pyx_t_16 = NULL;
- PyObject *__pyx_t_17 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_show_return_values", 0);
+ /* "_pydevd_bundle/pydevd_cython.pyx":703
+ * # When in a coroutine we change the perceived event to the debugger because
+ * # a call, StopIteration exception and return are usually just pausing/unpausing it.
+ * if event == "line": # <<<<<<<<<<<<<<
+ * is_line = True
+ * is_call = False
+ */
+ __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_line, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 703, __pyx_L4_error)
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":622
- * # def _show_return_values(self, frame, arg):
- * # ENDIF
- * try: # <<<<<<<<<<<<<<
- * try:
- * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ /* "_pydevd_bundle/pydevd_cython.pyx":704
+ * # a call, StopIteration exception and return are usually just pausing/unpausing it.
+ * if event == "line":
+ * is_line = True # <<<<<<<<<<<<<<
+ * is_call = False
+ * is_return = False
*/
- /*try:*/ {
+ __pyx_v_is_line = 1;
- /* "_pydevd_bundle/pydevd_cython.pyx":623
- * # ENDIF
- * try:
- * try: # <<<<<<<<<<<<<<
- * f_locals_back = getattr(frame.f_back, "f_locals", None)
- * if f_locals_back is not None:
+ /* "_pydevd_bundle/pydevd_cython.pyx":705
+ * if event == "line":
+ * is_line = True
+ * is_call = False # <<<<<<<<<<<<<<
+ * is_return = False
+ * is_exception_event = False
*/
- {
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
- __Pyx_XGOTREF(__pyx_t_1);
- __Pyx_XGOTREF(__pyx_t_2);
- __Pyx_XGOTREF(__pyx_t_3);
- /*try:*/ {
+ __pyx_v_is_call = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":624
- * try:
- * try:
- * f_locals_back = getattr(frame.f_back, "f_locals", None) # <<<<<<<<<<<<<<
- * if f_locals_back is not None:
- * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None)
+ /* "_pydevd_bundle/pydevd_cython.pyx":706
+ * is_line = True
+ * is_call = False
+ * is_return = False # <<<<<<<<<<<<<<
+ * is_exception_event = False
+ *
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 624, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_GetAttr3(__pyx_t_4, __pyx_n_s_f_locals, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 624, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_f_locals_back = __pyx_t_5;
- __pyx_t_5 = 0;
+ __pyx_v_is_return = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":625
- * try:
- * f_locals_back = getattr(frame.f_back, "f_locals", None)
- * if f_locals_back is not None: # <<<<<<<<<<<<<<
- * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None)
- * if return_values_dict is None:
+ /* "_pydevd_bundle/pydevd_cython.pyx":707
+ * is_call = False
+ * is_return = False
+ * is_exception_event = False # <<<<<<<<<<<<<<
+ *
+ * elif event == "return":
*/
- __pyx_t_6 = (__pyx_v_f_locals_back != Py_None);
- __pyx_t_7 = (__pyx_t_6 != 0);
- if (__pyx_t_7) {
+ __pyx_v_is_exception_event = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":626
- * f_locals_back = getattr(frame.f_back, "f_locals", None)
- * if f_locals_back is not None:
- * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None) # <<<<<<<<<<<<<<
- * if return_values_dict is None:
- * return_values_dict = {}
+ /* "_pydevd_bundle/pydevd_cython.pyx":703
+ * # When in a coroutine we change the perceived event to the debugger because
+ * # a call, StopIteration exception and return are usually just pausing/unpausing it.
+ * if event == "line": # <<<<<<<<<<<<<<
+ * is_line = True
+ * is_call = False
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_locals_back, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 626, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_RETURN_VALUES_DICT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 626, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = NULL;
- __pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_9)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_9);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- __pyx_t_10 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_8, Py_None};
- __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 626, __pyx_L6_error)
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_8, Py_None};
- __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 626, __pyx_L6_error)
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- } else
- #endif
- {
- __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 626, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_11);
- if (__pyx_t_9) {
- __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
- }
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_8);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, Py_None);
- __pyx_t_8 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 626, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_return_values_dict = __pyx_t_5;
- __pyx_t_5 = 0;
+ goto __pyx_L13;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":627
- * if f_locals_back is not None:
- * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None)
- * if return_values_dict is None: # <<<<<<<<<<<<<<
- * return_values_dict = {}
- * f_locals_back[RETURN_VALUES_DICT] = return_values_dict
+ /* "_pydevd_bundle/pydevd_cython.pyx":709
+ * is_exception_event = False
+ *
+ * elif event == "return": # <<<<<<<<<<<<<<
+ * is_line = False
+ * is_call = False
*/
- __pyx_t_7 = (__pyx_v_return_values_dict == Py_None);
- __pyx_t_6 = (__pyx_t_7 != 0);
- if (__pyx_t_6) {
+ __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_return, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 709, __pyx_L4_error)
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":628
- * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None)
- * if return_values_dict is None:
- * return_values_dict = {} # <<<<<<<<<<<<<<
- * f_locals_back[RETURN_VALUES_DICT] = return_values_dict
- * name = self.get_func_name(frame)
+ /* "_pydevd_bundle/pydevd_cython.pyx":710
+ *
+ * elif event == "return":
+ * is_line = False # <<<<<<<<<<<<<<
+ * is_call = False
+ * is_return = True
*/
- __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 628, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF_SET(__pyx_v_return_values_dict, __pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_v_is_line = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":629
- * if return_values_dict is None:
- * return_values_dict = {}
- * f_locals_back[RETURN_VALUES_DICT] = return_values_dict # <<<<<<<<<<<<<<
- * name = self.get_func_name(frame)
- * return_values_dict[name] = arg
+ /* "_pydevd_bundle/pydevd_cython.pyx":711
+ * elif event == "return":
+ * is_line = False
+ * is_call = False # <<<<<<<<<<<<<<
+ * is_return = True
+ * is_exception_event = False
*/
- __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_RETURN_VALUES_DICT); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 629, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (unlikely(PyObject_SetItem(__pyx_v_f_locals_back, __pyx_t_5, __pyx_v_return_values_dict) < 0)) __PYX_ERR(0, 629, __pyx_L6_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_v_is_call = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":627
- * if f_locals_back is not None:
- * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None)
- * if return_values_dict is None: # <<<<<<<<<<<<<<
- * return_values_dict = {}
- * f_locals_back[RETURN_VALUES_DICT] = return_values_dict
+ /* "_pydevd_bundle/pydevd_cython.pyx":712
+ * is_line = False
+ * is_call = False
+ * is_return = True # <<<<<<<<<<<<<<
+ * is_exception_event = False
+ *
*/
- }
+ __pyx_v_is_return = 1;
- /* "_pydevd_bundle/pydevd_cython.pyx":630
- * return_values_dict = {}
- * f_locals_back[RETURN_VALUES_DICT] = return_values_dict
- * name = self.get_func_name(frame) # <<<<<<<<<<<<<<
- * return_values_dict[name] = arg
- * except:
+ /* "_pydevd_bundle/pydevd_cython.pyx":713
+ * is_call = False
+ * is_return = True
+ * is_exception_event = False # <<<<<<<<<<<<<<
+ *
+ * returns_cache_key = (frame_cache_key, "returns")
*/
- __pyx_t_5 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->get_func_name(__pyx_v_self, __pyx_v_frame); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 630, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_v_name = __pyx_t_5;
- __pyx_t_5 = 0;
+ __pyx_v_is_exception_event = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":631
- * f_locals_back[RETURN_VALUES_DICT] = return_values_dict
- * name = self.get_func_name(frame)
- * return_values_dict[name] = arg # <<<<<<<<<<<<<<
- * except:
- * pydev_log.exception()
+ /* "_pydevd_bundle/pydevd_cython.pyx":715
+ * is_exception_event = False
+ *
+ * returns_cache_key = (frame_cache_key, "returns") # <<<<<<<<<<<<<<
+ * return_lines = frame_skips_cache.get(returns_cache_key)
+ * if return_lines is None:
*/
- if (unlikely(PyObject_SetItem(__pyx_v_return_values_dict, __pyx_v_name, __pyx_v_arg) < 0)) __PYX_ERR(0, 631, __pyx_L6_error)
+ __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 715, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_INCREF(__pyx_v_frame_cache_key);
+ __Pyx_GIVEREF(__pyx_v_frame_cache_key);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_frame_cache_key)) __PYX_ERR(0, 715, __pyx_L4_error);
+ __Pyx_INCREF(__pyx_n_s_returns);
+ __Pyx_GIVEREF(__pyx_n_s_returns);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_n_s_returns)) __PYX_ERR(0, 715, __pyx_L4_error);
+ __pyx_v_returns_cache_key = ((PyObject*)__pyx_t_8);
+ __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":625
- * try:
- * f_locals_back = getattr(frame.f_back, "f_locals", None)
- * if f_locals_back is not None: # <<<<<<<<<<<<<<
- * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None)
- * if return_values_dict is None:
+ /* "_pydevd_bundle/pydevd_cython.pyx":716
+ *
+ * returns_cache_key = (frame_cache_key, "returns")
+ * return_lines = frame_skips_cache.get(returns_cache_key) # <<<<<<<<<<<<<<
+ * if return_lines is None:
+ * # Note: we're collecting the return lines by inspecting the bytecode as
*/
+ if (unlikely(__pyx_v_frame_skips_cache == Py_None)) {
+ PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
+ __PYX_ERR(0, 716, __pyx_L4_error)
}
+ __pyx_t_8 = __Pyx_PyDict_GetItemDefault(__pyx_v_frame_skips_cache, __pyx_v_returns_cache_key, Py_None); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 716, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_v_return_lines = __pyx_t_8;
+ __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":623
- * # ENDIF
- * try:
- * try: # <<<<<<<<<<<<<<
- * f_locals_back = getattr(frame.f_back, "f_locals", None)
- * if f_locals_back is not None:
+ /* "_pydevd_bundle/pydevd_cython.pyx":717
+ * returns_cache_key = (frame_cache_key, "returns")
+ * return_lines = frame_skips_cache.get(returns_cache_key)
+ * if return_lines is None: # <<<<<<<<<<<<<<
+ * # Note: we're collecting the return lines by inspecting the bytecode as
+ * # there are multiple returns and multiple stop iterations when awaiting and
*/
- }
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L11_try_end;
- __pyx_L6_error:;
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_10 = (__pyx_v_return_lines == Py_None);
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":632
- * name = self.get_func_name(frame)
- * return_values_dict[name] = arg
- * except: # <<<<<<<<<<<<<<
- * pydev_log.exception()
- * finally:
+ /* "_pydevd_bundle/pydevd_cython.pyx":722
+ * # it doesn't give any clear indication when a coroutine or generator is
+ * # finishing or just pausing.
+ * return_lines = set() # <<<<<<<<<<<<<<
+ * for x in py_db.collect_return_info(frame.f_code):
+ * # Note: cython does not support closures in cpdefs (so we can't use
*/
- /*except:*/ {
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._show_return_values", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_11) < 0) __PYX_ERR(0, 632, __pyx_L8_except_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_8 = PySet_New(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 722, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF_SET(__pyx_v_return_lines, __pyx_t_8);
+ __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":633
- * return_values_dict[name] = arg
- * except:
- * pydev_log.exception() # <<<<<<<<<<<<<<
- * finally:
- * f_locals_back = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":723
+ * # finishing or just pausing.
+ * return_lines = set()
+ * for x in py_db.collect_return_info(frame.f_code): # <<<<<<<<<<<<<<
+ * # Note: cython does not support closures in cpdefs (so we can't use
+ * # a list comprehension).
*/
- __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 633, __pyx_L8_except_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_exception); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 633, __pyx_L8_except_error)
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_12);
- if (likely(__pyx_t_9)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
- __Pyx_INCREF(__pyx_t_9);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_12, function);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_collect_return_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 723, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 723, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_6 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_5 = 1;
+ }
}
- }
- __pyx_t_8 = (__pyx_t_9) ? __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_9) : __Pyx_PyObject_CallNoArg(__pyx_t_12);
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 633, __pyx_L8_except_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- goto __pyx_L7_exception_handled;
- }
- __pyx_L8_except_error:;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":623
- * # ENDIF
- * try:
- * try: # <<<<<<<<<<<<<<
- * f_locals_back = getattr(frame.f_back, "f_locals", None)
- * if f_locals_back is not None:
- */
- __Pyx_XGIVEREF(__pyx_t_1);
- __Pyx_XGIVEREF(__pyx_t_2);
- __Pyx_XGIVEREF(__pyx_t_3);
- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
- goto __pyx_L4_error;
- __pyx_L7_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_1);
- __Pyx_XGIVEREF(__pyx_t_2);
- __Pyx_XGIVEREF(__pyx_t_3);
- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
- __pyx_L11_try_end:;
- }
- }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_7};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 723, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) {
+ __pyx_t_1 = __pyx_t_8; __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_13 = 0;
+ __pyx_t_14 = NULL;
+ } else {
+ __pyx_t_13 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 723, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_14 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 723, __pyx_L4_error)
+ }
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ for (;;) {
+ if (likely(!__pyx_t_14)) {
+ if (likely(PyList_CheckExact(__pyx_t_1))) {
+ {
+ Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
+ #if !CYTHON_ASSUME_SAFE_MACROS
+ if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 723, __pyx_L4_error)
+ #endif
+ if (__pyx_t_13 >= __pyx_temp) break;
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_13); __Pyx_INCREF(__pyx_t_8); __pyx_t_13++; if (unlikely((0 < 0))) __PYX_ERR(0, 723, __pyx_L4_error)
+ #else
+ __pyx_t_8 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 723, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ #endif
+ } else {
+ {
+ Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
+ #if !CYTHON_ASSUME_SAFE_MACROS
+ if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 723, __pyx_L4_error)
+ #endif
+ if (__pyx_t_13 >= __pyx_temp) break;
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_13); __Pyx_INCREF(__pyx_t_8); __pyx_t_13++; if (unlikely((0 < 0))) __PYX_ERR(0, 723, __pyx_L4_error)
+ #else
+ __pyx_t_8 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 723, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ #endif
+ }
+ } else {
+ __pyx_t_8 = __pyx_t_14(__pyx_t_1);
+ if (unlikely(!__pyx_t_8)) {
+ PyObject* exc_type = PyErr_Occurred();
+ if (exc_type) {
+ if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+ else __PYX_ERR(0, 723, __pyx_L4_error)
+ }
+ break;
+ }
+ __Pyx_GOTREF(__pyx_t_8);
+ }
+ __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_8);
+ __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":635
- * pydev_log.exception()
- * finally:
- * f_locals_back = None # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":726
+ * # Note: cython does not support closures in cpdefs (so we can't use
+ * # a list comprehension).
+ * return_lines.add(x.return_line) # <<<<<<<<<<<<<<
*
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * frame_skips_cache[returns_cache_key] = return_lines
*/
- /*finally:*/ {
- /*normal exit:*/{
- __Pyx_INCREF(Py_None);
- __Pyx_XDECREF_SET(__pyx_v_f_locals_back, Py_None);
- goto __pyx_L5;
- }
- __pyx_L4_error:;
- /*exception exit:*/{
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
- if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0)) __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1);
- __Pyx_XGOTREF(__pyx_t_3);
- __Pyx_XGOTREF(__pyx_t_2);
- __Pyx_XGOTREF(__pyx_t_1);
- __Pyx_XGOTREF(__pyx_t_15);
- __Pyx_XGOTREF(__pyx_t_16);
- __Pyx_XGOTREF(__pyx_t_17);
- __pyx_t_10 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
- {
- __Pyx_INCREF(Py_None);
- __Pyx_XDECREF_SET(__pyx_v_f_locals_back, Py_None);
- }
- if (PY_MAJOR_VERSION >= 3) {
- __Pyx_XGIVEREF(__pyx_t_15);
- __Pyx_XGIVEREF(__pyx_t_16);
- __Pyx_XGIVEREF(__pyx_t_17);
- __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
- }
- __Pyx_XGIVEREF(__pyx_t_3);
- __Pyx_XGIVEREF(__pyx_t_2);
- __Pyx_XGIVEREF(__pyx_t_1);
- __Pyx_ErrRestore(__pyx_t_3, __pyx_t_2, __pyx_t_1);
- __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
- __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
- goto __pyx_L1_error;
- }
- __pyx_L5:;
- }
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_return_lines, __pyx_n_s_add); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 726, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_return_line); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 726, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 726, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":618
- *
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * cdef _show_return_values(self, frame, arg): # <<<<<<<<<<<<<<
- * # ELSE
- * # def _show_return_values(self, frame, arg):
+ /* "_pydevd_bundle/pydevd_cython.pyx":723
+ * # finishing or just pausing.
+ * return_lines = set()
+ * for x in py_db.collect_return_info(frame.f_code): # <<<<<<<<<<<<<<
+ * # Note: cython does not support closures in cpdefs (so we can't use
+ * # a list comprehension).
*/
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
- __Pyx_XDECREF(__pyx_t_11);
- __Pyx_XDECREF(__pyx_t_12);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._show_return_values", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_f_locals_back);
- __Pyx_XDECREF(__pyx_v_return_values_dict);
- __Pyx_XDECREF(__pyx_v_name);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "_pydevd_bundle/pydevd_cython.pyx":638
+ /* "_pydevd_bundle/pydevd_cython.pyx":728
+ * return_lines.add(x.return_line)
*
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * cdef _remove_return_values(self, main_debugger, frame): # <<<<<<<<<<<<<<
- * # ELSE
- * # def _remove_return_values(self, main_debugger, frame):
+ * frame_skips_cache[returns_cache_key] = return_lines # <<<<<<<<<<<<<<
+ *
+ * if line not in return_lines:
*/
+ if (unlikely(__pyx_v_frame_skips_cache == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 728, __pyx_L4_error)
+ }
+ if (unlikely((PyDict_SetItem(__pyx_v_frame_skips_cache, __pyx_v_returns_cache_key, __pyx_v_return_lines) < 0))) __PYX_ERR(0, 728, __pyx_L4_error)
-static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__remove_return_values(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_main_debugger, PyObject *__pyx_v_frame) {
- PyObject *__pyx_v_f_locals_back = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- int __pyx_t_8;
- PyObject *__pyx_t_9 = NULL;
- int __pyx_t_10;
- int __pyx_t_11;
- PyObject *__pyx_t_12 = NULL;
- int __pyx_t_13;
- char const *__pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
- PyObject *__pyx_t_16 = NULL;
- PyObject *__pyx_t_17 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_remove_return_values", 0);
+ /* "_pydevd_bundle/pydevd_cython.pyx":717
+ * returns_cache_key = (frame_cache_key, "returns")
+ * return_lines = frame_skips_cache.get(returns_cache_key)
+ * if return_lines is None: # <<<<<<<<<<<<<<
+ * # Note: we're collecting the return lines by inspecting the bytecode as
+ * # there are multiple returns and multiple stop iterations when awaiting and
+ */
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":642
- * # def _remove_return_values(self, main_debugger, frame):
- * # ENDIF
- * try: # <<<<<<<<<<<<<<
- * try:
- * # Showing return values was turned off, we should remove them from locals dict.
+ /* "_pydevd_bundle/pydevd_cython.pyx":730
+ * frame_skips_cache[returns_cache_key] = return_lines
+ *
+ * if line not in return_lines: # <<<<<<<<<<<<<<
+ * # Not really a return (coroutine/generator paused).
+ * return self.trace_dispatch
*/
- /*try:*/ {
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 730, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_10 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_v_return_lines, Py_NE)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 730, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":643
- * # ENDIF
- * try:
- * try: # <<<<<<<<<<<<<<
- * # Showing return values was turned off, we should remove them from locals dict.
- * # The values can be in the current frame or in the back one
+ /* "_pydevd_bundle/pydevd_cython.pyx":732
+ * if line not in return_lines:
+ * # Not really a return (coroutine/generator paused).
+ * return self.trace_dispatch # <<<<<<<<<<<<<<
+ * else:
+ * if self.exc_info:
*/
- {
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
- __Pyx_XGOTREF(__pyx_t_1);
- __Pyx_XGOTREF(__pyx_t_2);
- __Pyx_XGOTREF(__pyx_t_3);
- /*try:*/ {
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 732, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L3_return;
- /* "_pydevd_bundle/pydevd_cython.pyx":646
- * # Showing return values was turned off, we should remove them from locals dict.
- * # The values can be in the current frame or in the back one
- * frame.f_locals.pop(RETURN_VALUES_DICT, None) # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":730
+ * frame_skips_cache[returns_cache_key] = return_lines
*
- * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ * if line not in return_lines: # <<<<<<<<<<<<<<
+ * # Not really a return (coroutine/generator paused).
+ * return self.trace_dispatch
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_locals); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 646, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_pop); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 646, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_RETURN_VALUES_DICT); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 646, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = NULL;
- __pyx_t_8 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
- if (likely(__pyx_t_7)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
- __Pyx_INCREF(__pyx_t_7);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_6, function);
- __pyx_t_8 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, Py_None};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 646, __pyx_L6_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, Py_None};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 646, __pyx_L6_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 646, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_9);
- if (__pyx_t_7) {
- __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
- }
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_5);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, Py_None);
- __pyx_t_5 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 646, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":648
- * frame.f_locals.pop(RETURN_VALUES_DICT, None)
+ /* "_pydevd_bundle/pydevd_cython.pyx":734
+ * return self.trace_dispatch
+ * else:
+ * if self.exc_info: # <<<<<<<<<<<<<<
+ * self.handle_user_exception(frame)
+ * return self.trace_dispatch
+ */
+ /*else*/ {
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_self->exc_info); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 734, __pyx_L4_error)
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":735
+ * else:
+ * if self.exc_info:
+ * self.handle_user_exception(frame) # <<<<<<<<<<<<<<
+ * return self.trace_dispatch
*
- * f_locals_back = getattr(frame.f_back, "f_locals", None) # <<<<<<<<<<<<<<
- * if f_locals_back is not None:
- * f_locals_back.pop(RETURN_VALUES_DICT, None)
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 648, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = __Pyx_GetAttr3(__pyx_t_4, __pyx_n_s_f_locals, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 648, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_f_locals_back = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_user_exception); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 735, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_7 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_frame};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 735, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":649
+ /* "_pydevd_bundle/pydevd_cython.pyx":736
+ * if self.exc_info:
+ * self.handle_user_exception(frame)
+ * return self.trace_dispatch # <<<<<<<<<<<<<<
*
- * f_locals_back = getattr(frame.f_back, "f_locals", None)
- * if f_locals_back is not None: # <<<<<<<<<<<<<<
- * f_locals_back.pop(RETURN_VALUES_DICT, None)
- * except:
+ * # Tricky handling: usually when we're on a frame which is about to exit
*/
- __pyx_t_10 = (__pyx_v_f_locals_back != Py_None);
- __pyx_t_11 = (__pyx_t_10 != 0);
- if (__pyx_t_11) {
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 736, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L3_return;
- /* "_pydevd_bundle/pydevd_cython.pyx":650
- * f_locals_back = getattr(frame.f_back, "f_locals", None)
- * if f_locals_back is not None:
- * f_locals_back.pop(RETURN_VALUES_DICT, None) # <<<<<<<<<<<<<<
- * except:
- * pydev_log.exception()
+ /* "_pydevd_bundle/pydevd_cython.pyx":734
+ * return self.trace_dispatch
+ * else:
+ * if self.exc_info: # <<<<<<<<<<<<<<
+ * self.handle_user_exception(frame)
+ * return self.trace_dispatch
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_locals_back, __pyx_n_s_pop); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 650, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_RETURN_VALUES_DICT); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 650, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_5 = NULL;
- __pyx_t_8 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- __pyx_t_8 = 1;
- }
}
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_9, Py_None};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 650, __pyx_L6_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_9, Py_None};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 650, __pyx_L6_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- } else
- #endif
- {
- __pyx_t_7 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 650, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_7);
- if (__pyx_t_5) {
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
- }
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_8, __pyx_t_9);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_8, Py_None);
- __pyx_t_9 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 650, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":754
+ * # as the return shouldn't mean that we've actually completed executing a
+ * # frame in this case).
+ * if stop_frame is frame and not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
+ * if step_cmd in (108, 159, 107, 144):
+ * f = self._get_unfiltered_back_frame(py_db, frame)
+ */
+ __pyx_t_12 = (__pyx_v_stop_frame == __pyx_v_frame);
+ if (__pyx_t_12) {
+ } else {
+ __pyx_t_10 = __pyx_t_12;
+ goto __pyx_L21_bool_binop_done;
}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_12 = (!__pyx_v_info->pydev_use_scoped_step_frame);
+ __pyx_t_10 = __pyx_t_12;
+ __pyx_L21_bool_binop_done:;
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":649
- *
- * f_locals_back = getattr(frame.f_back, "f_locals", None)
- * if f_locals_back is not None: # <<<<<<<<<<<<<<
- * f_locals_back.pop(RETURN_VALUES_DICT, None)
- * except:
+ /* "_pydevd_bundle/pydevd_cython.pyx":755
+ * # frame in this case).
+ * if stop_frame is frame and not info.pydev_use_scoped_step_frame:
+ * if step_cmd in (108, 159, 107, 144): # <<<<<<<<<<<<<<
+ * f = self._get_unfiltered_back_frame(py_db, frame)
+ * if f is not None:
*/
- }
+ switch (__pyx_v_step_cmd) {
+ case 0x6C:
+ case 0x9F:
+ case 0x6B:
+ case 0x90:
- /* "_pydevd_bundle/pydevd_cython.pyx":643
- * # ENDIF
- * try:
- * try: # <<<<<<<<<<<<<<
- * # Showing return values was turned off, we should remove them from locals dict.
- * # The values can be in the current frame or in the back one
+ /* "_pydevd_bundle/pydevd_cython.pyx":756
+ * if stop_frame is frame and not info.pydev_use_scoped_step_frame:
+ * if step_cmd in (108, 159, 107, 144):
+ * f = self._get_unfiltered_back_frame(py_db, frame) # <<<<<<<<<<<<<<
+ * if f is not None:
+ * info.pydev_step_cmd = 206
*/
- }
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L11_try_end;
- __pyx_L6_error:;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_1 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_get_unfiltered_back_frame(__pyx_v_self, __pyx_v_py_db, __pyx_v_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 756, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_f = __pyx_t_1;
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":651
- * if f_locals_back is not None:
- * f_locals_back.pop(RETURN_VALUES_DICT, None)
- * except: # <<<<<<<<<<<<<<
- * pydev_log.exception()
- * finally:
+ /* "_pydevd_bundle/pydevd_cython.pyx":757
+ * if step_cmd in (108, 159, 107, 144):
+ * f = self._get_unfiltered_back_frame(py_db, frame)
+ * if f is not None: # <<<<<<<<<<<<<<
+ * info.pydev_step_cmd = 206
+ * info.pydev_step_stop = f
*/
- /*except:*/ {
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._remove_return_values", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 651, __pyx_L8_except_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_10 = (__pyx_v_f != Py_None);
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":652
- * f_locals_back.pop(RETURN_VALUES_DICT, None)
- * except:
- * pydev_log.exception() # <<<<<<<<<<<<<<
- * finally:
- * f_locals_back = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":758
+ * f = self._get_unfiltered_back_frame(py_db, frame)
+ * if f is not None:
+ * info.pydev_step_cmd = 206 # <<<<<<<<<<<<<<
+ * info.pydev_step_stop = f
+ * else:
*/
- __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 652, __pyx_L8_except_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_exception); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 652, __pyx_L8_except_error)
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_12);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_12, function);
- }
- }
- __pyx_t_9 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_12);
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 652, __pyx_L8_except_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- goto __pyx_L7_exception_handled;
- }
- __pyx_L8_except_error:;
+ __pyx_v_info->pydev_step_cmd = 0xCE;
- /* "_pydevd_bundle/pydevd_cython.pyx":643
- * # ENDIF
- * try:
- * try: # <<<<<<<<<<<<<<
- * # Showing return values was turned off, we should remove them from locals dict.
- * # The values can be in the current frame or in the back one
+ /* "_pydevd_bundle/pydevd_cython.pyx":759
+ * if f is not None:
+ * info.pydev_step_cmd = 206
+ * info.pydev_step_stop = f # <<<<<<<<<<<<<<
+ * else:
+ * if step_cmd == 108:
*/
- __Pyx_XGIVEREF(__pyx_t_1);
- __Pyx_XGIVEREF(__pyx_t_2);
- __Pyx_XGIVEREF(__pyx_t_3);
- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
- goto __pyx_L4_error;
- __pyx_L7_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_1);
- __Pyx_XGIVEREF(__pyx_t_2);
- __Pyx_XGIVEREF(__pyx_t_3);
- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
- __pyx_L11_try_end:;
- }
- }
+ __Pyx_INCREF(__pyx_v_f);
+ __Pyx_GIVEREF(__pyx_v_f);
+ __Pyx_GOTREF(__pyx_v_info->pydev_step_stop);
+ __Pyx_DECREF(__pyx_v_info->pydev_step_stop);
+ __pyx_v_info->pydev_step_stop = __pyx_v_f;
- /* "_pydevd_bundle/pydevd_cython.pyx":654
- * pydev_log.exception()
- * finally:
- * f_locals_back = None # <<<<<<<<<<<<<<
- *
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ /* "_pydevd_bundle/pydevd_cython.pyx":757
+ * if step_cmd in (108, 159, 107, 144):
+ * f = self._get_unfiltered_back_frame(py_db, frame)
+ * if f is not None: # <<<<<<<<<<<<<<
+ * info.pydev_step_cmd = 206
+ * info.pydev_step_stop = f
*/
- /*finally:*/ {
- /*normal exit:*/{
- __Pyx_INCREF(Py_None);
- __Pyx_XDECREF_SET(__pyx_v_f_locals_back, Py_None);
- goto __pyx_L5;
- }
- __pyx_L4_error:;
- /*exception exit:*/{
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
- __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
- if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0)) __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1);
- __Pyx_XGOTREF(__pyx_t_3);
- __Pyx_XGOTREF(__pyx_t_2);
- __Pyx_XGOTREF(__pyx_t_1);
- __Pyx_XGOTREF(__pyx_t_15);
- __Pyx_XGOTREF(__pyx_t_16);
- __Pyx_XGOTREF(__pyx_t_17);
- __pyx_t_8 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
- {
- __Pyx_INCREF(Py_None);
- __Pyx_XDECREF_SET(__pyx_v_f_locals_back, Py_None);
- }
- if (PY_MAJOR_VERSION >= 3) {
- __Pyx_XGIVEREF(__pyx_t_15);
- __Pyx_XGIVEREF(__pyx_t_16);
- __Pyx_XGIVEREF(__pyx_t_17);
- __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
- }
- __Pyx_XGIVEREF(__pyx_t_3);
- __Pyx_XGIVEREF(__pyx_t_2);
- __Pyx_XGIVEREF(__pyx_t_1);
- __Pyx_ErrRestore(__pyx_t_3, __pyx_t_2, __pyx_t_1);
- __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
- __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
- goto __pyx_L1_error;
- }
- __pyx_L5:;
- }
+ goto __pyx_L23;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":638
- *
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * cdef _remove_return_values(self, main_debugger, frame): # <<<<<<<<<<<<<<
- * # ELSE
- * # def _remove_return_values(self, main_debugger, frame):
+ /* "_pydevd_bundle/pydevd_cython.pyx":761
+ * info.pydev_step_stop = f
+ * else:
+ * if step_cmd == 108: # <<<<<<<<<<<<<<
+ * info.pydev_step_cmd = 107
+ * info.pydev_step_stop = None
*/
+ /*else*/ {
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_9);
- __Pyx_XDECREF(__pyx_t_12);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._remove_return_values", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_f_locals_back);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
+ /* "_pydevd_bundle/pydevd_cython.pyx":765
+ * info.pydev_step_stop = None
+ *
+ * elif step_cmd == 159: # <<<<<<<<<<<<<<
+ * info.pydev_step_cmd = 144
+ * info.pydev_step_stop = None
+ */
+ switch (__pyx_v_step_cmd) {
+ case 0x6C:
-/* "_pydevd_bundle/pydevd_cython.pyx":657
+ /* "_pydevd_bundle/pydevd_cython.pyx":762
+ * else:
+ * if step_cmd == 108:
+ * info.pydev_step_cmd = 107 # <<<<<<<<<<<<<<
+ * info.pydev_step_stop = None
*
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * cdef _get_unfiltered_back_frame(self, main_debugger, frame): # <<<<<<<<<<<<<<
- * # ELSE
- * # def _get_unfiltered_back_frame(self, main_debugger, frame):
*/
+ __pyx_v_info->pydev_step_cmd = 0x6B;
-static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__get_unfiltered_back_frame(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_main_debugger, PyObject *__pyx_v_frame) {
- PyObject *__pyx_v_f = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- int __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
- PyObject *__pyx_t_8 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_get_unfiltered_back_frame", 0);
-
- /* "_pydevd_bundle/pydevd_cython.pyx":661
- * # def _get_unfiltered_back_frame(self, main_debugger, frame):
- * # ENDIF
- * f = frame.f_back # <<<<<<<<<<<<<<
- * while f is not None:
- * if not main_debugger.is_files_filter_enabled:
+ /* "_pydevd_bundle/pydevd_cython.pyx":763
+ * if step_cmd == 108:
+ * info.pydev_step_cmd = 107
+ * info.pydev_step_stop = None # <<<<<<<<<<<<<<
+ *
+ * elif step_cmd == 159:
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 661, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_f = __pyx_t_1;
- __pyx_t_1 = 0;
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ __Pyx_GOTREF(__pyx_v_info->pydev_step_stop);
+ __Pyx_DECREF(__pyx_v_info->pydev_step_stop);
+ __pyx_v_info->pydev_step_stop = Py_None;
- /* "_pydevd_bundle/pydevd_cython.pyx":662
- * # ENDIF
- * f = frame.f_back
- * while f is not None: # <<<<<<<<<<<<<<
- * if not main_debugger.is_files_filter_enabled:
- * return f
+ /* "_pydevd_bundle/pydevd_cython.pyx":761
+ * info.pydev_step_stop = f
+ * else:
+ * if step_cmd == 108: # <<<<<<<<<<<<<<
+ * info.pydev_step_cmd = 107
+ * info.pydev_step_stop = None
*/
- while (1) {
- __pyx_t_2 = (__pyx_v_f != Py_None);
- __pyx_t_3 = (__pyx_t_2 != 0);
- if (!__pyx_t_3) break;
+ break;
+ case 0x9F:
- /* "_pydevd_bundle/pydevd_cython.pyx":663
- * f = frame.f_back
- * while f is not None:
- * if not main_debugger.is_files_filter_enabled: # <<<<<<<<<<<<<<
- * return f
+ /* "_pydevd_bundle/pydevd_cython.pyx":766
+ *
+ * elif step_cmd == 159:
+ * info.pydev_step_cmd = 144 # <<<<<<<<<<<<<<
+ * info.pydev_step_stop = None
*
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_is_files_filter_enabled); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 663, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 663, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_2 = ((!__pyx_t_3) != 0);
- if (__pyx_t_2) {
+ __pyx_v_info->pydev_step_cmd = 0x90;
- /* "_pydevd_bundle/pydevd_cython.pyx":664
- * while f is not None:
- * if not main_debugger.is_files_filter_enabled:
- * return f # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":767
+ * elif step_cmd == 159:
+ * info.pydev_step_cmd = 144
+ * info.pydev_step_stop = None # <<<<<<<<<<<<<<
*
- * else:
+ * elif step_cmd == 206:
*/
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_f);
- __pyx_r = __pyx_v_f;
- goto __pyx_L0;
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ __Pyx_GOTREF(__pyx_v_info->pydev_step_stop);
+ __Pyx_DECREF(__pyx_v_info->pydev_step_stop);
+ __pyx_v_info->pydev_step_stop = Py_None;
- /* "_pydevd_bundle/pydevd_cython.pyx":663
- * f = frame.f_back
- * while f is not None:
- * if not main_debugger.is_files_filter_enabled: # <<<<<<<<<<<<<<
- * return f
+ /* "_pydevd_bundle/pydevd_cython.pyx":765
+ * info.pydev_step_stop = None
*
+ * elif step_cmd == 159: # <<<<<<<<<<<<<<
+ * info.pydev_step_cmd = 144
+ * info.pydev_step_stop = None
*/
- }
+ break;
+ default: break;
+ }
+ }
+ __pyx_L23:;
- /* "_pydevd_bundle/pydevd_cython.pyx":667
- *
- * else:
- * if main_debugger.apply_files_filter(f, f.f_code.co_filename, False): # <<<<<<<<<<<<<<
- * f = f.f_back
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":755
+ * # frame in this case).
+ * if stop_frame is frame and not info.pydev_use_scoped_step_frame:
+ * if step_cmd in (108, 159, 107, 144): # <<<<<<<<<<<<<<
+ * f = self._get_unfiltered_back_frame(py_db, frame)
+ * if f is not None:
*/
- /*else*/ {
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 667, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_code); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 667, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 667, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = NULL;
- __pyx_t_7 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- __pyx_t_7 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_v_f, __pyx_t_6, Py_False};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 667, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_v_f, __pyx_t_6, Py_False};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 667, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 667, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- if (__pyx_t_5) {
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
- }
- __Pyx_INCREF(__pyx_v_f);
- __Pyx_GIVEREF(__pyx_v_f);
- PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_f);
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_6);
- __Pyx_INCREF(Py_False);
- __Pyx_GIVEREF(Py_False);
- PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, Py_False);
- __pyx_t_6 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 667, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 667, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_2) {
+ break;
+ case 0xCE:
- /* "_pydevd_bundle/pydevd_cython.pyx":668
- * else:
- * if main_debugger.apply_files_filter(f, f.f_code.co_filename, False):
- * f = f.f_back # <<<<<<<<<<<<<<
- *
- * else:
+ /* "_pydevd_bundle/pydevd_cython.pyx":771
+ * elif step_cmd == 206:
+ * # We're exiting this one, so, mark the new coroutine context.
+ * f = self._get_unfiltered_back_frame(py_db, frame) # <<<<<<<<<<<<<<
+ * if f is not None:
+ * info.pydev_step_stop = f
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 668, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_1);
- __pyx_t_1 = 0;
+ __pyx_t_1 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_get_unfiltered_back_frame(__pyx_v_self, __pyx_v_py_db, __pyx_v_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 771, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_f = __pyx_t_1;
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":667
- *
- * else:
- * if main_debugger.apply_files_filter(f, f.f_code.co_filename, False): # <<<<<<<<<<<<<<
- * f = f.f_back
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":772
+ * # We're exiting this one, so, mark the new coroutine context.
+ * f = self._get_unfiltered_back_frame(py_db, frame)
+ * if f is not None: # <<<<<<<<<<<<<<
+ * info.pydev_step_stop = f
+ * else:
*/
- goto __pyx_L6;
- }
+ __pyx_t_10 = (__pyx_v_f != Py_None);
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":671
- *
- * else:
- * return f # <<<<<<<<<<<<<<
- *
- * return f
+ /* "_pydevd_bundle/pydevd_cython.pyx":773
+ * f = self._get_unfiltered_back_frame(py_db, frame)
+ * if f is not None:
+ * info.pydev_step_stop = f # <<<<<<<<<<<<<<
+ * else:
+ * info.pydev_step_cmd = 107
*/
- /*else*/ {
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_f);
- __pyx_r = __pyx_v_f;
- goto __pyx_L0;
- }
- __pyx_L6:;
- }
- }
+ __Pyx_INCREF(__pyx_v_f);
+ __Pyx_GIVEREF(__pyx_v_f);
+ __Pyx_GOTREF(__pyx_v_info->pydev_step_stop);
+ __Pyx_DECREF(__pyx_v_info->pydev_step_stop);
+ __pyx_v_info->pydev_step_stop = __pyx_v_f;
- /* "_pydevd_bundle/pydevd_cython.pyx":673
- * return f
- *
- * return f # <<<<<<<<<<<<<<
- *
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ /* "_pydevd_bundle/pydevd_cython.pyx":772
+ * # We're exiting this one, so, mark the new coroutine context.
+ * f = self._get_unfiltered_back_frame(py_db, frame)
+ * if f is not None: # <<<<<<<<<<<<<<
+ * info.pydev_step_stop = f
+ * else:
*/
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_f);
- __pyx_r = __pyx_v_f;
- goto __pyx_L0;
+ goto __pyx_L24;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":657
+ /* "_pydevd_bundle/pydevd_cython.pyx":775
+ * info.pydev_step_stop = f
+ * else:
+ * info.pydev_step_cmd = 107 # <<<<<<<<<<<<<<
+ * info.pydev_step_stop = None
*
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * cdef _get_unfiltered_back_frame(self, main_debugger, frame): # <<<<<<<<<<<<<<
- * # ELSE
- * # def _get_unfiltered_back_frame(self, main_debugger, frame):
*/
+ /*else*/ {
+ __pyx_v_info->pydev_step_cmd = 0x6B;
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._get_unfiltered_back_frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_f);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "_pydevd_bundle/pydevd_cython.pyx":676
+ /* "_pydevd_bundle/pydevd_cython.pyx":776
+ * else:
+ * info.pydev_step_cmd = 107
+ * info.pydev_step_stop = None # <<<<<<<<<<<<<<
*
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * cdef _is_same_frame(self, target_frame, current_frame): # <<<<<<<<<<<<<<
- * cdef PyDBAdditionalThreadInfo info;
- * # ELSE
+ * elif event == "exception":
*/
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ __Pyx_GOTREF(__pyx_v_info->pydev_step_stop);
+ __Pyx_DECREF(__pyx_v_info->pydev_step_stop);
+ __pyx_v_info->pydev_step_stop = Py_None;
+ }
+ __pyx_L24:;
-static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__is_same_frame(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_target_frame, PyObject *__pyx_v_current_frame) {
- struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info = 0;
- PyObject *__pyx_v_f = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_t_4;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_is_same_frame", 0);
-
- /* "_pydevd_bundle/pydevd_cython.pyx":681
- * # def _is_same_frame(self, target_frame, current_frame):
- * # ENDIF
- * if target_frame is current_frame: # <<<<<<<<<<<<<<
- * return True
+ /* "_pydevd_bundle/pydevd_cython.pyx":769
+ * info.pydev_step_stop = None
*
+ * elif step_cmd == 206: # <<<<<<<<<<<<<<
+ * # We're exiting this one, so, mark the new coroutine context.
+ * f = self._get_unfiltered_back_frame(py_db, frame)
*/
- __pyx_t_1 = (__pyx_v_target_frame == __pyx_v_current_frame);
- __pyx_t_2 = (__pyx_t_1 != 0);
- if (__pyx_t_2) {
+ break;
+ default: break;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":682
- * # ENDIF
- * if target_frame is current_frame:
- * return True # <<<<<<<<<<<<<<
- *
- * info = self._args[2]
+ /* "_pydevd_bundle/pydevd_cython.pyx":754
+ * # as the return shouldn't mean that we've actually completed executing a
+ * # frame in this case).
+ * if stop_frame is frame and not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
+ * if step_cmd in (108, 159, 107, 144):
+ * f = self._get_unfiltered_back_frame(py_db, frame)
*/
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(Py_True);
- __pyx_r = Py_True;
- goto __pyx_L0;
+ }
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":681
- * # def _is_same_frame(self, target_frame, current_frame):
- * # ENDIF
- * if target_frame is current_frame: # <<<<<<<<<<<<<<
- * return True
+ /* "_pydevd_bundle/pydevd_cython.pyx":709
+ * is_exception_event = False
*
+ * elif event == "return": # <<<<<<<<<<<<<<
+ * is_line = False
+ * is_call = False
*/
- }
+ goto __pyx_L13;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":684
- * return True
+ /* "_pydevd_bundle/pydevd_cython.pyx":778
+ * info.pydev_step_stop = None
*
- * info = self._args[2] # <<<<<<<<<<<<<<
- * if info.pydev_use_scoped_step_frame:
- * # If using scoped step we don't check the target, we just need to check
+ * elif event == "exception": # <<<<<<<<<<<<<<
+ * breakpoints_for_file = None
+ * if has_exception_breakpoints:
*/
- if (unlikely(__pyx_v_self->_args == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 684, __pyx_L1_error)
- }
- __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 684, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(0, 684, __pyx_L1_error)
- __pyx_v_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_3);
- __pyx_t_3 = 0;
+ __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_exception, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 778, __pyx_L4_error)
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":685
+ /* "_pydevd_bundle/pydevd_cython.pyx":779
*
- * info = self._args[2]
- * if info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
- * # If using scoped step we don't check the target, we just need to check
- * # if the current matches the same heuristic where the target was defined.
+ * elif event == "exception":
+ * breakpoints_for_file = None # <<<<<<<<<<<<<<
+ * if has_exception_breakpoints:
+ * should_stop, frame, exc_info = should_stop_on_exception(
*/
- __pyx_t_2 = (__pyx_v_info->pydev_use_scoped_step_frame != 0);
- if (__pyx_t_2) {
+ __Pyx_INCREF(Py_None);
+ __pyx_v_breakpoints_for_file = ((PyObject*)Py_None);
- /* "_pydevd_bundle/pydevd_cython.pyx":688
- * # If using scoped step we don't check the target, we just need to check
- * # if the current matches the same heuristic where the target was defined.
- * if target_frame is not None and current_frame is not None: # <<<<<<<<<<<<<<
- * if target_frame.f_code.co_filename == current_frame.f_code.co_filename:
- * # The co_name may be different (it may include the line number), but
+ /* "_pydevd_bundle/pydevd_cython.pyx":780
+ * elif event == "exception":
+ * breakpoints_for_file = None
+ * if has_exception_breakpoints: # <<<<<<<<<<<<<<
+ * should_stop, frame, exc_info = should_stop_on_exception(
+ * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info
*/
- __pyx_t_1 = (__pyx_v_target_frame != Py_None);
- __pyx_t_4 = (__pyx_t_1 != 0);
- if (__pyx_t_4) {
- } else {
- __pyx_t_2 = __pyx_t_4;
- goto __pyx_L6_bool_binop_done;
- }
- __pyx_t_4 = (__pyx_v_current_frame != Py_None);
- __pyx_t_1 = (__pyx_t_4 != 0);
- __pyx_t_2 = __pyx_t_1;
- __pyx_L6_bool_binop_done:;
- if (__pyx_t_2) {
+ if (__pyx_v_has_exception_breakpoints) {
- /* "_pydevd_bundle/pydevd_cython.pyx":689
- * # if the current matches the same heuristic where the target was defined.
- * if target_frame is not None and current_frame is not None:
- * if target_frame.f_code.co_filename == current_frame.f_code.co_filename: # <<<<<<<<<<<<<<
- * # The co_name may be different (it may include the line number), but
- * # the filename must still be the same.
+ /* "_pydevd_bundle/pydevd_cython.pyx":781
+ * breakpoints_for_file = None
+ * if has_exception_breakpoints:
+ * should_stop, frame, exc_info = should_stop_on_exception( # <<<<<<<<<<<<<<
+ * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info
+ * )
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_target_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 689, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 689, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_current_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 689, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 689, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 689, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 689, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_2) {
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_should_stop_on_exception); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 781, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
- /* "_pydevd_bundle/pydevd_cython.pyx":692
- * # The co_name may be different (it may include the line number), but
- * # the filename must still be the same.
- * f = current_frame.f_back # <<<<<<<<<<<<<<
- * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
- * f = f.f_back
+ /* "_pydevd_bundle/pydevd_cython.pyx":782
+ * if has_exception_breakpoints:
+ * should_stop, frame, exc_info = should_stop_on_exception(
+ * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info # <<<<<<<<<<<<<<
+ * )
+ * self.exc_info = exc_info
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_current_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 692, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_v_f = __pyx_t_3;
- __pyx_t_3 = 0;
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 782, __pyx_L4_error)
+ }
+ __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 782, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 782, __pyx_L4_error)
+ }
+ __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 782, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 782, __pyx_L4_error)
+ }
+ __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 782, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[7] = {__pyx_t_3, __pyx_t_7, __pyx_t_6, __pyx_v_frame, __pyx_t_4, __pyx_v_arg, __pyx_v_self->exc_info};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 6+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 781, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+ if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
+ PyObject* sequence = __pyx_t_1;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 3)) {
+ if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 781, __pyx_L4_error)
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1);
+ __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2);
+ } else {
+ __pyx_t_8 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_4 = PyList_GET_ITEM(sequence, 1);
+ __pyx_t_6 = PyList_GET_ITEM(sequence, 2);
+ }
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_6);
+ #else
+ __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 781, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 781, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 781, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ #endif
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ } else {
+ Py_ssize_t index = -1;
+ __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 781, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_15 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7);
+ index = 0; __pyx_t_8 = __pyx_t_15(__pyx_t_7); if (unlikely(!__pyx_t_8)) goto __pyx_L26_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_8);
+ index = 1; __pyx_t_4 = __pyx_t_15(__pyx_t_7); if (unlikely(!__pyx_t_4)) goto __pyx_L26_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_4);
+ index = 2; __pyx_t_6 = __pyx_t_15(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L26_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_6);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_7), 3) < 0) __PYX_ERR(0, 781, __pyx_L4_error)
+ __pyx_t_15 = NULL;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ goto __pyx_L27_unpacking_done;
+ __pyx_L26_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_15 = NULL;
+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+ __PYX_ERR(0, 781, __pyx_L4_error)
+ __pyx_L27_unpacking_done:;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":693
- * # the filename must still be the same.
- * f = current_frame.f_back
- * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: # <<<<<<<<<<<<<<
- * f = f.f_back
- * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
+ /* "_pydevd_bundle/pydevd_cython.pyx":781
+ * breakpoints_for_file = None
+ * if has_exception_breakpoints:
+ * should_stop, frame, exc_info = should_stop_on_exception( # <<<<<<<<<<<<<<
+ * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info
+ * )
*/
- __pyx_t_1 = (__pyx_v_f != Py_None);
- __pyx_t_4 = (__pyx_t_1 != 0);
- if (__pyx_t_4) {
- } else {
- __pyx_t_2 = __pyx_t_4;
- goto __pyx_L10_bool_binop_done;
- }
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 693, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_co_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 693, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 693, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_3, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 693, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 693, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 693, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_2 = __pyx_t_4;
- __pyx_L10_bool_binop_done:;
- if (__pyx_t_2) {
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 781, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_v_should_stop = __pyx_t_10;
+ __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_4);
+ __pyx_t_4 = 0;
+ __pyx_v_exc_info = __pyx_t_6;
+ __pyx_t_6 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":694
- * f = current_frame.f_back
- * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
- * f = f.f_back # <<<<<<<<<<<<<<
- * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
- * return True
+ /* "_pydevd_bundle/pydevd_cython.pyx":784
+ * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info
+ * )
+ * self.exc_info = exc_info # <<<<<<<<<<<<<<
+ * if should_stop:
+ * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED):
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 694, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_3);
- __pyx_t_3 = 0;
+ __Pyx_INCREF(__pyx_v_exc_info);
+ __Pyx_GIVEREF(__pyx_v_exc_info);
+ __Pyx_GOTREF(__pyx_v_self->exc_info);
+ __Pyx_DECREF(__pyx_v_self->exc_info);
+ __pyx_v_self->exc_info = __pyx_v_exc_info;
- /* "_pydevd_bundle/pydevd_cython.pyx":695
- * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
- * f = f.f_back
- * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: # <<<<<<<<<<<<<<
- * return True
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":785
+ * )
+ * self.exc_info = exc_info
+ * if should_stop: # <<<<<<<<<<<<<<
+ * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED):
+ * return self.trace_dispatch
*/
- __pyx_t_4 = (__pyx_v_f != Py_None);
- __pyx_t_1 = (__pyx_t_4 != 0);
- if (__pyx_t_1) {
- } else {
- __pyx_t_2 = __pyx_t_1;
- goto __pyx_L13_bool_binop_done;
- }
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 695, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_co_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 695, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 695, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_3, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 695, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 695, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 695, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_2 = __pyx_t_1;
- __pyx_L13_bool_binop_done:;
- if (__pyx_t_2) {
+ if (__pyx_v_should_stop) {
- /* "_pydevd_bundle/pydevd_cython.pyx":696
- * f = f.f_back
- * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
- * return True # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":786
+ * self.exc_info = exc_info
+ * if should_stop:
+ * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): # <<<<<<<<<<<<<<
+ * return self.trace_dispatch
*
- * return False
*/
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(Py_True);
- __pyx_r = Py_True;
- goto __pyx_L0;
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_handle_exception); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 786, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 786, __pyx_L4_error)
+ }
+ __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 786, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 786, __pyx_L4_error)
+ }
+ __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 786, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_EXCEPTION_TYPE_HANDLED); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 786, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_3 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[6] = {__pyx_t_3, __pyx_t_4, __pyx_t_8, __pyx_v_frame, __pyx_v_arg, __pyx_t_7};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 5+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 786, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ }
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 786, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":695
- * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
- * f = f.f_back
- * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: # <<<<<<<<<<<<<<
- * return True
+ /* "_pydevd_bundle/pydevd_cython.pyx":787
+ * if should_stop:
+ * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED):
+ * return self.trace_dispatch # <<<<<<<<<<<<<<
*
+ * return self.trace_dispatch
*/
- }
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 787, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L3_return;
- /* "_pydevd_bundle/pydevd_cython.pyx":693
- * # the filename must still be the same.
- * f = current_frame.f_back
- * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: # <<<<<<<<<<<<<<
- * f = f.f_back
- * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
- */
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":689
- * # if the current matches the same heuristic where the target was defined.
- * if target_frame is not None and current_frame is not None:
- * if target_frame.f_code.co_filename == current_frame.f_code.co_filename: # <<<<<<<<<<<<<<
- * # The co_name may be different (it may include the line number), but
- * # the filename must still be the same.
- */
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":688
- * # If using scoped step we don't check the target, we just need to check
- * # if the current matches the same heuristic where the target was defined.
- * if target_frame is not None and current_frame is not None: # <<<<<<<<<<<<<<
- * if target_frame.f_code.co_filename == current_frame.f_code.co_filename:
- * # The co_name may be different (it may include the line number), but
- */
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":685
- *
- * info = self._args[2]
- * if info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
- * # If using scoped step we don't check the target, we just need to check
- * # if the current matches the same heuristic where the target was defined.
- */
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":698
- * return True
- *
- * return False # <<<<<<<<<<<<<<
- *
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(Py_False);
- __pyx_r = Py_False;
- goto __pyx_L0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":676
+ /* "_pydevd_bundle/pydevd_cython.pyx":786
+ * self.exc_info = exc_info
+ * if should_stop:
+ * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): # <<<<<<<<<<<<<<
+ * return self.trace_dispatch
*
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * cdef _is_same_frame(self, target_frame, current_frame): # <<<<<<<<<<<<<<
- * cdef PyDBAdditionalThreadInfo info;
- * # ELSE
*/
+ }
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._is_same_frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_info);
- __Pyx_XDECREF(__pyx_v_f);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "_pydevd_bundle/pydevd_cython.pyx":701
- *
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * cpdef trace_dispatch(self, frame, str event, arg): # <<<<<<<<<<<<<<
- * cdef tuple abs_path_canonical_path_and_base;
- * cdef bint is_exception_event;
+ /* "_pydevd_bundle/pydevd_cython.pyx":785
+ * )
+ * self.exc_info = exc_info
+ * if should_stop: # <<<<<<<<<<<<<<
+ * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED):
+ * return self.trace_dispatch
*/
-
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_11trace_dispatch(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_trace_dispatch(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg, int __pyx_skip_dispatch) {
- PyObject *__pyx_v_abs_path_canonical_path_and_base = 0;
- int __pyx_v_is_exception_event;
- int __pyx_v_has_exception_breakpoints;
- int __pyx_v_can_skip;
- int __pyx_v_stop;
- int __pyx_v_stop_on_plugin_breakpoint;
- struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info = 0;
- int __pyx_v_step_cmd;
- int __pyx_v_line;
- int __pyx_v_is_line;
- int __pyx_v_is_call;
- int __pyx_v_is_return;
- int __pyx_v_should_stop;
- PyObject *__pyx_v_breakpoints_for_file = 0;
- PyObject *__pyx_v_stop_info = 0;
- PyObject *__pyx_v_curr_func_name = 0;
- PyObject *__pyx_v_frame_skips_cache = 0;
- PyObject *__pyx_v_frame_cache_key = 0;
- PyObject *__pyx_v_line_cache_key = 0;
- int __pyx_v_breakpoints_in_line_cache;
- int __pyx_v_breakpoints_in_frame_cache;
- int __pyx_v_has_breakpoint_in_frame;
- int __pyx_v_bp_line;
- PyObject *__pyx_v_bp = 0;
- int __pyx_v_pydev_smart_parent_offset;
- int __pyx_v_pydev_smart_child_offset;
- PyObject *__pyx_v_pydev_smart_step_into_variants = 0;
- PyObject *__pyx_v_main_debugger = NULL;
- PyObject *__pyx_v_thread = NULL;
- PyObject *__pyx_v_plugin_manager = NULL;
- PyObject *__pyx_v_stop_frame = NULL;
- PyObject *__pyx_v_function_breakpoint_on_call_event = NULL;
- PyObject *__pyx_v_returns_cache_key = NULL;
- PyObject *__pyx_v_return_lines = NULL;
- PyObject *__pyx_v_x = NULL;
- PyObject *__pyx_v_f = NULL;
- PyObject *__pyx_v_func_lines = NULL;
- PyObject *__pyx_v_offset_and_lineno = NULL;
- PyObject *__pyx_v_breakpoint = NULL;
- PyObject *__pyx_v_stop_reason = NULL;
- PyObject *__pyx_v_bp_type = NULL;
- PyObject *__pyx_v_new_frame = NULL;
- PyObject *__pyx_v_result = NULL;
- PyObject *__pyx_v_eval_result = NULL;
- PyObject *__pyx_v_cmd = NULL;
- PyObject *__pyx_v_exc = NULL;
- long __pyx_v_should_skip;
- PyObject *__pyx_v_plugin_stop = NULL;
- PyObject *__pyx_v_force_check_project_scope = NULL;
- PyObject *__pyx_v_filename = NULL;
- PyObject *__pyx_v_f2 = NULL;
- PyObject *__pyx_v_back = NULL;
- PyObject *__pyx_v_smart_step_into_variant = NULL;
- PyObject *__pyx_v_children_variants = NULL;
- PyObject *__pyx_v_f_code = NULL;
- CYTHON_UNUSED PyObject *__pyx_v_stopped_on_plugin = NULL;
- PyObject *__pyx_v_back_absolute_filename = NULL;
- CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
- PyObject *__pyx_v_base = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_t_5;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
- int __pyx_t_9;
- int __pyx_t_10;
- int __pyx_t_11;
- Py_ssize_t __pyx_t_12;
- PyObject *(*__pyx_t_13)(PyObject *);
- int __pyx_t_14;
- PyObject *(*__pyx_t_15)(PyObject *);
- PyObject *__pyx_t_16 = NULL;
- PyObject *__pyx_t_17 = NULL;
- PyObject *__pyx_t_18 = NULL;
- int __pyx_t_19;
- Py_ssize_t __pyx_t_20;
- PyObject *__pyx_t_21 = NULL;
- char const *__pyx_t_22;
- PyObject *__pyx_t_23 = NULL;
- PyObject *__pyx_t_24 = NULL;
- PyObject *__pyx_t_25 = NULL;
- PyObject *__pyx_t_26 = NULL;
- PyObject *__pyx_t_27 = NULL;
- PyObject *__pyx_t_28 = NULL;
- int __pyx_t_29;
- char const *__pyx_t_30;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("trace_dispatch", 0);
- __Pyx_INCREF(__pyx_v_frame);
- /* Check if called by wrapper */
- if (unlikely(__pyx_skip_dispatch)) ;
- /* Check if overridden in Python */
- else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
- #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
- static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
- if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
- PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
- #endif
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 701, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_11trace_dispatch)) {
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
- __pyx_t_5 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
- __pyx_t_5 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_frame, __pyx_v_event, __pyx_v_arg};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 701, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_frame, __pyx_v_event, __pyx_v_arg};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 701, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 701, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- if (__pyx_t_4) {
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
}
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_frame);
- __Pyx_INCREF(__pyx_v_event);
- __Pyx_GIVEREF(__pyx_v_event);
- PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_event);
- __Pyx_INCREF(__pyx_v_arg);
- __Pyx_GIVEREF(__pyx_v_arg);
- PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_arg);
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 701, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L0;
- }
- #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
- __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
- __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
- if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
- __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
- }
- #endif
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
- }
- #endif
- }
- /* "_pydevd_bundle/pydevd_cython.pyx":741
- * # generation be better split among what each part does).
- *
- * try: # <<<<<<<<<<<<<<
- * # DEBUG = '_debugger_case_generator.py' in frame.f_code.co_filename
- * main_debugger, abs_path_canonical_path_and_base, info, thread, frame_skips_cache, frame_cache_key = self._args
- */
- /*try:*/ {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":743
- * try:
- * # DEBUG = '_debugger_case_generator.py' in frame.f_code.co_filename
- * main_debugger, abs_path_canonical_path_and_base, info, thread, frame_skips_cache, frame_cache_key = self._args # <<<<<<<<<<<<<<
- * # if DEBUG: print('frame trace_dispatch %s %s %s %s %s %s, stop: %s' % (frame.f_lineno, frame.f_code.co_name, frame.f_code.co_filename, event, constant_to_str(info.pydev_step_cmd), arg, info.pydev_step_stop))
- * info.is_tracing += 1
+ /* "_pydevd_bundle/pydevd_cython.pyx":780
+ * elif event == "exception":
+ * breakpoints_for_file = None
+ * if has_exception_breakpoints: # <<<<<<<<<<<<<<
+ * should_stop, frame, exc_info = should_stop_on_exception(
+ * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info
*/
- __pyx_t_1 = __pyx_v_self->_args;
- __Pyx_INCREF(__pyx_t_1);
- if (likely(__pyx_t_1 != Py_None)) {
- PyObject* sequence = __pyx_t_1;
- Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
- if (unlikely(size != 6)) {
- if (size > 6) __Pyx_RaiseTooManyValuesError(6);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 743, __pyx_L4_error)
- }
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
- __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2);
- __pyx_t_4 = PyTuple_GET_ITEM(sequence, 3);
- __pyx_t_7 = PyTuple_GET_ITEM(sequence, 4);
- __pyx_t_8 = PyTuple_GET_ITEM(sequence, 5);
- __Pyx_INCREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_6);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_8);
- #else
- {
- Py_ssize_t i;
- PyObject** temps[6] = {&__pyx_t_2,&__pyx_t_3,&__pyx_t_6,&__pyx_t_4,&__pyx_t_7,&__pyx_t_8};
- for (i=0; i < 6; i++) {
- PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 743, __pyx_L4_error)
- __Pyx_GOTREF(item);
- *(temps[i]) = item;
}
- }
- #endif
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else {
- __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 743, __pyx_L4_error)
- }
- if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 743, __pyx_L4_error)
- if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(0, 743, __pyx_L4_error)
- if (!(likely(PyDict_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_7)->tp_name), 0))) __PYX_ERR(0, 743, __pyx_L4_error)
- __pyx_v_main_debugger = __pyx_t_2;
- __pyx_t_2 = 0;
- __pyx_v_abs_path_canonical_path_and_base = ((PyObject*)__pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_v_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_v_thread = __pyx_t_4;
- __pyx_t_4 = 0;
- __pyx_v_frame_skips_cache = ((PyObject*)__pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_v_frame_cache_key = __pyx_t_8;
- __pyx_t_8 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":745
- * main_debugger, abs_path_canonical_path_and_base, info, thread, frame_skips_cache, frame_cache_key = self._args
- * # if DEBUG: print('frame trace_dispatch %s %s %s %s %s %s, stop: %s' % (frame.f_lineno, frame.f_code.co_name, frame.f_code.co_filename, event, constant_to_str(info.pydev_step_cmd), arg, info.pydev_step_stop))
- * info.is_tracing += 1 # <<<<<<<<<<<<<<
- *
- * # TODO: This shouldn't be needed. The fact that frame.f_lineno
- */
- __pyx_v_info->is_tracing = (__pyx_v_info->is_tracing + 1);
-
- /* "_pydevd_bundle/pydevd_cython.pyx":750
- * # is None seems like a bug in Python 3.11.
- * # Reported in: https://github.com/python/cpython/issues/94485
- * line = frame.f_lineno or 0 # Workaround or case where frame.f_lineno is None # <<<<<<<<<<<<<<
- * line_cache_key = (frame_cache_key, line)
- *
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 750, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 750, __pyx_L4_error)
- if (!__pyx_t_9) {
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else {
- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 750, __pyx_L4_error)
- __pyx_t_5 = __pyx_t_10;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L6_bool_binop_done;
- }
- __pyx_t_5 = 0;
- __pyx_L6_bool_binop_done:;
- __pyx_v_line = __pyx_t_5;
- /* "_pydevd_bundle/pydevd_cython.pyx":751
- * # Reported in: https://github.com/python/cpython/issues/94485
- * line = frame.f_lineno or 0 # Workaround or case where frame.f_lineno is None
- * line_cache_key = (frame_cache_key, line) # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":789
+ * return self.trace_dispatch
*
- * if main_debugger.pydb_disposed:
+ * return self.trace_dispatch # <<<<<<<<<<<<<<
+ * else:
+ * # event == 'call' or event == 'c_XXX'
*/
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 751, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 751, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_v_frame_cache_key);
- __Pyx_GIVEREF(__pyx_v_frame_cache_key);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_frame_cache_key);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_v_line_cache_key = ((PyObject*)__pyx_t_8);
- __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 789, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L3_return;
- /* "_pydevd_bundle/pydevd_cython.pyx":753
- * line_cache_key = (frame_cache_key, line)
- *
- * if main_debugger.pydb_disposed: # <<<<<<<<<<<<<<
- * return None if event == 'call' else NO_FTRACE
+ /* "_pydevd_bundle/pydevd_cython.pyx":778
+ * info.pydev_step_stop = None
*
+ * elif event == "exception": # <<<<<<<<<<<<<<
+ * breakpoints_for_file = None
+ * if has_exception_breakpoints:
*/
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_pydb_disposed); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 753, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 753, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (__pyx_t_9) {
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":754
- *
- * if main_debugger.pydb_disposed:
- * return None if event == 'call' else NO_FTRACE # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":792
+ * else:
+ * # event == 'call' or event == 'c_XXX'
+ * return self.trace_dispatch # <<<<<<<<<<<<<<
*
- * plugin_manager = main_debugger.plugin
+ * else: # Not coroutine nor generator
*/
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 754, __pyx_L4_error)
- if ((__pyx_t_9 != 0)) {
- __Pyx_INCREF(Py_None);
- __pyx_t_8 = Py_None;
- } else {
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 754, __pyx_L4_error)
+ /*else*/ {
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 792, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = __pyx_t_1;
+ __pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
+ goto __pyx_L3_return;
}
- __pyx_r = __pyx_t_8;
- __pyx_t_8 = 0;
- goto __pyx_L3_return;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":753
- * line_cache_key = (frame_cache_key, line)
- *
- * if main_debugger.pydb_disposed: # <<<<<<<<<<<<<<
- * return None if event == 'call' else NO_FTRACE
- *
- */
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":756
- * return None if event == 'call' else NO_FTRACE
- *
- * plugin_manager = main_debugger.plugin # <<<<<<<<<<<<<<
- * has_exception_breakpoints = (
- * main_debugger.break_on_caught_exceptions
- */
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_plugin); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 756, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_v_plugin_manager = __pyx_t_8;
- __pyx_t_8 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":758
- * plugin_manager = main_debugger.plugin
- * has_exception_breakpoints = (
- * main_debugger.break_on_caught_exceptions # <<<<<<<<<<<<<<
- * or main_debugger.break_on_user_uncaught_exceptions
- * or main_debugger.has_plugin_exception_breaks)
- */
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_break_on_caught_exceptions); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 758, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 758, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (!__pyx_t_11) {
- } else {
- __pyx_t_9 = __pyx_t_11;
- goto __pyx_L9_bool_binop_done;
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":759
- * has_exception_breakpoints = (
- * main_debugger.break_on_caught_exceptions
- * or main_debugger.break_on_user_uncaught_exceptions # <<<<<<<<<<<<<<
- * or main_debugger.has_plugin_exception_breaks)
- *
- */
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_break_on_user_uncaught_exception); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 759, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 759, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (!__pyx_t_11) {
- } else {
- __pyx_t_9 = __pyx_t_11;
- goto __pyx_L9_bool_binop_done;
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":760
- * main_debugger.break_on_caught_exceptions
- * or main_debugger.break_on_user_uncaught_exceptions
- * or main_debugger.has_plugin_exception_breaks) # <<<<<<<<<<<<<<
- *
- * stop_frame = info.pydev_step_stop
- */
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_has_plugin_exception_breaks); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 760, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 760, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_9 = __pyx_t_11;
- __pyx_L9_bool_binop_done:;
- __pyx_v_has_exception_breakpoints = __pyx_t_9;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":762
- * or main_debugger.has_plugin_exception_breaks)
- *
- * stop_frame = info.pydev_step_stop # <<<<<<<<<<<<<<
- * step_cmd = info.pydev_step_cmd
- * function_breakpoint_on_call_event = None
- */
- __pyx_t_8 = __pyx_v_info->pydev_step_stop;
- __Pyx_INCREF(__pyx_t_8);
- __pyx_v_stop_frame = __pyx_t_8;
- __pyx_t_8 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":763
- *
- * stop_frame = info.pydev_step_stop
- * step_cmd = info.pydev_step_cmd # <<<<<<<<<<<<<<
- * function_breakpoint_on_call_event = None
- *
- */
- __pyx_t_5 = __pyx_v_info->pydev_step_cmd;
- __pyx_v_step_cmd = __pyx_t_5;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":764
- * stop_frame = info.pydev_step_stop
- * step_cmd = info.pydev_step_cmd
- * function_breakpoint_on_call_event = None # <<<<<<<<<<<<<<
- *
- * if frame.f_code.co_flags & 0xa0: # 0xa0 == CO_GENERATOR = 0x20 | CO_COROUTINE = 0x80
- */
- __Pyx_INCREF(Py_None);
- __pyx_v_function_breakpoint_on_call_event = Py_None;
+ __pyx_L13:;
- /* "_pydevd_bundle/pydevd_cython.pyx":766
+ /* "_pydevd_bundle/pydevd_cython.pyx":699
* function_breakpoint_on_call_event = None
*
- * if frame.f_code.co_flags & 0xa0: # 0xa0 == CO_GENERATOR = 0x20 | CO_COROUTINE = 0x80 # <<<<<<<<<<<<<<
+ * if frame.f_code.co_flags & 0xA0: # 0xa0 == CO_GENERATOR = 0x20 | CO_COROUTINE = 0x80 # <<<<<<<<<<<<<<
* # Dealing with coroutines and generators:
* # When in a coroutine we change the perceived event to the debugger because
*/
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 766, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_co_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 766, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyInt_AndObjC(__pyx_t_1, __pyx_int_160, 0xa0, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 766, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 766, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (__pyx_t_9) {
+ goto __pyx_L12;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":770
- * # When in a coroutine we change the perceived event to the debugger because
- * # a call, StopIteration exception and return are usually just pausing/unpausing it.
- * if event == 'line': # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":795
+ *
+ * else: # Not coroutine nor generator
+ * if event == "line": # <<<<<<<<<<<<<<
* is_line = True
* is_call = False
*/
- __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_line, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 770, __pyx_L4_error)
- __pyx_t_11 = (__pyx_t_9 != 0);
- if (__pyx_t_11) {
+ /*else*/ {
+ __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_line, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 795, __pyx_L4_error)
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":771
- * # a call, StopIteration exception and return are usually just pausing/unpausing it.
- * if event == 'line':
+ /* "_pydevd_bundle/pydevd_cython.pyx":796
+ * else: # Not coroutine nor generator
+ * if event == "line":
* is_line = True # <<<<<<<<<<<<<<
* is_call = False
* is_return = False
*/
__pyx_v_is_line = 1;
- /* "_pydevd_bundle/pydevd_cython.pyx":772
- * if event == 'line':
+ /* "_pydevd_bundle/pydevd_cython.pyx":797
+ * if event == "line":
* is_line = True
* is_call = False # <<<<<<<<<<<<<<
* is_return = False
@@ -15148,7 +18378,7 @@ static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_trace_dispa
*/
__pyx_v_is_call = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":773
+ /* "_pydevd_bundle/pydevd_cython.pyx":798
* is_line = True
* is_call = False
* is_return = False # <<<<<<<<<<<<<<
@@ -15157,9378 +18387,12719 @@ static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_trace_dispa
*/
__pyx_v_is_return = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":774
+ /* "_pydevd_bundle/pydevd_cython.pyx":799
* is_call = False
* is_return = False
* is_exception_event = False # <<<<<<<<<<<<<<
*
- * elif event == 'return':
+ * elif event == "return":
*/
__pyx_v_is_exception_event = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":770
- * # When in a coroutine we change the perceived event to the debugger because
- * # a call, StopIteration exception and return are usually just pausing/unpausing it.
- * if event == 'line': # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":795
+ *
+ * else: # Not coroutine nor generator
+ * if event == "line": # <<<<<<<<<<<<<<
* is_line = True
* is_call = False
*/
- goto __pyx_L13;
+ goto __pyx_L30;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":776
+ /* "_pydevd_bundle/pydevd_cython.pyx":801
* is_exception_event = False
*
- * elif event == 'return': # <<<<<<<<<<<<<<
+ * elif event == "return": # <<<<<<<<<<<<<<
* is_line = False
- * is_call = False
+ * is_return = True
*/
- __pyx_t_11 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_return, Py_EQ)); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 776, __pyx_L4_error)
- __pyx_t_9 = (__pyx_t_11 != 0);
- if (__pyx_t_9) {
+ __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_return, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 801, __pyx_L4_error)
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":777
+ /* "_pydevd_bundle/pydevd_cython.pyx":802
*
- * elif event == 'return':
+ * elif event == "return":
* is_line = False # <<<<<<<<<<<<<<
- * is_call = False
* is_return = True
+ * is_call = False
*/
__pyx_v_is_line = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":778
- * elif event == 'return':
+ /* "_pydevd_bundle/pydevd_cython.pyx":803
+ * elif event == "return":
* is_line = False
- * is_call = False # <<<<<<<<<<<<<<
- * is_return = True
+ * is_return = True # <<<<<<<<<<<<<<
+ * is_call = False
* is_exception_event = False
*/
- __pyx_v_is_call = 0;
+ __pyx_v_is_return = 1;
- /* "_pydevd_bundle/pydevd_cython.pyx":779
+ /* "_pydevd_bundle/pydevd_cython.pyx":804
* is_line = False
- * is_call = False
- * is_return = True # <<<<<<<<<<<<<<
+ * is_return = True
+ * is_call = False # <<<<<<<<<<<<<<
* is_exception_event = False
*
*/
- __pyx_v_is_return = 1;
+ __pyx_v_is_call = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":780
- * is_call = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":805
* is_return = True
+ * is_call = False
* is_exception_event = False # <<<<<<<<<<<<<<
*
- * returns_cache_key = (frame_cache_key, 'returns')
+ * # If we are in single step mode and something causes us to exit the current frame, we need to make sure we break
*/
__pyx_v_is_exception_event = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":782
- * is_exception_event = False
- *
- * returns_cache_key = (frame_cache_key, 'returns') # <<<<<<<<<<<<<<
- * return_lines = frame_skips_cache.get(returns_cache_key)
- * if return_lines is None:
+ /* "_pydevd_bundle/pydevd_cython.pyx":814
+ * # @DontTrace comment.
+ * if (
+ * stop_frame is frame # <<<<<<<<<<<<<<
+ * and not info.pydev_use_scoped_step_frame
+ * and is_return
*/
- __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 782, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_v_frame_cache_key);
- __Pyx_GIVEREF(__pyx_v_frame_cache_key);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_frame_cache_key);
- __Pyx_INCREF(__pyx_n_s_returns);
- __Pyx_GIVEREF(__pyx_n_s_returns);
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_n_s_returns);
- __pyx_v_returns_cache_key = ((PyObject*)__pyx_t_8);
- __pyx_t_8 = 0;
+ __pyx_t_12 = (__pyx_v_stop_frame == __pyx_v_frame);
+ if (__pyx_t_12) {
+ } else {
+ __pyx_t_10 = __pyx_t_12;
+ goto __pyx_L32_bool_binop_done;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":783
- *
- * returns_cache_key = (frame_cache_key, 'returns')
- * return_lines = frame_skips_cache.get(returns_cache_key) # <<<<<<<<<<<<<<
- * if return_lines is None:
- * # Note: we're collecting the return lines by inspecting the bytecode as
+ /* "_pydevd_bundle/pydevd_cython.pyx":815
+ * if (
+ * stop_frame is frame
+ * and not info.pydev_use_scoped_step_frame # <<<<<<<<<<<<<<
+ * and is_return
+ * and step_cmd
*/
- if (unlikely(__pyx_v_frame_skips_cache == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 783, __pyx_L4_error)
+ __pyx_t_12 = (!__pyx_v_info->pydev_use_scoped_step_frame);
+ if (__pyx_t_12) {
+ } else {
+ __pyx_t_10 = __pyx_t_12;
+ goto __pyx_L32_bool_binop_done;
}
- __pyx_t_8 = __Pyx_PyDict_GetItemDefault(__pyx_v_frame_skips_cache, __pyx_v_returns_cache_key, Py_None); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 783, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_v_return_lines = __pyx_t_8;
- __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":784
- * returns_cache_key = (frame_cache_key, 'returns')
- * return_lines = frame_skips_cache.get(returns_cache_key)
- * if return_lines is None: # <<<<<<<<<<<<<<
- * # Note: we're collecting the return lines by inspecting the bytecode as
- * # there are multiple returns and multiple stop iterations when awaiting and
+ /* "_pydevd_bundle/pydevd_cython.pyx":816
+ * stop_frame is frame
+ * and not info.pydev_use_scoped_step_frame
+ * and is_return # <<<<<<<<<<<<<<
+ * and step_cmd
+ * in (108, 109, 159, 160, 128)
*/
- __pyx_t_9 = (__pyx_v_return_lines == Py_None);
- __pyx_t_11 = (__pyx_t_9 != 0);
- if (__pyx_t_11) {
+ if (__pyx_v_is_return) {
+ } else {
+ __pyx_t_10 = __pyx_v_is_return;
+ goto __pyx_L32_bool_binop_done;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":789
- * # it doesn't give any clear indication when a coroutine or generator is
- * # finishing or just pausing.
- * return_lines = set() # <<<<<<<<<<<<<<
- * for x in main_debugger.collect_return_info(frame.f_code):
- * # Note: cython does not support closures in cpdefs (so we can't use
+ /* "_pydevd_bundle/pydevd_cython.pyx":818
+ * and is_return
+ * and step_cmd
+ * in (108, 109, 159, 160, 128) # <<<<<<<<<<<<<<
+ * ):
+ * if step_cmd in (108, 109, 128):
*/
- __pyx_t_8 = PySet_New(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 789, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF_SET(__pyx_v_return_lines, __pyx_t_8);
- __pyx_t_8 = 0;
+ switch (__pyx_v_step_cmd) {
+ case 0x6C:
+ case 0x6D:
+ case 0x9F:
+ case 0xA0:
+ case 0x80:
+ __pyx_t_12 = 1;
+ break;
+ default:
+ __pyx_t_12 = 0;
+ break;
+ }
+ __pyx_t_16 = __pyx_t_12;
+ __pyx_t_10 = __pyx_t_16;
+ __pyx_L32_bool_binop_done:;
- /* "_pydevd_bundle/pydevd_cython.pyx":790
- * # finishing or just pausing.
- * return_lines = set()
- * for x in main_debugger.collect_return_info(frame.f_code): # <<<<<<<<<<<<<<
- * # Note: cython does not support closures in cpdefs (so we can't use
- * # a list comprehension).
+ /* "_pydevd_bundle/pydevd_cython.pyx":813
+ * # Note: this is especially troublesome when we're skipping code with the
+ * # @DontTrace comment.
+ * if ( # <<<<<<<<<<<<<<
+ * stop_frame is frame
+ * and not info.pydev_use_scoped_step_frame
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_collect_return_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 790, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 790, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
- }
- }
- __pyx_t_8 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 790, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) {
- __pyx_t_1 = __pyx_t_8; __Pyx_INCREF(__pyx_t_1); __pyx_t_12 = 0;
- __pyx_t_13 = NULL;
- } else {
- __pyx_t_12 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 790, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_13 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 790, __pyx_L4_error)
- }
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- for (;;) {
- if (likely(!__pyx_t_13)) {
- if (likely(PyList_CheckExact(__pyx_t_1))) {
- if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_12); __Pyx_INCREF(__pyx_t_8); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(0, 790, __pyx_L4_error)
- #else
- __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 790, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- #endif
- } else {
- if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_12); __Pyx_INCREF(__pyx_t_8); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(0, 790, __pyx_L4_error)
- #else
- __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 790, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- #endif
- }
- } else {
- __pyx_t_8 = __pyx_t_13(__pyx_t_1);
- if (unlikely(!__pyx_t_8)) {
- PyObject* exc_type = PyErr_Occurred();
- if (exc_type) {
- if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(0, 790, __pyx_L4_error)
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_8);
- }
- __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_8);
- __pyx_t_8 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":793
- * # Note: cython does not support closures in cpdefs (so we can't use
- * # a list comprehension).
- * return_lines.add(x.return_line) # <<<<<<<<<<<<<<
- *
- * frame_skips_cache[returns_cache_key] = return_lines
- */
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_return_lines, __pyx_n_s_add); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 793, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_return_line); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 793, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
- if (likely(__pyx_t_6)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_6);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_7, function);
- }
- }
- __pyx_t_8 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_6, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_4);
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 793, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":790
- * # finishing or just pausing.
- * return_lines = set()
- * for x in main_debugger.collect_return_info(frame.f_code): # <<<<<<<<<<<<<<
- * # Note: cython does not support closures in cpdefs (so we can't use
- * # a list comprehension).
+ /* "_pydevd_bundle/pydevd_cython.pyx":820
+ * in (108, 109, 159, 160, 128)
+ * ):
+ * if step_cmd in (108, 109, 128): # <<<<<<<<<<<<<<
+ * info.pydev_step_cmd = 107
+ * else:
*/
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ switch (__pyx_v_step_cmd) {
+ case 0x6C:
+ case 0x6D:
+ case 0x80:
- /* "_pydevd_bundle/pydevd_cython.pyx":795
- * return_lines.add(x.return_line)
- *
- * frame_skips_cache[returns_cache_key] = return_lines # <<<<<<<<<<<<<<
- *
- * if line not in return_lines:
+ /* "_pydevd_bundle/pydevd_cython.pyx":821
+ * ):
+ * if step_cmd in (108, 109, 128):
+ * info.pydev_step_cmd = 107 # <<<<<<<<<<<<<<
+ * else:
+ * info.pydev_step_cmd = 144
*/
- if (unlikely(__pyx_v_frame_skips_cache == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 795, __pyx_L4_error)
- }
- if (unlikely(PyDict_SetItem(__pyx_v_frame_skips_cache, __pyx_v_returns_cache_key, __pyx_v_return_lines) < 0)) __PYX_ERR(0, 795, __pyx_L4_error)
+ __pyx_v_info->pydev_step_cmd = 0x6B;
- /* "_pydevd_bundle/pydevd_cython.pyx":784
- * returns_cache_key = (frame_cache_key, 'returns')
- * return_lines = frame_skips_cache.get(returns_cache_key)
- * if return_lines is None: # <<<<<<<<<<<<<<
- * # Note: we're collecting the return lines by inspecting the bytecode as
- * # there are multiple returns and multiple stop iterations when awaiting and
+ /* "_pydevd_bundle/pydevd_cython.pyx":820
+ * in (108, 109, 159, 160, 128)
+ * ):
+ * if step_cmd in (108, 109, 128): # <<<<<<<<<<<<<<
+ * info.pydev_step_cmd = 107
+ * else:
*/
- }
+ break;
+ default:
- /* "_pydevd_bundle/pydevd_cython.pyx":797
- * frame_skips_cache[returns_cache_key] = return_lines
+ /* "_pydevd_bundle/pydevd_cython.pyx":823
+ * info.pydev_step_cmd = 107
+ * else:
+ * info.pydev_step_cmd = 144 # <<<<<<<<<<<<<<
+ * info.pydev_step_stop = None
*
- * if line not in return_lines: # <<<<<<<<<<<<<<
- * # Not really a return (coroutine/generator paused).
- * return self.trace_dispatch
*/
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 797, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_11 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_v_return_lines, Py_NE)); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 797, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_9 = (__pyx_t_11 != 0);
- if (__pyx_t_9) {
+ __pyx_v_info->pydev_step_cmd = 0x90;
+ break;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":799
- * if line not in return_lines:
- * # Not really a return (coroutine/generator paused).
- * return self.trace_dispatch # <<<<<<<<<<<<<<
- * else:
- * if self.exc_info:
+ /* "_pydevd_bundle/pydevd_cython.pyx":824
+ * else:
+ * info.pydev_step_cmd = 144
+ * info.pydev_step_stop = None # <<<<<<<<<<<<<<
+ *
+ * if self.exc_info:
*/
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 799, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L3_return;
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ __Pyx_GOTREF(__pyx_v_info->pydev_step_stop);
+ __Pyx_DECREF(__pyx_v_info->pydev_step_stop);
+ __pyx_v_info->pydev_step_stop = Py_None;
- /* "_pydevd_bundle/pydevd_cython.pyx":797
- * frame_skips_cache[returns_cache_key] = return_lines
- *
- * if line not in return_lines: # <<<<<<<<<<<<<<
- * # Not really a return (coroutine/generator paused).
- * return self.trace_dispatch
+ /* "_pydevd_bundle/pydevd_cython.pyx":813
+ * # Note: this is especially troublesome when we're skipping code with the
+ * # @DontTrace comment.
+ * if ( # <<<<<<<<<<<<<<
+ * stop_frame is frame
+ * and not info.pydev_use_scoped_step_frame
*/
}
- /* "_pydevd_bundle/pydevd_cython.pyx":801
- * return self.trace_dispatch
- * else:
- * if self.exc_info: # <<<<<<<<<<<<<<
- * self.handle_user_exception(frame)
+ /* "_pydevd_bundle/pydevd_cython.pyx":826
+ * info.pydev_step_stop = None
+ *
+ * if self.exc_info: # <<<<<<<<<<<<<<
+ * if self.handle_user_exception(frame):
* return self.trace_dispatch
*/
- /*else*/ {
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->exc_info); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 801, __pyx_L4_error)
- if (__pyx_t_9) {
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_self->exc_info); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 826, __pyx_L4_error)
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":802
- * else:
- * if self.exc_info:
- * self.handle_user_exception(frame) # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":827
+ *
+ * if self.exc_info:
+ * if self.handle_user_exception(frame): # <<<<<<<<<<<<<<
* return self.trace_dispatch
*
*/
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_user_exception); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 802, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_7 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_7)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_7);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
- }
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_user_exception); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 827, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ __pyx_t_5 = 1;
}
- __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_7, __pyx_v_frame) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_frame);
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_frame};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 802, __pyx_L4_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 827, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ }
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 827, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":803
- * if self.exc_info:
- * self.handle_user_exception(frame)
+ /* "_pydevd_bundle/pydevd_cython.pyx":828
+ * if self.exc_info:
+ * if self.handle_user_exception(frame):
* return self.trace_dispatch # <<<<<<<<<<<<<<
*
- * # Tricky handling: usually when we're on a frame which is about to exit
+ * elif event == "call":
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 803, __pyx_L4_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 828, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L3_return;
- /* "_pydevd_bundle/pydevd_cython.pyx":801
- * return self.trace_dispatch
- * else:
- * if self.exc_info: # <<<<<<<<<<<<<<
- * self.handle_user_exception(frame)
- * return self.trace_dispatch
- */
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":821
- * # as the return shouldn't mean that we've actually completed executing a
- * # frame in this case).
- * if stop_frame is frame and not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
- * if step_cmd in (108, 159, 107, 144):
- * f = self._get_unfiltered_back_frame(main_debugger, frame)
- */
- __pyx_t_11 = (__pyx_v_stop_frame == __pyx_v_frame);
- __pyx_t_14 = (__pyx_t_11 != 0);
- if (__pyx_t_14) {
- } else {
- __pyx_t_9 = __pyx_t_14;
- goto __pyx_L20_bool_binop_done;
- }
- __pyx_t_14 = ((!(__pyx_v_info->pydev_use_scoped_step_frame != 0)) != 0);
- __pyx_t_9 = __pyx_t_14;
- __pyx_L20_bool_binop_done:;
- if (__pyx_t_9) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":822
- * # frame in this case).
- * if stop_frame is frame and not info.pydev_use_scoped_step_frame:
- * if step_cmd in (108, 159, 107, 144): # <<<<<<<<<<<<<<
- * f = self._get_unfiltered_back_frame(main_debugger, frame)
- * if f is not None:
- */
- switch (__pyx_v_step_cmd) {
- case 0x6C:
- case 0x9F:
- case 0x6B:
- case 0x90:
-
- /* "_pydevd_bundle/pydevd_cython.pyx":823
- * if stop_frame is frame and not info.pydev_use_scoped_step_frame:
- * if step_cmd in (108, 159, 107, 144):
- * f = self._get_unfiltered_back_frame(main_debugger, frame) # <<<<<<<<<<<<<<
- * if f is not None:
- * info.pydev_step_cmd = 206
- */
- __pyx_t_1 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_get_unfiltered_back_frame(__pyx_v_self, __pyx_v_main_debugger, __pyx_v_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 823, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_f = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":824
- * if step_cmd in (108, 159, 107, 144):
- * f = self._get_unfiltered_back_frame(main_debugger, frame)
- * if f is not None: # <<<<<<<<<<<<<<
- * info.pydev_step_cmd = 206
- * info.pydev_step_stop = f
- */
- __pyx_t_9 = (__pyx_v_f != Py_None);
- __pyx_t_14 = (__pyx_t_9 != 0);
- if (__pyx_t_14) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":825
- * f = self._get_unfiltered_back_frame(main_debugger, frame)
- * if f is not None:
- * info.pydev_step_cmd = 206 # <<<<<<<<<<<<<<
- * info.pydev_step_stop = f
- * else:
- */
- __pyx_v_info->pydev_step_cmd = 0xCE;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":826
- * if f is not None:
- * info.pydev_step_cmd = 206
- * info.pydev_step_stop = f # <<<<<<<<<<<<<<
- * else:
- * if step_cmd == 108:
- */
- __Pyx_INCREF(__pyx_v_f);
- __Pyx_GIVEREF(__pyx_v_f);
- __Pyx_GOTREF(__pyx_v_info->pydev_step_stop);
- __Pyx_DECREF(__pyx_v_info->pydev_step_stop);
- __pyx_v_info->pydev_step_stop = __pyx_v_f;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":824
- * if step_cmd in (108, 159, 107, 144):
- * f = self._get_unfiltered_back_frame(main_debugger, frame)
- * if f is not None: # <<<<<<<<<<<<<<
- * info.pydev_step_cmd = 206
- * info.pydev_step_stop = f
- */
- goto __pyx_L22;
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":828
- * info.pydev_step_stop = f
- * else:
- * if step_cmd == 108: # <<<<<<<<<<<<<<
- * info.pydev_step_cmd = 107
- * info.pydev_step_stop = None
- */
- /*else*/ {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":832
- * info.pydev_step_stop = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":827
*
- * elif step_cmd == 159: # <<<<<<<<<<<<<<
- * info.pydev_step_cmd = 144
- * info.pydev_step_stop = None
- */
- switch (__pyx_v_step_cmd) {
- case 0x6C:
-
- /* "_pydevd_bundle/pydevd_cython.pyx":829
- * else:
- * if step_cmd == 108:
- * info.pydev_step_cmd = 107 # <<<<<<<<<<<<<<
- * info.pydev_step_stop = None
+ * if self.exc_info:
+ * if self.handle_user_exception(frame): # <<<<<<<<<<<<<<
+ * return self.trace_dispatch
*
*/
- __pyx_v_info->pydev_step_cmd = 0x6B;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":830
- * if step_cmd == 108:
- * info.pydev_step_cmd = 107
- * info.pydev_step_stop = None # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":826
+ * info.pydev_step_stop = None
*
- * elif step_cmd == 159:
- */
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_info->pydev_step_stop);
- __Pyx_DECREF(__pyx_v_info->pydev_step_stop);
- __pyx_v_info->pydev_step_stop = Py_None;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":828
- * info.pydev_step_stop = f
- * else:
- * if step_cmd == 108: # <<<<<<<<<<<<<<
- * info.pydev_step_cmd = 107
- * info.pydev_step_stop = None
+ * if self.exc_info: # <<<<<<<<<<<<<<
+ * if self.handle_user_exception(frame):
+ * return self.trace_dispatch
*/
- break;
- case 0x9F:
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":833
- *
- * elif step_cmd == 159:
- * info.pydev_step_cmd = 144 # <<<<<<<<<<<<<<
- * info.pydev_step_stop = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":801
+ * is_exception_event = False
*
+ * elif event == "return": # <<<<<<<<<<<<<<
+ * is_line = False
+ * is_return = True
*/
- __pyx_v_info->pydev_step_cmd = 0x90;
+ goto __pyx_L30;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":834
- * elif step_cmd == 159:
- * info.pydev_step_cmd = 144
- * info.pydev_step_stop = None # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":830
+ * return self.trace_dispatch
*
- * elif step_cmd == 206:
+ * elif event == "call": # <<<<<<<<<<<<<<
+ * is_line = False
+ * is_call = True
*/
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_info->pydev_step_stop);
- __Pyx_DECREF(__pyx_v_info->pydev_step_stop);
- __pyx_v_info->pydev_step_stop = Py_None;
+ __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 830, __pyx_L4_error)
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":832
- * info.pydev_step_stop = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":831
*
- * elif step_cmd == 159: # <<<<<<<<<<<<<<
- * info.pydev_step_cmd = 144
- * info.pydev_step_stop = None
- */
- break;
- default: break;
- }
- }
- __pyx_L22:;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":822
- * # frame in this case).
- * if stop_frame is frame and not info.pydev_use_scoped_step_frame:
- * if step_cmd in (108, 159, 107, 144): # <<<<<<<<<<<<<<
- * f = self._get_unfiltered_back_frame(main_debugger, frame)
- * if f is not None:
- */
- break;
- case 0xCE:
-
- /* "_pydevd_bundle/pydevd_cython.pyx":838
- * elif step_cmd == 206:
- * # We're exiting this one, so, mark the new coroutine context.
- * f = self._get_unfiltered_back_frame(main_debugger, frame) # <<<<<<<<<<<<<<
- * if f is not None:
- * info.pydev_step_stop = f
- */
- __pyx_t_1 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_get_unfiltered_back_frame(__pyx_v_self, __pyx_v_main_debugger, __pyx_v_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 838, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_f = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":839
- * # We're exiting this one, so, mark the new coroutine context.
- * f = self._get_unfiltered_back_frame(main_debugger, frame)
- * if f is not None: # <<<<<<<<<<<<<<
- * info.pydev_step_stop = f
- * else:
+ * elif event == "call":
+ * is_line = False # <<<<<<<<<<<<<<
+ * is_call = True
+ * is_return = False
*/
- __pyx_t_14 = (__pyx_v_f != Py_None);
- __pyx_t_9 = (__pyx_t_14 != 0);
- if (__pyx_t_9) {
+ __pyx_v_is_line = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":840
- * f = self._get_unfiltered_back_frame(main_debugger, frame)
- * if f is not None:
- * info.pydev_step_stop = f # <<<<<<<<<<<<<<
- * else:
- * info.pydev_step_cmd = 107
+ /* "_pydevd_bundle/pydevd_cython.pyx":832
+ * elif event == "call":
+ * is_line = False
+ * is_call = True # <<<<<<<<<<<<<<
+ * is_return = False
+ * is_exception_event = False
*/
- __Pyx_INCREF(__pyx_v_f);
- __Pyx_GIVEREF(__pyx_v_f);
- __Pyx_GOTREF(__pyx_v_info->pydev_step_stop);
- __Pyx_DECREF(__pyx_v_info->pydev_step_stop);
- __pyx_v_info->pydev_step_stop = __pyx_v_f;
+ __pyx_v_is_call = 1;
- /* "_pydevd_bundle/pydevd_cython.pyx":839
- * # We're exiting this one, so, mark the new coroutine context.
- * f = self._get_unfiltered_back_frame(main_debugger, frame)
- * if f is not None: # <<<<<<<<<<<<<<
- * info.pydev_step_stop = f
- * else:
+ /* "_pydevd_bundle/pydevd_cython.pyx":833
+ * is_line = False
+ * is_call = True
+ * is_return = False # <<<<<<<<<<<<<<
+ * is_exception_event = False
+ * if frame.f_code.co_firstlineno == frame.f_lineno: # Check line to deal with async/await.
*/
- goto __pyx_L23;
- }
+ __pyx_v_is_return = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":842
- * info.pydev_step_stop = f
- * else:
- * info.pydev_step_cmd = 107 # <<<<<<<<<<<<<<
- * info.pydev_step_stop = None
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":834
+ * is_call = True
+ * is_return = False
+ * is_exception_event = False # <<<<<<<<<<<<<<
+ * if frame.f_code.co_firstlineno == frame.f_lineno: # Check line to deal with async/await.
+ * function_breakpoint_on_call_event = py_db.function_breakpoint_name_to_breakpoint.get(frame.f_code.co_name)
*/
- /*else*/ {
- __pyx_v_info->pydev_step_cmd = 0x6B;
+ __pyx_v_is_exception_event = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":843
- * else:
- * info.pydev_step_cmd = 107
- * info.pydev_step_stop = None # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":835
+ * is_return = False
+ * is_exception_event = False
+ * if frame.f_code.co_firstlineno == frame.f_lineno: # Check line to deal with async/await. # <<<<<<<<<<<<<<
+ * function_breakpoint_on_call_event = py_db.function_breakpoint_name_to_breakpoint.get(frame.f_code.co_name)
*
- * elif event == 'exception':
*/
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_info->pydev_step_stop);
- __Pyx_DECREF(__pyx_v_info->pydev_step_stop);
- __pyx_v_info->pydev_step_stop = Py_None;
- }
- __pyx_L23:;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 835, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_co_firstlineno); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 835, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 835, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 835, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 835, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":836
- * info.pydev_step_stop = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":836
+ * is_exception_event = False
+ * if frame.f_code.co_firstlineno == frame.f_lineno: # Check line to deal with async/await.
+ * function_breakpoint_on_call_event = py_db.function_breakpoint_name_to_breakpoint.get(frame.f_code.co_name) # <<<<<<<<<<<<<<
*
- * elif step_cmd == 206: # <<<<<<<<<<<<<<
- * # We're exiting this one, so, mark the new coroutine context.
- * f = self._get_unfiltered_back_frame(main_debugger, frame)
+ * elif event == "exception":
*/
- break;
- default: break;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_function_breakpoint_name_to_brea); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 836, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 836, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 836, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_co_name); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 836, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ __pyx_t_5 = 1;
}
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_8};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 836, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ }
+ __Pyx_DECREF_SET(__pyx_v_function_breakpoint_on_call_event, __pyx_t_7);
+ __pyx_t_7 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":821
- * # as the return shouldn't mean that we've actually completed executing a
- * # frame in this case).
- * if stop_frame is frame and not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
- * if step_cmd in (108, 159, 107, 144):
- * f = self._get_unfiltered_back_frame(main_debugger, frame)
+ /* "_pydevd_bundle/pydevd_cython.pyx":835
+ * is_return = False
+ * is_exception_event = False
+ * if frame.f_code.co_firstlineno == frame.f_lineno: # Check line to deal with async/await. # <<<<<<<<<<<<<<
+ * function_breakpoint_on_call_event = py_db.function_breakpoint_name_to_breakpoint.get(frame.f_code.co_name)
+ *
*/
- }
}
- /* "_pydevd_bundle/pydevd_cython.pyx":776
- * is_exception_event = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":830
+ * return self.trace_dispatch
*
- * elif event == 'return': # <<<<<<<<<<<<<<
+ * elif event == "call": # <<<<<<<<<<<<<<
* is_line = False
- * is_call = False
+ * is_call = True
*/
- goto __pyx_L13;
+ goto __pyx_L30;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":845
- * info.pydev_step_stop = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":838
+ * function_breakpoint_on_call_event = py_db.function_breakpoint_name_to_breakpoint.get(frame.f_code.co_name)
*
- * elif event == 'exception': # <<<<<<<<<<<<<<
+ * elif event == "exception": # <<<<<<<<<<<<<<
+ * is_exception_event = True
* breakpoints_for_file = None
- * if has_exception_breakpoints:
*/
- __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_exception, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 845, __pyx_L4_error)
- __pyx_t_14 = (__pyx_t_9 != 0);
- if (__pyx_t_14) {
+ __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_exception, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 838, __pyx_L4_error)
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":846
+ /* "_pydevd_bundle/pydevd_cython.pyx":839
*
- * elif event == 'exception':
+ * elif event == "exception":
+ * is_exception_event = True # <<<<<<<<<<<<<<
+ * breakpoints_for_file = None
+ * if has_exception_breakpoints:
+ */
+ __pyx_v_is_exception_event = 1;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":840
+ * elif event == "exception":
+ * is_exception_event = True
* breakpoints_for_file = None # <<<<<<<<<<<<<<
* if has_exception_breakpoints:
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg)
+ * should_stop, frame, exc_info = should_stop_on_exception(
*/
__Pyx_INCREF(Py_None);
__pyx_v_breakpoints_for_file = ((PyObject*)Py_None);
- /* "_pydevd_bundle/pydevd_cython.pyx":847
- * elif event == 'exception':
+ /* "_pydevd_bundle/pydevd_cython.pyx":841
+ * is_exception_event = True
* breakpoints_for_file = None
* if has_exception_breakpoints: # <<<<<<<<<<<<<<
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg)
- * if should_stop:
+ * should_stop, frame, exc_info = should_stop_on_exception(
+ * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info
*/
- __pyx_t_14 = (__pyx_v_has_exception_breakpoints != 0);
- if (__pyx_t_14) {
+ if (__pyx_v_has_exception_breakpoints) {
- /* "_pydevd_bundle/pydevd_cython.pyx":848
+ /* "_pydevd_bundle/pydevd_cython.pyx":842
* breakpoints_for_file = None
* if has_exception_breakpoints:
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg) # <<<<<<<<<<<<<<
- * if should_stop:
- * if self._handle_exception(frame, event, arg, EXCEPTION_TYPE_HANDLED):
+ * should_stop, frame, exc_info = should_stop_on_exception( # <<<<<<<<<<<<<<
+ * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info
+ * )
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_should_stop_on_exception); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 842, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_6);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":843
+ * if has_exception_breakpoints:
+ * should_stop, frame, exc_info = should_stop_on_exception(
+ * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info # <<<<<<<<<<<<<<
+ * )
+ * self.exc_info = exc_info
*/
- __pyx_t_1 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_should_stop_on_exception(__pyx_v_self, __pyx_v_frame, __pyx_v_event, __pyx_v_arg); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 848, __pyx_L4_error)
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 843, __pyx_L4_error)
+ }
+ __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 843, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 843, __pyx_L4_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 843, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_1);
- if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
- PyObject* sequence = __pyx_t_1;
- Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
- if (unlikely(size != 2)) {
- if (size > 2) __Pyx_RaiseTooManyValuesError(2);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 848, __pyx_L4_error)
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 843, __pyx_L4_error)
+ }
+ __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 843, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ __pyx_t_5 = 1;
}
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1);
- } else {
- __pyx_t_8 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_7 = PyList_GET_ITEM(sequence, 1);
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[7] = {__pyx_t_3, __pyx_t_8, __pyx_t_1, __pyx_v_frame, __pyx_t_4, __pyx_v_arg, __pyx_v_self->exc_info};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 6+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 842, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ }
+ if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
+ PyObject* sequence = __pyx_t_7;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 3)) {
+ if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 842, __pyx_L4_error)
}
- __Pyx_INCREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_7);
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1);
+ __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2);
+ } else {
+ __pyx_t_6 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_4 = PyList_GET_ITEM(sequence, 1);
+ __pyx_t_1 = PyList_GET_ITEM(sequence, 2);
+ }
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_1);
#else
- __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 848, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 848, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 842, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 842, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_1 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 842, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
#endif
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 848, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_15 = Py_TYPE(__pyx_t_4)->tp_iternext;
- index = 0; __pyx_t_8 = __pyx_t_15(__pyx_t_4); if (unlikely(!__pyx_t_8)) goto __pyx_L25_unpacking_failed;
+ __pyx_t_8 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 842, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_8);
- index = 1; __pyx_t_7 = __pyx_t_15(__pyx_t_4); if (unlikely(!__pyx_t_7)) goto __pyx_L25_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_7);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_4), 2) < 0) __PYX_ERR(0, 848, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_15 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_8);
+ index = 0; __pyx_t_6 = __pyx_t_15(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L40_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_6);
+ index = 1; __pyx_t_4 = __pyx_t_15(__pyx_t_8); if (unlikely(!__pyx_t_4)) goto __pyx_L40_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_4);
+ index = 2; __pyx_t_1 = __pyx_t_15(__pyx_t_8); if (unlikely(!__pyx_t_1)) goto __pyx_L40_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_1);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_8), 3) < 0) __PYX_ERR(0, 842, __pyx_L4_error)
__pyx_t_15 = NULL;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- goto __pyx_L26_unpacking_done;
- __pyx_L25_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ goto __pyx_L41_unpacking_done;
+ __pyx_L40_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_15 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 848, __pyx_L4_error)
- __pyx_L26_unpacking_done:;
+ __PYX_ERR(0, 842, __pyx_L4_error)
+ __pyx_L41_unpacking_done:;
}
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 848, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_v_should_stop = __pyx_t_14;
- __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_7);
- __pyx_t_7 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":849
+ /* "_pydevd_bundle/pydevd_cython.pyx":842
+ * breakpoints_for_file = None
* if has_exception_breakpoints:
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg)
+ * should_stop, frame, exc_info = should_stop_on_exception( # <<<<<<<<<<<<<<
+ * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info
+ * )
+ */
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 842, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_v_should_stop = __pyx_t_10;
+ __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_4);
+ __pyx_t_4 = 0;
+ __pyx_v_exc_info = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":845
+ * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info
+ * )
+ * self.exc_info = exc_info # <<<<<<<<<<<<<<
+ * if should_stop:
+ * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED):
+ */
+ __Pyx_INCREF(__pyx_v_exc_info);
+ __Pyx_GIVEREF(__pyx_v_exc_info);
+ __Pyx_GOTREF(__pyx_v_self->exc_info);
+ __Pyx_DECREF(__pyx_v_self->exc_info);
+ __pyx_v_self->exc_info = __pyx_v_exc_info;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":846
+ * )
+ * self.exc_info = exc_info
* if should_stop: # <<<<<<<<<<<<<<
- * if self._handle_exception(frame, event, arg, EXCEPTION_TYPE_HANDLED):
+ * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED):
* return self.trace_dispatch
*/
- __pyx_t_14 = (__pyx_v_should_stop != 0);
- if (__pyx_t_14) {
+ if (__pyx_v_should_stop) {
- /* "_pydevd_bundle/pydevd_cython.pyx":850
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg)
+ /* "_pydevd_bundle/pydevd_cython.pyx":847
+ * self.exc_info = exc_info
* if should_stop:
- * if self._handle_exception(frame, event, arg, EXCEPTION_TYPE_HANDLED): # <<<<<<<<<<<<<<
+ * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): # <<<<<<<<<<<<<<
* return self.trace_dispatch
- *
+ * is_line = False
*/
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EXCEPTION_TYPE_HANDLED); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 850, __pyx_L4_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_handle_exception); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 847, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_1);
- if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 850, __pyx_L4_error)
- __pyx_t_7 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_handle_exception(__pyx_v_self, __pyx_v_frame, __pyx_v_event, __pyx_v_arg, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 850, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 850, __pyx_L4_error)
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 847, __pyx_L4_error)
+ }
+ __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 847, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 847, __pyx_L4_error)
+ }
+ __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 847, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_EXCEPTION_TYPE_HANDLED); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 847, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_3 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[6] = {__pyx_t_3, __pyx_t_4, __pyx_t_6, __pyx_v_frame, __pyx_v_arg, __pyx_t_8};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 5+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 847, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 847, __pyx_L4_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_14) {
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":851
+ /* "_pydevd_bundle/pydevd_cython.pyx":848
* if should_stop:
- * if self._handle_exception(frame, event, arg, EXCEPTION_TYPE_HANDLED):
+ * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED):
* return self.trace_dispatch # <<<<<<<<<<<<<<
- *
- * return self.trace_dispatch
+ * is_line = False
+ * is_return = False
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 851, __pyx_L4_error)
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 848, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_r = __pyx_t_7;
__pyx_t_7 = 0;
goto __pyx_L3_return;
- /* "_pydevd_bundle/pydevd_cython.pyx":850
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg)
+ /* "_pydevd_bundle/pydevd_cython.pyx":847
+ * self.exc_info = exc_info
* if should_stop:
- * if self._handle_exception(frame, event, arg, EXCEPTION_TYPE_HANDLED): # <<<<<<<<<<<<<<
+ * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): # <<<<<<<<<<<<<<
* return self.trace_dispatch
- *
+ * is_line = False
*/
}
- /* "_pydevd_bundle/pydevd_cython.pyx":849
- * if has_exception_breakpoints:
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg)
+ /* "_pydevd_bundle/pydevd_cython.pyx":846
+ * )
+ * self.exc_info = exc_info
* if should_stop: # <<<<<<<<<<<<<<
- * if self._handle_exception(frame, event, arg, EXCEPTION_TYPE_HANDLED):
+ * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED):
* return self.trace_dispatch
*/
}
- /* "_pydevd_bundle/pydevd_cython.pyx":847
- * elif event == 'exception':
+ /* "_pydevd_bundle/pydevd_cython.pyx":841
+ * is_exception_event = True
* breakpoints_for_file = None
* if has_exception_breakpoints: # <<<<<<<<<<<<<<
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg)
- * if should_stop:
+ * should_stop, frame, exc_info = should_stop_on_exception(
+ * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info
*/
}
- /* "_pydevd_bundle/pydevd_cython.pyx":853
+ /* "_pydevd_bundle/pydevd_cython.pyx":849
+ * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED):
+ * return self.trace_dispatch
+ * is_line = False # <<<<<<<<<<<<<<
+ * is_return = False
+ * is_call = False
+ */
+ __pyx_v_is_line = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":850
* return self.trace_dispatch
+ * is_line = False
+ * is_return = False # <<<<<<<<<<<<<<
+ * is_call = False
+ *
+ */
+ __pyx_v_is_return = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":851
+ * is_line = False
+ * is_return = False
+ * is_call = False # <<<<<<<<<<<<<<
*
- * return self.trace_dispatch # <<<<<<<<<<<<<<
* else:
- * # event == 'call' or event == 'c_XXX'
*/
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 853, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_r = __pyx_t_7;
- __pyx_t_7 = 0;
- goto __pyx_L3_return;
+ __pyx_v_is_call = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":845
- * info.pydev_step_stop = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":838
+ * function_breakpoint_on_call_event = py_db.function_breakpoint_name_to_breakpoint.get(frame.f_code.co_name)
*
- * elif event == 'exception': # <<<<<<<<<<<<<<
+ * elif event == "exception": # <<<<<<<<<<<<<<
+ * is_exception_event = True
* breakpoints_for_file = None
- * if has_exception_breakpoints:
*/
+ goto __pyx_L30;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":856
+ /* "_pydevd_bundle/pydevd_cython.pyx":855
* else:
- * # event == 'call' or event == 'c_XXX'
+ * # Unexpected: just keep the same trace func (i.e.: event == 'c_XXX').
* return self.trace_dispatch # <<<<<<<<<<<<<<
*
- * else: # Not coroutine nor generator
+ * if not is_exception_event:
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 856, __pyx_L4_error)
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 855, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_r = __pyx_t_7;
__pyx_t_7 = 0;
goto __pyx_L3_return;
}
- __pyx_L13:;
+ __pyx_L30:;
+ }
+ __pyx_L12:;
- /* "_pydevd_bundle/pydevd_cython.pyx":766
- * function_breakpoint_on_call_event = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":857
+ * return self.trace_dispatch
+ *
+ * if not is_exception_event: # <<<<<<<<<<<<<<
+ * breakpoints_for_file = py_db.breakpoints.get(abs_path_canonical_path_and_base[1])
*
- * if frame.f_code.co_flags & 0xa0: # 0xa0 == CO_GENERATOR = 0x20 | CO_COROUTINE = 0x80 # <<<<<<<<<<<<<<
- * # Dealing with coroutines and generators:
- * # When in a coroutine we change the perceived event to the debugger because
*/
- goto __pyx_L12;
- }
+ __pyx_t_10 = (!__pyx_v_is_exception_event);
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":859
+ /* "_pydevd_bundle/pydevd_cython.pyx":858
*
- * else: # Not coroutine nor generator
- * if event == 'line': # <<<<<<<<<<<<<<
- * is_line = True
- * is_call = False
+ * if not is_exception_event:
+ * breakpoints_for_file = py_db.breakpoints.get(abs_path_canonical_path_and_base[1]) # <<<<<<<<<<<<<<
+ *
+ * can_skip = False
*/
- /*else*/ {
- __pyx_t_14 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_line, Py_EQ)); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 859, __pyx_L4_error)
- __pyx_t_9 = (__pyx_t_14 != 0);
- if (__pyx_t_9) {
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_breakpoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 858, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 858, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(__pyx_v_abs_path_canonical_path_and_base == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 858, __pyx_L4_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_abs_path_canonical_path_and_base, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 858, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_1};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 858, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+ if (!(likely(PyDict_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_7))) __PYX_ERR(0, 858, __pyx_L4_error)
+ __Pyx_XDECREF_SET(__pyx_v_breakpoints_for_file, ((PyObject*)__pyx_t_7));
+ __pyx_t_7 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":860
- * else: # Not coroutine nor generator
- * if event == 'line':
- * is_line = True # <<<<<<<<<<<<<<
- * is_call = False
- * is_return = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":860
+ * breakpoints_for_file = py_db.breakpoints.get(abs_path_canonical_path_and_base[1])
+ *
+ * can_skip = False # <<<<<<<<<<<<<<
+ *
+ * if info.pydev_state == 1: # 1 = 1
*/
- __pyx_v_is_line = 1;
+ __pyx_v_can_skip = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":861
- * if event == 'line':
- * is_line = True
- * is_call = False # <<<<<<<<<<<<<<
- * is_return = False
- * is_exception_event = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":862
+ * can_skip = False
+ *
+ * if info.pydev_state == 1: # 1 = 1 # <<<<<<<<<<<<<<
+ * # we can skip if:
+ * # - we have no stop marked
*/
- __pyx_v_is_call = 0;
+ __pyx_t_10 = (__pyx_v_info->pydev_state == 1);
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":862
- * is_line = True
- * is_call = False
- * is_return = False # <<<<<<<<<<<<<<
- * is_exception_event = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":867
+ * # - we should make a step return/step over and we're not in the current frame
+ * # - we're stepping into a coroutine context and we're not in that context
+ * if step_cmd == -1: # <<<<<<<<<<<<<<
+ * can_skip = True
*
*/
- __pyx_v_is_return = 0;
+ __pyx_t_10 = (__pyx_v_step_cmd == -1L);
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":863
- * is_call = False
- * is_return = False
- * is_exception_event = False # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":868
+ * # - we're stepping into a coroutine context and we're not in that context
+ * if step_cmd == -1:
+ * can_skip = True # <<<<<<<<<<<<<<
*
- * elif event == 'return':
+ * elif step_cmd in (
*/
- __pyx_v_is_exception_event = 0;
+ __pyx_v_can_skip = 1;
- /* "_pydevd_bundle/pydevd_cython.pyx":859
+ /* "_pydevd_bundle/pydevd_cython.pyx":867
+ * # - we should make a step return/step over and we're not in the current frame
+ * # - we're stepping into a coroutine context and we're not in that context
+ * if step_cmd == -1: # <<<<<<<<<<<<<<
+ * can_skip = True
*
- * else: # Not coroutine nor generator
- * if event == 'line': # <<<<<<<<<<<<<<
- * is_line = True
- * is_call = False
*/
- goto __pyx_L29;
- }
+ goto __pyx_L46;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":865
- * is_exception_event = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":870
+ * can_skip = True
*
- * elif event == 'return': # <<<<<<<<<<<<<<
- * is_line = False
- * is_return = True
+ * elif step_cmd in ( # <<<<<<<<<<<<<<
+ * 108,
+ * 109,
*/
- __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_return, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 865, __pyx_L4_error)
- __pyx_t_14 = (__pyx_t_9 != 0);
- if (__pyx_t_14) {
+ switch (__pyx_v_step_cmd) {
+ case 0x6C:
- /* "_pydevd_bundle/pydevd_cython.pyx":866
+ /* "_pydevd_bundle/pydevd_cython.pyx":871
*
- * elif event == 'return':
- * is_line = False # <<<<<<<<<<<<<<
- * is_return = True
- * is_call = False
+ * elif step_cmd in (
+ * 108, # <<<<<<<<<<<<<<
+ * 109,
+ * 159,
*/
- __pyx_v_is_line = 0;
+ case 0x6D:
- /* "_pydevd_bundle/pydevd_cython.pyx":867
- * elif event == 'return':
- * is_line = False
- * is_return = True # <<<<<<<<<<<<<<
- * is_call = False
- * is_exception_event = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":872
+ * elif step_cmd in (
+ * 108,
+ * 109, # <<<<<<<<<<<<<<
+ * 159,
+ * 160,
*/
- __pyx_v_is_return = 1;
+ case 0x9F:
- /* "_pydevd_bundle/pydevd_cython.pyx":868
- * is_line = False
- * is_return = True
- * is_call = False # <<<<<<<<<<<<<<
- * is_exception_event = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":873
+ * 108,
+ * 109,
+ * 159, # <<<<<<<<<<<<<<
+ * 160,
+ * ) and not self._is_same_frame(stop_frame, frame):
+ */
+ case 0xA0:
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":870
+ * can_skip = True
*
+ * elif step_cmd in ( # <<<<<<<<<<<<<<
+ * 108,
+ * 109,
*/
- __pyx_v_is_call = 0;
+ __pyx_t_16 = 1;
+ break;
+ default:
+ __pyx_t_16 = 0;
+ break;
+ }
+ __pyx_t_12 = __pyx_t_16;
+ if (__pyx_t_12) {
+ } else {
+ __pyx_t_10 = __pyx_t_12;
+ goto __pyx_L47_bool_binop_done;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":869
- * is_return = True
- * is_call = False
- * is_exception_event = False # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":875
+ * 159,
+ * 160,
+ * ) and not self._is_same_frame(stop_frame, frame): # <<<<<<<<<<<<<<
+ * can_skip = True
*
- * # If we are in single step mode and something causes us to exit the current frame, we need to make sure we break
*/
- __pyx_v_is_exception_event = 0;
+ __pyx_t_7 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_frame); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 875, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 875, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_16 = (!__pyx_t_12);
+ __pyx_t_10 = __pyx_t_16;
+ __pyx_L47_bool_binop_done:;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":870
+ * can_skip = True
+ *
+ * elif step_cmd in ( # <<<<<<<<<<<<<<
+ * 108,
+ * 109,
+ */
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":876
+ * 160,
+ * ) and not self._is_same_frame(stop_frame, frame):
+ * can_skip = True # <<<<<<<<<<<<<<
+ *
+ * elif step_cmd == 128 and (
+ */
+ __pyx_v_can_skip = 1;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":870
+ * can_skip = True
+ *
+ * elif step_cmd in ( # <<<<<<<<<<<<<<
+ * 108,
+ * 109,
+ */
+ goto __pyx_L46;
+ }
/* "_pydevd_bundle/pydevd_cython.pyx":878
- * # @DontTrace comment.
- * if (
- * stop_frame is frame and # <<<<<<<<<<<<<<
- * not info.pydev_use_scoped_step_frame and is_return and
- * step_cmd in (108, 109, 159, 160, 128)
+ * can_skip = True
+ *
+ * elif step_cmd == 128 and ( # <<<<<<<<<<<<<<
+ * stop_frame is not None
+ * and stop_frame is not frame
*/
- __pyx_t_9 = (__pyx_v_stop_frame == __pyx_v_frame);
- __pyx_t_11 = (__pyx_t_9 != 0);
- if (__pyx_t_11) {
+ __pyx_t_16 = (__pyx_v_step_cmd == 0x80);
+ if (__pyx_t_16) {
} else {
- __pyx_t_14 = __pyx_t_11;
- goto __pyx_L31_bool_binop_done;
+ __pyx_t_10 = __pyx_t_16;
+ goto __pyx_L49_bool_binop_done;
}
/* "_pydevd_bundle/pydevd_cython.pyx":879
- * if (
- * stop_frame is frame and
- * not info.pydev_use_scoped_step_frame and is_return and # <<<<<<<<<<<<<<
- * step_cmd in (108, 109, 159, 160, 128)
- * ):
+ *
+ * elif step_cmd == 128 and (
+ * stop_frame is not None # <<<<<<<<<<<<<<
+ * and stop_frame is not frame
+ * and stop_frame is not frame.f_back
*/
- __pyx_t_11 = ((!(__pyx_v_info->pydev_use_scoped_step_frame != 0)) != 0);
- if (__pyx_t_11) {
- } else {
- __pyx_t_14 = __pyx_t_11;
- goto __pyx_L31_bool_binop_done;
- }
- __pyx_t_11 = (__pyx_v_is_return != 0);
- if (__pyx_t_11) {
+ __pyx_t_16 = (__pyx_v_stop_frame != Py_None);
+ if (__pyx_t_16) {
} else {
- __pyx_t_14 = __pyx_t_11;
- goto __pyx_L31_bool_binop_done;
+ __pyx_t_10 = __pyx_t_16;
+ goto __pyx_L49_bool_binop_done;
}
/* "_pydevd_bundle/pydevd_cython.pyx":880
- * stop_frame is frame and
- * not info.pydev_use_scoped_step_frame and is_return and
- * step_cmd in (108, 109, 159, 160, 128) # <<<<<<<<<<<<<<
- * ):
- *
+ * elif step_cmd == 128 and (
+ * stop_frame is not None
+ * and stop_frame is not frame # <<<<<<<<<<<<<<
+ * and stop_frame is not frame.f_back
+ * and (frame.f_back is None or stop_frame is not frame.f_back.f_back)
*/
- switch (__pyx_v_step_cmd) {
- case 0x6C:
- case 0x6D:
- case 0x9F:
- case 0xA0:
- case 0x80:
- __pyx_t_11 = 1;
- break;
- default:
- __pyx_t_11 = 0;
- break;
+ __pyx_t_16 = (__pyx_v_stop_frame != __pyx_v_frame);
+ if (__pyx_t_16) {
+ } else {
+ __pyx_t_10 = __pyx_t_16;
+ goto __pyx_L49_bool_binop_done;
}
- __pyx_t_9 = (__pyx_t_11 != 0);
- __pyx_t_14 = __pyx_t_9;
- __pyx_L31_bool_binop_done:;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":877
- * # Note: this is especially troublesome when we're skipping code with the
- * # @DontTrace comment.
- * if ( # <<<<<<<<<<<<<<
- * stop_frame is frame and
- * not info.pydev_use_scoped_step_frame and is_return and
- */
- if (__pyx_t_14) {
- /* "_pydevd_bundle/pydevd_cython.pyx":883
- * ):
- *
- * if step_cmd in (108, 109, 128): # <<<<<<<<<<<<<<
- * info.pydev_step_cmd = 107
- * else:
+ /* "_pydevd_bundle/pydevd_cython.pyx":881
+ * stop_frame is not None
+ * and stop_frame is not frame
+ * and stop_frame is not frame.f_back # <<<<<<<<<<<<<<
+ * and (frame.f_back is None or stop_frame is not frame.f_back.f_back)
+ * ):
*/
- switch (__pyx_v_step_cmd) {
- case 0x6C:
- case 0x6D:
- case 0x80:
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 881, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_16 = (__pyx_v_stop_frame != __pyx_t_7);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (__pyx_t_16) {
+ } else {
+ __pyx_t_10 = __pyx_t_16;
+ goto __pyx_L49_bool_binop_done;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":884
- *
- * if step_cmd in (108, 109, 128):
- * info.pydev_step_cmd = 107 # <<<<<<<<<<<<<<
- * else:
- * info.pydev_step_cmd = 144
+ /* "_pydevd_bundle/pydevd_cython.pyx":882
+ * and stop_frame is not frame
+ * and stop_frame is not frame.f_back
+ * and (frame.f_back is None or stop_frame is not frame.f_back.f_back) # <<<<<<<<<<<<<<
+ * ):
+ * can_skip = True
*/
- __pyx_v_info->pydev_step_cmd = 0x6B;
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 882, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_16 = (__pyx_t_7 == Py_None);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (!__pyx_t_16) {
+ } else {
+ __pyx_t_10 = __pyx_t_16;
+ goto __pyx_L49_bool_binop_done;
+ }
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 882, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_f_back); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 882, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_16 = (__pyx_v_stop_frame != __pyx_t_8);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_10 = __pyx_t_16;
+ __pyx_L49_bool_binop_done:;
- /* "_pydevd_bundle/pydevd_cython.pyx":883
- * ):
+ /* "_pydevd_bundle/pydevd_cython.pyx":878
+ * can_skip = True
*
- * if step_cmd in (108, 109, 128): # <<<<<<<<<<<<<<
- * info.pydev_step_cmd = 107
- * else:
+ * elif step_cmd == 128 and ( # <<<<<<<<<<<<<<
+ * stop_frame is not None
+ * and stop_frame is not frame
*/
- break;
- default:
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":886
- * info.pydev_step_cmd = 107
- * else:
- * info.pydev_step_cmd = 144 # <<<<<<<<<<<<<<
- * info.pydev_step_stop = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":884
+ * and (frame.f_back is None or stop_frame is not frame.f_back.f_back)
+ * ):
+ * can_skip = True # <<<<<<<<<<<<<<
*
+ * elif step_cmd == 144:
*/
- __pyx_v_info->pydev_step_cmd = 0x90;
- break;
- }
+ __pyx_v_can_skip = 1;
- /* "_pydevd_bundle/pydevd_cython.pyx":887
- * else:
- * info.pydev_step_cmd = 144
- * info.pydev_step_stop = None # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":878
+ * can_skip = True
*
- * if self.exc_info:
- */
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_info->pydev_step_stop);
- __Pyx_DECREF(__pyx_v_info->pydev_step_stop);
- __pyx_v_info->pydev_step_stop = Py_None;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":877
- * # Note: this is especially troublesome when we're skipping code with the
- * # @DontTrace comment.
- * if ( # <<<<<<<<<<<<<<
- * stop_frame is frame and
- * not info.pydev_use_scoped_step_frame and is_return and
+ * elif step_cmd == 128 and ( # <<<<<<<<<<<<<<
+ * stop_frame is not None
+ * and stop_frame is not frame
*/
+ goto __pyx_L46;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":889
- * info.pydev_step_stop = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":886
+ * can_skip = True
*
- * if self.exc_info: # <<<<<<<<<<<<<<
- * if self.handle_user_exception(frame):
- * return self.trace_dispatch
+ * elif step_cmd == 144: # <<<<<<<<<<<<<<
+ * if py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and (
+ * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)
*/
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_v_self->exc_info); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 889, __pyx_L4_error)
- if (__pyx_t_14) {
+ __pyx_t_10 = (__pyx_v_step_cmd == 0x90);
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":890
- *
- * if self.exc_info:
- * if self.handle_user_exception(frame): # <<<<<<<<<<<<<<
- * return self.trace_dispatch
+ /* "_pydevd_bundle/pydevd_cython.pyx":887
*
+ * elif step_cmd == 144:
+ * if py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and ( # <<<<<<<<<<<<<<
+ * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)
+ * ):
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_user_exception); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 890, __pyx_L4_error)
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 887, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 887, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_8);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 887, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_5 = 1;
}
}
- __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_8, __pyx_v_frame) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_frame);
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 890, __pyx_L4_error)
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_1, __pyx_v_frame, __pyx_t_6, Py_True};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 887, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 887, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_16) {
+ } else {
+ __pyx_t_10 = __pyx_t_16;
+ goto __pyx_L56_bool_binop_done;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":888
+ * elif step_cmd == 144:
+ * if py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and (
+ * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) # <<<<<<<<<<<<<<
+ * ):
+ * can_skip = True
+ */
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 888, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_16 = (__pyx_t_8 == Py_None);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (!__pyx_t_16) {
+ } else {
+ __pyx_t_10 = __pyx_t_16;
+ goto __pyx_L56_bool_binop_done;
+ }
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 888, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 888, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 888, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_f_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 888, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 890, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_14) {
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 888, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_t_6, __pyx_t_1, Py_True};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 888, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 888, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_10 = __pyx_t_16;
+ __pyx_L56_bool_binop_done:;
- /* "_pydevd_bundle/pydevd_cython.pyx":891
- * if self.exc_info:
- * if self.handle_user_exception(frame):
- * return self.trace_dispatch # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":887
*
- * elif event == 'call':
+ * elif step_cmd == 144:
+ * if py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and ( # <<<<<<<<<<<<<<
+ * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)
+ * ):
*/
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 891, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_r = __pyx_t_7;
- __pyx_t_7 = 0;
- goto __pyx_L3_return;
+ if (__pyx_t_10) {
/* "_pydevd_bundle/pydevd_cython.pyx":890
+ * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)
+ * ):
+ * can_skip = True # <<<<<<<<<<<<<<
*
- * if self.exc_info:
- * if self.handle_user_exception(frame): # <<<<<<<<<<<<<<
- * return self.trace_dispatch
- *
+ * elif step_cmd == 206:
*/
- }
+ __pyx_v_can_skip = 1;
- /* "_pydevd_bundle/pydevd_cython.pyx":889
- * info.pydev_step_stop = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":887
*
- * if self.exc_info: # <<<<<<<<<<<<<<
- * if self.handle_user_exception(frame):
- * return self.trace_dispatch
+ * elif step_cmd == 144:
+ * if py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and ( # <<<<<<<<<<<<<<
+ * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)
+ * ):
*/
- }
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":865
- * is_exception_event = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":886
+ * can_skip = True
*
- * elif event == 'return': # <<<<<<<<<<<<<<
- * is_line = False
- * is_return = True
+ * elif step_cmd == 144: # <<<<<<<<<<<<<<
+ * if py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and (
+ * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)
*/
- goto __pyx_L29;
- }
+ goto __pyx_L46;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":893
- * return self.trace_dispatch
+ /* "_pydevd_bundle/pydevd_cython.pyx":892
+ * can_skip = True
*
- * elif event == 'call': # <<<<<<<<<<<<<<
- * is_line = False
- * is_call = True
+ * elif step_cmd == 206: # <<<<<<<<<<<<<<
+ * f = frame
+ * while f is not None:
*/
- __pyx_t_14 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 893, __pyx_L4_error)
- __pyx_t_9 = (__pyx_t_14 != 0);
- if (__pyx_t_9) {
+ __pyx_t_10 = (__pyx_v_step_cmd == 0xCE);
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":894
+ /* "_pydevd_bundle/pydevd_cython.pyx":893
*
- * elif event == 'call':
- * is_line = False # <<<<<<<<<<<<<<
- * is_call = True
- * is_return = False
+ * elif step_cmd == 206:
+ * f = frame # <<<<<<<<<<<<<<
+ * while f is not None:
+ * if self._is_same_frame(stop_frame, f):
*/
- __pyx_v_is_line = 0;
+ __Pyx_INCREF(__pyx_v_frame);
+ __Pyx_XDECREF_SET(__pyx_v_f, __pyx_v_frame);
- /* "_pydevd_bundle/pydevd_cython.pyx":895
- * elif event == 'call':
- * is_line = False
- * is_call = True # <<<<<<<<<<<<<<
- * is_return = False
- * is_exception_event = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":894
+ * elif step_cmd == 206:
+ * f = frame
+ * while f is not None: # <<<<<<<<<<<<<<
+ * if self._is_same_frame(stop_frame, f):
+ * break
*/
- __pyx_v_is_call = 1;
+ while (1) {
+ __pyx_t_10 = (__pyx_v_f != Py_None);
+ if (!__pyx_t_10) break;
- /* "_pydevd_bundle/pydevd_cython.pyx":896
- * is_line = False
- * is_call = True
- * is_return = False # <<<<<<<<<<<<<<
- * is_exception_event = False
- * if frame.f_code.co_firstlineno == frame.f_lineno: # Check line to deal with async/await.
+ /* "_pydevd_bundle/pydevd_cython.pyx":895
+ * f = frame
+ * while f is not None:
+ * if self._is_same_frame(stop_frame, f): # <<<<<<<<<<<<<<
+ * break
+ * f = f.f_back
*/
- __pyx_v_is_return = 0;
+ __pyx_t_8 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_f); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 895, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 895, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":897
- * is_call = True
- * is_return = False
- * is_exception_event = False # <<<<<<<<<<<<<<
- * if frame.f_code.co_firstlineno == frame.f_lineno: # Check line to deal with async/await.
- * function_breakpoint_on_call_event = main_debugger.function_breakpoint_name_to_breakpoint.get(frame.f_code.co_name)
+ /* "_pydevd_bundle/pydevd_cython.pyx":896
+ * while f is not None:
+ * if self._is_same_frame(stop_frame, f):
+ * break # <<<<<<<<<<<<<<
+ * f = f.f_back
+ * else:
*/
- __pyx_v_is_exception_event = 0;
+ goto __pyx_L60_break;
- /* "_pydevd_bundle/pydevd_cython.pyx":898
- * is_return = False
- * is_exception_event = False
- * if frame.f_code.co_firstlineno == frame.f_lineno: # Check line to deal with async/await. # <<<<<<<<<<<<<<
- * function_breakpoint_on_call_event = main_debugger.function_breakpoint_name_to_breakpoint.get(frame.f_code.co_name)
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":895
+ * f = frame
+ * while f is not None:
+ * if self._is_same_frame(stop_frame, f): # <<<<<<<<<<<<<<
+ * break
+ * f = f.f_back
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 898, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_co_firstlineno); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 898, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 898, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = PyObject_RichCompare(__pyx_t_1, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 898, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 898, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (__pyx_t_9) {
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":897
+ * if self._is_same_frame(stop_frame, f):
+ * break
+ * f = f.f_back # <<<<<<<<<<<<<<
+ * else:
+ * can_skip = True
+ */
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 897, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_8);
+ __pyx_t_8 = 0;
+ }
/* "_pydevd_bundle/pydevd_cython.pyx":899
- * is_exception_event = False
- * if frame.f_code.co_firstlineno == frame.f_lineno: # Check line to deal with async/await.
- * function_breakpoint_on_call_event = main_debugger.function_breakpoint_name_to_breakpoint.get(frame.f_code.co_name) # <<<<<<<<<<<<<<
+ * f = f.f_back
+ * else:
+ * can_skip = True # <<<<<<<<<<<<<<
*
- * elif event == 'exception':
+ * if can_skip:
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_function_breakpoint_name_to_brea); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 899, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 899, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 899, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_co_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 899, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_7)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_7);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
- }
+ /*else*/ {
+ __pyx_v_can_skip = 1;
}
- __pyx_t_8 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_7, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4);
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 899, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF_SET(__pyx_v_function_breakpoint_on_call_event, __pyx_t_8);
- __pyx_t_8 = 0;
+ __pyx_L60_break:;
- /* "_pydevd_bundle/pydevd_cython.pyx":898
- * is_return = False
- * is_exception_event = False
- * if frame.f_code.co_firstlineno == frame.f_lineno: # Check line to deal with async/await. # <<<<<<<<<<<<<<
- * function_breakpoint_on_call_event = main_debugger.function_breakpoint_name_to_breakpoint.get(frame.f_code.co_name)
+ /* "_pydevd_bundle/pydevd_cython.pyx":892
+ * can_skip = True
*
+ * elif step_cmd == 206: # <<<<<<<<<<<<<<
+ * f = frame
+ * while f is not None:
*/
}
+ __pyx_L46:;
- /* "_pydevd_bundle/pydevd_cython.pyx":893
- * return self.trace_dispatch
+ /* "_pydevd_bundle/pydevd_cython.pyx":901
+ * can_skip = True
*
- * elif event == 'call': # <<<<<<<<<<<<<<
- * is_line = False
- * is_call = True
+ * if can_skip: # <<<<<<<<<<<<<<
+ * if plugin_manager is not None and (py_db.has_plugin_line_breaks or py_db.has_plugin_exception_breaks):
+ * can_skip = plugin_manager.can_skip(py_db, frame)
*/
- goto __pyx_L29;
- }
+ if (__pyx_v_can_skip) {
- /* "_pydevd_bundle/pydevd_cython.pyx":901
- * function_breakpoint_on_call_event = main_debugger.function_breakpoint_name_to_breakpoint.get(frame.f_code.co_name)
+ /* "_pydevd_bundle/pydevd_cython.pyx":902
*
- * elif event == 'exception': # <<<<<<<<<<<<<<
- * is_exception_event = True
- * breakpoints_for_file = None
- */
- __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_exception, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 901, __pyx_L4_error)
- __pyx_t_14 = (__pyx_t_9 != 0);
- if (__pyx_t_14) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":902
+ * if can_skip:
+ * if plugin_manager is not None and (py_db.has_plugin_line_breaks or py_db.has_plugin_exception_breaks): # <<<<<<<<<<<<<<
+ * can_skip = plugin_manager.can_skip(py_db, frame)
*
- * elif event == 'exception':
- * is_exception_event = True # <<<<<<<<<<<<<<
- * breakpoints_for_file = None
- * if has_exception_breakpoints:
- */
- __pyx_v_is_exception_event = 1;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":903
- * elif event == 'exception':
- * is_exception_event = True
- * breakpoints_for_file = None # <<<<<<<<<<<<<<
- * if has_exception_breakpoints:
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg)
- */
- __Pyx_INCREF(Py_None);
- __pyx_v_breakpoints_for_file = ((PyObject*)Py_None);
-
- /* "_pydevd_bundle/pydevd_cython.pyx":904
- * is_exception_event = True
- * breakpoints_for_file = None
- * if has_exception_breakpoints: # <<<<<<<<<<<<<<
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg)
- * if should_stop:
- */
- __pyx_t_14 = (__pyx_v_has_exception_breakpoints != 0);
- if (__pyx_t_14) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":905
- * breakpoints_for_file = None
- * if has_exception_breakpoints:
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg) # <<<<<<<<<<<<<<
- * if should_stop:
- * if self._handle_exception(frame, event, arg, EXCEPTION_TYPE_HANDLED):
*/
- __pyx_t_8 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_should_stop_on_exception(__pyx_v_self, __pyx_v_frame, __pyx_v_event, __pyx_v_arg); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 905, __pyx_L4_error)
+ __pyx_t_16 = (__pyx_v_plugin_manager != Py_None);
+ if (__pyx_t_16) {
+ } else {
+ __pyx_t_10 = __pyx_t_16;
+ goto __pyx_L64_bool_binop_done;
+ }
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_has_plugin_line_breaks); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 902, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_8);
- if ((likely(PyTuple_CheckExact(__pyx_t_8))) || (PyList_CheckExact(__pyx_t_8))) {
- PyObject* sequence = __pyx_t_8;
- Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
- if (unlikely(size != 2)) {
- if (size > 2) __Pyx_RaiseTooManyValuesError(2);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 905, __pyx_L4_error)
- }
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1);
- } else {
- __pyx_t_1 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_4 = PyList_GET_ITEM(sequence, 1);
- }
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_4);
- #else
- __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 905, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 905, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- #endif
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 902, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (!__pyx_t_16) {
} else {
- Py_ssize_t index = -1;
- __pyx_t_7 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 905, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_15 = Py_TYPE(__pyx_t_7)->tp_iternext;
- index = 0; __pyx_t_1 = __pyx_t_15(__pyx_t_7); if (unlikely(!__pyx_t_1)) goto __pyx_L39_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_1);
- index = 1; __pyx_t_4 = __pyx_t_15(__pyx_t_7); if (unlikely(!__pyx_t_4)) goto __pyx_L39_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_4);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_7), 2) < 0) __PYX_ERR(0, 905, __pyx_L4_error)
- __pyx_t_15 = NULL;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- goto __pyx_L40_unpacking_done;
- __pyx_L39_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_15 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 905, __pyx_L4_error)
- __pyx_L40_unpacking_done:;
+ __pyx_t_10 = __pyx_t_16;
+ goto __pyx_L64_bool_binop_done;
}
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 905, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_should_stop = __pyx_t_14;
- __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_4);
- __pyx_t_4 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":906
- * if has_exception_breakpoints:
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg)
- * if should_stop: # <<<<<<<<<<<<<<
- * if self._handle_exception(frame, event, arg, EXCEPTION_TYPE_HANDLED):
- * return self.trace_dispatch
- */
- __pyx_t_14 = (__pyx_v_should_stop != 0);
- if (__pyx_t_14) {
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_has_plugin_exception_breaks); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 902, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 902, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_10 = __pyx_t_16;
+ __pyx_L64_bool_binop_done:;
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":907
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg)
- * if should_stop:
- * if self._handle_exception(frame, event, arg, EXCEPTION_TYPE_HANDLED): # <<<<<<<<<<<<<<
- * return self.trace_dispatch
- * is_line = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":903
+ * if can_skip:
+ * if plugin_manager is not None and (py_db.has_plugin_line_breaks or py_db.has_plugin_exception_breaks):
+ * can_skip = plugin_manager.can_skip(py_db, frame) # <<<<<<<<<<<<<<
+ *
+ * if (
*/
- __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_EXCEPTION_TYPE_HANDLED); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 907, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- if (!(likely(PyString_CheckExact(__pyx_t_8))||((__pyx_t_8) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_8)->tp_name), 0))) __PYX_ERR(0, 907, __pyx_L4_error)
- __pyx_t_4 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_handle_exception(__pyx_v_self, __pyx_v_frame, __pyx_v_event, __pyx_v_arg, ((PyObject*)__pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 907, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_can_skip); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 903, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_1 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_py_db, __pyx_v_frame};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 903, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 903, __pyx_L4_error)
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 907, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_14) {
+ __pyx_v_can_skip = __pyx_t_10;
- /* "_pydevd_bundle/pydevd_cython.pyx":908
- * if should_stop:
- * if self._handle_exception(frame, event, arg, EXCEPTION_TYPE_HANDLED):
- * return self.trace_dispatch # <<<<<<<<<<<<<<
- * is_line = False
- * is_return = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":902
+ *
+ * if can_skip:
+ * if plugin_manager is not None and (py_db.has_plugin_line_breaks or py_db.has_plugin_exception_breaks): # <<<<<<<<<<<<<<
+ * can_skip = plugin_manager.can_skip(py_db, frame)
+ *
*/
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 908, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- goto __pyx_L3_return;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":907
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg)
- * if should_stop:
- * if self._handle_exception(frame, event, arg, EXCEPTION_TYPE_HANDLED): # <<<<<<<<<<<<<<
- * return self.trace_dispatch
- * is_line = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":906
+ *
+ * if (
+ * can_skip # <<<<<<<<<<<<<<
+ * and py_db.show_return_values
+ * and info.pydev_step_cmd in (108, 159)
*/
- }
+ if (__pyx_v_can_skip) {
+ } else {
+ __pyx_t_10 = __pyx_v_can_skip;
+ goto __pyx_L68_bool_binop_done;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":906
- * if has_exception_breakpoints:
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg)
- * if should_stop: # <<<<<<<<<<<<<<
- * if self._handle_exception(frame, event, arg, EXCEPTION_TYPE_HANDLED):
- * return self.trace_dispatch
+ /* "_pydevd_bundle/pydevd_cython.pyx":907
+ * if (
+ * can_skip
+ * and py_db.show_return_values # <<<<<<<<<<<<<<
+ * and info.pydev_step_cmd in (108, 159)
+ * and self._is_same_frame(stop_frame, frame.f_back)
*/
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_show_return_values); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 907, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 907, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_16) {
+ } else {
+ __pyx_t_10 = __pyx_t_16;
+ goto __pyx_L68_bool_binop_done;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":904
- * is_exception_event = True
- * breakpoints_for_file = None
- * if has_exception_breakpoints: # <<<<<<<<<<<<<<
- * should_stop, frame = self._should_stop_on_exception(frame, event, arg)
- * if should_stop:
+ /* "_pydevd_bundle/pydevd_cython.pyx":908
+ * can_skip
+ * and py_db.show_return_values
+ * and info.pydev_step_cmd in (108, 159) # <<<<<<<<<<<<<<
+ * and self._is_same_frame(stop_frame, frame.f_back)
+ * ):
*/
- }
+ switch (__pyx_v_info->pydev_step_cmd) {
+ case 0x6C:
+ case 0x9F:
+ __pyx_t_16 = 1;
+ break;
+ default:
+ __pyx_t_16 = 0;
+ break;
+ }
+ __pyx_t_12 = __pyx_t_16;
+ if (__pyx_t_12) {
+ } else {
+ __pyx_t_10 = __pyx_t_12;
+ goto __pyx_L68_bool_binop_done;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":909
- * if self._handle_exception(frame, event, arg, EXCEPTION_TYPE_HANDLED):
- * return self.trace_dispatch
- * is_line = False # <<<<<<<<<<<<<<
- * is_return = False
- * is_call = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":909
+ * and py_db.show_return_values
+ * and info.pydev_step_cmd in (108, 159)
+ * and self._is_same_frame(stop_frame, frame.f_back) # <<<<<<<<<<<<<<
+ * ):
+ * # trace function for showing return values after step over
*/
- __pyx_v_is_line = 0;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 909, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_7 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 909, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 909, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_10 = __pyx_t_12;
+ __pyx_L68_bool_binop_done:;
- /* "_pydevd_bundle/pydevd_cython.pyx":910
- * return self.trace_dispatch
- * is_line = False
- * is_return = False # <<<<<<<<<<<<<<
- * is_call = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":905
+ * can_skip = plugin_manager.can_skip(py_db, frame)
*
+ * if ( # <<<<<<<<<<<<<<
+ * can_skip
+ * and py_db.show_return_values
*/
- __pyx_v_is_return = 0;
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":911
- * is_line = False
- * is_return = False
- * is_call = False # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":912
+ * ):
+ * # trace function for showing return values after step over
+ * can_skip = False # <<<<<<<<<<<<<<
*
- * else:
+ * # Let's check to see if we are in a function that has a breakpoint. If we don't have a breakpoint,
*/
- __pyx_v_is_call = 0;
+ __pyx_v_can_skip = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":901
- * function_breakpoint_on_call_event = main_debugger.function_breakpoint_name_to_breakpoint.get(frame.f_code.co_name)
+ /* "_pydevd_bundle/pydevd_cython.pyx":905
+ * can_skip = plugin_manager.can_skip(py_db, frame)
*
- * elif event == 'exception': # <<<<<<<<<<<<<<
- * is_exception_event = True
- * breakpoints_for_file = None
+ * if ( # <<<<<<<<<<<<<<
+ * can_skip
+ * and py_db.show_return_values
*/
- goto __pyx_L29;
- }
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":915
- * else:
- * # Unexpected: just keep the same trace func (i.e.: event == 'c_XXX').
- * return self.trace_dispatch # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":901
+ * can_skip = True
*
- * if not is_exception_event:
+ * if can_skip: # <<<<<<<<<<<<<<
+ * if plugin_manager is not None and (py_db.has_plugin_line_breaks or py_db.has_plugin_exception_breaks):
+ * can_skip = plugin_manager.can_skip(py_db, frame)
*/
- /*else*/ {
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 915, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- goto __pyx_L3_return;
- }
- __pyx_L29:;
- }
- __pyx_L12:;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":917
- * return self.trace_dispatch
- *
- * if not is_exception_event: # <<<<<<<<<<<<<<
- * breakpoints_for_file = main_debugger.breakpoints.get(abs_path_canonical_path_and_base[1])
+ /* "_pydevd_bundle/pydevd_cython.pyx":862
+ * can_skip = False
*
+ * if info.pydev_state == 1: # 1 = 1 # <<<<<<<<<<<<<<
+ * # we can skip if:
+ * # - we have no stop marked
*/
- __pyx_t_14 = ((!(__pyx_v_is_exception_event != 0)) != 0);
- if (__pyx_t_14) {
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":918
+ /* "_pydevd_bundle/pydevd_cython.pyx":919
+ * # so, that's why the additional checks are there.
*
- * if not is_exception_event:
- * breakpoints_for_file = main_debugger.breakpoints.get(abs_path_canonical_path_and_base[1]) # <<<<<<<<<<<<<<
+ * if function_breakpoint_on_call_event: # <<<<<<<<<<<<<<
+ * pass # Do nothing here (just keep on going as we can't skip it).
*
- * can_skip = False
*/
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_breakpoints); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 918, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 918, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(__pyx_v_abs_path_canonical_path_and_base == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 918, __pyx_L4_error)
- }
- __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v_abs_path_canonical_path_and_base, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 918, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_7 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_7)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_7);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
- }
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_function_breakpoint_on_call_event); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 919, __pyx_L4_error)
+ if (__pyx_t_10) {
+ goto __pyx_L72;
}
- __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_7, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_8);
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 918, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (!(likely(PyDict_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(0, 918, __pyx_L4_error)
- __Pyx_XDECREF_SET(__pyx_v_breakpoints_for_file, ((PyObject*)__pyx_t_4));
- __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":920
- * breakpoints_for_file = main_debugger.breakpoints.get(abs_path_canonical_path_and_base[1])
- *
- * can_skip = False # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":922
+ * pass # Do nothing here (just keep on going as we can't skip it).
*
- * if info.pydev_state == 1: # 1 = 1
+ * elif not breakpoints_for_file: # <<<<<<<<<<<<<<
+ * if can_skip:
+ * if has_exception_breakpoints:
*/
- __pyx_v_can_skip = 0;
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_breakpoints_for_file); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 922, __pyx_L4_error)
+ __pyx_t_12 = (!__pyx_t_10);
+ if (__pyx_t_12) {
- /* "_pydevd_bundle/pydevd_cython.pyx":922
- * can_skip = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":923
*
- * if info.pydev_state == 1: # 1 = 1 # <<<<<<<<<<<<<<
- * # we can skip if:
- * # - we have no stop marked
+ * elif not breakpoints_for_file:
+ * if can_skip: # <<<<<<<<<<<<<<
+ * if has_exception_breakpoints:
+ * return self.trace_exception
*/
- __pyx_t_14 = ((__pyx_v_info->pydev_state == 1) != 0);
- if (__pyx_t_14) {
+ if (__pyx_v_can_skip) {
- /* "_pydevd_bundle/pydevd_cython.pyx":927
- * # - we should make a step return/step over and we're not in the current frame
- * # - we're stepping into a coroutine context and we're not in that context
- * if step_cmd == -1: # <<<<<<<<<<<<<<
- * can_skip = True
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":924
+ * elif not breakpoints_for_file:
+ * if can_skip:
+ * if has_exception_breakpoints: # <<<<<<<<<<<<<<
+ * return self.trace_exception
+ * else:
*/
- __pyx_t_14 = ((__pyx_v_step_cmd == -1L) != 0);
- if (__pyx_t_14) {
+ if (__pyx_v_has_exception_breakpoints) {
- /* "_pydevd_bundle/pydevd_cython.pyx":928
- * # - we're stepping into a coroutine context and we're not in that context
- * if step_cmd == -1:
- * can_skip = True # <<<<<<<<<<<<<<
- *
- * elif step_cmd in (108, 109, 159, 160) and not self._is_same_frame(stop_frame, frame):
+ /* "_pydevd_bundle/pydevd_cython.pyx":925
+ * if can_skip:
+ * if has_exception_breakpoints:
+ * return self.trace_exception # <<<<<<<<<<<<<<
+ * else:
+ * return None if is_call else NO_FTRACE
*/
- __pyx_v_can_skip = 1;
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_exception); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 925, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_r = __pyx_t_7;
+ __pyx_t_7 = 0;
+ goto __pyx_L3_return;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":924
+ * elif not breakpoints_for_file:
+ * if can_skip:
+ * if has_exception_breakpoints: # <<<<<<<<<<<<<<
+ * return self.trace_exception
+ * else:
+ */
+ }
/* "_pydevd_bundle/pydevd_cython.pyx":927
- * # - we should make a step return/step over and we're not in the current frame
- * # - we're stepping into a coroutine context and we're not in that context
- * if step_cmd == -1: # <<<<<<<<<<<<<<
- * can_skip = True
+ * return self.trace_exception
+ * else:
+ * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<<
*
+ * else:
*/
- goto __pyx_L45;
- }
+ /*else*/ {
+ __Pyx_XDECREF(__pyx_r);
+ if (__pyx_v_is_call) {
+ __Pyx_INCREF(Py_None);
+ __pyx_t_7 = Py_None;
+ } else {
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 927, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_7 = __pyx_t_8;
+ __pyx_t_8 = 0;
+ }
+ __pyx_r = __pyx_t_7;
+ __pyx_t_7 = 0;
+ goto __pyx_L3_return;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":930
- * can_skip = True
- *
- * elif step_cmd in (108, 109, 159, 160) and not self._is_same_frame(stop_frame, frame): # <<<<<<<<<<<<<<
- * can_skip = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":923
*
+ * elif not breakpoints_for_file:
+ * if can_skip: # <<<<<<<<<<<<<<
+ * if has_exception_breakpoints:
+ * return self.trace_exception
*/
- switch (__pyx_v_step_cmd) {
- case 0x6C:
- case 0x6D:
- case 0x9F:
- case 0xA0:
- __pyx_t_9 = 1;
- break;
- default:
- __pyx_t_9 = 0;
- break;
}
- __pyx_t_11 = (__pyx_t_9 != 0);
- if (__pyx_t_11) {
- } else {
- __pyx_t_14 = __pyx_t_11;
- goto __pyx_L46_bool_binop_done;
- }
- __pyx_t_4 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_frame); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 930, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 930, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_9 = ((!__pyx_t_11) != 0);
- __pyx_t_14 = __pyx_t_9;
- __pyx_L46_bool_binop_done:;
- if (__pyx_t_14) {
- /* "_pydevd_bundle/pydevd_cython.pyx":931
- *
- * elif step_cmd in (108, 109, 159, 160) and not self._is_same_frame(stop_frame, frame):
- * can_skip = True # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":922
+ * pass # Do nothing here (just keep on going as we can't skip it).
*
- * elif step_cmd == 128 and (
+ * elif not breakpoints_for_file: # <<<<<<<<<<<<<<
+ * if can_skip:
+ * if has_exception_breakpoints:
*/
- __pyx_v_can_skip = 1;
+ goto __pyx_L72;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":930
- * can_skip = True
- *
- * elif step_cmd in (108, 109, 159, 160) and not self._is_same_frame(stop_frame, frame): # <<<<<<<<<<<<<<
- * can_skip = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":931
+ * else:
+ * # When cached, 0 means we don't have a breakpoint and 1 means we have.
+ * if can_skip: # <<<<<<<<<<<<<<
+ * breakpoints_in_line_cache = frame_skips_cache.get(line_cache_key, -1)
+ * if breakpoints_in_line_cache == 0:
+ */
+ /*else*/ {
+ if (__pyx_v_can_skip) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":932
+ * # When cached, 0 means we don't have a breakpoint and 1 means we have.
+ * if can_skip:
+ * breakpoints_in_line_cache = frame_skips_cache.get(line_cache_key, -1) # <<<<<<<<<<<<<<
+ * if breakpoints_in_line_cache == 0:
+ * return self.trace_dispatch
+ */
+ if (unlikely(__pyx_v_frame_skips_cache == Py_None)) {
+ PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
+ __PYX_ERR(0, 932, __pyx_L4_error)
+ }
+ __pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_frame_skips_cache, __pyx_v_line_cache_key, __pyx_int_neg_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 932, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 932, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_v_breakpoints_in_line_cache = __pyx_t_9;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":933
+ * if can_skip:
+ * breakpoints_in_line_cache = frame_skips_cache.get(line_cache_key, -1)
+ * if breakpoints_in_line_cache == 0: # <<<<<<<<<<<<<<
+ * return self.trace_dispatch
*
*/
- goto __pyx_L45;
- }
+ __pyx_t_12 = (__pyx_v_breakpoints_in_line_cache == 0);
+ if (__pyx_t_12) {
- /* "_pydevd_bundle/pydevd_cython.pyx":933
- * can_skip = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":934
+ * breakpoints_in_line_cache = frame_skips_cache.get(line_cache_key, -1)
+ * if breakpoints_in_line_cache == 0:
+ * return self.trace_dispatch # <<<<<<<<<<<<<<
*
- * elif step_cmd == 128 and ( # <<<<<<<<<<<<<<
- * stop_frame is not None and
- * stop_frame is not frame and
+ * breakpoints_in_frame_cache = frame_skips_cache.get(frame_cache_key, -1)
*/
- __pyx_t_9 = ((__pyx_v_step_cmd == 0x80) != 0);
- if (__pyx_t_9) {
- } else {
- __pyx_t_14 = __pyx_t_9;
- goto __pyx_L48_bool_binop_done;
- }
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 934, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_r = __pyx_t_7;
+ __pyx_t_7 = 0;
+ goto __pyx_L3_return;
- /* "_pydevd_bundle/pydevd_cython.pyx":934
+ /* "_pydevd_bundle/pydevd_cython.pyx":933
+ * if can_skip:
+ * breakpoints_in_line_cache = frame_skips_cache.get(line_cache_key, -1)
+ * if breakpoints_in_line_cache == 0: # <<<<<<<<<<<<<<
+ * return self.trace_dispatch
*
- * elif step_cmd == 128 and (
- * stop_frame is not None and # <<<<<<<<<<<<<<
- * stop_frame is not frame and
- * stop_frame is not frame.f_back and
*/
- __pyx_t_9 = (__pyx_v_stop_frame != Py_None);
- __pyx_t_11 = (__pyx_t_9 != 0);
- if (__pyx_t_11) {
- } else {
- __pyx_t_14 = __pyx_t_11;
- goto __pyx_L48_bool_binop_done;
- }
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":935
- * elif step_cmd == 128 and (
- * stop_frame is not None and
- * stop_frame is not frame and # <<<<<<<<<<<<<<
- * stop_frame is not frame.f_back and
- * (frame.f_back is None or stop_frame is not frame.f_back.f_back)):
+ /* "_pydevd_bundle/pydevd_cython.pyx":931
+ * else:
+ * # When cached, 0 means we don't have a breakpoint and 1 means we have.
+ * if can_skip: # <<<<<<<<<<<<<<
+ * breakpoints_in_line_cache = frame_skips_cache.get(line_cache_key, -1)
+ * if breakpoints_in_line_cache == 0:
*/
- __pyx_t_11 = (__pyx_v_stop_frame != __pyx_v_frame);
- __pyx_t_9 = (__pyx_t_11 != 0);
- if (__pyx_t_9) {
- } else {
- __pyx_t_14 = __pyx_t_9;
- goto __pyx_L48_bool_binop_done;
}
/* "_pydevd_bundle/pydevd_cython.pyx":936
- * stop_frame is not None and
- * stop_frame is not frame and
- * stop_frame is not frame.f_back and # <<<<<<<<<<<<<<
- * (frame.f_back is None or stop_frame is not frame.f_back.f_back)):
- * can_skip = True
+ * return self.trace_dispatch
+ *
+ * breakpoints_in_frame_cache = frame_skips_cache.get(frame_cache_key, -1) # <<<<<<<<<<<<<<
+ * if breakpoints_in_frame_cache != -1:
+ * # Gotten from cache.
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 936, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_9 = (__pyx_v_stop_frame != __pyx_t_4);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_11 = (__pyx_t_9 != 0);
- if (__pyx_t_11) {
- } else {
- __pyx_t_14 = __pyx_t_11;
- goto __pyx_L48_bool_binop_done;
+ if (unlikely(__pyx_v_frame_skips_cache == Py_None)) {
+ PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
+ __PYX_ERR(0, 936, __pyx_L4_error)
}
+ __pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_frame_skips_cache, __pyx_v_frame_cache_key, __pyx_int_neg_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 936, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 936, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_v_breakpoints_in_frame_cache = __pyx_t_9;
/* "_pydevd_bundle/pydevd_cython.pyx":937
- * stop_frame is not frame and
- * stop_frame is not frame.f_back and
- * (frame.f_back is None or stop_frame is not frame.f_back.f_back)): # <<<<<<<<<<<<<<
- * can_skip = True
*
+ * breakpoints_in_frame_cache = frame_skips_cache.get(frame_cache_key, -1)
+ * if breakpoints_in_frame_cache != -1: # <<<<<<<<<<<<<<
+ * # Gotten from cache.
+ * has_breakpoint_in_frame = breakpoints_in_frame_cache == 1
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 937, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_11 = (__pyx_t_4 == Py_None);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_9 = (__pyx_t_11 != 0);
- if (!__pyx_t_9) {
- } else {
- __pyx_t_14 = __pyx_t_9;
- goto __pyx_L48_bool_binop_done;
- }
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 937, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 937, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_9 = (__pyx_v_stop_frame != __pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_11 = (__pyx_t_9 != 0);
- __pyx_t_14 = __pyx_t_11;
- __pyx_L48_bool_binop_done:;
+ __pyx_t_12 = (__pyx_v_breakpoints_in_frame_cache != -1L);
+ if (__pyx_t_12) {
- /* "_pydevd_bundle/pydevd_cython.pyx":933
- * can_skip = True
- *
- * elif step_cmd == 128 and ( # <<<<<<<<<<<<<<
- * stop_frame is not None and
- * stop_frame is not frame and
- */
- if (__pyx_t_14) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":938
- * stop_frame is not frame.f_back and
- * (frame.f_back is None or stop_frame is not frame.f_back.f_back)):
- * can_skip = True # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":939
+ * if breakpoints_in_frame_cache != -1:
+ * # Gotten from cache.
+ * has_breakpoint_in_frame = breakpoints_in_frame_cache == 1 # <<<<<<<<<<<<<<
*
- * elif step_cmd == 144:
+ * else:
*/
- __pyx_v_can_skip = 1;
+ __pyx_v_has_breakpoint_in_frame = (__pyx_v_breakpoints_in_frame_cache == 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":933
- * can_skip = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":937
*
- * elif step_cmd == 128 and ( # <<<<<<<<<<<<<<
- * stop_frame is not None and
- * stop_frame is not frame and
+ * breakpoints_in_frame_cache = frame_skips_cache.get(frame_cache_key, -1)
+ * if breakpoints_in_frame_cache != -1: # <<<<<<<<<<<<<<
+ * # Gotten from cache.
+ * has_breakpoint_in_frame = breakpoints_in_frame_cache == 1
*/
- goto __pyx_L45;
+ goto __pyx_L77;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":940
- * can_skip = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":942
*
- * elif step_cmd == 144: # <<<<<<<<<<<<<<
- * if (
- * main_debugger.apply_files_filter(frame, frame.f_code.co_filename, True)
- */
- __pyx_t_14 = ((__pyx_v_step_cmd == 0x90) != 0);
- if (__pyx_t_14) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":942
- * elif step_cmd == 144:
- * if (
- * main_debugger.apply_files_filter(frame, frame.f_code.co_filename, True) # <<<<<<<<<<<<<<
- * and (frame.f_back is None or main_debugger.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True))
- * ):
+ * else:
+ * has_breakpoint_in_frame = False # <<<<<<<<<<<<<<
+ *
+ * try:
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 942, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 942, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 942, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = NULL;
- __pyx_t_5 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_8);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- __pyx_t_5 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[4] = {__pyx_t_8, __pyx_v_frame, __pyx_t_7, Py_True};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 942, __pyx_L4_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[4] = {__pyx_t_8, __pyx_v_frame, __pyx_t_7, Py_True};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 942, __pyx_L4_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 942, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_6);
- if (__pyx_t_8) {
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = NULL;
- }
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_frame);
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_7);
- __Pyx_INCREF(Py_True);
- __Pyx_GIVEREF(Py_True);
- PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, Py_True);
- __pyx_t_7 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 942, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 942, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_11) {
- } else {
- __pyx_t_14 = __pyx_t_11;
- goto __pyx_L55_bool_binop_done;
- }
+ /*else*/ {
+ __pyx_v_has_breakpoint_in_frame = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":943
- * if (
- * main_debugger.apply_files_filter(frame, frame.f_code.co_filename, True)
- * and (frame.f_back is None or main_debugger.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)) # <<<<<<<<<<<<<<
- * ):
- * can_skip = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":944
+ * has_breakpoint_in_frame = False
+ *
+ * try: # <<<<<<<<<<<<<<
+ * func_lines = set()
+ * for offset_and_lineno in dis.findlinestarts(frame.f_code):
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 943, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_11 = (__pyx_t_1 == Py_None);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_9 = (__pyx_t_11 != 0);
- if (!__pyx_t_9) {
- } else {
- __pyx_t_14 = __pyx_t_9;
- goto __pyx_L55_bool_binop_done;
- }
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 943, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 943, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 943, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_f_code); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 943, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 943, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = NULL;
- __pyx_t_5 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_8);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- __pyx_t_5 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[4] = {__pyx_t_8, __pyx_t_6, __pyx_t_7, Py_True};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 943, __pyx_L4_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[4] = {__pyx_t_8, __pyx_t_6, __pyx_t_7, Py_True};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 943, __pyx_L4_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
{
- __pyx_t_3 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 943, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_3);
- if (__pyx_t_8) {
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8); __pyx_t_8 = NULL;
- }
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_t_7);
- __Pyx_INCREF(Py_True);
- __Pyx_GIVEREF(Py_True);
- PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_5, Py_True);
- __pyx_t_6 = 0;
- __pyx_t_7 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 943, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 943, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_14 = __pyx_t_9;
- __pyx_L55_bool_binop_done:;
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
+ __Pyx_XGOTREF(__pyx_t_17);
+ __Pyx_XGOTREF(__pyx_t_18);
+ __Pyx_XGOTREF(__pyx_t_19);
+ /*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":941
+ /* "_pydevd_bundle/pydevd_cython.pyx":945
*
- * elif step_cmd == 144:
- * if ( # <<<<<<<<<<<<<<
- * main_debugger.apply_files_filter(frame, frame.f_code.co_filename, True)
- * and (frame.f_back is None or main_debugger.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True))
+ * try:
+ * func_lines = set() # <<<<<<<<<<<<<<
+ * for offset_and_lineno in dis.findlinestarts(frame.f_code):
+ * func_lines.add(offset_and_lineno[1])
*/
- if (__pyx_t_14) {
+ __pyx_t_7 = PySet_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 945, __pyx_L78_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_v_func_lines = ((PyObject*)__pyx_t_7);
+ __pyx_t_7 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":945
- * and (frame.f_back is None or main_debugger.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True))
- * ):
- * can_skip = True # <<<<<<<<<<<<<<
- *
- * elif step_cmd == 206:
+ /* "_pydevd_bundle/pydevd_cython.pyx":946
+ * try:
+ * func_lines = set()
+ * for offset_and_lineno in dis.findlinestarts(frame.f_code): # <<<<<<<<<<<<<<
+ * func_lines.add(offset_and_lineno[1])
+ * except:
*/
- __pyx_v_can_skip = 1;
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_dis); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 946, __pyx_L78_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_findlinestarts); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 946, __pyx_L78_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 946, __pyx_L78_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_6 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_8};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 946, __pyx_L78_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
+ __pyx_t_1 = __pyx_t_7; __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_13 = 0;
+ __pyx_t_14 = NULL;
+ } else {
+ __pyx_t_13 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 946, __pyx_L78_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_14 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 946, __pyx_L78_error)
+ }
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ for (;;) {
+ if (likely(!__pyx_t_14)) {
+ if (likely(PyList_CheckExact(__pyx_t_1))) {
+ {
+ Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
+ #if !CYTHON_ASSUME_SAFE_MACROS
+ if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 946, __pyx_L78_error)
+ #endif
+ if (__pyx_t_13 >= __pyx_temp) break;
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ __pyx_t_7 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_13); __Pyx_INCREF(__pyx_t_7); __pyx_t_13++; if (unlikely((0 < 0))) __PYX_ERR(0, 946, __pyx_L78_error)
+ #else
+ __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 946, __pyx_L78_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ #endif
+ } else {
+ {
+ Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
+ #if !CYTHON_ASSUME_SAFE_MACROS
+ if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 946, __pyx_L78_error)
+ #endif
+ if (__pyx_t_13 >= __pyx_temp) break;
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_13); __Pyx_INCREF(__pyx_t_7); __pyx_t_13++; if (unlikely((0 < 0))) __PYX_ERR(0, 946, __pyx_L78_error)
+ #else
+ __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 946, __pyx_L78_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ #endif
+ }
+ } else {
+ __pyx_t_7 = __pyx_t_14(__pyx_t_1);
+ if (unlikely(!__pyx_t_7)) {
+ PyObject* exc_type = PyErr_Occurred();
+ if (exc_type) {
+ if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+ else __PYX_ERR(0, 946, __pyx_L78_error)
+ }
+ break;
+ }
+ __Pyx_GOTREF(__pyx_t_7);
+ }
+ __Pyx_XDECREF_SET(__pyx_v_offset_and_lineno, __pyx_t_7);
+ __pyx_t_7 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":941
- *
- * elif step_cmd == 144:
- * if ( # <<<<<<<<<<<<<<
- * main_debugger.apply_files_filter(frame, frame.f_code.co_filename, True)
- * and (frame.f_back is None or main_debugger.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True))
+ /* "_pydevd_bundle/pydevd_cython.pyx":947
+ * func_lines = set()
+ * for offset_and_lineno in dis.findlinestarts(frame.f_code):
+ * func_lines.add(offset_and_lineno[1]) # <<<<<<<<<<<<<<
+ * except:
+ * # This is a fallback for implementations where we can't get the function
*/
- }
+ __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_offset_and_lineno, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 947, __pyx_L78_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_20 = PySet_Add(__pyx_v_func_lines, __pyx_t_7); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 947, __pyx_L78_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":940
- * can_skip = True
- *
- * elif step_cmd == 144: # <<<<<<<<<<<<<<
- * if (
- * main_debugger.apply_files_filter(frame, frame.f_code.co_filename, True)
+ /* "_pydevd_bundle/pydevd_cython.pyx":946
+ * try:
+ * func_lines = set()
+ * for offset_and_lineno in dis.findlinestarts(frame.f_code): # <<<<<<<<<<<<<<
+ * func_lines.add(offset_and_lineno[1])
+ * except:
*/
- goto __pyx_L45;
- }
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":947
- * can_skip = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":944
+ * has_breakpoint_in_frame = False
*
- * elif step_cmd == 206: # <<<<<<<<<<<<<<
- * f = frame
- * while f is not None:
+ * try: # <<<<<<<<<<<<<<
+ * func_lines = set()
+ * for offset_and_lineno in dis.findlinestarts(frame.f_code):
*/
- __pyx_t_14 = ((__pyx_v_step_cmd == 0xCE) != 0);
- if (__pyx_t_14) {
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":948
- *
- * elif step_cmd == 206:
- * f = frame # <<<<<<<<<<<<<<
- * while f is not None:
- * if self._is_same_frame(stop_frame, f):
+ /* "_pydevd_bundle/pydevd_cython.pyx":967
+ * break
+ * else:
+ * for bp_line in breakpoints_for_file: # iterate on keys # <<<<<<<<<<<<<<
+ * if bp_line in func_lines:
+ * has_breakpoint_in_frame = True
*/
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_XDECREF_SET(__pyx_v_f, __pyx_v_frame);
+ /*else:*/ {
+ __pyx_t_13 = 0;
+ if (unlikely(__pyx_v_breakpoints_for_file == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+ __PYX_ERR(0, 967, __pyx_L80_except_error)
+ }
+ __pyx_t_7 = __Pyx_dict_iterator(__pyx_v_breakpoints_for_file, 1, ((PyObject *)NULL), (&__pyx_t_21), (&__pyx_t_9)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 967, __pyx_L80_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_1);
+ __pyx_t_1 = __pyx_t_7;
+ __pyx_t_7 = 0;
+ while (1) {
+ __pyx_t_11 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_21, &__pyx_t_13, &__pyx_t_7, NULL, NULL, __pyx_t_9);
+ if (unlikely(__pyx_t_11 == 0)) break;
+ if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 967, __pyx_L80_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 967, __pyx_L80_except_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_v_bp_line = __pyx_t_11;
- /* "_pydevd_bundle/pydevd_cython.pyx":949
- * elif step_cmd == 206:
- * f = frame
- * while f is not None: # <<<<<<<<<<<<<<
- * if self._is_same_frame(stop_frame, f):
- * break
+ /* "_pydevd_bundle/pydevd_cython.pyx":968
+ * else:
+ * for bp_line in breakpoints_for_file: # iterate on keys
+ * if bp_line in func_lines: # <<<<<<<<<<<<<<
+ * has_breakpoint_in_frame = True
+ * break
*/
- while (1) {
- __pyx_t_14 = (__pyx_v_f != Py_None);
- __pyx_t_9 = (__pyx_t_14 != 0);
- if (!__pyx_t_9) break;
+ __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_bp_line); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 968, __pyx_L80_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_12 = (__Pyx_PySet_ContainsTF(__pyx_t_7, __pyx_v_func_lines, Py_EQ)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 968, __pyx_L80_except_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (__pyx_t_12) {
- /* "_pydevd_bundle/pydevd_cython.pyx":950
- * f = frame
- * while f is not None:
- * if self._is_same_frame(stop_frame, f): # <<<<<<<<<<<<<<
- * break
- * f = f.f_back
+ /* "_pydevd_bundle/pydevd_cython.pyx":969
+ * for bp_line in breakpoints_for_file: # iterate on keys
+ * if bp_line in func_lines:
+ * has_breakpoint_in_frame = True # <<<<<<<<<<<<<<
+ * break
+ *
*/
- __pyx_t_1 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_f); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 950, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 950, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_9) {
+ __pyx_v_has_breakpoint_in_frame = 1;
- /* "_pydevd_bundle/pydevd_cython.pyx":951
- * while f is not None:
- * if self._is_same_frame(stop_frame, f):
- * break # <<<<<<<<<<<<<<
- * f = f.f_back
- * else:
+ /* "_pydevd_bundle/pydevd_cython.pyx":970
+ * if bp_line in func_lines:
+ * has_breakpoint_in_frame = True
+ * break # <<<<<<<<<<<<<<
+ *
+ * # Cache the value (1 or 0 or -1 for default because of cython).
*/
- goto __pyx_L59_break;
+ goto __pyx_L88_break;
- /* "_pydevd_bundle/pydevd_cython.pyx":950
- * f = frame
- * while f is not None:
- * if self._is_same_frame(stop_frame, f): # <<<<<<<<<<<<<<
- * break
- * f = f.f_back
+ /* "_pydevd_bundle/pydevd_cython.pyx":968
+ * else:
+ * for bp_line in breakpoints_for_file: # iterate on keys
+ * if bp_line in func_lines: # <<<<<<<<<<<<<<
+ * has_breakpoint_in_frame = True
+ * break
*/
+ }
+ }
+ __pyx_L88_break:;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
+ __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
+ __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
+ __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
+ goto __pyx_L83_try_end;
+ __pyx_L78_error:;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":952
- * if self._is_same_frame(stop_frame, f):
- * break
- * f = f.f_back # <<<<<<<<<<<<<<
- * else:
- * can_skip = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":948
+ * for offset_and_lineno in dis.findlinestarts(frame.f_code):
+ * func_lines.add(offset_and_lineno[1])
+ * except: # <<<<<<<<<<<<<<
+ * # This is a fallback for implementations where we can't get the function
+ * # lines -- i.e.: jython (in this case clients need to provide the function
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 952, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_1);
- __pyx_t_1 = 0;
- }
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 948, __pyx_L80_except_error)
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_7);
+ __Pyx_XGOTREF(__pyx_t_8);
- /* "_pydevd_bundle/pydevd_cython.pyx":954
- * f = f.f_back
- * else:
- * can_skip = True # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":955
*
- * if can_skip:
+ * # Checks the breakpoint to see if there is a context match in some function.
+ * curr_func_name = frame.f_code.co_name # <<<<<<<<<<<<<<
+ *
+ * # global context is set with an empty name
*/
- /*else*/ {
- __pyx_v_can_skip = 1;
- }
- __pyx_L59_break:;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 955, __pyx_L80_except_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_co_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 955, __pyx_L80_except_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (!(likely(PyString_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(0, 955, __pyx_L80_except_error)
+ __pyx_v_curr_func_name = ((PyObject*)__pyx_t_4);
+ __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":947
- * can_skip = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":958
+ *
+ * # global context is set with an empty name
+ * if curr_func_name in ("?", "", ""): # <<<<<<<<<<<<<<
+ * curr_func_name = ""
*
- * elif step_cmd == 206: # <<<<<<<<<<<<<<
- * f = frame
- * while f is not None:
*/
- }
- __pyx_L45:;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":956
- * can_skip = True
+ __Pyx_INCREF(__pyx_v_curr_func_name);
+ __pyx_t_22 = __pyx_v_curr_func_name;
+ __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_t_22, __pyx_kp_s__4, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 958, __pyx_L80_except_error)
+ if (!__pyx_t_10) {
+ } else {
+ __pyx_t_12 = __pyx_t_10;
+ goto __pyx_L93_bool_binop_done;
+ }
+ __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_t_22, __pyx_kp_s_module, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 958, __pyx_L80_except_error)
+ if (!__pyx_t_10) {
+ } else {
+ __pyx_t_12 = __pyx_t_10;
+ goto __pyx_L93_bool_binop_done;
+ }
+ __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_t_22, __pyx_kp_s_lambda, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 958, __pyx_L80_except_error)
+ __pyx_t_12 = __pyx_t_10;
+ __pyx_L93_bool_binop_done:;
+ __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
+ __pyx_t_10 = __pyx_t_12;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":959
+ * # global context is set with an empty name
+ * if curr_func_name in ("?", "", ""):
+ * curr_func_name = "" # <<<<<<<<<<<<<<
*
- * if can_skip: # <<<<<<<<<<<<<<
- * if plugin_manager is not None and (
- * main_debugger.has_plugin_line_breaks or main_debugger.has_plugin_exception_breaks):
+ * for bp in breakpoints_for_file.values():
*/
- __pyx_t_9 = (__pyx_v_can_skip != 0);
- if (__pyx_t_9) {
+ __Pyx_INCREF(__pyx_kp_s_);
+ __Pyx_DECREF_SET(__pyx_v_curr_func_name, __pyx_kp_s_);
- /* "_pydevd_bundle/pydevd_cython.pyx":957
+ /* "_pydevd_bundle/pydevd_cython.pyx":958
+ *
+ * # global context is set with an empty name
+ * if curr_func_name in ("?", "", ""): # <<<<<<<<<<<<<<
+ * curr_func_name = ""
*
- * if can_skip:
- * if plugin_manager is not None and ( # <<<<<<<<<<<<<<
- * main_debugger.has_plugin_line_breaks or main_debugger.has_plugin_exception_breaks):
- * can_skip = plugin_manager.can_skip(main_debugger, frame)
*/
- __pyx_t_14 = (__pyx_v_plugin_manager != Py_None);
- __pyx_t_11 = (__pyx_t_14 != 0);
- if (__pyx_t_11) {
- } else {
- __pyx_t_9 = __pyx_t_11;
- goto __pyx_L63_bool_binop_done;
- }
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":958
- * if can_skip:
- * if plugin_manager is not None and (
- * main_debugger.has_plugin_line_breaks or main_debugger.has_plugin_exception_breaks): # <<<<<<<<<<<<<<
- * can_skip = plugin_manager.can_skip(main_debugger, frame)
+ /* "_pydevd_bundle/pydevd_cython.pyx":961
+ * curr_func_name = ""
*
+ * for bp in breakpoints_for_file.values(): # <<<<<<<<<<<<<<
+ * # will match either global or some function
+ * if bp.func_name in ("None", curr_func_name):
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_has_plugin_line_breaks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 958, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 958, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (!__pyx_t_11) {
- } else {
- __pyx_t_9 = __pyx_t_11;
- goto __pyx_L63_bool_binop_done;
- }
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_has_plugin_exception_breaks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 958, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 958, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_9 = __pyx_t_11;
- __pyx_L63_bool_binop_done:;
+ __pyx_t_21 = 0;
+ if (unlikely(__pyx_v_breakpoints_for_file == Py_None)) {
+ PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
+ __PYX_ERR(0, 961, __pyx_L80_except_error)
+ }
+ __pyx_t_6 = __Pyx_dict_iterator(__pyx_v_breakpoints_for_file, 1, __pyx_n_s_values, (&__pyx_t_13), (&__pyx_t_9)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 961, __pyx_L80_except_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_4);
+ __pyx_t_4 = __pyx_t_6;
+ __pyx_t_6 = 0;
+ while (1) {
+ __pyx_t_11 = __Pyx_dict_iter_next(__pyx_t_4, __pyx_t_13, &__pyx_t_21, NULL, &__pyx_t_6, NULL, __pyx_t_9);
+ if (unlikely(__pyx_t_11 == 0)) break;
+ if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 961, __pyx_L80_except_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_XDECREF_SET(__pyx_v_bp, __pyx_t_6);
+ __pyx_t_6 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":957
- *
- * if can_skip:
- * if plugin_manager is not None and ( # <<<<<<<<<<<<<<
- * main_debugger.has_plugin_line_breaks or main_debugger.has_plugin_exception_breaks):
- * can_skip = plugin_manager.can_skip(main_debugger, frame)
+ /* "_pydevd_bundle/pydevd_cython.pyx":963
+ * for bp in breakpoints_for_file.values():
+ * # will match either global or some function
+ * if bp.func_name in ("None", curr_func_name): # <<<<<<<<<<<<<<
+ * has_breakpoint_in_frame = True
+ * break
*/
- if (__pyx_t_9) {
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_bp, __pyx_n_s_func_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 963, __pyx_L80_except_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_12 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_None, Py_EQ)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 963, __pyx_L80_except_error)
+ if (!__pyx_t_12) {
+ } else {
+ __pyx_t_10 = __pyx_t_12;
+ goto __pyx_L99_bool_binop_done;
+ }
+ __pyx_t_12 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_v_curr_func_name, Py_EQ)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 963, __pyx_L80_except_error)
+ __pyx_t_10 = __pyx_t_12;
+ __pyx_L99_bool_binop_done:;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_12 = __pyx_t_10;
+ if (__pyx_t_12) {
- /* "_pydevd_bundle/pydevd_cython.pyx":959
- * if plugin_manager is not None and (
- * main_debugger.has_plugin_line_breaks or main_debugger.has_plugin_exception_breaks):
- * can_skip = plugin_manager.can_skip(main_debugger, frame) # <<<<<<<<<<<<<<
- *
- * if can_skip and main_debugger.show_return_values and info.pydev_step_cmd in (108, 159) and self._is_same_frame(stop_frame, frame.f_back):
+ /* "_pydevd_bundle/pydevd_cython.pyx":964
+ * # will match either global or some function
+ * if bp.func_name in ("None", curr_func_name):
+ * has_breakpoint_in_frame = True # <<<<<<<<<<<<<<
+ * break
+ * else:
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_can_skip); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 959, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = NULL;
- __pyx_t_5 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- __pyx_t_5 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_main_debugger, __pyx_v_frame};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 959, __pyx_L4_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_main_debugger, __pyx_v_frame};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 959, __pyx_L4_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- {
- __pyx_t_7 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 959, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_7);
- if (__pyx_t_3) {
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
+ __pyx_v_has_breakpoint_in_frame = 1;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":965
+ * if bp.func_name in ("None", curr_func_name):
+ * has_breakpoint_in_frame = True
+ * break # <<<<<<<<<<<<<<
+ * else:
+ * for bp_line in breakpoints_for_file: # iterate on keys
+ */
+ goto __pyx_L97_break;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":963
+ * for bp in breakpoints_for_file.values():
+ * # will match either global or some function
+ * if bp.func_name in ("None", curr_func_name): # <<<<<<<<<<<<<<
+ * has_breakpoint_in_frame = True
+ * break
+ */
+ }
}
- __Pyx_INCREF(__pyx_v_main_debugger);
- __Pyx_GIVEREF(__pyx_v_main_debugger);
- PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_5, __pyx_v_main_debugger);
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_5, __pyx_v_frame);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 959, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_L97_break:;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ goto __pyx_L79_exception_handled;
}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 959, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_can_skip = __pyx_t_9;
- /* "_pydevd_bundle/pydevd_cython.pyx":957
+ /* "_pydevd_bundle/pydevd_cython.pyx":944
+ * has_breakpoint_in_frame = False
*
- * if can_skip:
- * if plugin_manager is not None and ( # <<<<<<<<<<<<<<
- * main_debugger.has_plugin_line_breaks or main_debugger.has_plugin_exception_breaks):
- * can_skip = plugin_manager.can_skip(main_debugger, frame)
+ * try: # <<<<<<<<<<<<<<
+ * func_lines = set()
+ * for offset_and_lineno in dis.findlinestarts(frame.f_code):
*/
+ __pyx_L80_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_17);
+ __Pyx_XGIVEREF(__pyx_t_18);
+ __Pyx_XGIVEREF(__pyx_t_19);
+ __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
+ goto __pyx_L4_error;
+ __pyx_L79_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_17);
+ __Pyx_XGIVEREF(__pyx_t_18);
+ __Pyx_XGIVEREF(__pyx_t_19);
+ __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
+ __pyx_L83_try_end:;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":961
- * can_skip = plugin_manager.can_skip(main_debugger, frame)
+ /* "_pydevd_bundle/pydevd_cython.pyx":973
*
- * if can_skip and main_debugger.show_return_values and info.pydev_step_cmd in (108, 159) and self._is_same_frame(stop_frame, frame.f_back): # <<<<<<<<<<<<<<
- * # trace function for showing return values after step over
- * can_skip = False
+ * # Cache the value (1 or 0 or -1 for default because of cython).
+ * if has_breakpoint_in_frame: # <<<<<<<<<<<<<<
+ * frame_skips_cache[frame_cache_key] = 1
+ * else:
*/
- __pyx_t_11 = (__pyx_v_can_skip != 0);
- if (__pyx_t_11) {
- } else {
- __pyx_t_9 = __pyx_t_11;
- goto __pyx_L67_bool_binop_done;
- }
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_show_return_values); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 961, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 961, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_11) {
- } else {
- __pyx_t_9 = __pyx_t_11;
- goto __pyx_L67_bool_binop_done;
- }
- switch (__pyx_v_info->pydev_step_cmd) {
- case 0x6C:
- case 0x9F:
- __pyx_t_11 = 1;
- break;
- default:
- __pyx_t_11 = 0;
- break;
- }
- __pyx_t_14 = (__pyx_t_11 != 0);
- if (__pyx_t_14) {
- } else {
- __pyx_t_9 = __pyx_t_14;
- goto __pyx_L67_bool_binop_done;
- }
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 961, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 961, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 961, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_9 = __pyx_t_14;
- __pyx_L67_bool_binop_done:;
- if (__pyx_t_9) {
+ if (__pyx_v_has_breakpoint_in_frame) {
- /* "_pydevd_bundle/pydevd_cython.pyx":963
- * if can_skip and main_debugger.show_return_values and info.pydev_step_cmd in (108, 159) and self._is_same_frame(stop_frame, frame.f_back):
- * # trace function for showing return values after step over
- * can_skip = False # <<<<<<<<<<<<<<
- *
- * # Let's check to see if we are in a function that has a breakpoint. If we don't have a breakpoint,
+ /* "_pydevd_bundle/pydevd_cython.pyx":974
+ * # Cache the value (1 or 0 or -1 for default because of cython).
+ * if has_breakpoint_in_frame:
+ * frame_skips_cache[frame_cache_key] = 1 # <<<<<<<<<<<<<<
+ * else:
+ * frame_skips_cache[frame_cache_key] = 0
*/
- __pyx_v_can_skip = 0;
+ if (unlikely(__pyx_v_frame_skips_cache == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 974, __pyx_L4_error)
+ }
+ if (unlikely((PyDict_SetItem(__pyx_v_frame_skips_cache, __pyx_v_frame_cache_key, __pyx_int_1) < 0))) __PYX_ERR(0, 974, __pyx_L4_error)
- /* "_pydevd_bundle/pydevd_cython.pyx":961
- * can_skip = plugin_manager.can_skip(main_debugger, frame)
+ /* "_pydevd_bundle/pydevd_cython.pyx":973
*
- * if can_skip and main_debugger.show_return_values and info.pydev_step_cmd in (108, 159) and self._is_same_frame(stop_frame, frame.f_back): # <<<<<<<<<<<<<<
- * # trace function for showing return values after step over
- * can_skip = False
+ * # Cache the value (1 or 0 or -1 for default because of cython).
+ * if has_breakpoint_in_frame: # <<<<<<<<<<<<<<
+ * frame_skips_cache[frame_cache_key] = 1
+ * else:
*/
+ goto __pyx_L101;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":956
- * can_skip = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":976
+ * frame_skips_cache[frame_cache_key] = 1
+ * else:
+ * frame_skips_cache[frame_cache_key] = 0 # <<<<<<<<<<<<<<
*
- * if can_skip: # <<<<<<<<<<<<<<
- * if plugin_manager is not None and (
- * main_debugger.has_plugin_line_breaks or main_debugger.has_plugin_exception_breaks):
+ * if can_skip and not has_breakpoint_in_frame:
*/
+ /*else*/ {
+ if (unlikely(__pyx_v_frame_skips_cache == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 976, __pyx_L4_error)
+ }
+ if (unlikely((PyDict_SetItem(__pyx_v_frame_skips_cache, __pyx_v_frame_cache_key, __pyx_int_0) < 0))) __PYX_ERR(0, 976, __pyx_L4_error)
+ }
+ __pyx_L101:;
}
+ __pyx_L77:;
- /* "_pydevd_bundle/pydevd_cython.pyx":922
- * can_skip = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":978
+ * frame_skips_cache[frame_cache_key] = 0
*
- * if info.pydev_state == 1: # 1 = 1 # <<<<<<<<<<<<<<
- * # we can skip if:
- * # - we have no stop marked
- */
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":970
- * # so, that's why the additional checks are there.
- *
- * if function_breakpoint_on_call_event: # <<<<<<<<<<<<<<
- * pass # Do nothing here (just keep on going as we can't skip it).
- *
- */
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_function_breakpoint_on_call_event); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 970, __pyx_L4_error)
- if (__pyx_t_9) {
- goto __pyx_L71;
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":973
- * pass # Do nothing here (just keep on going as we can't skip it).
- *
- * elif not breakpoints_for_file: # <<<<<<<<<<<<<<
- * if can_skip:
- * if has_exception_breakpoints:
- */
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_breakpoints_for_file); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 973, __pyx_L4_error)
- __pyx_t_14 = ((!__pyx_t_9) != 0);
- if (__pyx_t_14) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":974
- *
- * elif not breakpoints_for_file:
- * if can_skip: # <<<<<<<<<<<<<<
+ * if can_skip and not has_breakpoint_in_frame: # <<<<<<<<<<<<<<
* if has_exception_breakpoints:
* return self.trace_exception
*/
- __pyx_t_14 = (__pyx_v_can_skip != 0);
- if (__pyx_t_14) {
+ if (__pyx_v_can_skip) {
+ } else {
+ __pyx_t_12 = __pyx_v_can_skip;
+ goto __pyx_L103_bool_binop_done;
+ }
+ __pyx_t_10 = (!__pyx_v_has_breakpoint_in_frame);
+ __pyx_t_12 = __pyx_t_10;
+ __pyx_L103_bool_binop_done:;
+ if (__pyx_t_12) {
- /* "_pydevd_bundle/pydevd_cython.pyx":975
- * elif not breakpoints_for_file:
- * if can_skip:
+ /* "_pydevd_bundle/pydevd_cython.pyx":979
+ *
+ * if can_skip and not has_breakpoint_in_frame:
* if has_exception_breakpoints: # <<<<<<<<<<<<<<
* return self.trace_exception
* else:
*/
- __pyx_t_14 = (__pyx_v_has_exception_breakpoints != 0);
- if (__pyx_t_14) {
+ if (__pyx_v_has_exception_breakpoints) {
- /* "_pydevd_bundle/pydevd_cython.pyx":976
- * if can_skip:
+ /* "_pydevd_bundle/pydevd_cython.pyx":980
+ * if can_skip and not has_breakpoint_in_frame:
* if has_exception_breakpoints:
* return self.trace_exception # <<<<<<<<<<<<<<
* else:
* return None if is_call else NO_FTRACE
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_exception); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 976, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_exception); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 980, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_r = __pyx_t_8;
+ __pyx_t_8 = 0;
goto __pyx_L3_return;
- /* "_pydevd_bundle/pydevd_cython.pyx":975
- * elif not breakpoints_for_file:
- * if can_skip:
+ /* "_pydevd_bundle/pydevd_cython.pyx":979
+ *
+ * if can_skip and not has_breakpoint_in_frame:
* if has_exception_breakpoints: # <<<<<<<<<<<<<<
* return self.trace_exception
* else:
*/
}
- /* "_pydevd_bundle/pydevd_cython.pyx":978
+ /* "_pydevd_bundle/pydevd_cython.pyx":982
* return self.trace_exception
* else:
* return None if is_call else NO_FTRACE # <<<<<<<<<<<<<<
*
- * else:
+ * # We may have hit a breakpoint or we are already in step mode. Either way, let's check what we should do in this frame
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- if ((__pyx_v_is_call != 0)) {
+ if (__pyx_v_is_call) {
__Pyx_INCREF(Py_None);
- __pyx_t_4 = Py_None;
+ __pyx_t_8 = Py_None;
} else {
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 978, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = __pyx_t_1;
- __pyx_t_1 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 982, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = __pyx_t_7;
+ __pyx_t_7 = 0;
}
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
+ __pyx_r = __pyx_t_8;
+ __pyx_t_8 = 0;
goto __pyx_L3_return;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":974
+ /* "_pydevd_bundle/pydevd_cython.pyx":978
+ * frame_skips_cache[frame_cache_key] = 0
*
- * elif not breakpoints_for_file:
- * if can_skip: # <<<<<<<<<<<<<<
+ * if can_skip and not has_breakpoint_in_frame: # <<<<<<<<<<<<<<
* if has_exception_breakpoints:
* return self.trace_exception
*/
}
-
- /* "_pydevd_bundle/pydevd_cython.pyx":973
- * pass # Do nothing here (just keep on going as we can't skip it).
- *
- * elif not breakpoints_for_file: # <<<<<<<<<<<<<<
- * if can_skip:
- * if has_exception_breakpoints:
- */
- goto __pyx_L71;
}
+ __pyx_L72:;
- /* "_pydevd_bundle/pydevd_cython.pyx":982
- * else:
- * # When cached, 0 means we don't have a breakpoint and 1 means we have.
- * if can_skip: # <<<<<<<<<<<<<<
- * breakpoints_in_line_cache = frame_skips_cache.get(line_cache_key, -1)
- * if breakpoints_in_line_cache == 0:
+ /* "_pydevd_bundle/pydevd_cython.pyx":857
+ * return self.trace_dispatch
+ *
+ * if not is_exception_event: # <<<<<<<<<<<<<<
+ * breakpoints_for_file = py_db.breakpoints.get(abs_path_canonical_path_and_base[1])
+ *
*/
- /*else*/ {
- __pyx_t_14 = (__pyx_v_can_skip != 0);
- if (__pyx_t_14) {
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":983
- * # When cached, 0 means we don't have a breakpoint and 1 means we have.
- * if can_skip:
- * breakpoints_in_line_cache = frame_skips_cache.get(line_cache_key, -1) # <<<<<<<<<<<<<<
- * if breakpoints_in_line_cache == 0:
- * return self.trace_dispatch
+ /* "_pydevd_bundle/pydevd_cython.pyx":987
+ * # if DEBUG: print('NOT skipped: %s %s %s %s' % (frame.f_lineno, frame.f_code.co_name, event, frame.__class__.__name__))
+ *
+ * try: # <<<<<<<<<<<<<<
+ * stop_on_plugin_breakpoint = False
+ * # return is not taken into account for breakpoint hit because we'd have a double-hit in this case
*/
- if (unlikely(__pyx_v_frame_skips_cache == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 983, __pyx_L4_error)
- }
- __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_frame_skips_cache, __pyx_v_line_cache_key, __pyx_int_neg_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 983, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 983, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_breakpoints_in_line_cache = __pyx_t_5;
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
+ __Pyx_XGOTREF(__pyx_t_19);
+ __Pyx_XGOTREF(__pyx_t_18);
+ __Pyx_XGOTREF(__pyx_t_17);
+ /*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":984
- * if can_skip:
- * breakpoints_in_line_cache = frame_skips_cache.get(line_cache_key, -1)
- * if breakpoints_in_line_cache == 0: # <<<<<<<<<<<<<<
- * return self.trace_dispatch
+ /* "_pydevd_bundle/pydevd_cython.pyx":988
*
+ * try:
+ * stop_on_plugin_breakpoint = False # <<<<<<<<<<<<<<
+ * # return is not taken into account for breakpoint hit because we'd have a double-hit in this case
+ * # (one for the line and the other for the return).
*/
- __pyx_t_14 = ((__pyx_v_breakpoints_in_line_cache == 0) != 0);
- if (__pyx_t_14) {
+ __pyx_v_stop_on_plugin_breakpoint = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":985
- * breakpoints_in_line_cache = frame_skips_cache.get(line_cache_key, -1)
- * if breakpoints_in_line_cache == 0:
- * return self.trace_dispatch # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":992
+ * # (one for the line and the other for the return).
*
- * breakpoints_in_frame_cache = frame_skips_cache.get(frame_cache_key, -1)
+ * stop_info = {} # <<<<<<<<<<<<<<
+ * breakpoint = None
+ * stop = False
*/
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 985, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- goto __pyx_L3_return;
+ __pyx_t_8 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 992, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_v_stop_info = ((PyObject*)__pyx_t_8);
+ __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":984
- * if can_skip:
- * breakpoints_in_line_cache = frame_skips_cache.get(line_cache_key, -1)
- * if breakpoints_in_line_cache == 0: # <<<<<<<<<<<<<<
- * return self.trace_dispatch
+ /* "_pydevd_bundle/pydevd_cython.pyx":993
*
+ * stop_info = {}
+ * breakpoint = None # <<<<<<<<<<<<<<
+ * stop = False
+ * stop_reason = 111
*/
- }
+ __Pyx_INCREF(Py_None);
+ __pyx_v_breakpoint = Py_None;
- /* "_pydevd_bundle/pydevd_cython.pyx":982
- * else:
- * # When cached, 0 means we don't have a breakpoint and 1 means we have.
- * if can_skip: # <<<<<<<<<<<<<<
- * breakpoints_in_line_cache = frame_skips_cache.get(line_cache_key, -1)
- * if breakpoints_in_line_cache == 0:
+ /* "_pydevd_bundle/pydevd_cython.pyx":994
+ * stop_info = {}
+ * breakpoint = None
+ * stop = False # <<<<<<<<<<<<<<
+ * stop_reason = 111
+ * bp_type = None
*/
- }
+ __pyx_v_stop = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":987
- * return self.trace_dispatch
+ /* "_pydevd_bundle/pydevd_cython.pyx":995
+ * breakpoint = None
+ * stop = False
+ * stop_reason = 111 # <<<<<<<<<<<<<<
+ * bp_type = None
*
- * breakpoints_in_frame_cache = frame_skips_cache.get(frame_cache_key, -1) # <<<<<<<<<<<<<<
- * if breakpoints_in_frame_cache != -1:
- * # Gotten from cache.
*/
- if (unlikely(__pyx_v_frame_skips_cache == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 987, __pyx_L4_error)
- }
- __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_frame_skips_cache, __pyx_v_frame_cache_key, __pyx_int_neg_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 987, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 987, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_breakpoints_in_frame_cache = __pyx_t_5;
+ __Pyx_INCREF(__pyx_int_111);
+ __pyx_v_stop_reason = __pyx_int_111;
- /* "_pydevd_bundle/pydevd_cython.pyx":988
+ /* "_pydevd_bundle/pydevd_cython.pyx":996
+ * stop = False
+ * stop_reason = 111
+ * bp_type = None # <<<<<<<<<<<<<<
*
- * breakpoints_in_frame_cache = frame_skips_cache.get(frame_cache_key, -1)
- * if breakpoints_in_frame_cache != -1: # <<<<<<<<<<<<<<
- * # Gotten from cache.
- * has_breakpoint_in_frame = breakpoints_in_frame_cache == 1
+ * if function_breakpoint_on_call_event:
*/
- __pyx_t_14 = ((__pyx_v_breakpoints_in_frame_cache != -1L) != 0);
- if (__pyx_t_14) {
+ __Pyx_INCREF(Py_None);
+ __pyx_v_bp_type = Py_None;
- /* "_pydevd_bundle/pydevd_cython.pyx":990
- * if breakpoints_in_frame_cache != -1:
- * # Gotten from cache.
- * has_breakpoint_in_frame = breakpoints_in_frame_cache == 1 # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":998
+ * bp_type = None
*
- * else:
+ * if function_breakpoint_on_call_event: # <<<<<<<<<<<<<<
+ * breakpoint = function_breakpoint_on_call_event
+ * stop = True
*/
- __pyx_v_has_breakpoint_in_frame = (__pyx_v_breakpoints_in_frame_cache == 1);
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_function_breakpoint_on_call_event); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 998, __pyx_L106_error)
+ if (__pyx_t_12) {
- /* "_pydevd_bundle/pydevd_cython.pyx":988
+ /* "_pydevd_bundle/pydevd_cython.pyx":999
*
- * breakpoints_in_frame_cache = frame_skips_cache.get(frame_cache_key, -1)
- * if breakpoints_in_frame_cache != -1: # <<<<<<<<<<<<<<
- * # Gotten from cache.
- * has_breakpoint_in_frame = breakpoints_in_frame_cache == 1
+ * if function_breakpoint_on_call_event:
+ * breakpoint = function_breakpoint_on_call_event # <<<<<<<<<<<<<<
+ * stop = True
+ * new_frame = frame
*/
- goto __pyx_L76;
- }
+ __Pyx_INCREF(__pyx_v_function_breakpoint_on_call_event);
+ __Pyx_DECREF_SET(__pyx_v_breakpoint, __pyx_v_function_breakpoint_on_call_event);
- /* "_pydevd_bundle/pydevd_cython.pyx":993
- *
- * else:
- * has_breakpoint_in_frame = False # <<<<<<<<<<<<<<
- *
- * try:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1000
+ * if function_breakpoint_on_call_event:
+ * breakpoint = function_breakpoint_on_call_event
+ * stop = True # <<<<<<<<<<<<<<
+ * new_frame = frame
+ * stop_reason = CMD_SET_FUNCTION_BREAK
*/
- /*else*/ {
- __pyx_v_has_breakpoint_in_frame = 0;
+ __pyx_v_stop = 1;
- /* "_pydevd_bundle/pydevd_cython.pyx":995
- * has_breakpoint_in_frame = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1001
+ * breakpoint = function_breakpoint_on_call_event
+ * stop = True
+ * new_frame = frame # <<<<<<<<<<<<<<
+ * stop_reason = CMD_SET_FUNCTION_BREAK
*
- * try: # <<<<<<<<<<<<<<
- * func_lines = set()
- * for offset_and_lineno in dis.findlinestarts(frame.f_code):
*/
- {
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __Pyx_ExceptionSave(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
- __Pyx_XGOTREF(__pyx_t_16);
- __Pyx_XGOTREF(__pyx_t_17);
- __Pyx_XGOTREF(__pyx_t_18);
- /*try:*/ {
+ __Pyx_INCREF(__pyx_v_frame);
+ __pyx_v_new_frame = __pyx_v_frame;
- /* "_pydevd_bundle/pydevd_cython.pyx":996
+ /* "_pydevd_bundle/pydevd_cython.pyx":1002
+ * stop = True
+ * new_frame = frame
+ * stop_reason = CMD_SET_FUNCTION_BREAK # <<<<<<<<<<<<<<
*
- * try:
- * func_lines = set() # <<<<<<<<<<<<<<
- * for offset_and_lineno in dis.findlinestarts(frame.f_code):
- * func_lines.add(offset_and_lineno[1])
- */
- __pyx_t_4 = PySet_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 996, __pyx_L77_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_v_func_lines = ((PyObject*)__pyx_t_4);
- __pyx_t_4 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":997
- * try:
- * func_lines = set()
- * for offset_and_lineno in dis.findlinestarts(frame.f_code): # <<<<<<<<<<<<<<
- * func_lines.add(offset_and_lineno[1])
- * except:
+ * elif is_line and info.pydev_state != 2 and breakpoints_for_file is not None and line in breakpoints_for_file:
*/
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_dis); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 997, __pyx_L77_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_findlinestarts); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 997, __pyx_L77_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 997, __pyx_L77_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_7, function);
- }
- }
- __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 997, __pyx_L77_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
- __pyx_t_7 = __pyx_t_4; __Pyx_INCREF(__pyx_t_7); __pyx_t_12 = 0;
- __pyx_t_13 = NULL;
- } else {
- __pyx_t_12 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 997, __pyx_L77_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_13 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 997, __pyx_L77_error)
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- for (;;) {
- if (likely(!__pyx_t_13)) {
- if (likely(PyList_CheckExact(__pyx_t_7))) {
- if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_7)) break;
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_12); __Pyx_INCREF(__pyx_t_4); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(0, 997, __pyx_L77_error)
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_7, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 997, __pyx_L77_error)
- __Pyx_GOTREF(__pyx_t_4);
- #endif
- } else {
- if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_12); __Pyx_INCREF(__pyx_t_4); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(0, 997, __pyx_L77_error)
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_7, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 997, __pyx_L77_error)
- __Pyx_GOTREF(__pyx_t_4);
- #endif
- }
- } else {
- __pyx_t_4 = __pyx_t_13(__pyx_t_7);
- if (unlikely(!__pyx_t_4)) {
- PyObject* exc_type = PyErr_Occurred();
- if (exc_type) {
- if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(0, 997, __pyx_L77_error)
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XDECREF_SET(__pyx_v_offset_and_lineno, __pyx_t_4);
- __pyx_t_4 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_CMD_SET_FUNCTION_BREAK); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1002, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF_SET(__pyx_v_stop_reason, __pyx_t_8);
+ __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":998
- * func_lines = set()
- * for offset_and_lineno in dis.findlinestarts(frame.f_code):
- * func_lines.add(offset_and_lineno[1]) # <<<<<<<<<<<<<<
- * except:
- * # This is a fallback for implementations where we can't get the function
+ /* "_pydevd_bundle/pydevd_cython.pyx":998
+ * bp_type = None
+ *
+ * if function_breakpoint_on_call_event: # <<<<<<<<<<<<<<
+ * breakpoint = function_breakpoint_on_call_event
+ * stop = True
*/
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_offset_and_lineno, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 998, __pyx_L77_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_19 = PySet_Add(__pyx_v_func_lines, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 998, __pyx_L77_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ goto __pyx_L112;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":997
- * try:
- * func_lines = set()
- * for offset_and_lineno in dis.findlinestarts(frame.f_code): # <<<<<<<<<<<<<<
- * func_lines.add(offset_and_lineno[1])
- * except:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1004
+ * stop_reason = CMD_SET_FUNCTION_BREAK
+ *
+ * elif is_line and info.pydev_state != 2 and breakpoints_for_file is not None and line in breakpoints_for_file: # <<<<<<<<<<<<<<
+ * breakpoint = breakpoints_for_file[line]
+ * new_frame = frame
*/
- }
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (__pyx_v_is_line) {
+ } else {
+ __pyx_t_12 = __pyx_v_is_line;
+ goto __pyx_L113_bool_binop_done;
+ }
+ __pyx_t_10 = (__pyx_v_info->pydev_state != 2);
+ if (__pyx_t_10) {
+ } else {
+ __pyx_t_12 = __pyx_t_10;
+ goto __pyx_L113_bool_binop_done;
+ }
+ if (unlikely(!__pyx_v_breakpoints_for_file)) { __Pyx_RaiseUnboundLocalError("breakpoints_for_file"); __PYX_ERR(0, 1004, __pyx_L106_error) }
+ __pyx_t_10 = (__pyx_v_breakpoints_for_file != ((PyObject*)Py_None));
+ if (__pyx_t_10) {
+ } else {
+ __pyx_t_12 = __pyx_t_10;
+ goto __pyx_L113_bool_binop_done;
+ }
+ __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1004, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ if (unlikely(!__pyx_v_breakpoints_for_file)) { __Pyx_RaiseUnboundLocalError("breakpoints_for_file"); __PYX_ERR(0, 1004, __pyx_L106_error) }
+ if (unlikely(__pyx_v_breakpoints_for_file == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+ __PYX_ERR(0, 1004, __pyx_L106_error)
+ }
+ __pyx_t_10 = (__Pyx_PyDict_ContainsTF(__pyx_t_8, __pyx_v_breakpoints_for_file, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1004, __pyx_L106_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_12 = __pyx_t_10;
+ __pyx_L113_bool_binop_done:;
+ if (__pyx_t_12) {
- /* "_pydevd_bundle/pydevd_cython.pyx":995
- * has_breakpoint_in_frame = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1005
*
- * try: # <<<<<<<<<<<<<<
- * func_lines = set()
- * for offset_and_lineno in dis.findlinestarts(frame.f_code):
+ * elif is_line and info.pydev_state != 2 and breakpoints_for_file is not None and line in breakpoints_for_file:
+ * breakpoint = breakpoints_for_file[line] # <<<<<<<<<<<<<<
+ * new_frame = frame
+ * stop = True
*/
- }
+ if (unlikely(!__pyx_v_breakpoints_for_file)) { __Pyx_RaiseUnboundLocalError("breakpoints_for_file"); __PYX_ERR(0, 1005, __pyx_L106_error) }
+ if (unlikely(__pyx_v_breakpoints_for_file == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 1005, __pyx_L106_error)
+ }
+ __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1005, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_7 = __Pyx_PyDict_GetItem(__pyx_v_breakpoints_for_file, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1005, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF_SET(__pyx_v_breakpoint, __pyx_t_7);
+ __pyx_t_7 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1018
- * break
- * else:
- * for bp_line in breakpoints_for_file: # iterate on keys # <<<<<<<<<<<<<<
- * if bp_line in func_lines:
- * has_breakpoint_in_frame = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":1006
+ * elif is_line and info.pydev_state != 2 and breakpoints_for_file is not None and line in breakpoints_for_file:
+ * breakpoint = breakpoints_for_file[line]
+ * new_frame = frame # <<<<<<<<<<<<<<
+ * stop = True
+ *
*/
- /*else:*/ {
- __pyx_t_12 = 0;
- if (unlikely(__pyx_v_breakpoints_for_file == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(0, 1018, __pyx_L79_except_error)
- }
- __pyx_t_4 = __Pyx_dict_iterator(__pyx_v_breakpoints_for_file, 1, ((PyObject *)NULL), (&__pyx_t_20), (&__pyx_t_5)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1018, __pyx_L79_except_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_7);
- __pyx_t_7 = __pyx_t_4;
- __pyx_t_4 = 0;
- while (1) {
- __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_7, __pyx_t_20, &__pyx_t_12, &__pyx_t_4, NULL, NULL, __pyx_t_5);
- if (unlikely(__pyx_t_10 == 0)) break;
- if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 1018, __pyx_L79_except_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1018, __pyx_L79_except_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_bp_line = __pyx_t_10;
+ __Pyx_INCREF(__pyx_v_frame);
+ __pyx_v_new_frame = __pyx_v_frame;
- /* "_pydevd_bundle/pydevd_cython.pyx":1019
- * else:
- * for bp_line in breakpoints_for_file: # iterate on keys
- * if bp_line in func_lines: # <<<<<<<<<<<<<<
- * has_breakpoint_in_frame = True
- * break
+ /* "_pydevd_bundle/pydevd_cython.pyx":1007
+ * breakpoint = breakpoints_for_file[line]
+ * new_frame = frame
+ * stop = True # <<<<<<<<<<<<<<
+ *
+ * elif plugin_manager is not None and py_db.has_plugin_line_breaks:
*/
- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_bp_line); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1019, __pyx_L79_except_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_14 = (__Pyx_PySet_ContainsTF(__pyx_t_4, __pyx_v_func_lines, Py_EQ)); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1019, __pyx_L79_except_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_9 = (__pyx_t_14 != 0);
- if (__pyx_t_9) {
+ __pyx_v_stop = 1;
- /* "_pydevd_bundle/pydevd_cython.pyx":1020
- * for bp_line in breakpoints_for_file: # iterate on keys
- * if bp_line in func_lines:
- * has_breakpoint_in_frame = True # <<<<<<<<<<<<<<
- * break
+ /* "_pydevd_bundle/pydevd_cython.pyx":1004
+ * stop_reason = CMD_SET_FUNCTION_BREAK
*
+ * elif is_line and info.pydev_state != 2 and breakpoints_for_file is not None and line in breakpoints_for_file: # <<<<<<<<<<<<<<
+ * breakpoint = breakpoints_for_file[line]
+ * new_frame = frame
*/
- __pyx_v_has_breakpoint_in_frame = 1;
+ goto __pyx_L112;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1021
- * if bp_line in func_lines:
- * has_breakpoint_in_frame = True
- * break # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1009
+ * stop = True
*
- * # Cache the value (1 or 0 or -1 for default because of cython).
+ * elif plugin_manager is not None and py_db.has_plugin_line_breaks: # <<<<<<<<<<<<<<
+ * result = plugin_manager.get_breakpoint(py_db, frame, event, self._args[2])
+ * if result:
*/
- goto __pyx_L86_break;
+ __pyx_t_10 = (__pyx_v_plugin_manager != Py_None);
+ if (__pyx_t_10) {
+ } else {
+ __pyx_t_12 = __pyx_t_10;
+ goto __pyx_L117_bool_binop_done;
+ }
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_has_plugin_line_breaks); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1009, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1009, __pyx_L106_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_12 = __pyx_t_10;
+ __pyx_L117_bool_binop_done:;
+ if (__pyx_t_12) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1019
- * else:
- * for bp_line in breakpoints_for_file: # iterate on keys
- * if bp_line in func_lines: # <<<<<<<<<<<<<<
- * has_breakpoint_in_frame = True
- * break
+ /* "_pydevd_bundle/pydevd_cython.pyx":1010
+ *
+ * elif plugin_manager is not None and py_db.has_plugin_line_breaks:
+ * result = plugin_manager.get_breakpoint(py_db, frame, event, self._args[2]) # <<<<<<<<<<<<<<
+ * if result:
+ * stop_on_plugin_breakpoint = True
*/
- }
- }
- __pyx_L86_break:;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_get_breakpoint); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1010, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 1010, __pyx_L106_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1010, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_5 = 1;
}
- __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
- __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
- __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
- goto __pyx_L82_try_end;
- __pyx_L77_error:;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[5] = {__pyx_t_4, __pyx_v_py_db, __pyx_v_frame, __pyx_v_event, __pyx_t_1};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 4+__pyx_t_5);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1010, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+ __pyx_v_result = __pyx_t_7;
+ __pyx_t_7 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":999
- * for offset_and_lineno in dis.findlinestarts(frame.f_code):
- * func_lines.add(offset_and_lineno[1])
- * except: # <<<<<<<<<<<<<<
- * # This is a fallback for implementations where we can't get the function
- * # lines -- i.e.: jython (in this case clients need to provide the function
+ /* "_pydevd_bundle/pydevd_cython.pyx":1011
+ * elif plugin_manager is not None and py_db.has_plugin_line_breaks:
+ * result = plugin_manager.get_breakpoint(py_db, frame, event, self._args[2])
+ * if result: # <<<<<<<<<<<<<<
+ * stop_on_plugin_breakpoint = True
+ * breakpoint, new_frame, bp_type = result
*/
- /*except:*/ {
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_4, &__pyx_t_1) < 0) __PYX_ERR(0, 999, __pyx_L79_except_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1011, __pyx_L106_error)
+ if (__pyx_t_12) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1006
- *
- * # Checks the breakpoint to see if there is a context match in some function.
- * curr_func_name = frame.f_code.co_name # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1012
+ * result = plugin_manager.get_breakpoint(py_db, frame, event, self._args[2])
+ * if result:
+ * stop_on_plugin_breakpoint = True # <<<<<<<<<<<<<<
+ * breakpoint, new_frame, bp_type = result
*
- * # global context is set with an empty name
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1006, __pyx_L79_except_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_co_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1006, __pyx_L79_except_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (!(likely(PyString_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(0, 1006, __pyx_L79_except_error)
- __pyx_v_curr_func_name = ((PyObject*)__pyx_t_6);
- __pyx_t_6 = 0;
+ __pyx_v_stop_on_plugin_breakpoint = 1;
- /* "_pydevd_bundle/pydevd_cython.pyx":1009
- *
- * # global context is set with an empty name
- * if curr_func_name in ('?', '', ''): # <<<<<<<<<<<<<<
- * curr_func_name = ''
+ /* "_pydevd_bundle/pydevd_cython.pyx":1013
+ * if result:
+ * stop_on_plugin_breakpoint = True
+ * breakpoint, new_frame, bp_type = result # <<<<<<<<<<<<<<
*
+ * if breakpoint:
*/
- __Pyx_INCREF(__pyx_v_curr_func_name);
- __pyx_t_21 = __pyx_v_curr_func_name;
- __pyx_t_14 = (__Pyx_PyString_Equals(__pyx_t_21, __pyx_kp_s__3, Py_EQ)); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1009, __pyx_L79_except_error)
- __pyx_t_11 = (__pyx_t_14 != 0);
- if (!__pyx_t_11) {
- } else {
- __pyx_t_9 = __pyx_t_11;
- goto __pyx_L91_bool_binop_done;
+ if ((likely(PyTuple_CheckExact(__pyx_v_result))) || (PyList_CheckExact(__pyx_v_result))) {
+ PyObject* sequence = __pyx_v_result;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 3)) {
+ if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 1013, __pyx_L106_error)
}
- __pyx_t_11 = (__Pyx_PyString_Equals(__pyx_t_21, __pyx_kp_s_module, Py_EQ)); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1009, __pyx_L79_except_error)
- __pyx_t_14 = (__pyx_t_11 != 0);
- if (!__pyx_t_14) {
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1);
+ __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2);
} else {
- __pyx_t_9 = __pyx_t_14;
- goto __pyx_L91_bool_binop_done;
+ __pyx_t_7 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_8 = PyList_GET_ITEM(sequence, 1);
+ __pyx_t_1 = PyList_GET_ITEM(sequence, 2);
}
- __pyx_t_14 = (__Pyx_PyString_Equals(__pyx_t_21, __pyx_kp_s_lambda, Py_EQ)); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1009, __pyx_L79_except_error)
- __pyx_t_11 = (__pyx_t_14 != 0);
- __pyx_t_9 = __pyx_t_11;
- __pyx_L91_bool_binop_done:;
- __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
- __pyx_t_11 = (__pyx_t_9 != 0);
- if (__pyx_t_11) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1010
- * # global context is set with an empty name
- * if curr_func_name in ('?', '', ''):
- * curr_func_name = '' # <<<<<<<<<<<<<<
- *
- * for bp in breakpoints_for_file.values():
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_1);
+ #else
+ __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1013, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1013, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_1 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1013, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ #endif
+ } else {
+ Py_ssize_t index = -1;
+ __pyx_t_4 = PyObject_GetIter(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1013, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_15 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4);
+ index = 0; __pyx_t_7 = __pyx_t_15(__pyx_t_4); if (unlikely(!__pyx_t_7)) goto __pyx_L120_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_7);
+ index = 1; __pyx_t_8 = __pyx_t_15(__pyx_t_4); if (unlikely(!__pyx_t_8)) goto __pyx_L120_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_8);
+ index = 2; __pyx_t_1 = __pyx_t_15(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L120_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_1);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_4), 3) < 0) __PYX_ERR(0, 1013, __pyx_L106_error)
+ __pyx_t_15 = NULL;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ goto __pyx_L121_unpacking_done;
+ __pyx_L120_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_15 = NULL;
+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+ __PYX_ERR(0, 1013, __pyx_L106_error)
+ __pyx_L121_unpacking_done:;
+ }
+ __Pyx_DECREF_SET(__pyx_v_breakpoint, __pyx_t_7);
+ __pyx_t_7 = 0;
+ __pyx_v_new_frame = __pyx_t_8;
+ __pyx_t_8 = 0;
+ __Pyx_DECREF_SET(__pyx_v_bp_type, __pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1011
+ * elif plugin_manager is not None and py_db.has_plugin_line_breaks:
+ * result = plugin_manager.get_breakpoint(py_db, frame, event, self._args[2])
+ * if result: # <<<<<<<<<<<<<<
+ * stop_on_plugin_breakpoint = True
+ * breakpoint, new_frame, bp_type = result
*/
- __Pyx_INCREF(__pyx_kp_s_);
- __Pyx_DECREF_SET(__pyx_v_curr_func_name, __pyx_kp_s_);
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1009
+ /* "_pydevd_bundle/pydevd_cython.pyx":1009
+ * stop = True
*
- * # global context is set with an empty name
- * if curr_func_name in ('?', '', ''): # <<<<<<<<<<<<<<
- * curr_func_name = ''
+ * elif plugin_manager is not None and py_db.has_plugin_line_breaks: # <<<<<<<<<<<<<<
+ * result = plugin_manager.get_breakpoint(py_db, frame, event, self._args[2])
+ * if result:
+ */
+ }
+ __pyx_L112:;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1015
+ * breakpoint, new_frame, bp_type = result
*
+ * if breakpoint: # <<<<<<<<<<<<<<
+ * # ok, hit breakpoint, now, we have to discover if it is a conditional breakpoint
+ * # lets do the conditional stuff here
*/
- }
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_breakpoint); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1015, __pyx_L106_error)
+ if (__pyx_t_12) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1012
- * curr_func_name = ''
+ /* "_pydevd_bundle/pydevd_cython.pyx":1018
+ * # ok, hit breakpoint, now, we have to discover if it is a conditional breakpoint
+ * # lets do the conditional stuff here
+ * if breakpoint.expression is not None: # <<<<<<<<<<<<<<
+ * py_db.handle_breakpoint_expression(breakpoint, info, new_frame)
*
- * for bp in breakpoints_for_file.values(): # <<<<<<<<<<<<<<
- * # will match either global or some function
- * if bp.func_name in ('None', curr_func_name):
*/
- if (unlikely(__pyx_v_breakpoints_for_file == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
- __PYX_ERR(0, 1012, __pyx_L79_except_error)
- }
- __pyx_t_6 = __Pyx_PyDict_Values(__pyx_v_breakpoints_for_file); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1012, __pyx_L79_except_error)
- __Pyx_GOTREF(__pyx_t_6);
- if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
- __pyx_t_3 = __pyx_t_6; __Pyx_INCREF(__pyx_t_3); __pyx_t_20 = 0;
- __pyx_t_13 = NULL;
- } else {
- __pyx_t_20 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1012, __pyx_L79_except_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_13 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1012, __pyx_L79_except_error)
- }
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- for (;;) {
- if (likely(!__pyx_t_13)) {
- if (likely(PyList_CheckExact(__pyx_t_3))) {
- if (__pyx_t_20 >= PyList_GET_SIZE(__pyx_t_3)) break;
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_6 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_20); __Pyx_INCREF(__pyx_t_6); __pyx_t_20++; if (unlikely(0 < 0)) __PYX_ERR(0, 1012, __pyx_L79_except_error)
- #else
- __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_20); __pyx_t_20++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1012, __pyx_L79_except_error)
- __Pyx_GOTREF(__pyx_t_6);
- #endif
- } else {
- if (__pyx_t_20 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_20); __Pyx_INCREF(__pyx_t_6); __pyx_t_20++; if (unlikely(0 < 0)) __PYX_ERR(0, 1012, __pyx_L79_except_error)
- #else
- __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_20); __pyx_t_20++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1012, __pyx_L79_except_error)
- __Pyx_GOTREF(__pyx_t_6);
- #endif
- }
- } else {
- __pyx_t_6 = __pyx_t_13(__pyx_t_3);
- if (unlikely(!__pyx_t_6)) {
- PyObject* exc_type = PyErr_Occurred();
- if (exc_type) {
- if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(0, 1012, __pyx_L79_except_error)
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_6);
- }
- __Pyx_XDECREF_SET(__pyx_v_bp, __pyx_t_6);
- __pyx_t_6 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1014
- * for bp in breakpoints_for_file.values():
- * # will match either global or some function
- * if bp.func_name in ('None', curr_func_name): # <<<<<<<<<<<<<<
- * has_breakpoint_in_frame = True
- * break
- */
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_bp, __pyx_n_s_func_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1014, __pyx_L79_except_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_None, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1014, __pyx_L79_except_error)
- if (!__pyx_t_9) {
- } else {
- __pyx_t_11 = __pyx_t_9;
- goto __pyx_L97_bool_binop_done;
- }
- __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_v_curr_func_name, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1014, __pyx_L79_except_error)
- __pyx_t_11 = __pyx_t_9;
- __pyx_L97_bool_binop_done:;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_9 = (__pyx_t_11 != 0);
- if (__pyx_t_9) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1015
- * # will match either global or some function
- * if bp.func_name in ('None', curr_func_name):
- * has_breakpoint_in_frame = True # <<<<<<<<<<<<<<
- * break
- * else:
- */
- __pyx_v_has_breakpoint_in_frame = 1;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1016
- * if bp.func_name in ('None', curr_func_name):
- * has_breakpoint_in_frame = True
- * break # <<<<<<<<<<<<<<
- * else:
- * for bp_line in breakpoints_for_file: # iterate on keys
- */
- goto __pyx_L95_break;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1014
- * for bp in breakpoints_for_file.values():
- * # will match either global or some function
- * if bp.func_name in ('None', curr_func_name): # <<<<<<<<<<<<<<
- * has_breakpoint_in_frame = True
- * break
- */
- }
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_breakpoint, __pyx_n_s_expression); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1018, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_12 = (__pyx_t_1 != Py_None);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_12) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1012
- * curr_func_name = ''
+ /* "_pydevd_bundle/pydevd_cython.pyx":1019
+ * # lets do the conditional stuff here
+ * if breakpoint.expression is not None:
+ * py_db.handle_breakpoint_expression(breakpoint, info, new_frame) # <<<<<<<<<<<<<<
*
- * for bp in breakpoints_for_file.values(): # <<<<<<<<<<<<<<
- * # will match either global or some function
- * if bp.func_name in ('None', curr_func_name):
+ * if stop or stop_on_plugin_breakpoint:
*/
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_handle_breakpoint_expression); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1019, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ if (unlikely(!__pyx_v_new_frame)) { __Pyx_RaiseUnboundLocalError("new_frame"); __PYX_ERR(0, 1019, __pyx_L106_error) }
+ __pyx_t_7 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_5 = 1;
}
- __pyx_L95_break:;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_v_breakpoint, ((PyObject *)__pyx_v_info), __pyx_v_new_frame};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L78_exception_handled;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1019, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
- __pyx_L79_except_error:;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":995
- * has_breakpoint_in_frame = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1018
+ * # ok, hit breakpoint, now, we have to discover if it is a conditional breakpoint
+ * # lets do the conditional stuff here
+ * if breakpoint.expression is not None: # <<<<<<<<<<<<<<
+ * py_db.handle_breakpoint_expression(breakpoint, info, new_frame)
*
- * try: # <<<<<<<<<<<<<<
- * func_lines = set()
- * for offset_and_lineno in dis.findlinestarts(frame.f_code):
*/
- __Pyx_XGIVEREF(__pyx_t_16);
- __Pyx_XGIVEREF(__pyx_t_17);
- __Pyx_XGIVEREF(__pyx_t_18);
- __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
- goto __pyx_L4_error;
- __pyx_L78_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_16);
- __Pyx_XGIVEREF(__pyx_t_17);
- __Pyx_XGIVEREF(__pyx_t_18);
- __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
- __pyx_L82_try_end:;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":1024
+ /* "_pydevd_bundle/pydevd_cython.pyx":1021
+ * py_db.handle_breakpoint_expression(breakpoint, info, new_frame)
*
- * # Cache the value (1 or 0 or -1 for default because of cython).
- * if has_breakpoint_in_frame: # <<<<<<<<<<<<<<
- * frame_skips_cache[frame_cache_key] = 1
- * else:
+ * if stop or stop_on_plugin_breakpoint: # <<<<<<<<<<<<<<
+ * eval_result = False
+ * if breakpoint.has_condition:
*/
- __pyx_t_9 = (__pyx_v_has_breakpoint_in_frame != 0);
- if (__pyx_t_9) {
+ if (!__pyx_v_stop) {
+ } else {
+ __pyx_t_12 = __pyx_v_stop;
+ goto __pyx_L125_bool_binop_done;
+ }
+ __pyx_t_12 = __pyx_v_stop_on_plugin_breakpoint;
+ __pyx_L125_bool_binop_done:;
+ if (__pyx_t_12) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1025
- * # Cache the value (1 or 0 or -1 for default because of cython).
- * if has_breakpoint_in_frame:
- * frame_skips_cache[frame_cache_key] = 1 # <<<<<<<<<<<<<<
- * else:
- * frame_skips_cache[frame_cache_key] = 0
+ /* "_pydevd_bundle/pydevd_cython.pyx":1022
+ *
+ * if stop or stop_on_plugin_breakpoint:
+ * eval_result = False # <<<<<<<<<<<<<<
+ * if breakpoint.has_condition:
+ * eval_result = py_db.handle_breakpoint_condition(info, breakpoint, new_frame)
*/
- if (unlikely(__pyx_v_frame_skips_cache == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 1025, __pyx_L4_error)
- }
- if (unlikely(PyDict_SetItem(__pyx_v_frame_skips_cache, __pyx_v_frame_cache_key, __pyx_int_1) < 0)) __PYX_ERR(0, 1025, __pyx_L4_error)
+ __Pyx_INCREF(Py_False);
+ __pyx_v_eval_result = Py_False;
- /* "_pydevd_bundle/pydevd_cython.pyx":1024
- *
- * # Cache the value (1 or 0 or -1 for default because of cython).
- * if has_breakpoint_in_frame: # <<<<<<<<<<<<<<
- * frame_skips_cache[frame_cache_key] = 1
- * else:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1023
+ * if stop or stop_on_plugin_breakpoint:
+ * eval_result = False
+ * if breakpoint.has_condition: # <<<<<<<<<<<<<<
+ * eval_result = py_db.handle_breakpoint_condition(info, breakpoint, new_frame)
+ * if not eval_result:
*/
- goto __pyx_L99;
- }
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_breakpoint, __pyx_n_s_has_condition); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1023, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1023, __pyx_L106_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_12) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1027
- * frame_skips_cache[frame_cache_key] = 1
- * else:
- * frame_skips_cache[frame_cache_key] = 0 # <<<<<<<<<<<<<<
- *
- * if can_skip and not has_breakpoint_in_frame:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1024
+ * eval_result = False
+ * if breakpoint.has_condition:
+ * eval_result = py_db.handle_breakpoint_condition(info, breakpoint, new_frame) # <<<<<<<<<<<<<<
+ * if not eval_result:
+ * stop = False
*/
- /*else*/ {
- if (unlikely(__pyx_v_frame_skips_cache == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 1027, __pyx_L4_error)
- }
- if (unlikely(PyDict_SetItem(__pyx_v_frame_skips_cache, __pyx_v_frame_cache_key, __pyx_int_0) < 0)) __PYX_ERR(0, 1027, __pyx_L4_error)
- }
- __pyx_L99:;
- }
- __pyx_L76:;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_handle_breakpoint_condition); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1024, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ if (unlikely(!__pyx_v_new_frame)) { __Pyx_RaiseUnboundLocalError("new_frame"); __PYX_ERR(0, 1024, __pyx_L106_error) }
+ __pyx_t_7 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_7, ((PyObject *)__pyx_v_info), __pyx_v_breakpoint, __pyx_v_new_frame};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1024, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+ __Pyx_DECREF_SET(__pyx_v_eval_result, __pyx_t_1);
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1029
- * frame_skips_cache[frame_cache_key] = 0
+ /* "_pydevd_bundle/pydevd_cython.pyx":1025
+ * if breakpoint.has_condition:
+ * eval_result = py_db.handle_breakpoint_condition(info, breakpoint, new_frame)
+ * if not eval_result: # <<<<<<<<<<<<<<
+ * stop = False
+ * stop_on_plugin_breakpoint = False
+ */
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_eval_result); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1025, __pyx_L106_error)
+ __pyx_t_10 = (!__pyx_t_12);
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1026
+ * eval_result = py_db.handle_breakpoint_condition(info, breakpoint, new_frame)
+ * if not eval_result:
+ * stop = False # <<<<<<<<<<<<<<
+ * stop_on_plugin_breakpoint = False
*
- * if can_skip and not has_breakpoint_in_frame: # <<<<<<<<<<<<<<
- * if has_exception_breakpoints:
- * return self.trace_exception
*/
- __pyx_t_11 = (__pyx_v_can_skip != 0);
- if (__pyx_t_11) {
- } else {
- __pyx_t_9 = __pyx_t_11;
- goto __pyx_L101_bool_binop_done;
- }
- __pyx_t_11 = ((!(__pyx_v_has_breakpoint_in_frame != 0)) != 0);
- __pyx_t_9 = __pyx_t_11;
- __pyx_L101_bool_binop_done:;
- if (__pyx_t_9) {
+ __pyx_v_stop = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1030
+ /* "_pydevd_bundle/pydevd_cython.pyx":1027
+ * if not eval_result:
+ * stop = False
+ * stop_on_plugin_breakpoint = False # <<<<<<<<<<<<<<
*
- * if can_skip and not has_breakpoint_in_frame:
- * if has_exception_breakpoints: # <<<<<<<<<<<<<<
- * return self.trace_exception
- * else:
+ * if is_call and (
*/
- __pyx_t_9 = (__pyx_v_has_exception_breakpoints != 0);
- if (__pyx_t_9) {
+ __pyx_v_stop_on_plugin_breakpoint = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1031
- * if can_skip and not has_breakpoint_in_frame:
- * if has_exception_breakpoints:
- * return self.trace_exception # <<<<<<<<<<<<<<
- * else:
- * return None if is_call else NO_FTRACE
+ /* "_pydevd_bundle/pydevd_cython.pyx":1025
+ * if breakpoint.has_condition:
+ * eval_result = py_db.handle_breakpoint_condition(info, breakpoint, new_frame)
+ * if not eval_result: # <<<<<<<<<<<<<<
+ * stop = False
+ * stop_on_plugin_breakpoint = False
*/
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_exception); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1031, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L3_return;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1030
- *
- * if can_skip and not has_breakpoint_in_frame:
- * if has_exception_breakpoints: # <<<<<<<<<<<<<<
- * return self.trace_exception
- * else:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1023
+ * if stop or stop_on_plugin_breakpoint:
+ * eval_result = False
+ * if breakpoint.has_condition: # <<<<<<<<<<<<<<
+ * eval_result = py_db.handle_breakpoint_condition(info, breakpoint, new_frame)
+ * if not eval_result:
*/
- }
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1033
- * return self.trace_exception
- * else:
- * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1021
+ * py_db.handle_breakpoint_expression(breakpoint, info, new_frame)
*
- * # We may have hit a breakpoint or we are already in step mode. Either way, let's check what we should do in this frame
+ * if stop or stop_on_plugin_breakpoint: # <<<<<<<<<<<<<<
+ * eval_result = False
+ * if breakpoint.has_condition:
*/
- /*else*/ {
- __Pyx_XDECREF(__pyx_r);
- if ((__pyx_v_is_call != 0)) {
- __Pyx_INCREF(Py_None);
- __pyx_t_1 = Py_None;
- } else {
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1033, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = __pyx_t_4;
- __pyx_t_4 = 0;
- }
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L3_return;
}
/* "_pydevd_bundle/pydevd_cython.pyx":1029
- * frame_skips_cache[frame_cache_key] = 0
+ * stop_on_plugin_breakpoint = False
*
- * if can_skip and not has_breakpoint_in_frame: # <<<<<<<<<<<<<<
- * if has_exception_breakpoints:
- * return self.trace_exception
+ * if is_call and ( # <<<<<<<<<<<<<<
+ * frame.f_code.co_name in ("", "") or (line == 1 and frame.f_code.co_name.startswith("", "") or (line == 1 and frame.f_code.co_name.startswith("", "") or (line == 1 and frame.f_code.co_name.startswith(".
*
- * try:
- * stop_on_plugin_breakpoint = False # <<<<<<<<<<<<<<
- * # return is not taken into account for breakpoint hit because we'd have a double-hit in this case
- * # (one for the line and the other for the return).
- */
- __pyx_v_stop_on_plugin_breakpoint = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1043
- * # (one for the line and the other for the return).
+ * return self.trace_dispatch # <<<<<<<<<<<<<<
*
- * stop_info = {} # <<<<<<<<<<<<<<
- * breakpoint = None
- * stop = False
+ * # Handle logpoint (on a logpoint we should never stop).
*/
- __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1043, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_stop_info = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1043, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_r = __pyx_t_8;
+ __pyx_t_8 = 0;
+ goto __pyx_L110_try_return;
- /* "_pydevd_bundle/pydevd_cython.pyx":1044
+ /* "_pydevd_bundle/pydevd_cython.pyx":1029
+ * stop_on_plugin_breakpoint = False
*
- * stop_info = {}
- * breakpoint = None # <<<<<<<<<<<<<<
- * stop = False
- * stop_reason = 111
+ * if is_call and ( # <<<<<<<<<<<<<<
+ * frame.f_code.co_name in ("", "") or (line == 1 and frame.f_code.co_name.startswith(" 0:
*/
- __Pyx_INCREF(Py_None);
- __pyx_v_bp_type = Py_None;
+ __pyx_v_stop_on_plugin_breakpoint = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1049
- * bp_type = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":1050
+ * stop_on_plugin_breakpoint = False
*
- * if function_breakpoint_on_call_event: # <<<<<<<<<<<<<<
- * breakpoint = function_breakpoint_on_call_event
- * stop = True
+ * if info.pydev_message is not None and len(info.pydev_message) > 0: # <<<<<<<<<<<<<<
+ * cmd = py_db.cmd_factory.make_io_message(info.pydev_message + os.linesep, "1")
+ * py_db.writer.add_command(cmd)
*/
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_function_breakpoint_on_call_event); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1049, __pyx_L104_error)
- if (__pyx_t_9) {
+ __pyx_t_16 = (__pyx_v_info->pydev_message != ((PyObject*)Py_None));
+ if (__pyx_t_16) {
+ } else {
+ __pyx_t_10 = __pyx_t_16;
+ goto __pyx_L141_bool_binop_done;
+ }
+ __pyx_t_8 = __pyx_v_info->pydev_message;
+ __Pyx_INCREF(__pyx_t_8);
+ __pyx_t_13 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_13 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1050, __pyx_L106_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_16 = (__pyx_t_13 > 0);
+ __pyx_t_10 = __pyx_t_16;
+ __pyx_L141_bool_binop_done:;
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1050
+ /* "_pydevd_bundle/pydevd_cython.pyx":1051
+ *
+ * if info.pydev_message is not None and len(info.pydev_message) > 0:
+ * cmd = py_db.cmd_factory.make_io_message(info.pydev_message + os.linesep, "1") # <<<<<<<<<<<<<<
+ * py_db.writer.add_command(cmd)
*
- * if function_breakpoint_on_call_event:
- * breakpoint = function_breakpoint_on_call_event # <<<<<<<<<<<<<<
- * stop = True
- * new_frame = frame
*/
- __Pyx_INCREF(__pyx_v_function_breakpoint_on_call_event);
- __Pyx_DECREF_SET(__pyx_v_breakpoint, __pyx_v_function_breakpoint_on_call_event);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_cmd_factory); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1051, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_make_io_message); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1051, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1051, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_linesep); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1051, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyNumber_Add(__pyx_v_info->pydev_message, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1051, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_1, __pyx_kp_s_1};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1051, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __pyx_v_cmd = __pyx_t_8;
+ __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1051
- * if function_breakpoint_on_call_event:
- * breakpoint = function_breakpoint_on_call_event
- * stop = True # <<<<<<<<<<<<<<
- * new_frame = frame
- * stop_reason = CMD_SET_FUNCTION_BREAK
+ /* "_pydevd_bundle/pydevd_cython.pyx":1052
+ * if info.pydev_message is not None and len(info.pydev_message) > 0:
+ * cmd = py_db.cmd_factory.make_io_message(info.pydev_message + os.linesep, "1")
+ * py_db.writer.add_command(cmd) # <<<<<<<<<<<<<<
+ *
+ * if py_db.show_return_values:
*/
- __pyx_v_stop = 1;
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_writer); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1052, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_add_command); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1052, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_cmd};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1052, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1052
- * breakpoint = function_breakpoint_on_call_event
- * stop = True
- * new_frame = frame # <<<<<<<<<<<<<<
- * stop_reason = CMD_SET_FUNCTION_BREAK
+ /* "_pydevd_bundle/pydevd_cython.pyx":1050
+ * stop_on_plugin_breakpoint = False
*
+ * if info.pydev_message is not None and len(info.pydev_message) > 0: # <<<<<<<<<<<<<<
+ * cmd = py_db.cmd_factory.make_io_message(info.pydev_message + os.linesep, "1")
+ * py_db.writer.add_command(cmd)
*/
- __Pyx_INCREF(__pyx_v_frame);
- __pyx_v_new_frame = __pyx_v_frame;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1053
- * stop = True
- * new_frame = frame
- * stop_reason = CMD_SET_FUNCTION_BREAK # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1046
*
- * elif is_line and info.pydev_state != 2 and breakpoints_for_file is not None and line in breakpoints_for_file:
+ * # Handle logpoint (on a logpoint we should never stop).
+ * if (stop or stop_on_plugin_breakpoint) and breakpoint.is_logpoint: # <<<<<<<<<<<<<<
+ * stop = False
+ * stop_on_plugin_breakpoint = False
*/
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_CMD_SET_FUNCTION_BREAK); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1053, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF_SET(__pyx_v_stop_reason, __pyx_t_1);
- __pyx_t_1 = 0;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1049
- * bp_type = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":1015
+ * breakpoint, new_frame, bp_type = result
*
- * if function_breakpoint_on_call_event: # <<<<<<<<<<<<<<
- * breakpoint = function_breakpoint_on_call_event
- * stop = True
+ * if breakpoint: # <<<<<<<<<<<<<<
+ * # ok, hit breakpoint, now, we have to discover if it is a conditional breakpoint
+ * # lets do the conditional stuff here
*/
- goto __pyx_L110;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":1055
- * stop_reason = CMD_SET_FUNCTION_BREAK
+ /* "_pydevd_bundle/pydevd_cython.pyx":1054
+ * py_db.writer.add_command(cmd)
*
- * elif is_line and info.pydev_state != 2 and breakpoints_for_file is not None and line in breakpoints_for_file: # <<<<<<<<<<<<<<
- * breakpoint = breakpoints_for_file[line]
- * new_frame = frame
+ * if py_db.show_return_values: # <<<<<<<<<<<<<<
+ * if is_return and (
+ * (
*/
- __pyx_t_11 = (__pyx_v_is_line != 0);
- if (__pyx_t_11) {
- } else {
- __pyx_t_9 = __pyx_t_11;
- goto __pyx_L111_bool_binop_done;
- }
- __pyx_t_11 = ((__pyx_v_info->pydev_state != 2) != 0);
- if (__pyx_t_11) {
- } else {
- __pyx_t_9 = __pyx_t_11;
- goto __pyx_L111_bool_binop_done;
- }
- if (unlikely(!__pyx_v_breakpoints_for_file)) { __Pyx_RaiseUnboundLocalError("breakpoints_for_file"); __PYX_ERR(0, 1055, __pyx_L104_error) }
- __pyx_t_11 = (__pyx_v_breakpoints_for_file != ((PyObject*)Py_None));
- __pyx_t_14 = (__pyx_t_11 != 0);
- if (__pyx_t_14) {
- } else {
- __pyx_t_9 = __pyx_t_14;
- goto __pyx_L111_bool_binop_done;
- }
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1055, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (unlikely(!__pyx_v_breakpoints_for_file)) { __Pyx_RaiseUnboundLocalError("breakpoints_for_file"); __PYX_ERR(0, 1055, __pyx_L104_error) }
- if (unlikely(__pyx_v_breakpoints_for_file == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(0, 1055, __pyx_L104_error)
- }
- __pyx_t_14 = (__Pyx_PyDict_ContainsTF(__pyx_t_1, __pyx_v_breakpoints_for_file, Py_EQ)); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1055, __pyx_L104_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_11 = (__pyx_t_14 != 0);
- __pyx_t_9 = __pyx_t_11;
- __pyx_L111_bool_binop_done:;
- if (__pyx_t_9) {
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_show_return_values); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1054, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1054, __pyx_L106_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1056
+ /* "_pydevd_bundle/pydevd_cython.pyx":1055
*
- * elif is_line and info.pydev_state != 2 and breakpoints_for_file is not None and line in breakpoints_for_file:
- * breakpoint = breakpoints_for_file[line] # <<<<<<<<<<<<<<
- * new_frame = frame
- * stop = True
+ * if py_db.show_return_values:
+ * if is_return and ( # <<<<<<<<<<<<<<
+ * (
+ * info.pydev_step_cmd in (108, 159, 128)
*/
- if (unlikely(!__pyx_v_breakpoints_for_file)) { __Pyx_RaiseUnboundLocalError("breakpoints_for_file"); __PYX_ERR(0, 1056, __pyx_L104_error) }
- if (unlikely(__pyx_v_breakpoints_for_file == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 1056, __pyx_L104_error)
+ if (__pyx_v_is_return) {
+ } else {
+ __pyx_t_10 = __pyx_v_is_return;
+ goto __pyx_L145_bool_binop_done;
}
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1056, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_breakpoints_for_file, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1056, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF_SET(__pyx_v_breakpoint, __pyx_t_4);
- __pyx_t_4 = 0;
/* "_pydevd_bundle/pydevd_cython.pyx":1057
- * elif is_line and info.pydev_state != 2 and breakpoints_for_file is not None and line in breakpoints_for_file:
- * breakpoint = breakpoints_for_file[line]
- * new_frame = frame # <<<<<<<<<<<<<<
- * stop = True
- *
+ * if is_return and (
+ * (
+ * info.pydev_step_cmd in (108, 159, 128) # <<<<<<<<<<<<<<
+ * and (self._is_same_frame(stop_frame, frame.f_back))
+ * )
*/
- __Pyx_INCREF(__pyx_v_frame);
- __pyx_v_new_frame = __pyx_v_frame;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1058
- * breakpoint = breakpoints_for_file[line]
- * new_frame = frame
- * stop = True # <<<<<<<<<<<<<<
- *
- * elif plugin_manager is not None and main_debugger.has_plugin_line_breaks:
- */
- __pyx_v_stop = 1;
+ switch (__pyx_v_info->pydev_step_cmd) {
+ case 0x6C:
+ case 0x9F:
+ case 0x80:
+ __pyx_t_16 = 1;
+ break;
+ default:
+ __pyx_t_16 = 0;
+ break;
+ }
+ __pyx_t_12 = __pyx_t_16;
+ if (!__pyx_t_12) {
+ goto __pyx_L147_next_or;
+ } else {
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1055
- * stop_reason = CMD_SET_FUNCTION_BREAK
- *
- * elif is_line and info.pydev_state != 2 and breakpoints_for_file is not None and line in breakpoints_for_file: # <<<<<<<<<<<<<<
- * breakpoint = breakpoints_for_file[line]
- * new_frame = frame
+ /* "_pydevd_bundle/pydevd_cython.pyx":1058
+ * (
+ * info.pydev_step_cmd in (108, 159, 128)
+ * and (self._is_same_frame(stop_frame, frame.f_back)) # <<<<<<<<<<<<<<
+ * )
+ * or (info.pydev_step_cmd in (109, 160) and (self._is_same_frame(stop_frame, frame)))
*/
- goto __pyx_L110;
- }
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1058, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_1 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1058, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1058, __pyx_L106_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (!__pyx_t_12) {
+ } else {
+ __pyx_t_10 = __pyx_t_12;
+ goto __pyx_L145_bool_binop_done;
+ }
+ __pyx_L147_next_or:;
- /* "_pydevd_bundle/pydevd_cython.pyx":1060
- * stop = True
- *
- * elif plugin_manager is not None and main_debugger.has_plugin_line_breaks: # <<<<<<<<<<<<<<
- * result = plugin_manager.get_breakpoint(main_debugger, self, frame, event, self._args)
- * if result:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1060
+ * and (self._is_same_frame(stop_frame, frame.f_back))
+ * )
+ * or (info.pydev_step_cmd in (109, 160) and (self._is_same_frame(stop_frame, frame))) # <<<<<<<<<<<<<<
+ * or (info.pydev_step_cmd in (107, 206))
+ * or (
*/
- __pyx_t_11 = (__pyx_v_plugin_manager != Py_None);
- __pyx_t_14 = (__pyx_t_11 != 0);
- if (__pyx_t_14) {
- } else {
- __pyx_t_9 = __pyx_t_14;
- goto __pyx_L115_bool_binop_done;
- }
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_has_plugin_line_breaks); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1060, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1060, __pyx_L104_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_9 = __pyx_t_14;
- __pyx_L115_bool_binop_done:;
- if (__pyx_t_9) {
+ switch (__pyx_v_info->pydev_step_cmd) {
+ case 0x6D:
+ case 0xA0:
+ __pyx_t_12 = 1;
+ break;
+ default:
+ __pyx_t_12 = 0;
+ break;
+ }
+ __pyx_t_16 = __pyx_t_12;
+ if (!__pyx_t_16) {
+ goto __pyx_L149_next_or;
+ } else {
+ }
+ __pyx_t_1 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1060, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1060, __pyx_L106_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (!__pyx_t_16) {
+ } else {
+ __pyx_t_10 = __pyx_t_16;
+ goto __pyx_L145_bool_binop_done;
+ }
+ __pyx_L149_next_or:;
/* "_pydevd_bundle/pydevd_cython.pyx":1061
- *
- * elif plugin_manager is not None and main_debugger.has_plugin_line_breaks:
- * result = plugin_manager.get_breakpoint(main_debugger, self, frame, event, self._args) # <<<<<<<<<<<<<<
- * if result:
- * stop_on_plugin_breakpoint, breakpoint, new_frame, bp_type = result
+ * )
+ * or (info.pydev_step_cmd in (109, 160) and (self._is_same_frame(stop_frame, frame)))
+ * or (info.pydev_step_cmd in (107, 206)) # <<<<<<<<<<<<<<
+ * or (
+ * info.pydev_step_cmd == 144
+ */
+ switch (__pyx_v_info->pydev_step_cmd) {
+ case 0x6B:
+ case 0xCE:
+ __pyx_t_16 = 1;
+ break;
+ default:
+ __pyx_t_16 = 0;
+ break;
+ }
+ __pyx_t_12 = __pyx_t_16;
+ if (!__pyx_t_12) {
+ } else {
+ __pyx_t_10 = __pyx_t_12;
+ goto __pyx_L145_bool_binop_done;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1063
+ * or (info.pydev_step_cmd in (107, 206))
+ * or (
+ * info.pydev_step_cmd == 144 # <<<<<<<<<<<<<<
+ * and frame.f_back is not None
+ * and not py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)
+ */
+ __pyx_t_12 = (__pyx_v_info->pydev_step_cmd == 0x90);
+ if (__pyx_t_12) {
+ } else {
+ __pyx_t_10 = __pyx_t_12;
+ goto __pyx_L145_bool_binop_done;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1064
+ * or (
+ * info.pydev_step_cmd == 144
+ * and frame.f_back is not None # <<<<<<<<<<<<<<
+ * and not py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)
+ * )
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_get_breakpoint); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1061, __pyx_L104_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1064, __pyx_L106_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_7 = NULL;
+ __pyx_t_12 = (__pyx_t_1 != Py_None);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_12) {
+ } else {
+ __pyx_t_10 = __pyx_t_12;
+ goto __pyx_L145_bool_binop_done;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1065
+ * info.pydev_step_cmd == 144
+ * and frame.f_back is not None
+ * and not py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) # <<<<<<<<<<<<<<
+ * )
+ * ):
+ */
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1065, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1065, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1065, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_f_code); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1065, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1065, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = NULL;
__pyx_t_5 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_7)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_7);
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
__pyx_t_5 = 1;
}
}
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_v_main_debugger, ((PyObject *)__pyx_v_self), __pyx_v_frame, __pyx_v_event, __pyx_v_self->_args};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 5+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1061, __pyx_L104_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_v_main_debugger, ((PyObject *)__pyx_v_self), __pyx_v_frame, __pyx_v_event, __pyx_v_self->_args};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 5+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1061, __pyx_L104_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else
#endif
{
- __pyx_t_3 = PyTuple_New(5+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1061, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_3);
- if (__pyx_t_7) {
- __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL;
- }
- __Pyx_INCREF(__pyx_v_main_debugger);
- __Pyx_GIVEREF(__pyx_v_main_debugger);
- PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_v_main_debugger);
- __Pyx_INCREF(((PyObject *)__pyx_v_self));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
- PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, ((PyObject *)__pyx_v_self));
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_5, __pyx_v_frame);
- __Pyx_INCREF(__pyx_v_event);
- __Pyx_GIVEREF(__pyx_v_event);
- PyTuple_SET_ITEM(__pyx_t_3, 3+__pyx_t_5, __pyx_v_event);
- __Pyx_INCREF(__pyx_v_self->_args);
- __Pyx_GIVEREF(__pyx_v_self->_args);
- PyTuple_SET_ITEM(__pyx_t_3, 4+__pyx_t_5, __pyx_v_self->_args);
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1061, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ PyObject *__pyx_callargs[4] = {__pyx_t_6, __pyx_t_7, __pyx_t_4, Py_True};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1065, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1065, __pyx_L106_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_result = __pyx_t_4;
- __pyx_t_4 = 0;
+ __pyx_t_16 = (!__pyx_t_12);
+ __pyx_t_10 = __pyx_t_16;
+ __pyx_L145_bool_binop_done:;
- /* "_pydevd_bundle/pydevd_cython.pyx":1062
- * elif plugin_manager is not None and main_debugger.has_plugin_line_breaks:
- * result = plugin_manager.get_breakpoint(main_debugger, self, frame, event, self._args)
- * if result: # <<<<<<<<<<<<<<
- * stop_on_plugin_breakpoint, breakpoint, new_frame, bp_type = result
+ /* "_pydevd_bundle/pydevd_cython.pyx":1055
*
+ * if py_db.show_return_values:
+ * if is_return and ( # <<<<<<<<<<<<<<
+ * (
+ * info.pydev_step_cmd in (108, 159, 128)
*/
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1062, __pyx_L104_error)
- if (__pyx_t_9) {
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1063
- * result = plugin_manager.get_breakpoint(main_debugger, self, frame, event, self._args)
- * if result:
- * stop_on_plugin_breakpoint, breakpoint, new_frame, bp_type = result # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1068
+ * )
+ * ):
+ * self._show_return_values(frame, arg) # <<<<<<<<<<<<<<
*
- * if breakpoint:
+ * elif py_db.remove_return_values_flag:
*/
- if ((likely(PyTuple_CheckExact(__pyx_v_result))) || (PyList_CheckExact(__pyx_v_result))) {
- PyObject* sequence = __pyx_v_result;
- Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
- if (unlikely(size != 4)) {
- if (size > 4) __Pyx_RaiseTooManyValuesError(4);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 1063, __pyx_L104_error)
- }
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1);
- __pyx_t_3 = PyTuple_GET_ITEM(sequence, 2);
- __pyx_t_7 = PyTuple_GET_ITEM(sequence, 3);
- } else {
- __pyx_t_4 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_1 = PyList_GET_ITEM(sequence, 1);
- __pyx_t_3 = PyList_GET_ITEM(sequence, 2);
- __pyx_t_7 = PyList_GET_ITEM(sequence, 3);
- }
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_7);
- #else
- {
- Py_ssize_t i;
- PyObject** temps[4] = {&__pyx_t_4,&__pyx_t_1,&__pyx_t_3,&__pyx_t_7};
- for (i=0; i < 4; i++) {
- PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 1063, __pyx_L104_error)
- __Pyx_GOTREF(item);
- *(temps[i]) = item;
- }
- }
- #endif
- } else {
- Py_ssize_t index = -1;
- PyObject** temps[4] = {&__pyx_t_4,&__pyx_t_1,&__pyx_t_3,&__pyx_t_7};
- __pyx_t_6 = PyObject_GetIter(__pyx_v_result); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1063, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_15 = Py_TYPE(__pyx_t_6)->tp_iternext;
- for (index=0; index < 4; index++) {
- PyObject* item = __pyx_t_15(__pyx_t_6); if (unlikely(!item)) goto __pyx_L118_unpacking_failed;
- __Pyx_GOTREF(item);
- *(temps[index]) = item;
- }
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_6), 4) < 0) __PYX_ERR(0, 1063, __pyx_L104_error)
- __pyx_t_15 = NULL;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- goto __pyx_L119_unpacking_done;
- __pyx_L118_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_15 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 1063, __pyx_L104_error)
- __pyx_L119_unpacking_done:;
- }
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1063, __pyx_L104_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_stop_on_plugin_breakpoint = __pyx_t_9;
- __Pyx_DECREF_SET(__pyx_v_breakpoint, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_v_new_frame = __pyx_t_3;
- __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_bp_type, __pyx_t_7);
- __pyx_t_7 = 0;
+ __pyx_t_1 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_show_return_values(__pyx_v_self, __pyx_v_frame, __pyx_v_arg); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1068, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1062
- * elif plugin_manager is not None and main_debugger.has_plugin_line_breaks:
- * result = plugin_manager.get_breakpoint(main_debugger, self, frame, event, self._args)
- * if result: # <<<<<<<<<<<<<<
- * stop_on_plugin_breakpoint, breakpoint, new_frame, bp_type = result
+ /* "_pydevd_bundle/pydevd_cython.pyx":1055
*
+ * if py_db.show_return_values:
+ * if is_return and ( # <<<<<<<<<<<<<<
+ * (
+ * info.pydev_step_cmd in (108, 159, 128)
*/
}
- /* "_pydevd_bundle/pydevd_cython.pyx":1060
- * stop = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":1054
+ * py_db.writer.add_command(cmd)
*
- * elif plugin_manager is not None and main_debugger.has_plugin_line_breaks: # <<<<<<<<<<<<<<
- * result = plugin_manager.get_breakpoint(main_debugger, self, frame, event, self._args)
- * if result:
+ * if py_db.show_return_values: # <<<<<<<<<<<<<<
+ * if is_return and (
+ * (
*/
+ goto __pyx_L143;
}
- __pyx_L110:;
- /* "_pydevd_bundle/pydevd_cython.pyx":1065
- * stop_on_plugin_breakpoint, breakpoint, new_frame, bp_type = result
+ /* "_pydevd_bundle/pydevd_cython.pyx":1070
+ * self._show_return_values(frame, arg)
*
- * if breakpoint: # <<<<<<<<<<<<<<
- * # ok, hit breakpoint, now, we have to discover if it is a conditional breakpoint
- * # lets do the conditional stuff here
+ * elif py_db.remove_return_values_flag: # <<<<<<<<<<<<<<
+ * try:
+ * self._remove_return_values(py_db, frame)
*/
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_breakpoint); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1065, __pyx_L104_error)
- if (__pyx_t_9) {
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_remove_return_values_flag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1070, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1070, __pyx_L106_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1068
- * # ok, hit breakpoint, now, we have to discover if it is a conditional breakpoint
- * # lets do the conditional stuff here
- * if breakpoint.expression is not None: # <<<<<<<<<<<<<<
- * main_debugger.handle_breakpoint_expression(breakpoint, info, new_frame)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1071
*
+ * elif py_db.remove_return_values_flag:
+ * try: # <<<<<<<<<<<<<<
+ * self._remove_return_values(py_db, frame)
+ * finally:
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_breakpoint, __pyx_n_s_expression); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1068, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_9 = (__pyx_t_7 != Py_None);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_14 = (__pyx_t_9 != 0);
- if (__pyx_t_14) {
+ /*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":1069
- * # lets do the conditional stuff here
- * if breakpoint.expression is not None:
- * main_debugger.handle_breakpoint_expression(breakpoint, info, new_frame) # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1072
+ * elif py_db.remove_return_values_flag:
+ * try:
+ * self._remove_return_values(py_db, frame) # <<<<<<<<<<<<<<
+ * finally:
+ * py_db.remove_return_values_flag = False
+ */
+ __pyx_t_1 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_remove_return_values(__pyx_v_self, __pyx_v_py_db, __pyx_v_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1072, __pyx_L155_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1074
+ * self._remove_return_values(py_db, frame)
+ * finally:
+ * py_db.remove_return_values_flag = False # <<<<<<<<<<<<<<
*
- * if stop or stop_on_plugin_breakpoint:
+ * if stop:
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_handle_breakpoint_expression); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1069, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_3);
- if (unlikely(!__pyx_v_new_frame)) { __Pyx_RaiseUnboundLocalError("new_frame"); __PYX_ERR(0, 1069, __pyx_L104_error) }
- __pyx_t_1 = NULL;
- __pyx_t_5 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_1)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
- __pyx_t_5 = 1;
- }
+ /*finally:*/ {
+ /*normal exit:*/{
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_py_db, __pyx_n_s_remove_return_values_flag, Py_False) < 0) __PYX_ERR(0, 1074, __pyx_L106_error)
+ goto __pyx_L156;
}
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[4] = {__pyx_t_1, __pyx_v_breakpoint, ((PyObject *)__pyx_v_info), __pyx_v_new_frame};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1069, __pyx_L104_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[4] = {__pyx_t_1, __pyx_v_breakpoint, ((PyObject *)__pyx_v_info), __pyx_v_new_frame};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1069, __pyx_L104_error)
+ __pyx_L155_error:;
+ /*exception exit:*/{
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1069, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (__pyx_t_1) {
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_27, &__pyx_t_28, &__pyx_t_29);
+ if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26) < 0)) __Pyx_ErrFetch(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26);
+ __Pyx_XGOTREF(__pyx_t_24);
+ __Pyx_XGOTREF(__pyx_t_25);
+ __Pyx_XGOTREF(__pyx_t_26);
+ __Pyx_XGOTREF(__pyx_t_27);
+ __Pyx_XGOTREF(__pyx_t_28);
+ __Pyx_XGOTREF(__pyx_t_29);
+ __pyx_t_9 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_23 = __pyx_filename;
+ {
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_py_db, __pyx_n_s_remove_return_values_flag, Py_False) < 0) __PYX_ERR(0, 1074, __pyx_L158_error)
}
- __Pyx_INCREF(__pyx_v_breakpoint);
- __Pyx_GIVEREF(__pyx_v_breakpoint);
- PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_5, __pyx_v_breakpoint);
- __Pyx_INCREF(((PyObject *)__pyx_v_info));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_info));
- PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_5, ((PyObject *)__pyx_v_info));
- __Pyx_INCREF(__pyx_v_new_frame);
- __Pyx_GIVEREF(__pyx_v_new_frame);
- PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_5, __pyx_v_new_frame);
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1069, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (PY_MAJOR_VERSION >= 3) {
+ __Pyx_XGIVEREF(__pyx_t_27);
+ __Pyx_XGIVEREF(__pyx_t_28);
+ __Pyx_XGIVEREF(__pyx_t_29);
+ __Pyx_ExceptionReset(__pyx_t_27, __pyx_t_28, __pyx_t_29);
+ }
+ __Pyx_XGIVEREF(__pyx_t_24);
+ __Pyx_XGIVEREF(__pyx_t_25);
+ __Pyx_XGIVEREF(__pyx_t_26);
+ __Pyx_ErrRestore(__pyx_t_24, __pyx_t_25, __pyx_t_26);
+ __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0;
+ __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_23;
+ goto __pyx_L106_error;
+ __pyx_L158_error:;
+ if (PY_MAJOR_VERSION >= 3) {
+ __Pyx_XGIVEREF(__pyx_t_27);
+ __Pyx_XGIVEREF(__pyx_t_28);
+ __Pyx_XGIVEREF(__pyx_t_29);
+ __Pyx_ExceptionReset(__pyx_t_27, __pyx_t_28, __pyx_t_29);
+ }
+ __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
+ __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0;
+ __Pyx_XDECREF(__pyx_t_26); __pyx_t_26 = 0;
+ __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0;
+ goto __pyx_L106_error;
}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1068
- * # ok, hit breakpoint, now, we have to discover if it is a conditional breakpoint
- * # lets do the conditional stuff here
- * if breakpoint.expression is not None: # <<<<<<<<<<<<<<
- * main_debugger.handle_breakpoint_expression(breakpoint, info, new_frame)
- *
- */
+ __pyx_L156:;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":1071
- * main_debugger.handle_breakpoint_expression(breakpoint, info, new_frame)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1070
+ * self._show_return_values(frame, arg)
*
- * if stop or stop_on_plugin_breakpoint: # <<<<<<<<<<<<<<
- * eval_result = False
- * if breakpoint.has_condition:
+ * elif py_db.remove_return_values_flag: # <<<<<<<<<<<<<<
+ * try:
+ * self._remove_return_values(py_db, frame)
*/
- __pyx_t_9 = (__pyx_v_stop != 0);
- if (!__pyx_t_9) {
- } else {
- __pyx_t_14 = __pyx_t_9;
- goto __pyx_L123_bool_binop_done;
- }
- __pyx_t_9 = (__pyx_v_stop_on_plugin_breakpoint != 0);
- __pyx_t_14 = __pyx_t_9;
- __pyx_L123_bool_binop_done:;
- if (__pyx_t_14) {
+ }
+ __pyx_L143:;
- /* "_pydevd_bundle/pydevd_cython.pyx":1072
+ /* "_pydevd_bundle/pydevd_cython.pyx":1076
+ * py_db.remove_return_values_flag = False
*
- * if stop or stop_on_plugin_breakpoint:
- * eval_result = False # <<<<<<<<<<<<<<
- * if breakpoint.has_condition:
- * eval_result = main_debugger.handle_breakpoint_condition(info, breakpoint, new_frame)
- */
- __Pyx_INCREF(Py_False);
- __pyx_v_eval_result = Py_False;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1073
- * if stop or stop_on_plugin_breakpoint:
- * eval_result = False
- * if breakpoint.has_condition: # <<<<<<<<<<<<<<
- * eval_result = main_debugger.handle_breakpoint_condition(info, breakpoint, new_frame)
- * if not eval_result:
+ * if stop: # <<<<<<<<<<<<<<
+ * self.set_suspend(
+ * thread,
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_breakpoint, __pyx_n_s_has_condition); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1073, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1073, __pyx_L104_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_14) {
+ if (__pyx_v_stop) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1074
- * eval_result = False
- * if breakpoint.has_condition:
- * eval_result = main_debugger.handle_breakpoint_condition(info, breakpoint, new_frame) # <<<<<<<<<<<<<<
- * if not eval_result:
- * stop = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1077
+ *
+ * if stop:
+ * self.set_suspend( # <<<<<<<<<<<<<<
+ * thread,
+ * stop_reason,
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_handle_breakpoint_condition); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1074, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_3);
- if (unlikely(!__pyx_v_new_frame)) { __Pyx_RaiseUnboundLocalError("new_frame"); __PYX_ERR(0, 1074, __pyx_L104_error) }
- __pyx_t_4 = NULL;
- __pyx_t_5 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
- __pyx_t_5 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[4] = {__pyx_t_4, ((PyObject *)__pyx_v_info), __pyx_v_breakpoint, __pyx_v_new_frame};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1074, __pyx_L104_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[4] = {__pyx_t_4, ((PyObject *)__pyx_v_info), __pyx_v_breakpoint, __pyx_v_new_frame};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1074, __pyx_L104_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else
- #endif
- {
- __pyx_t_1 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1074, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (__pyx_t_4) {
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL;
- }
- __Pyx_INCREF(((PyObject *)__pyx_v_info));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_info));
- PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_5, ((PyObject *)__pyx_v_info));
- __Pyx_INCREF(__pyx_v_breakpoint);
- __Pyx_GIVEREF(__pyx_v_breakpoint);
- PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_5, __pyx_v_breakpoint);
- __Pyx_INCREF(__pyx_v_new_frame);
- __Pyx_GIVEREF(__pyx_v_new_frame);
- PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_5, __pyx_v_new_frame);
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1074, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_eval_result, __pyx_t_7);
- __pyx_t_7 = 0;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1077, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_1);
- /* "_pydevd_bundle/pydevd_cython.pyx":1075
- * if breakpoint.has_condition:
- * eval_result = main_debugger.handle_breakpoint_condition(info, breakpoint, new_frame)
- * if not eval_result: # <<<<<<<<<<<<<<
- * stop = False
- * stop_on_plugin_breakpoint = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1079
+ * self.set_suspend(
+ * thread,
+ * stop_reason, # <<<<<<<<<<<<<<
+ * suspend_other_threads=breakpoint and breakpoint.suspend_policy == "ALL",
+ * )
*/
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_v_eval_result); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1075, __pyx_L104_error)
- __pyx_t_9 = ((!__pyx_t_14) != 0);
- if (__pyx_t_9) {
+ __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1077, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_INCREF(__pyx_v_thread);
+ __Pyx_GIVEREF(__pyx_v_thread);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_thread)) __PYX_ERR(0, 1077, __pyx_L106_error);
+ __Pyx_INCREF(__pyx_v_stop_reason);
+ __Pyx_GIVEREF(__pyx_v_stop_reason);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_stop_reason)) __PYX_ERR(0, 1077, __pyx_L106_error);
- /* "_pydevd_bundle/pydevd_cython.pyx":1076
- * eval_result = main_debugger.handle_breakpoint_condition(info, breakpoint, new_frame)
- * if not eval_result:
- * stop = False # <<<<<<<<<<<<<<
- * stop_on_plugin_breakpoint = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1080
+ * thread,
+ * stop_reason,
+ * suspend_other_threads=breakpoint and breakpoint.suspend_policy == "ALL", # <<<<<<<<<<<<<<
+ * )
*
*/
- __pyx_v_stop = 0;
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1080, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_breakpoint); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1080, __pyx_L106_error)
+ if (__pyx_t_10) {
+ } else {
+ __Pyx_INCREF(__pyx_v_breakpoint);
+ __pyx_t_7 = __pyx_v_breakpoint;
+ goto __pyx_L160_bool_binop_done;
+ }
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_breakpoint, __pyx_n_s_suspend_policy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1080, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_n_s_ALL, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1080, __pyx_L106_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_INCREF(__pyx_t_3);
+ __pyx_t_7 = __pyx_t_3;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_L160_bool_binop_done:;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_suspend_other_threads, __pyx_t_7) < 0) __PYX_ERR(0, 1080, __pyx_L106_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1077
- * if not eval_result:
- * stop = False
- * stop_on_plugin_breakpoint = False # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1077
*
- * if is_call and (frame.f_code.co_name in ('', '') or (line == 1 and frame.f_code.co_name.startswith('', '') or (line == 1 and frame.f_code.co_name.startswith('.
- *
- * return self.trace_dispatch # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1085
+ * elif stop_on_plugin_breakpoint and plugin_manager is not None:
+ * result = plugin_manager.suspend(py_db, thread, frame, bp_type)
+ * if result: # <<<<<<<<<<<<<<
+ * frame = result
*
- * # Handle logpoint (on a logpoint we should never stop).
*/
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1091, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L108_try_return;
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1085, __pyx_L106_error)
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1079
- * stop_on_plugin_breakpoint = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1086
+ * result = plugin_manager.suspend(py_db, thread, frame, bp_type)
+ * if result:
+ * frame = result # <<<<<<<<<<<<<<
*
- * if is_call and (frame.f_code.co_name in ('', '') or (line == 1 and frame.f_code.co_name.startswith('| 0:
+ * # if thread has a suspend flag, we suspend with a busy wait
+ * if info.pydev_state == 2: # <<<<<<<<<<<<<<
+ * self.do_wait_suspend(thread, frame, event, arg)
+ * return self.trace_dispatch
*/
- __pyx_v_stop_on_plugin_breakpoint = 0;
+ __pyx_t_10 = (__pyx_v_info->pydev_state == 2);
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1098
- * stop_on_plugin_breakpoint = False
- *
- * if info.pydev_message is not None and len(info.pydev_message) > 0: # <<<<<<<<<<<<<<
- * cmd = main_debugger.cmd_factory.make_io_message(info.pydev_message + os.linesep, '1')
- * main_debugger.writer.add_command(cmd)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1090
+ * # if thread has a suspend flag, we suspend with a busy wait
+ * if info.pydev_state == 2:
+ * self.do_wait_suspend(thread, frame, event, arg) # <<<<<<<<<<<<<<
+ * return self.trace_dispatch
+ * else:
*/
- __pyx_t_11 = (__pyx_v_info->pydev_message != ((PyObject*)Py_None));
- __pyx_t_14 = (__pyx_t_11 != 0);
- if (__pyx_t_14) {
- } else {
- __pyx_t_9 = __pyx_t_14;
- goto __pyx_L139_bool_binop_done;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1090, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_8 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
}
- __pyx_t_3 = __pyx_v_info->pydev_message;
- __Pyx_INCREF(__pyx_t_3);
- __pyx_t_20 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_20 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1098, __pyx_L104_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_14 = ((__pyx_t_20 > 0) != 0);
- __pyx_t_9 = __pyx_t_14;
- __pyx_L139_bool_binop_done:;
- if (__pyx_t_9) {
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[5] = {__pyx_t_8, __pyx_v_thread, __pyx_v_frame, __pyx_v_event, __pyx_v_arg};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 4+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1090, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1099
- *
- * if info.pydev_message is not None and len(info.pydev_message) > 0:
- * cmd = main_debugger.cmd_factory.make_io_message(info.pydev_message + os.linesep, '1') # <<<<<<<<<<<<<<
- * main_debugger.writer.add_command(cmd)
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":1091
+ * if info.pydev_state == 2:
+ * self.do_wait_suspend(thread, frame, event, arg)
+ * return self.trace_dispatch # <<<<<<<<<<<<<<
+ * else:
+ * if not breakpoint and is_line:
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_cmd_factory); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1099, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_make_io_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1099, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_os); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1099, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_linesep); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1099, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyNumber_Add(__pyx_v_info->pydev_message, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1099, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = NULL;
- __pyx_t_5 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
- __pyx_t_5 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_7, __pyx_kp_s_1};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1099, __pyx_L104_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_7, __pyx_kp_s_1};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1099, __pyx_L104_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1099, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_6);
- if (__pyx_t_4) {
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
- }
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_7);
- __Pyx_INCREF(__pyx_kp_s_1);
- __Pyx_GIVEREF(__pyx_kp_s_1);
- PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_kp_s_1);
- __pyx_t_7 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1099, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_cmd = __pyx_t_3;
- __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1091, __pyx_L106_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_r = __pyx_t_7;
+ __pyx_t_7 = 0;
+ goto __pyx_L110_try_return;
- /* "_pydevd_bundle/pydevd_cython.pyx":1100
- * if info.pydev_message is not None and len(info.pydev_message) > 0:
- * cmd = main_debugger.cmd_factory.make_io_message(info.pydev_message + os.linesep, '1')
- * main_debugger.writer.add_command(cmd) # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1089
*
- * if main_debugger.show_return_values:
+ * # if thread has a suspend flag, we suspend with a busy wait
+ * if info.pydev_state == 2: # <<<<<<<<<<<<<<
+ * self.do_wait_suspend(thread, frame, event, arg)
+ * return self.trace_dispatch
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_writer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1100, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_add_command); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1100, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
- if (likely(__pyx_t_1)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_6, function);
- }
- }
- __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_v_cmd) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_cmd);
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1100, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1098
- * stop_on_plugin_breakpoint = False
- *
- * if info.pydev_message is not None and len(info.pydev_message) > 0: # <<<<<<<<<<<<<<
- * cmd = main_debugger.cmd_factory.make_io_message(info.pydev_message + os.linesep, '1')
- * main_debugger.writer.add_command(cmd)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1093
+ * return self.trace_dispatch
+ * else:
+ * if not breakpoint and is_line: # <<<<<<<<<<<<<<
+ * # No stop from anyone and no breakpoint found in line (cache that).
+ * frame_skips_cache[line_cache_key] = 0
*/
- }
+ /*else*/ {
+ __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_v_breakpoint); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1093, __pyx_L106_error)
+ __pyx_t_12 = (!__pyx_t_16);
+ if (__pyx_t_12) {
+ } else {
+ __pyx_t_10 = __pyx_t_12;
+ goto __pyx_L167_bool_binop_done;
+ }
+ __pyx_t_10 = __pyx_v_is_line;
+ __pyx_L167_bool_binop_done:;
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1094
+ /* "_pydevd_bundle/pydevd_cython.pyx":1095
+ * if not breakpoint and is_line:
+ * # No stop from anyone and no breakpoint found in line (cache that).
+ * frame_skips_cache[line_cache_key] = 0 # <<<<<<<<<<<<<<
*
- * # Handle logpoint (on a logpoint we should never stop).
- * if (stop or stop_on_plugin_breakpoint) and breakpoint.is_logpoint: # <<<<<<<<<<<<<<
- * stop = False
- * stop_on_plugin_breakpoint = False
+ * except:
*/
- }
+ if (unlikely(__pyx_v_frame_skips_cache == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 1095, __pyx_L106_error)
+ }
+ if (unlikely((PyDict_SetItem(__pyx_v_frame_skips_cache, __pyx_v_line_cache_key, __pyx_int_0) < 0))) __PYX_ERR(0, 1095, __pyx_L106_error)
- /* "_pydevd_bundle/pydevd_cython.pyx":1065
- * stop_on_plugin_breakpoint, breakpoint, new_frame, bp_type = result
- *
- * if breakpoint: # <<<<<<<<<<<<<<
- * # ok, hit breakpoint, now, we have to discover if it is a conditional breakpoint
- * # lets do the conditional stuff here
+ /* "_pydevd_bundle/pydevd_cython.pyx":1093
+ * return self.trace_dispatch
+ * else:
+ * if not breakpoint and is_line: # <<<<<<<<<<<<<<
+ * # No stop from anyone and no breakpoint found in line (cache that).
+ * frame_skips_cache[line_cache_key] = 0
*/
+ }
}
- /* "_pydevd_bundle/pydevd_cython.pyx":1102
- * main_debugger.writer.add_command(cmd)
+ /* "_pydevd_bundle/pydevd_cython.pyx":987
+ * # if DEBUG: print('NOT skipped: %s %s %s %s' % (frame.f_lineno, frame.f_code.co_name, event, frame.__class__.__name__))
*
- * if main_debugger.show_return_values: # <<<<<<<<<<<<<<
- * if is_return and (
- * (info.pydev_step_cmd in (108, 159, 128) and (self._is_same_frame(stop_frame, frame.f_back))) or
+ * try: # <<<<<<<<<<<<<<
+ * stop_on_plugin_breakpoint = False
+ * # return is not taken into account for breakpoint hit because we'd have a double-hit in this case
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_show_return_values); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1102, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1102, __pyx_L104_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_9) {
+ }
+ __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
+ __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
+ __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
+ goto __pyx_L111_try_end;
+ __pyx_L106_error:;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1103
+ /* "_pydevd_bundle/pydevd_cython.pyx":1097
+ * frame_skips_cache[line_cache_key] = 0
*
- * if main_debugger.show_return_values:
- * if is_return and ( # <<<<<<<<<<<<<<
- * (info.pydev_step_cmd in (108, 159, 128) and (self._is_same_frame(stop_frame, frame.f_back))) or
- * (info.pydev_step_cmd in (109, 160) and (self._is_same_frame(stop_frame, frame))) or
+ * except: # <<<<<<<<<<<<<<
+ * # Unfortunately Python itself stops the tracing when it originates from
+ * # the tracing function, so, we can't do much about it (just let the user know).
*/
- __pyx_t_14 = (__pyx_v_is_return != 0);
- if (__pyx_t_14) {
- } else {
- __pyx_t_9 = __pyx_t_14;
- goto __pyx_L143_bool_binop_done;
- }
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_4, &__pyx_t_8) < 0) __PYX_ERR(0, 1097, __pyx_L108_except_error)
+ __Pyx_XGOTREF(__pyx_t_7);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_8);
- /* "_pydevd_bundle/pydevd_cython.pyx":1104
- * if main_debugger.show_return_values:
- * if is_return and (
- * (info.pydev_step_cmd in (108, 159, 128) and (self._is_same_frame(stop_frame, frame.f_back))) or # <<<<<<<<<<<<<<
- * (info.pydev_step_cmd in (109, 160) and (self._is_same_frame(stop_frame, frame))) or
- * (info.pydev_step_cmd in (107, 206)) or
+ /* "_pydevd_bundle/pydevd_cython.pyx":1100
+ * # Unfortunately Python itself stops the tracing when it originates from
+ * # the tracing function, so, we can't do much about it (just let the user know).
+ * exc = sys.exc_info()[0] # <<<<<<<<<<<<<<
+ * cmd = py_db.cmd_factory.make_console_message(
+ * "%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n"
*/
- switch (__pyx_v_info->pydev_step_cmd) {
- case 0x6C:
- case 0x9F:
- case 0x80:
- __pyx_t_14 = 1;
- break;
- default:
- __pyx_t_14 = 0;
- break;
- }
- __pyx_t_11 = (__pyx_t_14 != 0);
- if (!__pyx_t_11) {
- goto __pyx_L145_next_or;
- } else {
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1100, __pyx_L108_except_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1100, __pyx_L108_except_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ __pyx_t_5 = 1;
}
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1104, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1104, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1104, __pyx_L104_error)
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1100, __pyx_L108_except_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (!__pyx_t_11) {
- } else {
- __pyx_t_9 = __pyx_t_11;
- goto __pyx_L143_bool_binop_done;
- }
- __pyx_L145_next_or:;
+ }
+ __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1100, __pyx_L108_except_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v_exc = __pyx_t_6;
+ __pyx_t_6 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1105
- * if is_return and (
- * (info.pydev_step_cmd in (108, 159, 128) and (self._is_same_frame(stop_frame, frame.f_back))) or
- * (info.pydev_step_cmd in (109, 160) and (self._is_same_frame(stop_frame, frame))) or # <<<<<<<<<<<<<<
- * (info.pydev_step_cmd in (107, 206)) or
- * (
+ /* "_pydevd_bundle/pydevd_cython.pyx":1101
+ * # the tracing function, so, we can't do much about it (just let the user know).
+ * exc = sys.exc_info()[0]
+ * cmd = py_db.cmd_factory.make_console_message( # <<<<<<<<<<<<<<
+ * "%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n"
+ * % (
*/
- switch (__pyx_v_info->pydev_step_cmd) {
- case 0x6D:
- case 0xA0:
- __pyx_t_11 = 1;
- break;
- default:
- __pyx_t_11 = 0;
- break;
- }
- __pyx_t_14 = (__pyx_t_11 != 0);
- if (!__pyx_t_14) {
- goto __pyx_L147_next_or;
- } else {
- }
- __pyx_t_6 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_frame); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1105, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1105, __pyx_L104_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (!__pyx_t_14) {
- } else {
- __pyx_t_9 = __pyx_t_14;
- goto __pyx_L143_bool_binop_done;
- }
- __pyx_L147_next_or:;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_cmd_factory); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1101, __pyx_L108_except_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_make_console_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1101, __pyx_L108_except_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1106
- * (info.pydev_step_cmd in (108, 159, 128) and (self._is_same_frame(stop_frame, frame.f_back))) or
- * (info.pydev_step_cmd in (109, 160) and (self._is_same_frame(stop_frame, frame))) or
- * (info.pydev_step_cmd in (107, 206)) or # <<<<<<<<<<<<<<
- * (
- * info.pydev_step_cmd == 144
+ /* "_pydevd_bundle/pydevd_cython.pyx":1104
+ * "%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n"
+ * % (
+ * exc, # <<<<<<<<<<<<<<
+ * thread,
+ * )
*/
- switch (__pyx_v_info->pydev_step_cmd) {
- case 0x6B:
- case 0xCE:
- __pyx_t_14 = 1;
- break;
- default:
- __pyx_t_14 = 0;
- break;
- }
- __pyx_t_11 = (__pyx_t_14 != 0);
- if (!__pyx_t_11) {
- } else {
- __pyx_t_9 = __pyx_t_11;
- goto __pyx_L143_bool_binop_done;
- }
+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1104, __pyx_L108_except_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_v_exc);
+ __Pyx_GIVEREF(__pyx_v_exc);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_exc)) __PYX_ERR(0, 1104, __pyx_L108_except_error);
+ __Pyx_INCREF(__pyx_v_thread);
+ __Pyx_GIVEREF(__pyx_v_thread);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_thread)) __PYX_ERR(0, 1104, __pyx_L108_except_error);
- /* "_pydevd_bundle/pydevd_cython.pyx":1108
- * (info.pydev_step_cmd in (107, 206)) or
- * (
- * info.pydev_step_cmd == 144 # <<<<<<<<<<<<<<
- * and frame.f_back is not None
- * and not main_debugger.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1103
+ * cmd = py_db.cmd_factory.make_console_message(
+ * "%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n"
+ * % ( # <<<<<<<<<<<<<<
+ * exc,
+ * thread,
*/
- __pyx_t_11 = ((__pyx_v_info->pydev_step_cmd == 0x90) != 0);
- if (__pyx_t_11) {
- } else {
- __pyx_t_9 = __pyx_t_11;
- goto __pyx_L143_bool_binop_done;
+ __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_s_raised_from_within_the_callba, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1103, __pyx_L108_except_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
}
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_2};
+ __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1101, __pyx_L108_except_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_XDECREF_SET(__pyx_v_cmd, __pyx_t_6);
+ __pyx_t_6 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1109
- * (
- * info.pydev_step_cmd == 144
- * and frame.f_back is not None # <<<<<<<<<<<<<<
- * and not main_debugger.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)
- * )
+ /* "_pydevd_bundle/pydevd_cython.pyx":1108
+ * )
+ * )
+ * py_db.writer.add_command(cmd) # <<<<<<<<<<<<<<
+ * if not issubclass(exc, (KeyboardInterrupt, SystemExit)):
+ * pydev_log.exception()
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1109, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_11 = (__pyx_t_6 != Py_None);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_14 = (__pyx_t_11 != 0);
- if (__pyx_t_14) {
- } else {
- __pyx_t_9 = __pyx_t_14;
- goto __pyx_L143_bool_binop_done;
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_writer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1108, __pyx_L108_except_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_add_command); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1108, __pyx_L108_except_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_5 = 1;
}
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_cmd};
+ __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1108, __pyx_L108_except_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1109
+ * )
+ * py_db.writer.add_command(cmd)
+ * if not issubclass(exc, (KeyboardInterrupt, SystemExit)): # <<<<<<<<<<<<<<
+ * pydev_log.exception()
+ *
+ */
+ __pyx_t_10 = PyObject_IsSubclass(__pyx_v_exc, __pyx_tuple__5); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1109, __pyx_L108_except_error)
+ __pyx_t_12 = (!__pyx_t_10);
+ if (__pyx_t_12) {
/* "_pydevd_bundle/pydevd_cython.pyx":1110
- * info.pydev_step_cmd == 144
- * and frame.f_back is not None
- * and not main_debugger.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) # <<<<<<<<<<<<<<
- * )
- * ):
+ * py_db.writer.add_command(cmd)
+ * if not issubclass(exc, (KeyboardInterrupt, SystemExit)):
+ * pydev_log.exception() # <<<<<<<<<<<<<<
+ *
+ * raise
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1110, __pyx_L104_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1110, __pyx_L108_except_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1110, __pyx_L108_except_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1110, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1110, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_f_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1110, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1110, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = NULL;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = NULL;
__pyx_t_5 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_4)) {
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
__pyx_t_5 = 1;
}
}
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_t_1, __pyx_t_7, Py_True};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1110, __pyx_L104_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_t_1, __pyx_t_7, Py_True};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1110, __pyx_L104_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
#endif
{
- __pyx_t_8 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1110, __pyx_L104_error)
+ PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
+ __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1110, __pyx_L108_except_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1109
+ * )
+ * py_db.writer.add_command(cmd)
+ * if not issubclass(exc, (KeyboardInterrupt, SystemExit)): # <<<<<<<<<<<<<<
+ * pydev_log.exception()
+ *
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1112
+ * pydev_log.exception()
+ *
+ * raise # <<<<<<<<<<<<<<
+ *
+ * # step handling. We stop when we hit the right frame
+ */
+ __Pyx_GIVEREF(__pyx_t_7);
+ __Pyx_GIVEREF(__pyx_t_4);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_ErrRestoreWithState(__pyx_t_7, __pyx_t_4, __pyx_t_8);
+ __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_8 = 0;
+ __PYX_ERR(0, 1112, __pyx_L108_except_error)
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":987
+ * # if DEBUG: print('NOT skipped: %s %s %s %s' % (frame.f_lineno, frame.f_code.co_name, event, frame.__class__.__name__))
+ *
+ * try: # <<<<<<<<<<<<<<
+ * stop_on_plugin_breakpoint = False
+ * # return is not taken into account for breakpoint hit because we'd have a double-hit in this case
+ */
+ __pyx_L108_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_19);
+ __Pyx_XGIVEREF(__pyx_t_18);
+ __Pyx_XGIVEREF(__pyx_t_17);
+ __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_18, __pyx_t_17);
+ goto __pyx_L4_error;
+ __pyx_L110_try_return:;
+ __Pyx_XGIVEREF(__pyx_t_19);
+ __Pyx_XGIVEREF(__pyx_t_18);
+ __Pyx_XGIVEREF(__pyx_t_17);
+ __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_18, __pyx_t_17);
+ goto __pyx_L3_return;
+ __pyx_L111_try_end:;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1115
+ *
+ * # step handling. We stop when we hit the right frame
+ * try: # <<<<<<<<<<<<<<
+ * should_skip = 0
+ * if pydevd_dont_trace.should_trace_hook is not None:
+ */
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
+ __Pyx_XGOTREF(__pyx_t_17);
+ __Pyx_XGOTREF(__pyx_t_18);
+ __Pyx_XGOTREF(__pyx_t_19);
+ /*try:*/ {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1116
+ * # step handling. We stop when we hit the right frame
+ * try:
+ * should_skip = 0 # <<<<<<<<<<<<<<
+ * if pydevd_dont_trace.should_trace_hook is not None:
+ * if self.should_skip == -1:
+ */
+ __pyx_v_should_skip = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1117
+ * try:
+ * should_skip = 0
+ * if pydevd_dont_trace.should_trace_hook is not None: # <<<<<<<<<<<<<<
+ * if self.should_skip == -1:
+ * # I.e.: cache the result on self.should_skip (no need to evaluate the same frame multiple times).
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_pydevd_dont_trace); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1117, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_should_trace_hook); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1117, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_12 = (__pyx_t_4 != Py_None);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (__pyx_t_12) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1118
+ * should_skip = 0
+ * if pydevd_dont_trace.should_trace_hook is not None:
+ * if self.should_skip == -1: # <<<<<<<<<<<<<<
+ * # I.e.: cache the result on self.should_skip (no need to evaluate the same frame multiple times).
+ * # Note that on a code reload, we won't re-evaluate this because in practice, the frame.f_code
+ */
+ __pyx_t_12 = (__pyx_v_self->should_skip == -1L);
+ if (__pyx_t_12) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1122
+ * # Note that on a code reload, we won't re-evaluate this because in practice, the frame.f_code
+ * # Which will be handled by this frame is read-only, so, we can cache it safely.
+ * if not pydevd_dont_trace.should_trace_hook(frame.f_code, abs_path_canonical_path_and_base[0]): # <<<<<<<<<<<<<<
+ * # -1, 0, 1 to be Cython-friendly
+ * should_skip = self.should_skip = 1
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_pydevd_dont_trace); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1122, __pyx_L172_error)
__Pyx_GOTREF(__pyx_t_8);
- if (__pyx_t_4) {
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_should_trace_hook); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1122, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1122, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ if (unlikely(__pyx_v_abs_path_canonical_path_and_base == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 1122, __pyx_L172_error)
}
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_5, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_5, __pyx_t_7);
- __Pyx_INCREF(Py_True);
- __Pyx_GIVEREF(Py_True);
- PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_5, Py_True);
- __pyx_t_1 = 0;
- __pyx_t_7 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1110, __pyx_L104_error)
+ __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v_abs_path_canonical_path_and_base, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1122, __pyx_L172_error)
__Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_3 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_8, __pyx_t_6};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1122, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1122, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_10 = (!__pyx_t_12);
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1124
+ * if not pydevd_dont_trace.should_trace_hook(frame.f_code, abs_path_canonical_path_and_base[0]):
+ * # -1, 0, 1 to be Cython-friendly
+ * should_skip = self.should_skip = 1 # <<<<<<<<<<<<<<
+ * else:
+ * should_skip = self.should_skip = 0
+ */
+ __pyx_v_should_skip = 1;
+ __pyx_v_self->should_skip = 1;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1122
+ * # Note that on a code reload, we won't re-evaluate this because in practice, the frame.f_code
+ * # Which will be handled by this frame is read-only, so, we can cache it safely.
+ * if not pydevd_dont_trace.should_trace_hook(frame.f_code, abs_path_canonical_path_and_base[0]): # <<<<<<<<<<<<<<
+ * # -1, 0, 1 to be Cython-friendly
+ * should_skip = self.should_skip = 1
+ */
+ goto __pyx_L180;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1126
+ * should_skip = self.should_skip = 1
+ * else:
+ * should_skip = self.should_skip = 0 # <<<<<<<<<<<<<<
+ * else:
+ * should_skip = self.should_skip
+ */
+ /*else*/ {
+ __pyx_v_should_skip = 0;
+ __pyx_v_self->should_skip = 0;
+ }
+ __pyx_L180:;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1118
+ * should_skip = 0
+ * if pydevd_dont_trace.should_trace_hook is not None:
+ * if self.should_skip == -1: # <<<<<<<<<<<<<<
+ * # I.e.: cache the result on self.should_skip (no need to evaluate the same frame multiple times).
+ * # Note that on a code reload, we won't re-evaluate this because in practice, the frame.f_code
+ */
+ goto __pyx_L179;
}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1110, __pyx_L104_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_11 = ((!__pyx_t_14) != 0);
- __pyx_t_9 = __pyx_t_11;
- __pyx_L143_bool_binop_done:;
- /* "_pydevd_bundle/pydevd_cython.pyx":1103
+ /* "_pydevd_bundle/pydevd_cython.pyx":1128
+ * should_skip = self.should_skip = 0
+ * else:
+ * should_skip = self.should_skip # <<<<<<<<<<<<<<
+ *
+ * plugin_stop = False
+ */
+ /*else*/ {
+ __pyx_t_11 = __pyx_v_self->should_skip;
+ __pyx_v_should_skip = __pyx_t_11;
+ }
+ __pyx_L179:;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1117
+ * try:
+ * should_skip = 0
+ * if pydevd_dont_trace.should_trace_hook is not None: # <<<<<<<<<<<<<<
+ * if self.should_skip == -1:
+ * # I.e.: cache the result on self.should_skip (no need to evaluate the same frame multiple times).
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1130
+ * should_skip = self.should_skip
+ *
+ * plugin_stop = False # <<<<<<<<<<<<<<
+ * if should_skip:
+ * stop = False
+ */
+ __Pyx_INCREF(Py_False);
+ __pyx_v_plugin_stop = Py_False;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1131
+ *
+ * plugin_stop = False
+ * if should_skip: # <<<<<<<<<<<<<<
+ * stop = False
+ *
+ */
+ __pyx_t_10 = (__pyx_v_should_skip != 0);
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1132
+ * plugin_stop = False
+ * if should_skip:
+ * stop = False # <<<<<<<<<<<<<<
+ *
+ * elif step_cmd in (107, 144, 206):
+ */
+ __pyx_v_stop = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1131
+ *
+ * plugin_stop = False
+ * if should_skip: # <<<<<<<<<<<<<<
+ * stop = False
*
- * if main_debugger.show_return_values:
- * if is_return and ( # <<<<<<<<<<<<<<
- * (info.pydev_step_cmd in (108, 159, 128) and (self._is_same_frame(stop_frame, frame.f_back))) or
- * (info.pydev_step_cmd in (109, 160) and (self._is_same_frame(stop_frame, frame))) or
*/
- if (__pyx_t_9) {
+ goto __pyx_L181;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1134
+ * stop = False
+ *
+ * elif step_cmd in (107, 144, 206): # <<<<<<<<<<<<<<
+ * force_check_project_scope = step_cmd == 144
+ * if is_line:
+ */
+ switch (__pyx_v_step_cmd) {
+ case 0x6B:
+ case 0x90:
+ case 0xCE:
+ __pyx_t_10 = 1;
+ break;
+ default:
+ __pyx_t_10 = 0;
+ break;
+ }
+ __pyx_t_12 = __pyx_t_10;
+ if (__pyx_t_12) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1135
+ *
+ * elif step_cmd in (107, 144, 206):
+ * force_check_project_scope = step_cmd == 144 # <<<<<<<<<<<<<<
+ * if is_line:
+ * if not info.pydev_use_scoped_step_frame:
+ */
+ __pyx_t_4 = __Pyx_PyBool_FromLong((__pyx_v_step_cmd == 0x90)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1135, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_v_force_check_project_scope = __pyx_t_4;
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1136
+ * elif step_cmd in (107, 144, 206):
+ * force_check_project_scope = step_cmd == 144
+ * if is_line: # <<<<<<<<<<<<<<
+ * if not info.pydev_use_scoped_step_frame:
+ * if force_check_project_scope or py_db.is_files_filter_enabled:
+ */
+ if (__pyx_v_is_line) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1137
+ * force_check_project_scope = step_cmd == 144
+ * if is_line:
+ * if not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
+ * if force_check_project_scope or py_db.is_files_filter_enabled:
+ * stop = not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope)
+ */
+ __pyx_t_12 = (!__pyx_v_info->pydev_use_scoped_step_frame);
+ if (__pyx_t_12) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1138
+ * if is_line:
+ * if not info.pydev_use_scoped_step_frame:
+ * if force_check_project_scope or py_db.is_files_filter_enabled: # <<<<<<<<<<<<<<
+ * stop = not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope)
+ * else:
+ */
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_force_check_project_scope); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1138, __pyx_L172_error)
+ if (!__pyx_t_10) {
+ } else {
+ __pyx_t_12 = __pyx_t_10;
+ goto __pyx_L185_bool_binop_done;
+ }
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_is_files_filter_enabled); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1138, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1138, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_12 = __pyx_t_10;
+ __pyx_L185_bool_binop_done:;
+ if (__pyx_t_12) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1139
+ * if not info.pydev_use_scoped_step_frame:
+ * if force_check_project_scope or py_db.is_files_filter_enabled:
+ * stop = not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope) # <<<<<<<<<<<<<<
+ * else:
+ * stop = True
+ */
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1139, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1139, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1139, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_6, __pyx_v_frame, __pyx_t_8, __pyx_v_force_check_project_scope};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1139, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1139, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_stop = (!__pyx_t_12);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1138
+ * if is_line:
+ * if not info.pydev_use_scoped_step_frame:
+ * if force_check_project_scope or py_db.is_files_filter_enabled: # <<<<<<<<<<<<<<
+ * stop = not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope)
+ * else:
+ */
+ goto __pyx_L184;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1141
+ * stop = not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope)
+ * else:
+ * stop = True # <<<<<<<<<<<<<<
+ * else:
+ * if force_check_project_scope or py_db.is_files_filter_enabled:
+ */
+ /*else*/ {
+ __pyx_v_stop = 1;
+ }
+ __pyx_L184:;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1137
+ * force_check_project_scope = step_cmd == 144
+ * if is_line:
+ * if not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
+ * if force_check_project_scope or py_db.is_files_filter_enabled:
+ * stop = not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope)
+ */
+ goto __pyx_L183;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1143
+ * stop = True
+ * else:
+ * if force_check_project_scope or py_db.is_files_filter_enabled: # <<<<<<<<<<<<<<
+ * # Make sure we check the filtering inside ipython calls too...
+ * if not not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope):
+ */
+ /*else*/ {
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_force_check_project_scope); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1143, __pyx_L172_error)
+ if (!__pyx_t_10) {
+ } else {
+ __pyx_t_12 = __pyx_t_10;
+ goto __pyx_L188_bool_binop_done;
+ }
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_is_files_filter_enabled); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1143, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1143, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_12 = __pyx_t_10;
+ __pyx_L188_bool_binop_done:;
+ if (__pyx_t_12) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1145
+ * if force_check_project_scope or py_db.is_files_filter_enabled:
+ * # Make sure we check the filtering inside ipython calls too...
+ * if not not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope): # <<<<<<<<<<<<<<
+ * return None if is_call else NO_FTRACE
+ *
+ */
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1145, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1145, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1145, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_8, __pyx_v_frame, __pyx_t_6, __pyx_v_force_check_project_scope};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1145, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1145, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_10 = (!(!__pyx_t_12));
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1146
+ * # Make sure we check the filtering inside ipython calls too...
+ * if not not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope):
+ * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<<
+ *
+ * # We can only stop inside the ipython call.
+ */
+ __Pyx_XDECREF(__pyx_r);
+ if (__pyx_v_is_call) {
+ __Pyx_INCREF(Py_None);
+ __pyx_t_4 = Py_None;
+ } else {
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1146, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_4 = __pyx_t_7;
+ __pyx_t_7 = 0;
+ }
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
+ goto __pyx_L176_try_return;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1145
+ * if force_check_project_scope or py_db.is_files_filter_enabled:
+ * # Make sure we check the filtering inside ipython calls too...
+ * if not not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope): # <<<<<<<<<<<<<<
+ * return None if is_call else NO_FTRACE
+ *
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1143
+ * stop = True
+ * else:
+ * if force_check_project_scope or py_db.is_files_filter_enabled: # <<<<<<<<<<<<<<
+ * # Make sure we check the filtering inside ipython calls too...
+ * if not not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope):
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1149
+ *
+ * # We can only stop inside the ipython call.
+ * filename = frame.f_code.co_filename # <<<<<<<<<<<<<<
+ * if filename.endswith(".pyc"):
+ * filename = filename[:-1]
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1149, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1149, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_filename = __pyx_t_7;
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1150
+ * # We can only stop inside the ipython call.
+ * filename = frame.f_code.co_filename
+ * if filename.endswith(".pyc"): # <<<<<<<<<<<<<<
+ * filename = filename[:-1]
+ *
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_filename, __pyx_n_s_endswith); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1150, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_kp_s_pyc};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1150, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1150, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1151
+ * filename = frame.f_code.co_filename
+ * if filename.endswith(".pyc"):
+ * filename = filename[:-1] # <<<<<<<<<<<<<<
+ *
+ * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]):
+ */
+ __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_filename, 0, -1L, NULL, NULL, &__pyx_slice__6, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1151, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_7);
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1150
+ * # We can only stop inside the ipython call.
+ * filename = frame.f_code.co_filename
+ * if filename.endswith(".pyc"): # <<<<<<<<<<<<<<
+ * filename = filename[:-1]
+ *
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1153
+ * filename = filename[:-1]
+ *
+ * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]): # <<<<<<<<<<<<<<
+ * f = frame.f_back
+ * while f is not None:
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_filename, __pyx_n_s_endswith); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1153, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1153, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1153, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_8};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1153, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1153, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_12 = (!__pyx_t_10);
+ if (__pyx_t_12) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1154
+ *
+ * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]):
+ * f = frame.f_back # <<<<<<<<<<<<<<
+ * while f is not None:
+ * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
+ */
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1154, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_XDECREF_SET(__pyx_v_f, __pyx_t_7);
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1155
+ * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]):
+ * f = frame.f_back
+ * while f is not None: # <<<<<<<<<<<<<<
+ * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
+ * f2 = f.f_back
+ */
+ while (1) {
+ __pyx_t_12 = (__pyx_v_f != Py_None);
+ if (!__pyx_t_12) break;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1156
+ * f = frame.f_back
+ * while f is not None:
+ * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: # <<<<<<<<<<<<<<
+ * f2 = f.f_back
+ * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
+ */
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1156, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_co_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1156, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1156, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1156, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = PyObject_RichCompare(__pyx_t_4, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1156, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1156, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (__pyx_t_12) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1157
+ * while f is not None:
+ * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
+ * f2 = f.f_back # <<<<<<<<<<<<<<
+ * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
+ * pydev_log.debug("Stop inside ipython call")
+ */
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1157, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_XDECREF_SET(__pyx_v_f2, __pyx_t_7);
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1158
+ * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
+ * f2 = f.f_back
+ * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: # <<<<<<<<<<<<<<
+ * pydev_log.debug("Stop inside ipython call")
+ * stop = True
+ */
+ __pyx_t_10 = (__pyx_v_f2 != Py_None);
+ if (__pyx_t_10) {
+ } else {
+ __pyx_t_12 = __pyx_t_10;
+ goto __pyx_L197_bool_binop_done;
+ }
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_f2, __pyx_n_s_f_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1158, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_co_name); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1158, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1158, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1158, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = PyObject_RichCompare(__pyx_t_8, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1158, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1158, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_12 = __pyx_t_10;
+ __pyx_L197_bool_binop_done:;
+ if (__pyx_t_12) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1159
+ * f2 = f.f_back
+ * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
+ * pydev_log.debug("Stop inside ipython call") # <<<<<<<<<<<<<<
+ * stop = True
+ * break
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1159, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_debug); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1159, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_kp_s_Stop_inside_ipython_call};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1159, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1160
+ * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
+ * pydev_log.debug("Stop inside ipython call")
+ * stop = True # <<<<<<<<<<<<<<
+ * break
+ * f = f.f_back
+ */
+ __pyx_v_stop = 1;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1161
+ * pydev_log.debug("Stop inside ipython call")
+ * stop = True
+ * break # <<<<<<<<<<<<<<
+ * f = f.f_back
+ *
+ */
+ goto __pyx_L194_break;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1158
+ * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
+ * f2 = f.f_back
+ * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: # <<<<<<<<<<<<<<
+ * pydev_log.debug("Stop inside ipython call")
+ * stop = True
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1156
+ * f = frame.f_back
+ * while f is not None:
+ * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: # <<<<<<<<<<<<<<
+ * f2 = f.f_back
+ * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1162
+ * stop = True
+ * break
+ * f = f.f_back # <<<<<<<<<<<<<<
+ *
+ * del f
+ */
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1162, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_7);
+ __pyx_t_7 = 0;
+ }
+ __pyx_L194_break:;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1164
+ * f = f.f_back
+ *
+ * del f # <<<<<<<<<<<<<<
+ *
+ * if not stop:
+ */
+ __Pyx_DECREF(__pyx_v_f); __pyx_v_f = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1153
+ * filename = filename[:-1]
+ *
+ * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]): # <<<<<<<<<<<<<<
+ * f = frame.f_back
+ * while f is not None:
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1166
+ * del f
+ *
+ * if not stop: # <<<<<<<<<<<<<<
+ * # In scoped mode if step in didn't work in this context it won't work
+ * # afterwards anyways.
+ */
+ __pyx_t_12 = (!__pyx_v_stop);
+ if (__pyx_t_12) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1169
+ * # In scoped mode if step in didn't work in this context it won't work
+ * # afterwards anyways.
+ * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<<
+ *
+ * elif is_return and frame.f_back is not None and not info.pydev_use_scoped_step_frame:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ if (__pyx_v_is_call) {
+ __Pyx_INCREF(Py_None);
+ __pyx_t_7 = Py_None;
+ } else {
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1169, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_7 = __pyx_t_8;
+ __pyx_t_8 = 0;
+ }
+ __pyx_r = __pyx_t_7;
+ __pyx_t_7 = 0;
+ goto __pyx_L176_try_return;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1166
+ * del f
+ *
+ * if not stop: # <<<<<<<<<<<<<<
+ * # In scoped mode if step in didn't work in this context it won't work
+ * # afterwards anyways.
+ */
+ }
+ }
+ __pyx_L183:;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1136
+ * elif step_cmd in (107, 144, 206):
+ * force_check_project_scope = step_cmd == 144
+ * if is_line: # <<<<<<<<<<<<<<
+ * if not info.pydev_use_scoped_step_frame:
+ * if force_check_project_scope or py_db.is_files_filter_enabled:
+ */
+ goto __pyx_L182;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1171
+ * return None if is_call else NO_FTRACE
+ *
+ * elif is_return and frame.f_back is not None and not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
+ * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE:
+ * stop = False
+ */
+ if (__pyx_v_is_return) {
+ } else {
+ __pyx_t_12 = __pyx_v_is_return;
+ goto __pyx_L200_bool_binop_done;
+ }
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1171, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_10 = (__pyx_t_7 != Py_None);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (__pyx_t_10) {
+ } else {
+ __pyx_t_12 = __pyx_t_10;
+ goto __pyx_L200_bool_binop_done;
+ }
+ __pyx_t_10 = (!__pyx_v_info->pydev_use_scoped_step_frame);
+ __pyx_t_12 = __pyx_t_10;
+ __pyx_L200_bool_binop_done:;
+ if (__pyx_t_12) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1172
+ *
+ * elif is_return and frame.f_back is not None and not info.pydev_use_scoped_step_frame:
+ * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE: # <<<<<<<<<<<<<<
+ * stop = False
+ * else:
+ */
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_get_file_type); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1172, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1172, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_4};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1172, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_PYDEV_FILE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1172, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_7, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1172, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1172, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (__pyx_t_12) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1173
+ * elif is_return and frame.f_back is not None and not info.pydev_use_scoped_step_frame:
+ * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE:
+ * stop = False # <<<<<<<<<<<<<<
+ * else:
+ * if force_check_project_scope or py_db.is_files_filter_enabled:
+ */
+ __pyx_v_stop = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1172
+ *
+ * elif is_return and frame.f_back is not None and not info.pydev_use_scoped_step_frame:
+ * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE: # <<<<<<<<<<<<<<
+ * stop = False
+ * else:
+ */
+ goto __pyx_L203;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1175
+ * stop = False
+ * else:
+ * if force_check_project_scope or py_db.is_files_filter_enabled: # <<<<<<<<<<<<<<
+ * stop = not py_db.apply_files_filter(
+ * frame.f_back, frame.f_back.f_code.co_filename, force_check_project_scope
+ */
+ /*else*/ {
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_force_check_project_scope); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1175, __pyx_L172_error)
+ if (!__pyx_t_10) {
+ } else {
+ __pyx_t_12 = __pyx_t_10;
+ goto __pyx_L205_bool_binop_done;
+ }
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_is_files_filter_enabled); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1175, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1175, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_12 = __pyx_t_10;
+ __pyx_L205_bool_binop_done:;
+ if (__pyx_t_12) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1176
+ * else:
+ * if force_check_project_scope or py_db.is_files_filter_enabled:
+ * stop = not py_db.apply_files_filter( # <<<<<<<<<<<<<<
+ * frame.f_back, frame.f_back.f_code.co_filename, force_check_project_scope
+ * )
+ */
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1176, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1177
+ * if force_check_project_scope or py_db.is_files_filter_enabled:
+ * stop = not py_db.apply_files_filter(
+ * frame.f_back, frame.f_back.f_code.co_filename, force_check_project_scope # <<<<<<<<<<<<<<
+ * )
+ * if stop:
+ */
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1177, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1177, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_f_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1177, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1177, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_t_7, __pyx_t_6, __pyx_v_force_check_project_scope};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1176, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1176
+ * else:
+ * if force_check_project_scope or py_db.is_files_filter_enabled:
+ * stop = not py_db.apply_files_filter( # <<<<<<<<<<<<<<
+ * frame.f_back, frame.f_back.f_code.co_filename, force_check_project_scope
+ * )
+ */
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1176, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_stop = (!__pyx_t_12);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1179
+ * frame.f_back, frame.f_back.f_code.co_filename, force_check_project_scope
+ * )
+ * if stop: # <<<<<<<<<<<<<<
+ * # Prevent stopping in a return to the same location we were initially
+ * # (i.e.: double-stop at the same place due to some filtering).
+ */
+ if (__pyx_v_stop) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1182
+ * # Prevent stopping in a return to the same location we were initially
+ * # (i.e.: double-stop at the same place due to some filtering).
+ * if info.step_in_initial_location == (frame.f_back, frame.f_back.f_lineno): # <<<<<<<<<<<<<<
+ * stop = False
+ * else:
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1182, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1182, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1182, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1182, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_GIVEREF(__pyx_t_4);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4)) __PYX_ERR(0, 1182, __pyx_L172_error);
+ __Pyx_GIVEREF(__pyx_t_6);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6)) __PYX_ERR(0, 1182, __pyx_L172_error);
+ __pyx_t_4 = 0;
+ __pyx_t_6 = 0;
+ __pyx_t_6 = PyObject_RichCompare(__pyx_v_info->step_in_initial_location, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1182, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1182, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (__pyx_t_12) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1183
+ * # (i.e.: double-stop at the same place due to some filtering).
+ * if info.step_in_initial_location == (frame.f_back, frame.f_back.f_lineno):
+ * stop = False # <<<<<<<<<<<<<<
+ * else:
+ * stop = True
+ */
+ __pyx_v_stop = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1182
+ * # Prevent stopping in a return to the same location we were initially
+ * # (i.e.: double-stop at the same place due to some filtering).
+ * if info.step_in_initial_location == (frame.f_back, frame.f_back.f_lineno): # <<<<<<<<<<<<<<
+ * stop = False
+ * else:
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1179
+ * frame.f_back, frame.f_back.f_code.co_filename, force_check_project_scope
+ * )
+ * if stop: # <<<<<<<<<<<<<<
+ * # Prevent stopping in a return to the same location we were initially
+ * # (i.e.: double-stop at the same place due to some filtering).
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1175
+ * stop = False
+ * else:
+ * if force_check_project_scope or py_db.is_files_filter_enabled: # <<<<<<<<<<<<<<
+ * stop = not py_db.apply_files_filter(
+ * frame.f_back, frame.f_back.f_code.co_filename, force_check_project_scope
+ */
+ goto __pyx_L204;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1185
+ * stop = False
+ * else:
+ * stop = True # <<<<<<<<<<<<<<
+ * else:
+ * stop = False
+ */
+ /*else*/ {
+ __pyx_v_stop = 1;
+ }
+ __pyx_L204:;
+ }
+ __pyx_L203:;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1171
+ * return None if is_call else NO_FTRACE
+ *
+ * elif is_return and frame.f_back is not None and not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
+ * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE:
+ * stop = False
+ */
+ goto __pyx_L182;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1187
+ * stop = True
+ * else:
+ * stop = False # <<<<<<<<<<<<<<
+ *
+ * if stop:
+ */
+ /*else*/ {
+ __pyx_v_stop = 0;
+ }
+ __pyx_L182:;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1189
+ * stop = False
+ *
+ * if stop: # <<<<<<<<<<<<<<
+ * if step_cmd == 206:
+ * # i.e.: Check if we're stepping into the proper context.
+ */
+ if (__pyx_v_stop) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1190
+ *
+ * if stop:
+ * if step_cmd == 206: # <<<<<<<<<<<<<<
+ * # i.e.: Check if we're stepping into the proper context.
+ * f = frame
+ */
+ __pyx_t_12 = (__pyx_v_step_cmd == 0xCE);
+ if (__pyx_t_12) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1192
+ * if step_cmd == 206:
+ * # i.e.: Check if we're stepping into the proper context.
+ * f = frame # <<<<<<<<<<<<<<
+ * while f is not None:
+ * if self._is_same_frame(stop_frame, f):
+ */
+ __Pyx_INCREF(__pyx_v_frame);
+ __Pyx_XDECREF_SET(__pyx_v_f, __pyx_v_frame);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1193
+ * # i.e.: Check if we're stepping into the proper context.
+ * f = frame
+ * while f is not None: # <<<<<<<<<<<<<<
+ * if self._is_same_frame(stop_frame, f):
+ * break
+ */
+ while (1) {
+ __pyx_t_12 = (__pyx_v_f != Py_None);
+ if (!__pyx_t_12) break;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1194
+ * f = frame
+ * while f is not None:
+ * if self._is_same_frame(stop_frame, f): # <<<<<<<<<<<<<<
+ * break
+ * f = f.f_back
+ */
+ __pyx_t_6 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_f); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1194, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1194, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (__pyx_t_12) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1195
+ * while f is not None:
+ * if self._is_same_frame(stop_frame, f):
+ * break # <<<<<<<<<<<<<<
+ * f = f.f_back
+ * else:
+ */
+ goto __pyx_L212_break;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1194
+ * f = frame
+ * while f is not None:
+ * if self._is_same_frame(stop_frame, f): # <<<<<<<<<<<<<<
+ * break
+ * f = f.f_back
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1196
+ * if self._is_same_frame(stop_frame, f):
+ * break
+ * f = f.f_back # <<<<<<<<<<<<<<
+ * else:
+ * stop = False
+ */
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1196, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_6);
+ __pyx_t_6 = 0;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1198
+ * f = f.f_back
+ * else:
+ * stop = False # <<<<<<<<<<<<<<
+ *
+ * if plugin_manager is not None:
+ */
+ /*else*/ {
+ __pyx_v_stop = 0;
+ }
+ __pyx_L212_break:;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1190
+ *
+ * if stop:
+ * if step_cmd == 206: # <<<<<<<<<<<<<<
+ * # i.e.: Check if we're stepping into the proper context.
+ * f = frame
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1189
+ * stop = False
+ *
+ * if stop: # <<<<<<<<<<<<<<
+ * if step_cmd == 206:
+ * # i.e.: Check if we're stepping into the proper context.
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1200
+ * stop = False
+ *
+ * if plugin_manager is not None: # <<<<<<<<<<<<<<
+ * result = plugin_manager.cmd_step_into(py_db, frame, event, self._args[2], self._args[3], stop_info, stop)
+ * if result:
+ */
+ __pyx_t_12 = (__pyx_v_plugin_manager != Py_None);
+ if (__pyx_t_12) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1201
+ *
+ * if plugin_manager is not None:
+ * result = plugin_manager.cmd_step_into(py_db, frame, event, self._args[2], self._args[3], stop_info, stop) # <<<<<<<<<<<<<<
+ * if result:
+ * stop, plugin_stop = result
+ */
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_cmd_step_into); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1201, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 1201, __pyx_L172_error)
+ }
+ __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1201, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 1201, __pyx_L172_error)
+ }
+ __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1201, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_stop); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1201, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[8] = {__pyx_t_2, __pyx_v_py_db, __pyx_v_frame, __pyx_v_event, __pyx_t_4, __pyx_t_7, __pyx_v_stop_info, __pyx_t_3};
+ __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 7+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1201, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+ __Pyx_XDECREF_SET(__pyx_v_result, __pyx_t_6);
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1202
+ * if plugin_manager is not None:
+ * result = plugin_manager.cmd_step_into(py_db, frame, event, self._args[2], self._args[3], stop_info, stop)
+ * if result: # <<<<<<<<<<<<<<
+ * stop, plugin_stop = result
+ *
+ */
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1202, __pyx_L172_error)
+ if (__pyx_t_12) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1203
+ * result = plugin_manager.cmd_step_into(py_db, frame, event, self._args[2], self._args[3], stop_info, stop)
+ * if result:
+ * stop, plugin_stop = result # <<<<<<<<<<<<<<
+ *
+ * elif step_cmd in (108, 159):
+ */
+ if ((likely(PyTuple_CheckExact(__pyx_v_result))) || (PyList_CheckExact(__pyx_v_result))) {
+ PyObject* sequence = __pyx_v_result;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 2)) {
+ if (size > 2) __Pyx_RaiseTooManyValuesError(2);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 1203, __pyx_L172_error)
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1);
+ } else {
+ __pyx_t_6 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_8 = PyList_GET_ITEM(sequence, 1);
+ }
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
+ #else
+ __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1203, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1203, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ #endif
+ } else {
+ Py_ssize_t index = -1;
+ __pyx_t_3 = PyObject_GetIter(__pyx_v_result); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1203, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_15 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3);
+ index = 0; __pyx_t_6 = __pyx_t_15(__pyx_t_3); if (unlikely(!__pyx_t_6)) goto __pyx_L216_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_6);
+ index = 1; __pyx_t_8 = __pyx_t_15(__pyx_t_3); if (unlikely(!__pyx_t_8)) goto __pyx_L216_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_8);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_3), 2) < 0) __PYX_ERR(0, 1203, __pyx_L172_error)
+ __pyx_t_15 = NULL;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L217_unpacking_done;
+ __pyx_L216_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_15 = NULL;
+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+ __PYX_ERR(0, 1203, __pyx_L172_error)
+ __pyx_L217_unpacking_done:;
+ }
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1203, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_v_stop = __pyx_t_12;
+ __Pyx_DECREF_SET(__pyx_v_plugin_stop, __pyx_t_8);
+ __pyx_t_8 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1202
+ * if plugin_manager is not None:
+ * result = plugin_manager.cmd_step_into(py_db, frame, event, self._args[2], self._args[3], stop_info, stop)
+ * if result: # <<<<<<<<<<<<<<
+ * stop, plugin_stop = result
+ *
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1200
+ * stop = False
+ *
+ * if plugin_manager is not None: # <<<<<<<<<<<<<<
+ * result = plugin_manager.cmd_step_into(py_db, frame, event, self._args[2], self._args[3], stop_info, stop)
+ * if result:
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1134
+ * stop = False
+ *
+ * elif step_cmd in (107, 144, 206): # <<<<<<<<<<<<<<
+ * force_check_project_scope = step_cmd == 144
+ * if is_line:
+ */
+ goto __pyx_L181;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1205
+ * stop, plugin_stop = result
+ *
+ * elif step_cmd in (108, 159): # <<<<<<<<<<<<<<
+ * # Note: when dealing with a step over my code it's the same as a step over (the
+ * # difference is that when we return from a frame in one we go to regular step
+ */
+ switch (__pyx_v_step_cmd) {
+ case 0x6C:
+ case 0x9F:
+ __pyx_t_12 = 1;
+ break;
+ default:
+ __pyx_t_12 = 0;
+ break;
+ }
+ __pyx_t_10 = __pyx_t_12;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1209
+ * # difference is that when we return from a frame in one we go to regular step
+ * # into and in the other we go to a step into my code).
+ * stop = self._is_same_frame(stop_frame, frame) and is_line # <<<<<<<<<<<<<<
+ * # Note: don't stop on a return for step over, only for line events
+ * # i.e.: don't stop in: (stop_frame is frame.f_back and is_return) as we'd stop twice in that line.
+ */
+ __pyx_t_8 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_frame); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1209, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1209, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_12) {
+ } else {
+ __pyx_t_10 = __pyx_t_12;
+ goto __pyx_L218_bool_binop_done;
+ }
+ __pyx_t_10 = __pyx_v_is_line;
+ __pyx_L218_bool_binop_done:;
+ __pyx_v_stop = __pyx_t_10;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1213
+ * # i.e.: don't stop in: (stop_frame is frame.f_back and is_return) as we'd stop twice in that line.
+ *
+ * if plugin_manager is not None: # <<<<<<<<<<<<<<
+ * result = plugin_manager.cmd_step_over(py_db, frame, event, self._args[2], self._args[3], stop_info, stop)
+ * if result:
+ */
+ __pyx_t_10 = (__pyx_v_plugin_manager != Py_None);
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1214
+ *
+ * if plugin_manager is not None:
+ * result = plugin_manager.cmd_step_over(py_db, frame, event, self._args[2], self._args[3], stop_info, stop) # <<<<<<<<<<<<<<
+ * if result:
+ * stop, plugin_stop = result
+ */
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_cmd_step_over); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1214, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 1214, __pyx_L172_error)
+ }
+ __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1214, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 1214, __pyx_L172_error)
+ }
+ __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1214, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_stop); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1214, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_2 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[8] = {__pyx_t_2, __pyx_v_py_db, __pyx_v_frame, __pyx_v_event, __pyx_t_3, __pyx_t_7, __pyx_v_stop_info, __pyx_t_4};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 7+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1214, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ }
+ __Pyx_XDECREF_SET(__pyx_v_result, __pyx_t_8);
+ __pyx_t_8 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1215
+ * if plugin_manager is not None:
+ * result = plugin_manager.cmd_step_over(py_db, frame, event, self._args[2], self._args[3], stop_info, stop)
+ * if result: # <<<<<<<<<<<<<<
+ * stop, plugin_stop = result
+ *
+ */
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1215, __pyx_L172_error)
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1216
+ * result = plugin_manager.cmd_step_over(py_db, frame, event, self._args[2], self._args[3], stop_info, stop)
+ * if result:
+ * stop, plugin_stop = result # <<<<<<<<<<<<<<
+ *
+ * elif step_cmd == 128:
+ */
+ if ((likely(PyTuple_CheckExact(__pyx_v_result))) || (PyList_CheckExact(__pyx_v_result))) {
+ PyObject* sequence = __pyx_v_result;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 2)) {
+ if (size > 2) __Pyx_RaiseTooManyValuesError(2);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 1216, __pyx_L172_error)
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);
+ } else {
+ __pyx_t_8 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_6 = PyList_GET_ITEM(sequence, 1);
+ }
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_6);
+ #else
+ __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1216, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1216, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ #endif
+ } else {
+ Py_ssize_t index = -1;
+ __pyx_t_4 = PyObject_GetIter(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1216, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_15 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4);
+ index = 0; __pyx_t_8 = __pyx_t_15(__pyx_t_4); if (unlikely(!__pyx_t_8)) goto __pyx_L222_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_8);
+ index = 1; __pyx_t_6 = __pyx_t_15(__pyx_t_4); if (unlikely(!__pyx_t_6)) goto __pyx_L222_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_6);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1216, __pyx_L172_error)
+ __pyx_t_15 = NULL;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ goto __pyx_L223_unpacking_done;
+ __pyx_L222_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_15 = NULL;
+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+ __PYX_ERR(0, 1216, __pyx_L172_error)
+ __pyx_L223_unpacking_done:;
+ }
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1216, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_v_stop = __pyx_t_10;
+ __Pyx_DECREF_SET(__pyx_v_plugin_stop, __pyx_t_6);
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1215
+ * if plugin_manager is not None:
+ * result = plugin_manager.cmd_step_over(py_db, frame, event, self._args[2], self._args[3], stop_info, stop)
+ * if result: # <<<<<<<<<<<<<<
+ * stop, plugin_stop = result
+ *
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1213
+ * # i.e.: don't stop in: (stop_frame is frame.f_back and is_return) as we'd stop twice in that line.
+ *
+ * if plugin_manager is not None: # <<<<<<<<<<<<<<
+ * result = plugin_manager.cmd_step_over(py_db, frame, event, self._args[2], self._args[3], stop_info, stop)
+ * if result:
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1205
+ * stop, plugin_stop = result
+ *
+ * elif step_cmd in (108, 159): # <<<<<<<<<<<<<<
+ * # Note: when dealing with a step over my code it's the same as a step over (the
+ * # difference is that when we return from a frame in one we go to regular step
+ */
+ goto __pyx_L181;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1218
+ * stop, plugin_stop = result
+ *
+ * elif step_cmd == 128: # <<<<<<<<<<<<<<
+ * stop = False
+ * back = frame.f_back
+ */
+ __pyx_t_10 = (__pyx_v_step_cmd == 0x80);
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1219
+ *
+ * elif step_cmd == 128:
+ * stop = False # <<<<<<<<<<<<<<
+ * back = frame.f_back
+ * if self._is_same_frame(stop_frame, frame) and is_return:
+ */
+ __pyx_v_stop = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1220
+ * elif step_cmd == 128:
+ * stop = False
+ * back = frame.f_back # <<<<<<<<<<<<<<
+ * if self._is_same_frame(stop_frame, frame) and is_return:
+ * # We're exiting the smart step into initial frame (so, we probably didn't find our target).
+ */
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1220, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_v_back = __pyx_t_6;
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1221
+ * stop = False
+ * back = frame.f_back
+ * if self._is_same_frame(stop_frame, frame) and is_return: # <<<<<<<<<<<<<<
+ * # We're exiting the smart step into initial frame (so, we probably didn't find our target).
+ * stop = True
+ */
+ __pyx_t_6 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_frame); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1221, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1221, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (__pyx_t_12) {
+ } else {
+ __pyx_t_10 = __pyx_t_12;
+ goto __pyx_L225_bool_binop_done;
+ }
+ __pyx_t_10 = __pyx_v_is_return;
+ __pyx_L225_bool_binop_done:;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1223
+ * if self._is_same_frame(stop_frame, frame) and is_return:
+ * # We're exiting the smart step into initial frame (so, we probably didn't find our target).
+ * stop = True # <<<<<<<<<<<<<<
+ *
+ * elif self._is_same_frame(stop_frame, back) and is_line:
+ */
+ __pyx_v_stop = 1;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1221
+ * stop = False
+ * back = frame.f_back
+ * if self._is_same_frame(stop_frame, frame) and is_return: # <<<<<<<<<<<<<<
+ * # We're exiting the smart step into initial frame (so, we probably didn't find our target).
+ * stop = True
+ */
+ goto __pyx_L224;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1225
+ * stop = True
+ *
+ * elif self._is_same_frame(stop_frame, back) and is_line: # <<<<<<<<<<<<<<
+ * if info.pydev_smart_child_offset != -1:
+ * # i.e.: in this case, we're not interested in the pause in the parent, rather
+ */
+ __pyx_t_6 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_back); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1225, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1225, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (__pyx_t_12) {
+ } else {
+ __pyx_t_10 = __pyx_t_12;
+ goto __pyx_L227_bool_binop_done;
+ }
+ __pyx_t_10 = __pyx_v_is_line;
+ __pyx_L227_bool_binop_done:;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1226
+ *
+ * elif self._is_same_frame(stop_frame, back) and is_line:
+ * if info.pydev_smart_child_offset != -1: # <<<<<<<<<<<<<<
+ * # i.e.: in this case, we're not interested in the pause in the parent, rather
+ * # we're interested in the pause in the child (when the parent is at the proper place).
+ */
+ __pyx_t_10 = (__pyx_v_info->pydev_smart_child_offset != -1L);
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1229
+ * # i.e.: in this case, we're not interested in the pause in the parent, rather
+ * # we're interested in the pause in the child (when the parent is at the proper place).
+ * stop = False # <<<<<<<<<<<<<<
+ *
+ * else:
+ */
+ __pyx_v_stop = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1226
+ *
+ * elif self._is_same_frame(stop_frame, back) and is_line:
+ * if info.pydev_smart_child_offset != -1: # <<<<<<<<<<<<<<
+ * # i.e.: in this case, we're not interested in the pause in the parent, rather
+ * # we're interested in the pause in the child (when the parent is at the proper place).
+ */
+ goto __pyx_L229;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1232
+ *
+ * else:
+ * pydev_smart_parent_offset = info.pydev_smart_parent_offset # <<<<<<<<<<<<<<
+ *
+ * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+ */
+ /*else*/ {
+ __pyx_t_11 = __pyx_v_info->pydev_smart_parent_offset;
+ __pyx_v_pydev_smart_parent_offset = __pyx_t_11;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1234
+ * pydev_smart_parent_offset = info.pydev_smart_parent_offset
+ *
+ * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants # <<<<<<<<<<<<<<
+ * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants:
+ * # Preferred mode (when the smart step into variants are available
+ */
+ __pyx_t_6 = __pyx_v_info->pydev_smart_step_into_variants;
+ __Pyx_INCREF(__pyx_t_6);
+ __pyx_v_pydev_smart_step_into_variants = ((PyObject*)__pyx_t_6);
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1235
+ *
+ * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+ * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants: # <<<<<<<<<<<<<<
+ * # Preferred mode (when the smart step into variants are available
+ * # and the offset is set).
+ */
+ __pyx_t_12 = (__pyx_v_pydev_smart_parent_offset >= 0);
+ if (__pyx_t_12) {
+ } else {
+ __pyx_t_10 = __pyx_t_12;
+ goto __pyx_L231_bool_binop_done;
+ }
+ __pyx_t_12 = (__pyx_v_pydev_smart_step_into_variants != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_pydev_smart_step_into_variants) != 0);
+ __pyx_t_10 = __pyx_t_12;
+ __pyx_L231_bool_binop_done:;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1238
+ * # Preferred mode (when the smart step into variants are available
+ * # and the offset is set).
+ * stop = get_smart_step_into_variant_from_frame_offset( # <<<<<<<<<<<<<<
+ * back.f_lasti, pydev_smart_step_into_variants
+ * ) is get_smart_step_into_variant_from_frame_offset(
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1238, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1239
+ * # and the offset is set).
+ * stop = get_smart_step_into_variant_from_frame_offset(
+ * back.f_lasti, pydev_smart_step_into_variants # <<<<<<<<<<<<<<
+ * ) is get_smart_step_into_variant_from_frame_offset(
+ * pydev_smart_parent_offset, pydev_smart_step_into_variants
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_back, __pyx_n_s_f_lasti); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1239, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_4, __pyx_v_pydev_smart_step_into_variants};
+ __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1238, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1240
+ * stop = get_smart_step_into_variant_from_frame_offset(
+ * back.f_lasti, pydev_smart_step_into_variants
+ * ) is get_smart_step_into_variant_from_frame_offset( # <<<<<<<<<<<<<<
+ * pydev_smart_parent_offset, pydev_smart_step_into_variants
+ * )
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1240, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1241
+ * back.f_lasti, pydev_smart_step_into_variants
+ * ) is get_smart_step_into_variant_from_frame_offset(
+ * pydev_smart_parent_offset, pydev_smart_step_into_variants # <<<<<<<<<<<<<<
+ * )
+ *
+ */
+ __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_pydev_smart_parent_offset); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1241, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_3 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_7, __pyx_v_pydev_smart_step_into_variants};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1240, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_t_10 = (__pyx_t_6 == __pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_v_stop = __pyx_t_10;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1235
+ *
+ * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+ * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants: # <<<<<<<<<<<<<<
+ * # Preferred mode (when the smart step into variants are available
+ * # and the offset is set).
+ */
+ goto __pyx_L230;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1246
+ * else:
+ * # Only the name/line is available, so, check that.
+ * curr_func_name = frame.f_code.co_name # <<<<<<<<<<<<<<
+ *
+ * # global context is set with an empty name
+ */
+ /*else*/ {
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1246, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_co_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1246, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (!(likely(PyString_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_6))) __PYX_ERR(0, 1246, __pyx_L172_error)
+ __Pyx_XDECREF_SET(__pyx_v_curr_func_name, ((PyObject*)__pyx_t_6));
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1249
+ *
+ * # global context is set with an empty name
+ * if curr_func_name in ("?", "") or curr_func_name is None: # <<<<<<<<<<<<<<
+ * curr_func_name = ""
+ * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line:
+ */
+ __Pyx_INCREF(__pyx_v_curr_func_name);
+ __pyx_t_22 = __pyx_v_curr_func_name;
+ __pyx_t_16 = (__Pyx_PyString_Equals(__pyx_t_22, __pyx_kp_s__4, Py_EQ)); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1249, __pyx_L172_error)
+ if (!__pyx_t_16) {
+ } else {
+ __pyx_t_12 = __pyx_t_16;
+ goto __pyx_L236_bool_binop_done;
+ }
+ __pyx_t_16 = (__Pyx_PyString_Equals(__pyx_t_22, __pyx_kp_s_module, Py_EQ)); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1249, __pyx_L172_error)
+ __pyx_t_12 = __pyx_t_16;
+ __pyx_L236_bool_binop_done:;
+ __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
+ __pyx_t_16 = __pyx_t_12;
+ if (!__pyx_t_16) {
+ } else {
+ __pyx_t_10 = __pyx_t_16;
+ goto __pyx_L234_bool_binop_done;
+ }
+ __pyx_t_16 = (__pyx_v_curr_func_name == ((PyObject*)Py_None));
+ __pyx_t_10 = __pyx_t_16;
+ __pyx_L234_bool_binop_done:;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1250
+ * # global context is set with an empty name
+ * if curr_func_name in ("?", "") or curr_func_name is None:
+ * curr_func_name = "" # <<<<<<<<<<<<<<
+ * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line:
+ * stop = True
+ */
+ __Pyx_INCREF(__pyx_kp_s_);
+ __Pyx_DECREF_SET(__pyx_v_curr_func_name, __pyx_kp_s_);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1249
+ *
+ * # global context is set with an empty name
+ * if curr_func_name in ("?", "") or curr_func_name is None: # <<<<<<<<<<<<<<
+ * curr_func_name = ""
+ * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line:
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1251
+ * if curr_func_name in ("?", "") or curr_func_name is None:
+ * curr_func_name = ""
+ * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line: # <<<<<<<<<<<<<<
+ * stop = True
+ *
+ */
+ __pyx_t_16 = (__Pyx_PyString_Equals(__pyx_v_curr_func_name, __pyx_v_info->pydev_func_name, Py_EQ)); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1251, __pyx_L172_error)
+ if (__pyx_t_16) {
+ } else {
+ __pyx_t_10 = __pyx_t_16;
+ goto __pyx_L239_bool_binop_done;
+ }
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_stop_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1251, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_info->pydev_next_line); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1251, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1251, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1251, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_10 = __pyx_t_16;
+ __pyx_L239_bool_binop_done:;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1252
+ * curr_func_name = ""
+ * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line:
+ * stop = True # <<<<<<<<<<<<<<
+ *
+ * if not stop:
+ */
+ __pyx_v_stop = 1;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1251
+ * if curr_func_name in ("?", "") or curr_func_name is None:
+ * curr_func_name = ""
+ * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line: # <<<<<<<<<<<<<<
+ * stop = True
+ *
+ */
+ }
+ }
+ __pyx_L230:;
+ }
+ __pyx_L229:;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1254
+ * stop = True
+ *
+ * if not stop: # <<<<<<<<<<<<<<
+ * # In smart step into, if we didn't hit it in this frame once, that'll
+ * # not be the case next time either, so, disable tracing for this frame.
+ */
+ __pyx_t_10 = (!__pyx_v_stop);
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1257
+ * # In smart step into, if we didn't hit it in this frame once, that'll
+ * # not be the case next time either, so, disable tracing for this frame.
+ * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<<
+ *
+ * elif back is not None and self._is_same_frame(stop_frame, back.f_back) and is_line:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ if (__pyx_v_is_call) {
+ __Pyx_INCREF(Py_None);
+ __pyx_t_4 = Py_None;
+ } else {
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1257, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_4 = __pyx_t_8;
+ __pyx_t_8 = 0;
+ }
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
+ goto __pyx_L176_try_return;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1254
+ * stop = True
+ *
+ * if not stop: # <<<<<<<<<<<<<<
+ * # In smart step into, if we didn't hit it in this frame once, that'll
+ * # not be the case next time either, so, disable tracing for this frame.
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1225
+ * stop = True
+ *
+ * elif self._is_same_frame(stop_frame, back) and is_line: # <<<<<<<<<<<<<<
+ * if info.pydev_smart_child_offset != -1:
+ * # i.e.: in this case, we're not interested in the pause in the parent, rather
+ */
+ goto __pyx_L224;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1259
+ * return None if is_call else NO_FTRACE
+ *
+ * elif back is not None and self._is_same_frame(stop_frame, back.f_back) and is_line: # <<<<<<<<<<<<<<
+ * # Ok, we have to track 2 stops at this point, the parent and the child offset.
+ * # This happens when handling a step into which targets a function inside a list comprehension
+ */
+ __pyx_t_16 = (__pyx_v_back != Py_None);
+ if (__pyx_t_16) {
+ } else {
+ __pyx_t_10 = __pyx_t_16;
+ goto __pyx_L242_bool_binop_done;
+ }
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_back, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1259, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_8 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1259, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1259, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_16) {
+ } else {
+ __pyx_t_10 = __pyx_t_16;
+ goto __pyx_L242_bool_binop_done;
+ }
+ __pyx_t_10 = __pyx_v_is_line;
+ __pyx_L242_bool_binop_done:;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1263
+ * # This happens when handling a step into which targets a function inside a list comprehension
+ * # or generator (in which case an intermediary frame is created due to an internal function call).
+ * pydev_smart_parent_offset = info.pydev_smart_parent_offset # <<<<<<<<<<<<<<
+ * pydev_smart_child_offset = info.pydev_smart_child_offset
+ * # print('matched back frame', pydev_smart_parent_offset, pydev_smart_child_offset)
+ */
+ __pyx_t_11 = __pyx_v_info->pydev_smart_parent_offset;
+ __pyx_v_pydev_smart_parent_offset = __pyx_t_11;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1264
+ * # or generator (in which case an intermediary frame is created due to an internal function call).
+ * pydev_smart_parent_offset = info.pydev_smart_parent_offset
+ * pydev_smart_child_offset = info.pydev_smart_child_offset # <<<<<<<<<<<<<<
+ * # print('matched back frame', pydev_smart_parent_offset, pydev_smart_child_offset)
+ * # print('parent f_lasti', back.f_back.f_lasti)
+ */
+ __pyx_t_11 = __pyx_v_info->pydev_smart_child_offset;
+ __pyx_v_pydev_smart_child_offset = __pyx_t_11;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1268
+ * # print('parent f_lasti', back.f_back.f_lasti)
+ * # print('child f_lasti', back.f_lasti)
+ * stop = False # <<<<<<<<<<<<<<
+ * if pydev_smart_child_offset >= 0 and pydev_smart_child_offset >= 0:
+ * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+ */
+ __pyx_v_stop = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1269
+ * # print('child f_lasti', back.f_lasti)
+ * stop = False
+ * if pydev_smart_child_offset >= 0 and pydev_smart_child_offset >= 0: # <<<<<<<<<<<<<<
+ * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+ *
+ */
+ __pyx_t_16 = (__pyx_v_pydev_smart_child_offset >= 0);
+ if (__pyx_t_16) {
+ } else {
+ __pyx_t_10 = __pyx_t_16;
+ goto __pyx_L246_bool_binop_done;
+ }
+ __pyx_t_16 = (__pyx_v_pydev_smart_child_offset >= 0);
+ __pyx_t_10 = __pyx_t_16;
+ __pyx_L246_bool_binop_done:;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1270
+ * stop = False
+ * if pydev_smart_child_offset >= 0 and pydev_smart_child_offset >= 0:
+ * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants # <<<<<<<<<<<<<<
+ *
+ * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants:
+ */
+ __pyx_t_8 = __pyx_v_info->pydev_smart_step_into_variants;
+ __Pyx_INCREF(__pyx_t_8);
+ __pyx_v_pydev_smart_step_into_variants = ((PyObject*)__pyx_t_8);
+ __pyx_t_8 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1272
+ * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+ *
+ * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants: # <<<<<<<<<<<<<<
+ * # Note that we don't really check the parent offset, only the offset of
+ * # the child (because this is a generator, the parent may have moved forward
+ */
+ __pyx_t_16 = (__pyx_v_pydev_smart_parent_offset >= 0);
+ if (__pyx_t_16) {
+ } else {
+ __pyx_t_10 = __pyx_t_16;
+ goto __pyx_L249_bool_binop_done;
+ }
+ __pyx_t_16 = (__pyx_v_pydev_smart_step_into_variants != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_pydev_smart_step_into_variants) != 0);
+ __pyx_t_10 = __pyx_t_16;
+ __pyx_L249_bool_binop_done:;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1277
+ * # already -- and that's ok, so, we just check that the parent frame
+ * # matches in this case).
+ * smart_step_into_variant = get_smart_step_into_variant_from_frame_offset( # <<<<<<<<<<<<<<
+ * pydev_smart_parent_offset, pydev_smart_step_into_variants
+ * )
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1277, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1278
+ * # matches in this case).
+ * smart_step_into_variant = get_smart_step_into_variant_from_frame_offset(
+ * pydev_smart_parent_offset, pydev_smart_step_into_variants # <<<<<<<<<<<<<<
+ * )
+ * # print('matched parent offset', pydev_smart_parent_offset)
+ */
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_pydev_smart_parent_offset); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1278, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_6, __pyx_v_pydev_smart_step_into_variants};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1277, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_v_smart_step_into_variant = __pyx_t_8;
+ __pyx_t_8 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1282
+ * # print('matched parent offset', pydev_smart_parent_offset)
+ * # Ok, now, check the child variant
+ * children_variants = smart_step_into_variant.children_variants # <<<<<<<<<<<<<<
+ * stop = children_variants and (
+ * get_smart_step_into_variant_from_frame_offset(back.f_lasti, children_variants)
+ */
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_smart_step_into_variant, __pyx_n_s_children_variants); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1282, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_v_children_variants = __pyx_t_8;
+ __pyx_t_8 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1283
+ * # Ok, now, check the child variant
+ * children_variants = smart_step_into_variant.children_variants
+ * stop = children_variants and ( # <<<<<<<<<<<<<<
+ * get_smart_step_into_variant_from_frame_offset(back.f_lasti, children_variants)
+ * is get_smart_step_into_variant_from_frame_offset(pydev_smart_child_offset, children_variants)
+ */
+ __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_v_children_variants); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1283, __pyx_L172_error)
+ if (__pyx_t_16) {
+ } else {
+ __pyx_t_10 = __pyx_t_16;
+ goto __pyx_L251_bool_binop_done;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1284
+ * children_variants = smart_step_into_variant.children_variants
+ * stop = children_variants and (
+ * get_smart_step_into_variant_from_frame_offset(back.f_lasti, children_variants) # <<<<<<<<<<<<<<
+ * is get_smart_step_into_variant_from_frame_offset(pydev_smart_child_offset, children_variants)
+ * )
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1284, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_back, __pyx_n_s_f_lasti); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1284, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_6, __pyx_v_children_variants};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1284, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1285
+ * stop = children_variants and (
+ * get_smart_step_into_variant_from_frame_offset(back.f_lasti, children_variants)
+ * is get_smart_step_into_variant_from_frame_offset(pydev_smart_child_offset, children_variants) # <<<<<<<<<<<<<<
+ * )
+ * # print('stop at child', stop)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1285, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_pydev_smart_child_offset); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1285, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_3 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_7, __pyx_v_children_variants};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1285, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ }
+ __pyx_t_16 = (__pyx_t_8 == __pyx_t_4);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_10 = __pyx_t_16;
+ __pyx_L251_bool_binop_done:;
+ __pyx_v_stop = __pyx_t_10;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1272
+ * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+ *
+ * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants: # <<<<<<<<<<<<<<
+ * # Note that we don't really check the parent offset, only the offset of
+ * # the child (because this is a generator, the parent may have moved forward
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1269
+ * # print('child f_lasti', back.f_lasti)
+ * stop = False
+ * if pydev_smart_child_offset >= 0 and pydev_smart_child_offset >= 0: # <<<<<<<<<<<<<<
+ * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+ *
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1289
+ * # print('stop at child', stop)
+ *
+ * if not stop: # <<<<<<<<<<<<<<
+ * # In smart step into, if we didn't hit it in this frame once, that'll
+ * # not be the case next time either, so, disable tracing for this frame.
+ */
+ __pyx_t_10 = (!__pyx_v_stop);
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1292
+ * # In smart step into, if we didn't hit it in this frame once, that'll
+ * # not be the case next time either, so, disable tracing for this frame.
+ * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<<
+ *
+ * elif step_cmd in (109, 160):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ if (__pyx_v_is_call) {
+ __Pyx_INCREF(Py_None);
+ __pyx_t_4 = Py_None;
+ } else {
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1292, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_4 = __pyx_t_8;
+ __pyx_t_8 = 0;
+ }
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
+ goto __pyx_L176_try_return;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1289
+ * # print('stop at child', stop)
+ *
+ * if not stop: # <<<<<<<<<<<<<<
+ * # In smart step into, if we didn't hit it in this frame once, that'll
+ * # not be the case next time either, so, disable tracing for this frame.
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1259
+ * return None if is_call else NO_FTRACE
+ *
+ * elif back is not None and self._is_same_frame(stop_frame, back.f_back) and is_line: # <<<<<<<<<<<<<<
+ * # Ok, we have to track 2 stops at this point, the parent and the child offset.
+ * # This happens when handling a step into which targets a function inside a list comprehension
+ */
+ }
+ __pyx_L224:;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1218
+ * stop, plugin_stop = result
+ *
+ * elif step_cmd == 128: # <<<<<<<<<<<<<<
+ * stop = False
+ * back = frame.f_back
+ */
+ goto __pyx_L181;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1294
+ * return None if is_call else NO_FTRACE
+ *
+ * elif step_cmd in (109, 160): # <<<<<<<<<<<<<<
+ * stop = is_return and self._is_same_frame(stop_frame, frame)
+ *
+ */
+ switch (__pyx_v_step_cmd) {
+ case 0x6D:
+ case 0xA0:
+ __pyx_t_10 = 1;
+ break;
+ default:
+ __pyx_t_10 = 0;
+ break;
+ }
+ __pyx_t_16 = __pyx_t_10;
+ if (__pyx_t_16) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1295
+ *
+ * elif step_cmd in (109, 160):
+ * stop = is_return and self._is_same_frame(stop_frame, frame) # <<<<<<<<<<<<<<
+ *
+ * else:
+ */
+ if (__pyx_v_is_return) {
+ } else {
+ __pyx_t_16 = __pyx_v_is_return;
+ goto __pyx_L254_bool_binop_done;
+ }
+ __pyx_t_4 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_frame); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1295, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1295, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_16 = __pyx_t_10;
+ __pyx_L254_bool_binop_done:;
+ __pyx_v_stop = __pyx_t_16;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1294
+ * return None if is_call else NO_FTRACE
+ *
+ * elif step_cmd in (109, 160): # <<<<<<<<<<<<<<
+ * stop = is_return and self._is_same_frame(stop_frame, frame)
+ *
+ */
+ goto __pyx_L181;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1298
+ *
+ * else:
+ * stop = False # <<<<<<<<<<<<<<
+ *
+ * if stop and step_cmd != -1 and is_return and hasattr(frame, "f_back"):
+ */
+ /*else*/ {
+ __pyx_v_stop = 0;
+ }
+ __pyx_L181:;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1300
+ * stop = False
+ *
+ * if stop and step_cmd != -1 and is_return and hasattr(frame, "f_back"): # <<<<<<<<<<<<<<
+ * f_code = getattr(frame.f_back, "f_code", None)
+ * if f_code is not None:
+ */
+ if (__pyx_v_stop) {
+ } else {
+ __pyx_t_16 = __pyx_v_stop;
+ goto __pyx_L257_bool_binop_done;
+ }
+ __pyx_t_10 = (__pyx_v_step_cmd != -1L);
+ if (__pyx_t_10) {
+ } else {
+ __pyx_t_16 = __pyx_t_10;
+ goto __pyx_L257_bool_binop_done;
+ }
+ if (__pyx_v_is_return) {
+ } else {
+ __pyx_t_16 = __pyx_v_is_return;
+ goto __pyx_L257_bool_binop_done;
+ }
+ __pyx_t_10 = __Pyx_HasAttr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1300, __pyx_L172_error)
+ __pyx_t_16 = __pyx_t_10;
+ __pyx_L257_bool_binop_done:;
+ if (__pyx_t_16) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1301
+ *
+ * if stop and step_cmd != -1 and is_return and hasattr(frame, "f_back"):
+ * f_code = getattr(frame.f_back, "f_code", None) # <<<<<<<<<<<<<<
+ * if f_code is not None:
+ * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE:
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1301, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_8 = __Pyx_GetAttr3(__pyx_t_4, __pyx_n_s_f_code, Py_None); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1301, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_f_code = __pyx_t_8;
+ __pyx_t_8 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1302
+ * if stop and step_cmd != -1 and is_return and hasattr(frame, "f_back"):
+ * f_code = getattr(frame.f_back, "f_code", None)
+ * if f_code is not None: # <<<<<<<<<<<<<<
+ * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE:
+ * stop = False
+ */
+ __pyx_t_16 = (__pyx_v_f_code != Py_None);
+ if (__pyx_t_16) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1303
+ * f_code = getattr(frame.f_back, "f_code", None)
+ * if f_code is not None:
+ * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE: # <<<<<<<<<<<<<<
+ * stop = False
+ *
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_get_file_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1303, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1303, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_6};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1303, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_PYDEV_FILE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1303, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = PyObject_RichCompare(__pyx_t_8, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1303, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1303, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (__pyx_t_16) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1304
+ * if f_code is not None:
+ * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE:
+ * stop = False # <<<<<<<<<<<<<<
+ *
+ * if plugin_stop:
+ */
+ __pyx_v_stop = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1303
+ * f_code = getattr(frame.f_back, "f_code", None)
+ * if f_code is not None:
+ * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE: # <<<<<<<<<<<<<<
+ * stop = False
+ *
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1302
+ * if stop and step_cmd != -1 and is_return and hasattr(frame, "f_back"):
+ * f_code = getattr(frame.f_back, "f_code", None)
+ * if f_code is not None: # <<<<<<<<<<<<<<
+ * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE:
+ * stop = False
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1300
+ * stop = False
+ *
+ * if stop and step_cmd != -1 and is_return and hasattr(frame, "f_back"): # <<<<<<<<<<<<<<
+ * f_code = getattr(frame.f_back, "f_code", None)
+ * if f_code is not None:
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1306
+ * stop = False
+ *
+ * if plugin_stop: # <<<<<<<<<<<<<<
+ * plugin_manager.stop(py_db, frame, event, self._args[3], stop_info, arg, step_cmd)
+ * elif stop:
+ */
+ __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_v_plugin_stop); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1306, __pyx_L172_error)
+ if (__pyx_t_16) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1307
+ *
+ * if plugin_stop:
+ * plugin_manager.stop(py_db, frame, event, self._args[3], stop_info, arg, step_cmd) # <<<<<<<<<<<<<<
+ * elif stop:
+ * if is_line:
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_stop); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1307, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ if (unlikely(__pyx_v_self->_args == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 1307, __pyx_L172_error)
+ }
+ __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1307, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1307, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_3 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[8] = {__pyx_t_3, __pyx_v_py_db, __pyx_v_frame, __pyx_v_event, __pyx_t_8, __pyx_v_stop_info, __pyx_v_arg, __pyx_t_7};
+ __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 7+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1307, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1306
+ * stop = False
+ *
+ * if plugin_stop: # <<<<<<<<<<<<<<
+ * plugin_manager.stop(py_db, frame, event, self._args[3], stop_info, arg, step_cmd)
+ * elif stop:
+ */
+ goto __pyx_L263;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1308
+ * if plugin_stop:
+ * plugin_manager.stop(py_db, frame, event, self._args[3], stop_info, arg, step_cmd)
+ * elif stop: # <<<<<<<<<<<<<<
+ * if is_line:
+ * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ */
+ if (__pyx_v_stop) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1309
+ * plugin_manager.stop(py_db, frame, event, self._args[3], stop_info, arg, step_cmd)
+ * elif stop:
+ * if is_line: # <<<<<<<<<<<<<<
+ * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ * self.do_wait_suspend(thread, frame, event, arg)
+ */
+ if (__pyx_v_is_line) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1310
+ * elif stop:
+ * if is_line:
+ * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) # <<<<<<<<<<<<<<
+ * self.do_wait_suspend(thread, frame, event, arg)
+ * elif is_return: # return event
+ */
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1310, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1310, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1310, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_INCREF(__pyx_v_thread);
+ __Pyx_GIVEREF(__pyx_v_thread);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_thread)) __PYX_ERR(0, 1310, __pyx_L172_error);
+ __Pyx_GIVEREF(__pyx_t_4);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_4)) __PYX_ERR(0, 1310, __pyx_L172_error);
+ __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1310, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_info->pydev_original_step_cmd); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1310, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_original_step_cmd, __pyx_t_8) < 0) __PYX_ERR(0, 1310, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1310, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1311
+ * if is_line:
+ * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ * self.do_wait_suspend(thread, frame, event, arg) # <<<<<<<<<<<<<<
+ * elif is_return: # return event
+ * back = frame.f_back
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1311, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[5] = {__pyx_t_7, __pyx_v_thread, __pyx_v_frame, __pyx_v_event, __pyx_v_arg};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 4+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1311, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1309
+ * plugin_manager.stop(py_db, frame, event, self._args[3], stop_info, arg, step_cmd)
+ * elif stop:
+ * if is_line: # <<<<<<<<<<<<<<
+ * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ * self.do_wait_suspend(thread, frame, event, arg)
+ */
+ goto __pyx_L264;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1312
+ * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ * self.do_wait_suspend(thread, frame, event, arg)
+ * elif is_return: # return event # <<<<<<<<<<<<<<
+ * back = frame.f_back
+ * if back is not None:
+ */
+ if (__pyx_v_is_return) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1313
+ * self.do_wait_suspend(thread, frame, event, arg)
+ * elif is_return: # return event
+ * back = frame.f_back # <<<<<<<<<<<<<<
+ * if back is not None:
+ * # When we get to the pydevd run function, the debugging has actually finished for the main thread
+ */
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1313, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_XDECREF_SET(__pyx_v_back, __pyx_t_8);
+ __pyx_t_8 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1314
+ * elif is_return: # return event
+ * back = frame.f_back
+ * if back is not None: # <<<<<<<<<<<<<<
+ * # When we get to the pydevd run function, the debugging has actually finished for the main thread
+ * # (note that it can still go on for other threads, but for this one, we just make it finish)
+ */
+ __pyx_t_16 = (__pyx_v_back != Py_None);
+ if (__pyx_t_16) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1318
+ * # (note that it can still go on for other threads, but for this one, we just make it finish)
+ * # So, just setting it to None should be OK
+ * back_absolute_filename, _, base = get_abs_path_real_path_and_base_from_frame(back) # <<<<<<<<<<<<<<
+ * if (base, back.f_code.co_name) in (DEBUG_START, DEBUG_START_PY3K):
+ * back = None
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_get_abs_path_real_path_and_base); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1318, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_back};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1318, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ if ((likely(PyTuple_CheckExact(__pyx_t_8))) || (PyList_CheckExact(__pyx_t_8))) {
+ PyObject* sequence = __pyx_t_8;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 3)) {
+ if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 1318, __pyx_L172_error)
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1);
+ __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2);
+ } else {
+ __pyx_t_4 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_7 = PyList_GET_ITEM(sequence, 1);
+ __pyx_t_6 = PyList_GET_ITEM(sequence, 2);
+ }
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_6);
+ #else
+ __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1318, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1318, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1318, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ #endif
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ } else {
+ Py_ssize_t index = -1;
+ __pyx_t_3 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1318, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_15 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3);
+ index = 0; __pyx_t_4 = __pyx_t_15(__pyx_t_3); if (unlikely(!__pyx_t_4)) goto __pyx_L266_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_4);
+ index = 1; __pyx_t_7 = __pyx_t_15(__pyx_t_3); if (unlikely(!__pyx_t_7)) goto __pyx_L266_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_7);
+ index = 2; __pyx_t_6 = __pyx_t_15(__pyx_t_3); if (unlikely(!__pyx_t_6)) goto __pyx_L266_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_6);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_3), 3) < 0) __PYX_ERR(0, 1318, __pyx_L172_error)
+ __pyx_t_15 = NULL;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L267_unpacking_done;
+ __pyx_L266_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_15 = NULL;
+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+ __PYX_ERR(0, 1318, __pyx_L172_error)
+ __pyx_L267_unpacking_done:;
+ }
+ __pyx_v_back_absolute_filename = __pyx_t_4;
+ __pyx_t_4 = 0;
+ __pyx_v__ = __pyx_t_7;
+ __pyx_t_7 = 0;
+ __pyx_v_base = __pyx_t_6;
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1319
+ * # So, just setting it to None should be OK
+ * back_absolute_filename, _, base = get_abs_path_real_path_and_base_from_frame(back)
+ * if (base, back.f_code.co_name) in (DEBUG_START, DEBUG_START_PY3K): # <<<<<<<<<<<<<<
+ * back = None
+ *
+ */
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_back, __pyx_n_s_f_code); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1319, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_co_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1319, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1319, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_INCREF(__pyx_v_base);
+ __Pyx_GIVEREF(__pyx_v_base);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_base)) __PYX_ERR(0, 1319, __pyx_L172_error);
+ __Pyx_GIVEREF(__pyx_t_6);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6)) __PYX_ERR(0, 1319, __pyx_L172_error);
+ __pyx_t_6 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_DEBUG_START); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1319, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = PyObject_RichCompare(__pyx_t_8, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1319, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1319, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (!__pyx_t_10) {
+ } else {
+ __pyx_t_16 = __pyx_t_10;
+ goto __pyx_L269_bool_binop_done;
+ }
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_DEBUG_START_PY3K); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1319, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_6 = PyObject_RichCompare(__pyx_t_8, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1319, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1319, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_16 = __pyx_t_10;
+ __pyx_L269_bool_binop_done:;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_10 = __pyx_t_16;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1320
+ * back_absolute_filename, _, base = get_abs_path_real_path_and_base_from_frame(back)
+ * if (base, back.f_code.co_name) in (DEBUG_START, DEBUG_START_PY3K):
+ * back = None # <<<<<<<<<<<<<<
+ *
+ * elif base == TRACE_PROPERTY:
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_DECREF_SET(__pyx_v_back, Py_None);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1319
+ * # So, just setting it to None should be OK
+ * back_absolute_filename, _, base = get_abs_path_real_path_and_base_from_frame(back)
+ * if (base, back.f_code.co_name) in (DEBUG_START, DEBUG_START_PY3K): # <<<<<<<<<<<<<<
+ * back = None
+ *
+ */
+ goto __pyx_L268;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1322
+ * back = None
+ *
+ * elif base == TRACE_PROPERTY: # <<<<<<<<<<<<<<
+ * # We dont want to trace the return event of pydevd_traceproperty (custom property for debugging)
+ * # if we're in a return, we want it to appear to the user in the previous frame!
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_TRACE_PROPERTY); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1322, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_6 = PyObject_RichCompare(__pyx_v_base, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1322, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1322, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1325
+ * # We dont want to trace the return event of pydevd_traceproperty (custom property for debugging)
+ * # if we're in a return, we want it to appear to the user in the previous frame!
+ * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<<
+ *
+ * elif pydevd_dont_trace.should_trace_hook is not None:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ if (__pyx_v_is_call) {
+ __Pyx_INCREF(Py_None);
+ __pyx_t_6 = Py_None;
+ } else {
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1325, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_6 = __pyx_t_8;
+ __pyx_t_8 = 0;
+ }
+ __pyx_r = __pyx_t_6;
+ __pyx_t_6 = 0;
+ goto __pyx_L176_try_return;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1322
+ * back = None
+ *
+ * elif base == TRACE_PROPERTY: # <<<<<<<<<<<<<<
+ * # We dont want to trace the return event of pydevd_traceproperty (custom property for debugging)
+ * # if we're in a return, we want it to appear to the user in the previous frame!
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1327
+ * return None if is_call else NO_FTRACE
+ *
+ * elif pydevd_dont_trace.should_trace_hook is not None: # <<<<<<<<<<<<<<
+ * if not pydevd_dont_trace.should_trace_hook(back.f_code, back_absolute_filename):
+ * # In this case, we'll have to skip the previous one because it shouldn't be traced.
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pydevd_dont_trace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1327, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_should_trace_hook); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1327, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_10 = (__pyx_t_8 != Py_None);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1328
+ *
+ * elif pydevd_dont_trace.should_trace_hook is not None:
+ * if not pydevd_dont_trace.should_trace_hook(back.f_code, back_absolute_filename): # <<<<<<<<<<<<<<
+ * # In this case, we'll have to skip the previous one because it shouldn't be traced.
+ * # Also, we have to reset the tracing, because if the parent's parent (or some
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pydevd_dont_trace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1328, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_should_trace_hook); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1328, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_back, __pyx_n_s_f_code); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1328, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_6, __pyx_v_back_absolute_filename};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1328, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1328, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_16 = (!__pyx_t_10);
+ if (__pyx_t_16) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1334
+ * # we should anymore (so, a step in/over/return may not stop anywhere if no parent is traced).
+ * # Related test: _debugger_case17a.py
+ * py_db.set_trace_for_frame_and_parents(thread.ident, back) # <<<<<<<<<<<<<<
+ * return None if is_call else NO_FTRACE
+ *
+ */
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_set_trace_for_frame_and_parents); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1334, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_ident_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1334, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_6, __pyx_v_back};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1334, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1335
+ * # Related test: _debugger_case17a.py
+ * py_db.set_trace_for_frame_and_parents(thread.ident, back)
+ * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<<
+ *
+ * if back is not None:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ if (__pyx_v_is_call) {
+ __Pyx_INCREF(Py_None);
+ __pyx_t_8 = Py_None;
+ } else {
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1335, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = __pyx_t_7;
+ __pyx_t_7 = 0;
+ }
+ __pyx_r = __pyx_t_8;
+ __pyx_t_8 = 0;
+ goto __pyx_L176_try_return;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1328
+ *
+ * elif pydevd_dont_trace.should_trace_hook is not None:
+ * if not pydevd_dont_trace.should_trace_hook(back.f_code, back_absolute_filename): # <<<<<<<<<<<<<<
+ * # In this case, we'll have to skip the previous one because it shouldn't be traced.
+ * # Also, we have to reset the tracing, because if the parent's parent (or some
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1327
+ * return None if is_call else NO_FTRACE
+ *
+ * elif pydevd_dont_trace.should_trace_hook is not None: # <<<<<<<<<<<<<<
+ * if not pydevd_dont_trace.should_trace_hook(back.f_code, back_absolute_filename):
+ * # In this case, we'll have to skip the previous one because it shouldn't be traced.
+ */
+ }
+ __pyx_L268:;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1314
+ * elif is_return: # return event
+ * back = frame.f_back
+ * if back is not None: # <<<<<<<<<<<<<<
+ * # When we get to the pydevd run function, the debugging has actually finished for the main thread
+ * # (note that it can still go on for other threads, but for this one, we just make it finish)
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1337
+ * return None if is_call else NO_FTRACE
+ *
+ * if back is not None: # <<<<<<<<<<<<<<
+ * # if we're in a return, we want it to appear to the user in the previous frame!
+ * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ */
+ __pyx_t_16 = (__pyx_v_back != Py_None);
+ if (__pyx_t_16) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1339
+ * if back is not None:
+ * # if we're in a return, we want it to appear to the user in the previous frame!
+ * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) # <<<<<<<<<<<<<<
+ * self.do_wait_suspend(thread, back, event, arg)
+ * else:
+ */
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1339, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1339, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1339, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_v_thread);
+ __Pyx_GIVEREF(__pyx_v_thread);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_thread)) __PYX_ERR(0, 1339, __pyx_L172_error);
+ __Pyx_GIVEREF(__pyx_t_7);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_7)) __PYX_ERR(0, 1339, __pyx_L172_error);
+ __pyx_t_7 = 0;
+ __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1339, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_info->pydev_original_step_cmd); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1339, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_original_step_cmd, __pyx_t_4) < 0) __PYX_ERR(0, 1339, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1339, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1340
+ * # if we're in a return, we want it to appear to the user in the previous frame!
+ * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ * self.do_wait_suspend(thread, back, event, arg) # <<<<<<<<<<<<<<
+ * else:
+ * # in jython we may not have a back frame
+ */
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1340, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_6 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[5] = {__pyx_t_6, __pyx_v_thread, __pyx_v_back, __pyx_v_event, __pyx_v_arg};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 4+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1340, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1337
+ * return None if is_call else NO_FTRACE
+ *
+ * if back is not None: # <<<<<<<<<<<<<<
+ * # if we're in a return, we want it to appear to the user in the previous frame!
+ * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ */
+ goto __pyx_L272;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1343
+ * else:
+ * # in jython we may not have a back frame
+ * info.pydev_step_stop = None # <<<<<<<<<<<<<<
+ * info.pydev_original_step_cmd = -1
+ * info.pydev_step_cmd = -1
+ */
+ /*else*/ {
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ __Pyx_GOTREF(__pyx_v_info->pydev_step_stop);
+ __Pyx_DECREF(__pyx_v_info->pydev_step_stop);
+ __pyx_v_info->pydev_step_stop = Py_None;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1344
+ * # in jython we may not have a back frame
+ * info.pydev_step_stop = None
+ * info.pydev_original_step_cmd = -1 # <<<<<<<<<<<<<<
+ * info.pydev_step_cmd = -1
+ * info.pydev_state = 1
+ */
+ __pyx_v_info->pydev_original_step_cmd = -1;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1345
+ * info.pydev_step_stop = None
+ * info.pydev_original_step_cmd = -1
+ * info.pydev_step_cmd = -1 # <<<<<<<<<<<<<<
+ * info.pydev_state = 1
+ * info.update_stepping_info()
+ */
+ __pyx_v_info->pydev_step_cmd = -1;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1346
+ * info.pydev_original_step_cmd = -1
+ * info.pydev_step_cmd = -1
+ * info.pydev_state = 1 # <<<<<<<<<<<<<<
+ * info.update_stepping_info()
+ *
+ */
+ __pyx_v_info->pydev_state = 1;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1347
+ * info.pydev_step_cmd = -1
+ * info.pydev_state = 1
+ * info.update_stepping_info() # <<<<<<<<<<<<<<
+ *
+ * # if we are quitting, let's stop the tracing
+ */
+ __pyx_t_4 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_info->__pyx_vtab)->update_stepping_info(__pyx_v_info, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1347, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_L272:;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1312
+ * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ * self.do_wait_suspend(thread, frame, event, arg)
+ * elif is_return: # return event # <<<<<<<<<<<<<<
+ * back = frame.f_back
+ * if back is not None:
+ */
+ }
+ __pyx_L264:;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1308
+ * if plugin_stop:
+ * plugin_manager.stop(py_db, frame, event, self._args[3], stop_info, arg, step_cmd)
+ * elif stop: # <<<<<<<<<<<<<<
+ * if is_line:
+ * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ */
+ }
+ __pyx_L263:;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1350
+ *
+ * # if we are quitting, let's stop the tracing
+ * if py_db.quitting: # <<<<<<<<<<<<<<
+ * return None if is_call else NO_FTRACE
+ *
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_quitting); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1350, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1350, __pyx_L172_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (__pyx_t_16) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1351
+ * # if we are quitting, let's stop the tracing
+ * if py_db.quitting:
+ * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<<
+ *
+ * return self.trace_dispatch
+ */
+ __Pyx_XDECREF(__pyx_r);
+ if (__pyx_v_is_call) {
+ __Pyx_INCREF(Py_None);
+ __pyx_t_4 = Py_None;
+ } else {
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1351, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_4 = __pyx_t_7;
+ __pyx_t_7 = 0;
+ }
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
+ goto __pyx_L176_try_return;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1350
+ *
+ * # if we are quitting, let's stop the tracing
+ * if py_db.quitting: # <<<<<<<<<<<<<<
+ * return None if is_call else NO_FTRACE
+ *
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1353
+ * return None if is_call else NO_FTRACE
+ *
+ * return self.trace_dispatch # <<<<<<<<<<<<<<
+ * except:
+ * # Unfortunately Python itself stops the tracing when it originates from
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1353, __pyx_L172_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
+ goto __pyx_L176_try_return;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1115
+ *
+ * # step handling. We stop when we hit the right frame
+ * try: # <<<<<<<<<<<<<<
+ * should_skip = 0
+ * if pydevd_dont_trace.should_trace_hook is not None:
+ */
+ }
+ __pyx_L172_error:;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1354
+ *
+ * return self.trace_dispatch
+ * except: # <<<<<<<<<<<<<<
+ * # Unfortunately Python itself stops the tracing when it originates from
+ * # the tracing function, so, we can't do much about it (just let the user know).
+ */
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_7, &__pyx_t_6) < 0) __PYX_ERR(0, 1354, __pyx_L174_except_error)
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_7);
+ __Pyx_XGOTREF(__pyx_t_6);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1357
+ * # Unfortunately Python itself stops the tracing when it originates from
+ * # the tracing function, so, we can't do much about it (just let the user know).
+ * exc = sys.exc_info()[0] # <<<<<<<<<<<<<<
+ * cmd = py_db.cmd_factory.make_console_message(
+ * "%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n"
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1357, __pyx_L174_except_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1357, __pyx_L174_except_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1357, __pyx_L174_except_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1357, __pyx_L174_except_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_v_exc = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1358
+ * # the tracing function, so, we can't do much about it (just let the user know).
+ * exc = sys.exc_info()[0]
+ * cmd = py_db.cmd_factory.make_console_message( # <<<<<<<<<<<<<<
+ * "%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n"
+ * % (
+ */
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_cmd_factory); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1358, __pyx_L174_except_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_make_console_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1358, __pyx_L174_except_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1361
+ * "%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n"
+ * % (
+ * exc, # <<<<<<<<<<<<<<
+ * thread,
+ * )
+ */
+ __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1361, __pyx_L174_except_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_INCREF(__pyx_v_exc);
+ __Pyx_GIVEREF(__pyx_v_exc);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_exc)) __PYX_ERR(0, 1361, __pyx_L174_except_error);
+ __Pyx_INCREF(__pyx_v_thread);
+ __Pyx_GIVEREF(__pyx_v_thread);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_thread)) __PYX_ERR(0, 1361, __pyx_L174_except_error);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1360
+ * cmd = py_db.cmd_factory.make_console_message(
+ * "%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n"
+ * % ( # <<<<<<<<<<<<<<
+ * exc,
+ * thread,
+ */
+ __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_s_raised_from_within_the_callba, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1360, __pyx_L174_except_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_1};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1358, __pyx_L174_except_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_XDECREF_SET(__pyx_v_cmd, __pyx_t_2);
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1365
+ * )
+ * )
+ * py_db.writer.add_command(cmd) # <<<<<<<<<<<<<<
+ * if not issubclass(exc, (KeyboardInterrupt, SystemExit)):
+ * pydev_log.exception()
+ */
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_writer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1365, __pyx_L174_except_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_add_command); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1365, __pyx_L174_except_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_cmd};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1365, __pyx_L174_except_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1366
+ * )
+ * py_db.writer.add_command(cmd)
+ * if not issubclass(exc, (KeyboardInterrupt, SystemExit)): # <<<<<<<<<<<<<<
+ * pydev_log.exception()
+ * raise
+ */
+ __pyx_t_16 = PyObject_IsSubclass(__pyx_v_exc, __pyx_tuple__7); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 1366, __pyx_L174_except_error)
+ __pyx_t_10 = (!__pyx_t_16);
+ if (__pyx_t_10) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1367
+ * py_db.writer.add_command(cmd)
+ * if not issubclass(exc, (KeyboardInterrupt, SystemExit)):
+ * pydev_log.exception() # <<<<<<<<<<<<<<
+ * raise
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1367, __pyx_L174_except_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1367, __pyx_L174_except_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1367, __pyx_L174_except_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1366
+ * )
+ * py_db.writer.add_command(cmd)
+ * if not issubclass(exc, (KeyboardInterrupt, SystemExit)): # <<<<<<<<<<<<<<
+ * pydev_log.exception()
+ * raise
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1368
+ * if not issubclass(exc, (KeyboardInterrupt, SystemExit)):
+ * pydev_log.exception()
+ * raise # <<<<<<<<<<<<<<
+ *
+ * finally:
+ */
+ __Pyx_GIVEREF(__pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_7);
+ __Pyx_XGIVEREF(__pyx_t_6);
+ __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_7, __pyx_t_6);
+ __pyx_t_4 = 0; __pyx_t_7 = 0; __pyx_t_6 = 0;
+ __PYX_ERR(0, 1368, __pyx_L174_except_error)
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1115
+ *
+ * # step handling. We stop when we hit the right frame
+ * try: # <<<<<<<<<<<<<<
+ * should_skip = 0
+ * if pydevd_dont_trace.should_trace_hook is not None:
+ */
+ __pyx_L174_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_17);
+ __Pyx_XGIVEREF(__pyx_t_18);
+ __Pyx_XGIVEREF(__pyx_t_19);
+ __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
+ goto __pyx_L4_error;
+ __pyx_L176_try_return:;
+ __Pyx_XGIVEREF(__pyx_t_17);
+ __Pyx_XGIVEREF(__pyx_t_18);
+ __Pyx_XGIVEREF(__pyx_t_19);
+ __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
+ goto __pyx_L3_return;
+ }
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1371
+ *
+ * finally:
+ * info.is_tracing -= 1 # <<<<<<<<<<<<<<
+ *
+ * # end trace_dispatch
+ */
+ /*finally:*/ {
+ __pyx_L4_error:;
+ /*exception exit:*/{
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_27 = 0;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_29, &__pyx_t_28, &__pyx_t_27);
+ if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
+ __Pyx_XGOTREF(__pyx_t_19);
+ __Pyx_XGOTREF(__pyx_t_18);
+ __Pyx_XGOTREF(__pyx_t_17);
+ __Pyx_XGOTREF(__pyx_t_29);
+ __Pyx_XGOTREF(__pyx_t_28);
+ __Pyx_XGOTREF(__pyx_t_27);
+ __pyx_t_11 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_30 = __pyx_filename;
+ {
+ if (unlikely(!__pyx_v_info)) { __Pyx_RaiseUnboundLocalError("info"); __PYX_ERR(0, 1371, __pyx_L278_error) }
+ if (unlikely(!__pyx_v_info)) { __Pyx_RaiseUnboundLocalError("info"); __PYX_ERR(0, 1371, __pyx_L278_error) }
+ __pyx_v_info->is_tracing = (__pyx_v_info->is_tracing - 1);
+ }
+ if (PY_MAJOR_VERSION >= 3) {
+ __Pyx_XGIVEREF(__pyx_t_29);
+ __Pyx_XGIVEREF(__pyx_t_28);
+ __Pyx_XGIVEREF(__pyx_t_27);
+ __Pyx_ExceptionReset(__pyx_t_29, __pyx_t_28, __pyx_t_27);
+ }
+ __Pyx_XGIVEREF(__pyx_t_19);
+ __Pyx_XGIVEREF(__pyx_t_18);
+ __Pyx_XGIVEREF(__pyx_t_17);
+ __Pyx_ErrRestore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
+ __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_27 = 0;
+ __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_30;
+ goto __pyx_L1_error;
+ __pyx_L278_error:;
+ if (PY_MAJOR_VERSION >= 3) {
+ __Pyx_XGIVEREF(__pyx_t_29);
+ __Pyx_XGIVEREF(__pyx_t_28);
+ __Pyx_XGIVEREF(__pyx_t_27);
+ __Pyx_ExceptionReset(__pyx_t_29, __pyx_t_28, __pyx_t_27);
+ }
+ __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
+ __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
+ __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
+ __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_27 = 0;
+ goto __pyx_L1_error;
+ }
+ __pyx_L3_return: {
+ __pyx_t_27 = __pyx_r;
+ __pyx_r = 0;
+ __pyx_v_info->is_tracing = (__pyx_v_info->is_tracing - 1);
+ __pyx_r = __pyx_t_27;
+ __pyx_t_27 = 0;
+ goto __pyx_L0;
+ }
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":635
+ *
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef trace_dispatch(self, frame, str event, arg): # <<<<<<<<<<<<<<
+ * cdef tuple abs_path_canonical_path_and_base;
+ * cdef bint is_exception_event;
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_22);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_abs_path_canonical_path_and_base);
+ __Pyx_XDECREF((PyObject *)__pyx_v_info);
+ __Pyx_XDECREF(__pyx_v_breakpoints_for_file);
+ __Pyx_XDECREF(__pyx_v_stop_info);
+ __Pyx_XDECREF(__pyx_v_curr_func_name);
+ __Pyx_XDECREF(__pyx_v_frame_skips_cache);
+ __Pyx_XDECREF(__pyx_v_frame_cache_key);
+ __Pyx_XDECREF(__pyx_v_line_cache_key);
+ __Pyx_XDECREF(__pyx_v_bp);
+ __Pyx_XDECREF(__pyx_v_pydev_smart_step_into_variants);
+ __Pyx_XDECREF(__pyx_v_py_db);
+ __Pyx_XDECREF(__pyx_v_thread);
+ __Pyx_XDECREF(__pyx_v_plugin_manager);
+ __Pyx_XDECREF(__pyx_v_stop_frame);
+ __Pyx_XDECREF(__pyx_v_function_breakpoint_on_call_event);
+ __Pyx_XDECREF(__pyx_v_returns_cache_key);
+ __Pyx_XDECREF(__pyx_v_return_lines);
+ __Pyx_XDECREF(__pyx_v_x);
+ __Pyx_XDECREF(__pyx_v_f);
+ __Pyx_XDECREF(__pyx_v_exc_info);
+ __Pyx_XDECREF(__pyx_v_func_lines);
+ __Pyx_XDECREF(__pyx_v_offset_and_lineno);
+ __Pyx_XDECREF(__pyx_v_breakpoint);
+ __Pyx_XDECREF(__pyx_v_stop_reason);
+ __Pyx_XDECREF(__pyx_v_bp_type);
+ __Pyx_XDECREF(__pyx_v_new_frame);
+ __Pyx_XDECREF(__pyx_v_result);
+ __Pyx_XDECREF(__pyx_v_eval_result);
+ __Pyx_XDECREF(__pyx_v_cmd);
+ __Pyx_XDECREF(__pyx_v_exc);
+ __Pyx_XDECREF(__pyx_v_plugin_stop);
+ __Pyx_XDECREF(__pyx_v_force_check_project_scope);
+ __Pyx_XDECREF(__pyx_v_filename);
+ __Pyx_XDECREF(__pyx_v_f2);
+ __Pyx_XDECREF(__pyx_v_back);
+ __Pyx_XDECREF(__pyx_v_smart_step_into_variant);
+ __Pyx_XDECREF(__pyx_v_children_variants);
+ __Pyx_XDECREF(__pyx_v_f_code);
+ __Pyx_XDECREF(__pyx_v_back_absolute_filename);
+ __Pyx_XDECREF(__pyx_v__);
+ __Pyx_XDECREF(__pyx_v_base);
+ __Pyx_XDECREF(__pyx_v_frame);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_11trace_dispatch(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_11trace_dispatch = {"trace_dispatch", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_11trace_dispatch, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_11trace_dispatch(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_frame = 0;
+ PyObject *__pyx_v_event = 0;
+ PyObject *__pyx_v_arg = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[3] = {0,0,0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("trace_dispatch (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_frame,&__pyx_n_s_event,&__pyx_n_s_arg,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ CYTHON_FALLTHROUGH;
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ CYTHON_FALLTHROUGH;
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 635, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ CYTHON_FALLTHROUGH;
+ case 1:
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_event)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 635, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("trace_dispatch", 1, 3, 3, 1); __PYX_ERR(0, 635, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 2:
+ if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 635, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("trace_dispatch", 1, 3, 3, 2); __PYX_ERR(0, 635, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "trace_dispatch") < 0)) __PYX_ERR(0, 635, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 3)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ }
+ __pyx_v_frame = values[0];
+ __pyx_v_event = ((PyObject*)values[1]);
+ __pyx_v_arg = values[2];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("trace_dispatch", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 635, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_event), (&PyString_Type), 1, "event", 1))) __PYX_ERR(0, 635, __pyx_L1_error)
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_10trace_dispatch(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), __pyx_v_frame, __pyx_v_event, __pyx_v_arg);
+
+ /* function exit code */
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __pyx_r = NULL;
+ __pyx_L0:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_10trace_dispatch(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("trace_dispatch", 1);
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_trace_dispatch(__pyx_v_self, __pyx_v_frame, __pyx_v_event, __pyx_v_arg, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 635, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_13__reduce_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_13__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_13__reduce_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_nargs > 0)) {
+ __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
+ if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_12__reduce_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_12__reduce_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self) {
+ PyObject *__pyx_v_state = 0;
+ PyObject *__pyx_v__dict = 0;
+ int __pyx_v_use_setstate;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ int __pyx_t_3;
+ int __pyx_t_4;
+ PyObject *__pyx_t_5 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__reduce_cython__", 1);
+
+ /* "(tree fragment)":5
+ * cdef object _dict
+ * cdef bint use_setstate
+ * state = (self._args, self.exc_info, self.should_skip) # <<<<<<<<<<<<<<
+ * _dict = getattr(self, '__dict__', None)
+ * if _dict is not None:
+ */
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->should_skip); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_INCREF(__pyx_v_self->_args);
+ __Pyx_GIVEREF(__pyx_v_self->_args);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->_args)) __PYX_ERR(2, 5, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_self->exc_info);
+ __Pyx_GIVEREF(__pyx_v_self->exc_info);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->exc_info)) __PYX_ERR(2, 5, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error);
+ __pyx_t_1 = 0;
+ __pyx_v_state = ((PyObject*)__pyx_t_2);
+ __pyx_t_2 = 0;
+
+ /* "(tree fragment)":6
+ * cdef bint use_setstate
+ * state = (self._args, self.exc_info, self.should_skip)
+ * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<<
+ * if _dict is not None:
+ * state += (_dict,)
+ */
+ __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 6, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_v__dict = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "(tree fragment)":7
+ * state = (self._args, self.exc_info, self.should_skip)
+ * _dict = getattr(self, '__dict__', None)
+ * if _dict is not None: # <<<<<<<<<<<<<<
+ * state += (_dict,)
+ * use_setstate = True
+ */
+ __pyx_t_3 = (__pyx_v__dict != Py_None);
+ if (__pyx_t_3) {
+
+ /* "(tree fragment)":8
+ * _dict = getattr(self, '__dict__', None)
+ * if _dict is not None:
+ * state += (_dict,) # <<<<<<<<<<<<<<
+ * use_setstate = True
+ * else:
+ */
+ __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 8, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_INCREF(__pyx_v__dict);
+ __Pyx_GIVEREF(__pyx_v__dict);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict)) __PYX_ERR(2, 8, __pyx_L1_error);
+ __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 8, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
+ __pyx_t_1 = 0;
+
+ /* "(tree fragment)":9
+ * if _dict is not None:
+ * state += (_dict,)
+ * use_setstate = True # <<<<<<<<<<<<<<
+ * else:
+ * use_setstate = self._args is not None or self.exc_info is not None
+ */
+ __pyx_v_use_setstate = 1;
+
+ /* "(tree fragment)":7
+ * state = (self._args, self.exc_info, self.should_skip)
+ * _dict = getattr(self, '__dict__', None)
+ * if _dict is not None: # <<<<<<<<<<<<<<
+ * state += (_dict,)
+ * use_setstate = True
+ */
+ goto __pyx_L3;
+ }
+
+ /* "(tree fragment)":11
+ * use_setstate = True
+ * else:
+ * use_setstate = self._args is not None or self.exc_info is not None # <<<<<<<<<<<<<<
+ * if use_setstate:
+ * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, None), state
+ */
+ /*else*/ {
+ __pyx_t_4 = (__pyx_v_self->_args != ((PyObject*)Py_None));
+ if (!__pyx_t_4) {
+ } else {
+ __pyx_t_3 = __pyx_t_4;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __pyx_t_4 = (__pyx_v_self->exc_info != Py_None);
+ __pyx_t_3 = __pyx_t_4;
+ __pyx_L4_bool_binop_done:;
+ __pyx_v_use_setstate = __pyx_t_3;
+ }
+ __pyx_L3:;
+
+ /* "(tree fragment)":12
+ * else:
+ * use_setstate = self._args is not None or self.exc_info is not None
+ * if use_setstate: # <<<<<<<<<<<<<<
+ * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, None), state
+ * else:
+ */
+ if (__pyx_v_use_setstate) {
+
+ /* "(tree fragment)":13
+ * use_setstate = self._args is not None or self.exc_info is not None
+ * if use_setstate:
+ * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, None), state # <<<<<<<<<<<<<<
+ * else:
+ * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, state)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_PyDBFrame); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(2, 13, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_int_61391470);
+ __Pyx_GIVEREF(__pyx_int_61391470);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_61391470)) __PYX_ERR(2, 13, __pyx_L1_error);
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None)) __PYX_ERR(2, 13, __pyx_L1_error);
+ __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_2);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2)) __PYX_ERR(2, 13, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_state);
+ __Pyx_GIVEREF(__pyx_v_state);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state)) __PYX_ERR(2, 13, __pyx_L1_error);
+ __pyx_t_1 = 0;
+ __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_5;
+ __pyx_t_5 = 0;
+ goto __pyx_L0;
+
+ /* "(tree fragment)":12
+ * else:
+ * use_setstate = self._args is not None or self.exc_info is not None
+ * if use_setstate: # <<<<<<<<<<<<<<
+ * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, None), state
+ * else:
+ */
+ }
+
+ /* "(tree fragment)":15
+ * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, None), state
+ * else:
+ * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, state) # <<<<<<<<<<<<<<
+ * def __setstate_cython__(self, __pyx_state):
+ * __pyx_unpickle_PyDBFrame__set_state(self, __pyx_state)
+ */
+ /*else*/ {
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_PyDBFrame); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(2, 15, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_int_61391470);
+ __Pyx_GIVEREF(__pyx_int_61391470);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_61391470)) __PYX_ERR(2, 15, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_state);
+ __Pyx_GIVEREF(__pyx_v_state);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state)) __PYX_ERR(2, 15, __pyx_L1_error);
+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GIVEREF(__pyx_t_5);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5)) __PYX_ERR(2, 15, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_2);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2)) __PYX_ERR(2, 15, __pyx_L1_error);
+ __pyx_t_5 = 0;
+ __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+ }
+
+ /* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_state);
+ __Pyx_XDECREF(__pyx_v__dict);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle_PyDBFrame__set_state(self, __pyx_state)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_15__setstate_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_15__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_15__setstate_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v___pyx_state = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 16, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(2, 16, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v___pyx_state = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 16, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_14__setstate_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), __pyx_v___pyx_state);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_14__setstate_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__setstate_cython__", 1);
+
+ /* "(tree fragment)":17
+ * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, state)
+ * def __setstate_cython__(self, __pyx_state):
+ * __pyx_unpickle_PyDBFrame__set_state(self, __pyx_state) # <<<<<<<<<<<<<<
+ */
+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(2, 17, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_PyDBFrame__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 17, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle_PyDBFrame__set_state(self, __pyx_state)
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_bundle/pydevd_cython.pyx":1377
+ *
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * def should_stop_on_exception(py_db, PyDBAdditionalThreadInfo info, frame, thread, arg, prev_user_uncaught_exc_info): # <<<<<<<<<<<<<<
+ * cdef bint should_stop;
+ * cdef bint was_just_raised;
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_13should_stop_on_exception(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_13should_stop_on_exception = {"should_stop_on_exception", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_13should_stop_on_exception, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_13should_stop_on_exception(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_py_db = 0;
+ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info = 0;
+ PyObject *__pyx_v_frame = 0;
+ PyObject *__pyx_v_thread = 0;
+ PyObject *__pyx_v_arg = 0;
+ PyObject *__pyx_v_prev_user_uncaught_exc_info = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[6] = {0,0,0,0,0,0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("should_stop_on_exception (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_py_db,&__pyx_n_s_info,&__pyx_n_s_frame,&__pyx_n_s_thread,&__pyx_n_s_arg,&__pyx_n_s_prev_user_uncaught_exc_info,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
+ CYTHON_FALLTHROUGH;
+ case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
+ CYTHON_FALLTHROUGH;
+ case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
+ CYTHON_FALLTHROUGH;
+ case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ CYTHON_FALLTHROUGH;
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ CYTHON_FALLTHROUGH;
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_py_db)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1377, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ CYTHON_FALLTHROUGH;
+ case 1:
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1377, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("should_stop_on_exception", 1, 6, 6, 1); __PYX_ERR(0, 1377, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 2:
+ if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1377, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("should_stop_on_exception", 1, 6, 6, 2); __PYX_ERR(0, 1377, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 3:
+ if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_thread)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1377, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("should_stop_on_exception", 1, 6, 6, 3); __PYX_ERR(0, 1377, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 4:
+ if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1377, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("should_stop_on_exception", 1, 6, 6, 4); __PYX_ERR(0, 1377, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 5:
+ if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_prev_user_uncaught_exc_info)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1377, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("should_stop_on_exception", 1, 6, 6, 5); __PYX_ERR(0, 1377, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "should_stop_on_exception") < 0)) __PYX_ERR(0, 1377, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 6)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
+ values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
+ values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
+ }
+ __pyx_v_py_db = values[0];
+ __pyx_v_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)values[1]);
+ __pyx_v_frame = values[2];
+ __pyx_v_thread = values[3];
+ __pyx_v_arg = values[4];
+ __pyx_v_prev_user_uncaught_exc_info = values[5];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("should_stop_on_exception", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 1377, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.should_stop_on_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo, 1, "info", 0))) __PYX_ERR(0, 1377, __pyx_L1_error)
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_12should_stop_on_exception(__pyx_self, __pyx_v_py_db, __pyx_v_info, __pyx_v_frame, __pyx_v_thread, __pyx_v_arg, __pyx_v_prev_user_uncaught_exc_info);
+
+ /* function exit code */
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __pyx_r = NULL;
+ __pyx_L0:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_12should_stop_on_exception(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_py_db, struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info, PyObject *__pyx_v_frame, PyObject *__pyx_v_thread, PyObject *__pyx_v_arg, PyObject *__pyx_v_prev_user_uncaught_exc_info) {
+ int __pyx_v_should_stop;
+ int __pyx_v_was_just_raised;
+ PyObject *__pyx_v_check_excs = 0;
+ PyObject *__pyx_v_maybe_user_uncaught_exc_info = NULL;
+ PyObject *__pyx_v_exception = NULL;
+ PyObject *__pyx_v_value = NULL;
+ PyObject *__pyx_v_trace = NULL;
+ PyObject *__pyx_v_exception_breakpoint = NULL;
+ PyObject *__pyx_v_result = NULL;
+ PyObject *__pyx_v_exc_break_user = NULL;
+ PyObject *__pyx_v_exc_break_caught = NULL;
+ PyObject *__pyx_v_exc_break = NULL;
+ PyObject *__pyx_v_is_user_uncaught = NULL;
+ PyObject *__pyx_v_exc_info = NULL;
+ PyObject *__pyx_v_lines = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ int __pyx_t_1;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *(*__pyx_t_6)(PyObject *);
+ int __pyx_t_7;
+ PyObject *__pyx_t_8 = NULL;
+ PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_10 = NULL;
+ unsigned int __pyx_t_11;
+ PyObject *__pyx_t_12 = NULL;
+ PyObject *__pyx_t_13 = NULL;
+ int __pyx_t_14;
+ Py_ssize_t __pyx_t_15;
+ int __pyx_t_16;
+ PyObject *__pyx_t_17 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("should_stop_on_exception", 0);
+ __Pyx_INCREF(__pyx_v_frame);
- /* "_pydevd_bundle/pydevd_cython.pyx":1113
- * )
- * ):
- * self._show_return_values(frame, arg) # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1385
+ * # ENDIF
*
- * elif main_debugger.remove_return_values_flag:
- */
- __pyx_t_6 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_show_return_values(__pyx_v_self, __pyx_v_frame, __pyx_v_arg); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1113, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1103
+ * should_stop = False # <<<<<<<<<<<<<<
+ * maybe_user_uncaught_exc_info = prev_user_uncaught_exc_info
*
- * if main_debugger.show_return_values:
- * if is_return and ( # <<<<<<<<<<<<<<
- * (info.pydev_step_cmd in (108, 159, 128) and (self._is_same_frame(stop_frame, frame.f_back))) or
- * (info.pydev_step_cmd in (109, 160) and (self._is_same_frame(stop_frame, frame))) or
*/
- }
+ __pyx_v_should_stop = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1102
- * main_debugger.writer.add_command(cmd)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1386
*
- * if main_debugger.show_return_values: # <<<<<<<<<<<<<<
- * if is_return and (
- * (info.pydev_step_cmd in (108, 159, 128) and (self._is_same_frame(stop_frame, frame.f_back))) or
- */
- goto __pyx_L141;
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1115
- * self._show_return_values(frame, arg)
+ * should_stop = False
+ * maybe_user_uncaught_exc_info = prev_user_uncaught_exc_info # <<<<<<<<<<<<<<
*
- * elif main_debugger.remove_return_values_flag: # <<<<<<<<<<<<<<
- * try:
- * self._remove_return_values(main_debugger, frame)
+ * # 2 = 2
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_remove_return_values_flag); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1115, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1115, __pyx_L104_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (__pyx_t_9) {
+ __Pyx_INCREF(__pyx_v_prev_user_uncaught_exc_info);
+ __pyx_v_maybe_user_uncaught_exc_info = __pyx_v_prev_user_uncaught_exc_info;
- /* "_pydevd_bundle/pydevd_cython.pyx":1116
+ /* "_pydevd_bundle/pydevd_cython.pyx":1389
*
- * elif main_debugger.remove_return_values_flag:
- * try: # <<<<<<<<<<<<<<
- * self._remove_return_values(main_debugger, frame)
- * finally:
- */
- /*try:*/ {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1117
- * elif main_debugger.remove_return_values_flag:
- * try:
- * self._remove_return_values(main_debugger, frame) # <<<<<<<<<<<<<<
- * finally:
- * main_debugger.remove_return_values_flag = False
- */
- __pyx_t_6 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_remove_return_values(__pyx_v_self, __pyx_v_main_debugger, __pyx_v_frame); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1117, __pyx_L153_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1119
- * self._remove_return_values(main_debugger, frame)
- * finally:
- * main_debugger.remove_return_values_flag = False # <<<<<<<<<<<<<<
+ * # 2 = 2
+ * if info.pydev_state != 2: # and breakpoint is not None: # <<<<<<<<<<<<<<
+ * exception, value, trace = arg
*
- * if stop:
*/
- /*finally:*/ {
- /*normal exit:*/{
- if (__Pyx_PyObject_SetAttrStr(__pyx_v_main_debugger, __pyx_n_s_remove_return_values_flag, Py_False) < 0) __PYX_ERR(0, 1119, __pyx_L104_error)
- goto __pyx_L154;
- }
- __pyx_L153_error:;
- /*exception exit:*/{
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_26, &__pyx_t_27, &__pyx_t_28);
- if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25) < 0)) __Pyx_ErrFetch(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25);
- __Pyx_XGOTREF(__pyx_t_23);
- __Pyx_XGOTREF(__pyx_t_24);
- __Pyx_XGOTREF(__pyx_t_25);
- __Pyx_XGOTREF(__pyx_t_26);
- __Pyx_XGOTREF(__pyx_t_27);
- __Pyx_XGOTREF(__pyx_t_28);
- __pyx_t_5 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_22 = __pyx_filename;
- {
- if (__Pyx_PyObject_SetAttrStr(__pyx_v_main_debugger, __pyx_n_s_remove_return_values_flag, Py_False) < 0) __PYX_ERR(0, 1119, __pyx_L156_error)
- }
- if (PY_MAJOR_VERSION >= 3) {
- __Pyx_XGIVEREF(__pyx_t_26);
- __Pyx_XGIVEREF(__pyx_t_27);
- __Pyx_XGIVEREF(__pyx_t_28);
- __Pyx_ExceptionReset(__pyx_t_26, __pyx_t_27, __pyx_t_28);
- }
- __Pyx_XGIVEREF(__pyx_t_23);
- __Pyx_XGIVEREF(__pyx_t_24);
- __Pyx_XGIVEREF(__pyx_t_25);
- __Pyx_ErrRestore(__pyx_t_23, __pyx_t_24, __pyx_t_25);
- __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0;
- __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_22;
- goto __pyx_L104_error;
- __pyx_L156_error:;
- if (PY_MAJOR_VERSION >= 3) {
- __Pyx_XGIVEREF(__pyx_t_26);
- __Pyx_XGIVEREF(__pyx_t_27);
- __Pyx_XGIVEREF(__pyx_t_28);
- __Pyx_ExceptionReset(__pyx_t_26, __pyx_t_27, __pyx_t_28);
- }
- __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
- __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
- __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0;
- __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0;
- goto __pyx_L104_error;
- }
- __pyx_L154:;
- }
+ __pyx_t_1 = (__pyx_v_info->pydev_state != 2);
+ if (__pyx_t_1) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1115
- * self._show_return_values(frame, arg)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1390
+ * # 2 = 2
+ * if info.pydev_state != 2: # and breakpoint is not None:
+ * exception, value, trace = arg # <<<<<<<<<<<<<<
*
- * elif main_debugger.remove_return_values_flag: # <<<<<<<<<<<<<<
- * try:
- * self._remove_return_values(main_debugger, frame)
+ * if trace is not None and hasattr(trace, "tb_next"):
*/
- }
- __pyx_L141:;
+ if ((likely(PyTuple_CheckExact(__pyx_v_arg))) || (PyList_CheckExact(__pyx_v_arg))) {
+ PyObject* sequence = __pyx_v_arg;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 3)) {
+ if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 1390, __pyx_L1_error)
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
+ __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2);
+ } else {
+ __pyx_t_2 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_3 = PyList_GET_ITEM(sequence, 1);
+ __pyx_t_4 = PyList_GET_ITEM(sequence, 2);
+ }
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ #else
+ __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1390, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1390, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1390, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ #endif
+ } else {
+ Py_ssize_t index = -1;
+ __pyx_t_5 = PyObject_GetIter(__pyx_v_arg); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1390, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5);
+ index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_2);
+ index = 1; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_3);
+ index = 2; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_4);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 1390, __pyx_L1_error)
+ __pyx_t_6 = NULL;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ goto __pyx_L5_unpacking_done;
+ __pyx_L4_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_6 = NULL;
+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+ __PYX_ERR(0, 1390, __pyx_L1_error)
+ __pyx_L5_unpacking_done:;
+ }
+ __pyx_v_exception = __pyx_t_2;
+ __pyx_t_2 = 0;
+ __pyx_v_value = __pyx_t_3;
+ __pyx_t_3 = 0;
+ __pyx_v_trace = __pyx_t_4;
+ __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1121
- * main_debugger.remove_return_values_flag = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1392
+ * exception, value, trace = arg
*
- * if stop: # <<<<<<<<<<<<<<
- * self.set_suspend(
- * thread,
- */
- __pyx_t_9 = (__pyx_v_stop != 0);
- if (__pyx_t_9) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1122
+ * if trace is not None and hasattr(trace, "tb_next"): # <<<<<<<<<<<<<<
+ * # on jython trace is None on the first event and it may not have a tb_next.
*
- * if stop:
- * self.set_suspend( # <<<<<<<<<<<<<<
- * thread,
- * stop_reason,
- */
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1122, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_6);
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1124
- * self.set_suspend(
- * thread,
- * stop_reason, # <<<<<<<<<<<<<<
- * suspend_other_threads=breakpoint and breakpoint.suspend_policy == "ALL",
- * )
*/
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1122, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_v_thread);
- __Pyx_GIVEREF(__pyx_v_thread);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_thread);
- __Pyx_INCREF(__pyx_v_stop_reason);
- __Pyx_GIVEREF(__pyx_v_stop_reason);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_stop_reason);
+ __pyx_t_7 = (__pyx_v_trace != Py_None);
+ if (__pyx_t_7) {
+ } else {
+ __pyx_t_1 = __pyx_t_7;
+ goto __pyx_L7_bool_binop_done;
+ }
+ __pyx_t_7 = __Pyx_HasAttr(__pyx_v_trace, __pyx_n_s_tb_next); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 1392, __pyx_L1_error)
+ __pyx_t_1 = __pyx_t_7;
+ __pyx_L7_bool_binop_done:;
+ if (__pyx_t_1) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1125
- * thread,
- * stop_reason,
- * suspend_other_threads=breakpoint and breakpoint.suspend_policy == "ALL", # <<<<<<<<<<<<<<
- * )
+ /* "_pydevd_bundle/pydevd_cython.pyx":1395
+ * # on jython trace is None on the first event and it may not have a tb_next.
*
+ * should_stop = False # <<<<<<<<<<<<<<
+ * exception_breakpoint = None
+ * try:
*/
- __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1125, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_breakpoint); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1125, __pyx_L104_error)
- if (__pyx_t_9) {
- } else {
- __Pyx_INCREF(__pyx_v_breakpoint);
- __pyx_t_7 = __pyx_v_breakpoint;
- goto __pyx_L158_bool_binop_done;
- }
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_breakpoint, __pyx_n_s_suspend_policy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1125, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_n_s_ALL, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1125, __pyx_L104_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_INCREF(__pyx_t_4);
- __pyx_t_7 = __pyx_t_4;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_L158_bool_binop_done:;
- if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_suspend_other_threads, __pyx_t_7) < 0) __PYX_ERR(0, 1125, __pyx_L104_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_v_should_stop = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1122
+ /* "_pydevd_bundle/pydevd_cython.pyx":1396
*
- * if stop:
- * self.set_suspend( # <<<<<<<<<<<<<<
- * thread,
- * stop_reason,
+ * should_stop = False
+ * exception_breakpoint = None # <<<<<<<<<<<<<<
+ * try:
+ * if py_db.plugin is not None:
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1122, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_INCREF(Py_None);
+ __pyx_v_exception_breakpoint = Py_None;
- /* "_pydevd_bundle/pydevd_cython.pyx":1121
- * main_debugger.remove_return_values_flag = False
- *
- * if stop: # <<<<<<<<<<<<<<
- * self.set_suspend(
- * thread,
+ /* "_pydevd_bundle/pydevd_cython.pyx":1397
+ * should_stop = False
+ * exception_breakpoint = None
+ * try: # <<<<<<<<<<<<<<
+ * if py_db.plugin is not None:
+ * result = py_db.plugin.exception_break(py_db, frame, thread, arg)
*/
- goto __pyx_L157;
- }
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+ __Pyx_XGOTREF(__pyx_t_8);
+ __Pyx_XGOTREF(__pyx_t_9);
+ __Pyx_XGOTREF(__pyx_t_10);
+ /*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":1128
- * )
- *
- * elif stop_on_plugin_breakpoint and plugin_manager is not None: # <<<<<<<<<<<<<<
- * result = plugin_manager.suspend(main_debugger, thread, frame, bp_type)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1398
+ * exception_breakpoint = None
+ * try:
+ * if py_db.plugin is not None: # <<<<<<<<<<<<<<
+ * result = py_db.plugin.exception_break(py_db, frame, thread, arg)
* if result:
*/
- __pyx_t_11 = (__pyx_v_stop_on_plugin_breakpoint != 0);
- if (__pyx_t_11) {
- } else {
- __pyx_t_9 = __pyx_t_11;
- goto __pyx_L160_bool_binop_done;
- }
- __pyx_t_11 = (__pyx_v_plugin_manager != Py_None);
- __pyx_t_14 = (__pyx_t_11 != 0);
- __pyx_t_9 = __pyx_t_14;
- __pyx_L160_bool_binop_done:;
- if (__pyx_t_9) {
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_plugin); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1398, __pyx_L9_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_1 = (__pyx_t_4 != Py_None);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (__pyx_t_1) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1129
- *
- * elif stop_on_plugin_breakpoint and plugin_manager is not None:
- * result = plugin_manager.suspend(main_debugger, thread, frame, bp_type) # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1399
+ * try:
+ * if py_db.plugin is not None:
+ * result = py_db.plugin.exception_break(py_db, frame, thread, arg) # <<<<<<<<<<<<<<
* if result:
- * frame = result
+ * should_stop, frame = result
*/
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_suspend); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1129, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_3 = NULL;
- __pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
- __pyx_t_10 = 1;
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_plugin); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1399, __pyx_L9_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exception_break); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1399, __pyx_L9_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = NULL;
+ __pyx_t_11 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_11 = 1;
+ }
}
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_main_debugger, __pyx_v_thread, __pyx_v_frame, __pyx_v_bp_type};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1129, __pyx_L104_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_main_debugger, __pyx_v_thread, __pyx_v_frame, __pyx_v_bp_type};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1129, __pyx_L104_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(4+__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1129, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_6);
- if (__pyx_t_3) {
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
+ #endif
+ {
+ PyObject *__pyx_callargs[5] = {__pyx_t_3, __pyx_v_py_db, __pyx_v_frame, __pyx_v_thread, __pyx_v_arg};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_11, 4+__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1399, __pyx_L9_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
- __Pyx_INCREF(__pyx_v_main_debugger);
- __Pyx_GIVEREF(__pyx_v_main_debugger);
- PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_10, __pyx_v_main_debugger);
- __Pyx_INCREF(__pyx_v_thread);
- __Pyx_GIVEREF(__pyx_v_thread);
- PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_10, __pyx_v_thread);
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_10, __pyx_v_frame);
- __Pyx_INCREF(__pyx_v_bp_type);
- __Pyx_GIVEREF(__pyx_v_bp_type);
- PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_10, __pyx_v_bp_type);
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1129, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_XDECREF_SET(__pyx_v_result, __pyx_t_7);
- __pyx_t_7 = 0;
+ __pyx_v_result = __pyx_t_4;
+ __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1130
- * elif stop_on_plugin_breakpoint and plugin_manager is not None:
- * result = plugin_manager.suspend(main_debugger, thread, frame, bp_type)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1400
+ * if py_db.plugin is not None:
+ * result = py_db.plugin.exception_break(py_db, frame, thread, arg)
* if result: # <<<<<<<<<<<<<<
- * frame = result
- *
+ * should_stop, frame = result
+ * except:
*/
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1130, __pyx_L104_error)
- if (__pyx_t_9) {
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1400, __pyx_L9_error)
+ if (__pyx_t_1) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1131
- * result = plugin_manager.suspend(main_debugger, thread, frame, bp_type)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1401
+ * result = py_db.plugin.exception_break(py_db, frame, thread, arg)
* if result:
- * frame = result # <<<<<<<<<<<<<<
- *
- * # if thread has a suspend flag, we suspend with a busy wait
+ * should_stop, frame = result # <<<<<<<<<<<<<<
+ * except:
+ * pydev_log.exception()
*/
- __Pyx_INCREF(__pyx_v_result);
- __Pyx_DECREF_SET(__pyx_v_frame, __pyx_v_result);
+ if ((likely(PyTuple_CheckExact(__pyx_v_result))) || (PyList_CheckExact(__pyx_v_result))) {
+ PyObject* sequence = __pyx_v_result;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 2)) {
+ if (size > 2) __Pyx_RaiseTooManyValuesError(2);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 1401, __pyx_L9_error)
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1);
+ } else {
+ __pyx_t_4 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_2 = PyList_GET_ITEM(sequence, 1);
+ }
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_2);
+ #else
+ __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1401, __pyx_L9_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1401, __pyx_L9_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ #endif
+ } else {
+ Py_ssize_t index = -1;
+ __pyx_t_3 = PyObject_GetIter(__pyx_v_result); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1401, __pyx_L9_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3);
+ index = 0; __pyx_t_4 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_4)) goto __pyx_L17_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_4);
+ index = 1; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L17_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_2);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 1401, __pyx_L9_error)
+ __pyx_t_6 = NULL;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L18_unpacking_done;
+ __pyx_L17_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_6 = NULL;
+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+ __PYX_ERR(0, 1401, __pyx_L9_error)
+ __pyx_L18_unpacking_done:;
+ }
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1401, __pyx_L9_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_should_stop = __pyx_t_1;
+ __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_2);
+ __pyx_t_2 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1130
- * elif stop_on_plugin_breakpoint and plugin_manager is not None:
- * result = plugin_manager.suspend(main_debugger, thread, frame, bp_type)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1400
+ * if py_db.plugin is not None:
+ * result = py_db.plugin.exception_break(py_db, frame, thread, arg)
* if result: # <<<<<<<<<<<<<<
- * frame = result
- *
+ * should_stop, frame = result
+ * except:
*/
- }
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1128
- * )
- *
- * elif stop_on_plugin_breakpoint and plugin_manager is not None: # <<<<<<<<<<<<<<
- * result = plugin_manager.suspend(main_debugger, thread, frame, bp_type)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1398
+ * exception_breakpoint = None
+ * try:
+ * if py_db.plugin is not None: # <<<<<<<<<<<<<<
+ * result = py_db.plugin.exception_break(py_db, frame, thread, arg)
* if result:
+ */
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1397
+ * should_stop = False
+ * exception_breakpoint = None
+ * try: # <<<<<<<<<<<<<<
+ * if py_db.plugin is not None:
+ * result = py_db.plugin.exception_break(py_db, frame, thread, arg)
*/
}
- __pyx_L157:;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ goto __pyx_L14_try_end;
+ __pyx_L9_error:;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1134
+ /* "_pydevd_bundle/pydevd_cython.pyx":1402
+ * if result:
+ * should_stop, frame = result
+ * except: # <<<<<<<<<<<<<<
+ * pydev_log.exception()
*
- * # if thread has a suspend flag, we suspend with a busy wait
- * if info.pydev_state == 2: # <<<<<<<<<<<<<<
- * self.do_wait_suspend(thread, frame, event, arg)
- * return self.trace_dispatch
*/
- __pyx_t_9 = ((__pyx_v_info->pydev_state == 2) != 0);
- if (__pyx_t_9) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1135
- * # if thread has a suspend flag, we suspend with a busy wait
- * if info.pydev_state == 2:
- * self.do_wait_suspend(thread, frame, event, arg) # <<<<<<<<<<<<<<
- * return self.trace_dispatch
- * else:
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.should_stop_on_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 1402, __pyx_L11_except_error)
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_3);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1403
+ * should_stop, frame = result
+ * except:
+ * pydev_log.exception() # <<<<<<<<<<<<<<
+ *
+ * if not should_stop:
*/
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1135, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_6 = NULL;
- __pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_6)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1403, __pyx_L11_except_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_exception); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1403, __pyx_L11_except_error)
+ __Pyx_GOTREF(__pyx_t_13);
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_12 = NULL;
+ __pyx_t_11 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_13))) {
+ __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13);
+ if (likely(__pyx_t_12)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+ __Pyx_INCREF(__pyx_t_12);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
- __pyx_t_10 = 1;
+ __Pyx_DECREF_SET(__pyx_t_13, function);
+ __pyx_t_11 = 1;
}
}
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_v_thread, __pyx_v_frame, __pyx_v_event, __pyx_v_arg};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1135, __pyx_L104_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_v_thread, __pyx_v_frame, __pyx_v_event, __pyx_v_arg};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1135, __pyx_L104_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else
#endif
{
- __pyx_t_3 = PyTuple_New(4+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1135, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_3);
- if (__pyx_t_6) {
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL;
- }
- __Pyx_INCREF(__pyx_v_thread);
- __Pyx_GIVEREF(__pyx_v_thread);
- PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_10, __pyx_v_thread);
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_10, __pyx_v_frame);
- __Pyx_INCREF(__pyx_v_event);
- __Pyx_GIVEREF(__pyx_v_event);
- PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_10, __pyx_v_event);
- __Pyx_INCREF(__pyx_v_arg);
- __Pyx_GIVEREF(__pyx_v_arg);
- PyTuple_SET_ITEM(__pyx_t_3, 3+__pyx_t_10, __pyx_v_arg);
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1135, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- }
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1136
- * if info.pydev_state == 2:
- * self.do_wait_suspend(thread, frame, event, arg)
- * return self.trace_dispatch # <<<<<<<<<<<<<<
- * else:
- * if not breakpoint and is_line:
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1136, __pyx_L104_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_r = __pyx_t_7;
- __pyx_t_7 = 0;
- goto __pyx_L108_try_return;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1134
- *
- * # if thread has a suspend flag, we suspend with a busy wait
- * if info.pydev_state == 2: # <<<<<<<<<<<<<<
- * self.do_wait_suspend(thread, frame, event, arg)
- * return self.trace_dispatch
- */
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1138
- * return self.trace_dispatch
- * else:
- * if not breakpoint and is_line: # <<<<<<<<<<<<<<
- * # No stop from anyone and no breakpoint found in line (cache that).
- * frame_skips_cache[line_cache_key] = 0
- */
- /*else*/ {
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_v_breakpoint); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1138, __pyx_L104_error)
- __pyx_t_11 = ((!__pyx_t_14) != 0);
- if (__pyx_t_11) {
- } else {
- __pyx_t_9 = __pyx_t_11;
- goto __pyx_L165_bool_binop_done;
- }
- __pyx_t_11 = (__pyx_v_is_line != 0);
- __pyx_t_9 = __pyx_t_11;
- __pyx_L165_bool_binop_done:;
- if (__pyx_t_9) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1140
- * if not breakpoint and is_line:
- * # No stop from anyone and no breakpoint found in line (cache that).
- * frame_skips_cache[line_cache_key] = 0 # <<<<<<<<<<<<<<
- *
- * except:
- */
- if (unlikely(__pyx_v_frame_skips_cache == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 1140, __pyx_L104_error)
- }
- if (unlikely(PyDict_SetItem(__pyx_v_frame_skips_cache, __pyx_v_line_cache_key, __pyx_int_0) < 0)) __PYX_ERR(0, 1140, __pyx_L104_error)
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1138
- * return self.trace_dispatch
- * else:
- * if not breakpoint and is_line: # <<<<<<<<<<<<<<
- * # No stop from anyone and no breakpoint found in line (cache that).
- * frame_skips_cache[line_cache_key] = 0
- */
+ PyObject *__pyx_callargs[2] = {__pyx_t_12, NULL};
+ __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_13, __pyx_callargs+1-__pyx_t_11, 0+__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1403, __pyx_L11_except_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
}
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L10_exception_handled;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":1038
- * # if DEBUG: print('NOT skipped: %s %s %s %s' % (frame.f_lineno, frame.f_code.co_name, event, frame.__class__.__name__))
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":1397
+ * should_stop = False
+ * exception_breakpoint = None
* try: # <<<<<<<<<<<<<<
- * stop_on_plugin_breakpoint = False
- * # return is not taken into account for breakpoint hit because we'd have a double-hit in this case
+ * if py_db.plugin is not None:
+ * result = py_db.plugin.exception_break(py_db, frame, thread, arg)
*/
+ __pyx_L11_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_XGIVEREF(__pyx_t_10);
+ __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+ goto __pyx_L1_error;
+ __pyx_L10_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_XGIVEREF(__pyx_t_10);
+ __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+ __pyx_L14_try_end:;
}
- __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
- __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
- __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
- goto __pyx_L109_try_end;
- __pyx_L104_error:;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1142
- * frame_skips_cache[line_cache_key] = 0
+ /* "_pydevd_bundle/pydevd_cython.pyx":1405
+ * pydev_log.exception()
*
- * except: # <<<<<<<<<<<<<<
- * # Unfortunately Python itself stops the tracing when it originates from
- * # the tracing function, so, we can't do much about it (just let the user know).
+ * if not should_stop: # <<<<<<<<<<<<<<
+ * # Apply checks that don't need the exception breakpoint (where we shouldn't ever stop).
+ * if exception == SystemExit and py_db.ignore_system_exit_code(value):
*/
- /*except:*/ {
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_3) < 0) __PYX_ERR(0, 1142, __pyx_L106_except_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = (!__pyx_v_should_stop);
+ if (__pyx_t_1) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1145
- * # Unfortunately Python itself stops the tracing when it originates from
- * # the tracing function, so, we can't do much about it (just let the user know).
- * exc = sys.exc_info()[0] # <<<<<<<<<<<<<<
- * cmd = main_debugger.cmd_factory.make_console_message(
- * '%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n' % (exc, thread,))
+ /* "_pydevd_bundle/pydevd_cython.pyx":1407
+ * if not should_stop:
+ * # Apply checks that don't need the exception breakpoint (where we shouldn't ever stop).
+ * if exception == SystemExit and py_db.ignore_system_exit_code(value): # <<<<<<<<<<<<<<
+ * pass
+ *
*/
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_sys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1145, __pyx_L106_except_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1145, __pyx_L106_except_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
- }
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_exception, __pyx_builtin_SystemExit, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1407, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1407, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (__pyx_t_7) {
+ } else {
+ __pyx_t_1 = __pyx_t_7;
+ goto __pyx_L23_bool_binop_done;
}
- __pyx_t_6 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1145, __pyx_L106_except_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1145, __pyx_L106_except_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_v_exc = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1146
- * # the tracing function, so, we can't do much about it (just let the user know).
- * exc = sys.exc_info()[0]
- * cmd = main_debugger.cmd_factory.make_console_message( # <<<<<<<<<<<<<<
- * '%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n' % (exc, thread,))
- * main_debugger.writer.add_command(cmd)
- */
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_cmd_factory); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1146, __pyx_L106_except_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_make_console_message); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1146, __pyx_L106_except_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_ignore_system_exit_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1407, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1147
- * exc = sys.exc_info()[0]
- * cmd = main_debugger.cmd_factory.make_console_message(
- * '%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n' % (exc, thread,)) # <<<<<<<<<<<<<<
- * main_debugger.writer.add_command(cmd)
- * if not issubclass(exc, (KeyboardInterrupt, SystemExit)):
- */
- __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1147, __pyx_L106_except_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_INCREF(__pyx_v_exc);
- __Pyx_GIVEREF(__pyx_v_exc);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_exc);
- __Pyx_INCREF(__pyx_v_thread);
- __Pyx_GIVEREF(__pyx_v_thread);
- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_thread);
- __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_s_raised_from_within_the_callba, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1147, __pyx_L106_except_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_6)) {
+ __pyx_t_2 = NULL;
+ __pyx_t_11 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_11 = 1;
}
}
- __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2);
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L106_except_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF_SET(__pyx_v_cmd, __pyx_t_1);
- __pyx_t_1 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_value};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1407, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1407, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_1 = __pyx_t_7;
+ __pyx_L23_bool_binop_done:;
+ if (__pyx_t_1) {
+ goto __pyx_L22;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1148
- * cmd = main_debugger.cmd_factory.make_console_message(
- * '%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n' % (exc, thread,))
- * main_debugger.writer.add_command(cmd) # <<<<<<<<<<<<<<
- * if not issubclass(exc, (KeyboardInterrupt, SystemExit)):
- * pydev_log.exception()
+ /* "_pydevd_bundle/pydevd_cython.pyx":1410
+ * pass
+ *
+ * elif exception in (GeneratorExit, StopIteration, StopAsyncIteration): # <<<<<<<<<<<<<<
+ * # These exceptions are control-flow related (they work as a generator
+ * # pause), so, we shouldn't stop on them.
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_writer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1148, __pyx_L106_except_error)
+ __Pyx_INCREF(__pyx_v_exception);
+ __pyx_t_3 = __pyx_v_exception;
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_builtin_GeneratorExit, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1410, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1410, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!__pyx_t_7) {
+ } else {
+ __pyx_t_1 = __pyx_t_7;
+ goto __pyx_L25_bool_binop_done;
+ }
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_builtin_StopIteration, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1410, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1410, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!__pyx_t_7) {
+ } else {
+ __pyx_t_1 = __pyx_t_7;
+ goto __pyx_L25_bool_binop_done;
+ }
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_StopAsyncIteration); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1410, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_add_command); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1148, __pyx_L106_except_error)
- __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1410, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1410, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_1 = __pyx_t_7;
+ __pyx_L25_bool_binop_done:;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_7 = __pyx_t_1;
+ if (__pyx_t_7) {
+ goto __pyx_L22;
+ }
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1415
+ * pass
+ *
+ * elif ignore_exception_trace(trace): # <<<<<<<<<<<<<<
+ * pass
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ignore_exception_trace); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1415, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_11 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_11 = 1;
}
}
- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v_cmd) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_cmd);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1148, __pyx_L106_except_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_trace};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1415, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1415, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (__pyx_t_7) {
+ goto __pyx_L22;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1149
- * '%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n' % (exc, thread,))
- * main_debugger.writer.add_command(cmd)
- * if not issubclass(exc, (KeyboardInterrupt, SystemExit)): # <<<<<<<<<<<<<<
- * pydev_log.exception()
+ /* "_pydevd_bundle/pydevd_cython.pyx":1419
*
- */
- __pyx_t_9 = PyObject_IsSubclass(__pyx_v_exc, __pyx_tuple__4); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 1149, __pyx_L106_except_error)
- __pyx_t_11 = ((!(__pyx_t_9 != 0)) != 0);
- if (__pyx_t_11) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1150
- * main_debugger.writer.add_command(cmd)
- * if not issubclass(exc, (KeyboardInterrupt, SystemExit)):
- * pydev_log.exception() # <<<<<<<<<<<<<<
+ * else:
+ * was_just_raised = just_raised(trace) # <<<<<<<<<<<<<<
*
- * raise
+ * # It was not handled by any plugin, lets check exception breakpoints.
*/
- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1150, __pyx_L106_except_error)
+ /*else*/ {
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_just_raised); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1419, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_exception); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1150, __pyx_L106_except_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_2)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_2);
+ __pyx_t_4 = NULL;
+ __pyx_t_11 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_11 = 1;
}
}
- __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1150, __pyx_L106_except_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1149
- * '%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n' % (exc, thread,))
- * main_debugger.writer.add_command(cmd)
- * if not issubclass(exc, (KeyboardInterrupt, SystemExit)): # <<<<<<<<<<<<<<
- * pydev_log.exception()
- *
- */
- }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_trace};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1419, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1419, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_v_was_just_raised = __pyx_t_7;
- /* "_pydevd_bundle/pydevd_cython.pyx":1152
- * pydev_log.exception()
+ /* "_pydevd_bundle/pydevd_cython.pyx":1422
*
- * raise # <<<<<<<<<<<<<<
+ * # It was not handled by any plugin, lets check exception breakpoints.
+ * check_excs = [] # <<<<<<<<<<<<<<
*
- * # step handling. We stop when we hit the right frame
+ * # Note: check user unhandled before regular exceptions.
*/
- __Pyx_GIVEREF(__pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_8);
- __Pyx_XGIVEREF(__pyx_t_3);
- __Pyx_ErrRestoreWithState(__pyx_t_7, __pyx_t_8, __pyx_t_3);
- __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_3 = 0;
- __PYX_ERR(0, 1152, __pyx_L106_except_error)
- }
- __pyx_L106_except_error:;
+ __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1422, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_v_check_excs = ((PyObject*)__pyx_t_3);
+ __pyx_t_3 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1038
- * # if DEBUG: print('NOT skipped: %s %s %s %s' % (frame.f_lineno, frame.f_code.co_name, event, frame.__class__.__name__))
+ /* "_pydevd_bundle/pydevd_cython.pyx":1425
*
- * try: # <<<<<<<<<<<<<<
- * stop_on_plugin_breakpoint = False
- * # return is not taken into account for breakpoint hit because we'd have a double-hit in this case
+ * # Note: check user unhandled before regular exceptions.
+ * exc_break_user = py_db.get_exception_breakpoint(exception, py_db.break_on_user_uncaught_exceptions) # <<<<<<<<<<<<<<
+ * if exc_break_user is not None:
+ * check_excs.append((exc_break_user, True))
*/
- __Pyx_XGIVEREF(__pyx_t_18);
- __Pyx_XGIVEREF(__pyx_t_17);
- __Pyx_XGIVEREF(__pyx_t_16);
- __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_17, __pyx_t_16);
- goto __pyx_L4_error;
- __pyx_L108_try_return:;
- __Pyx_XGIVEREF(__pyx_t_18);
- __Pyx_XGIVEREF(__pyx_t_17);
- __Pyx_XGIVEREF(__pyx_t_16);
- __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_17, __pyx_t_16);
- goto __pyx_L3_return;
- __pyx_L109_try_end:;
- }
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_get_exception_breakpoint); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1425, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_break_on_user_uncaught_exception); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1425, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = NULL;
+ __pyx_t_11 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_11 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_exception, __pyx_t_4};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_11, 2+__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1425, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_v_exc_break_user = __pyx_t_3;
+ __pyx_t_3 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1155
+ /* "_pydevd_bundle/pydevd_cython.pyx":1426
+ * # Note: check user unhandled before regular exceptions.
+ * exc_break_user = py_db.get_exception_breakpoint(exception, py_db.break_on_user_uncaught_exceptions)
+ * if exc_break_user is not None: # <<<<<<<<<<<<<<
+ * check_excs.append((exc_break_user, True))
*
- * # step handling. We stop when we hit the right frame
- * try: # <<<<<<<<<<<<<<
- * should_skip = 0
- * if pydevd_dont_trace.should_trace_hook is not None:
- */
- {
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __Pyx_ExceptionSave(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
- __Pyx_XGOTREF(__pyx_t_16);
- __Pyx_XGOTREF(__pyx_t_17);
- __Pyx_XGOTREF(__pyx_t_18);
- /*try:*/ {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1156
- * # step handling. We stop when we hit the right frame
- * try:
- * should_skip = 0 # <<<<<<<<<<<<<<
- * if pydevd_dont_trace.should_trace_hook is not None:
- * if self.should_skip == -1:
- */
- __pyx_v_should_skip = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1157
- * try:
- * should_skip = 0
- * if pydevd_dont_trace.should_trace_hook is not None: # <<<<<<<<<<<<<<
- * if self.should_skip == -1:
- * # I.e.: cache the result on self.should_skip (no need to evaluate the same frame multiple times).
- */
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pydevd_dont_trace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1157, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_should_trace_hook); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1157, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_11 = (__pyx_t_8 != Py_None);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_9 = (__pyx_t_11 != 0);
- if (__pyx_t_9) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1158
- * should_skip = 0
- * if pydevd_dont_trace.should_trace_hook is not None:
- * if self.should_skip == -1: # <<<<<<<<<<<<<<
- * # I.e.: cache the result on self.should_skip (no need to evaluate the same frame multiple times).
- * # Note that on a code reload, we won't re-evaluate this because in practice, the frame.f_code
*/
- __pyx_t_9 = ((__pyx_v_self->should_skip == -1L) != 0);
- if (__pyx_t_9) {
+ __pyx_t_7 = (__pyx_v_exc_break_user != Py_None);
+ if (__pyx_t_7) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1162
- * # Note that on a code reload, we won't re-evaluate this because in practice, the frame.f_code
- * # Which will be handled by this frame is read-only, so, we can cache it safely.
- * if not pydevd_dont_trace.should_trace_hook(frame, abs_path_canonical_path_and_base[0]): # <<<<<<<<<<<<<<
- * # -1, 0, 1 to be Cython-friendly
- * should_skip = self.should_skip = 1
+ /* "_pydevd_bundle/pydevd_cython.pyx":1427
+ * exc_break_user = py_db.get_exception_breakpoint(exception, py_db.break_on_user_uncaught_exceptions)
+ * if exc_break_user is not None:
+ * check_excs.append((exc_break_user, True)) # <<<<<<<<<<<<<<
+ *
+ * exc_break_caught = py_db.get_exception_breakpoint(exception, py_db.break_on_caught_exceptions)
*/
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pydevd_dont_trace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1162, __pyx_L170_error)
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1427, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_should_trace_hook); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1162, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_INCREF(__pyx_v_exc_break_user);
+ __Pyx_GIVEREF(__pyx_v_exc_break_user);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_exc_break_user)) __PYX_ERR(0, 1427, __pyx_L1_error);
+ __Pyx_INCREF(Py_True);
+ __Pyx_GIVEREF(Py_True);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, Py_True)) __PYX_ERR(0, 1427, __pyx_L1_error);
+ __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_check_excs, __pyx_t_3); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 1427, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(__pyx_v_abs_path_canonical_path_and_base == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 1162, __pyx_L170_error)
- }
- __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_abs_path_canonical_path_and_base, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1162, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = NULL;
- __pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
- if (likely(__pyx_t_1)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_7, function);
- __pyx_t_10 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_frame, __pyx_t_3};
- __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1162, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_frame, __pyx_t_3};
- __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1162, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1162, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (__pyx_t_1) {
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
- }
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_10, __pyx_v_frame);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_10, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1162, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1162, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_11 = ((!__pyx_t_9) != 0);
- if (__pyx_t_11) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1164
- * if not pydevd_dont_trace.should_trace_hook(frame, abs_path_canonical_path_and_base[0]):
- * # -1, 0, 1 to be Cython-friendly
- * should_skip = self.should_skip = 1 # <<<<<<<<<<<<<<
- * else:
- * should_skip = self.should_skip = 0
- */
- __pyx_v_should_skip = 1;
- __pyx_v_self->should_skip = 1;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1162
- * # Note that on a code reload, we won't re-evaluate this because in practice, the frame.f_code
- * # Which will be handled by this frame is read-only, so, we can cache it safely.
- * if not pydevd_dont_trace.should_trace_hook(frame, abs_path_canonical_path_and_base[0]): # <<<<<<<<<<<<<<
- * # -1, 0, 1 to be Cython-friendly
- * should_skip = self.should_skip = 1
- */
- goto __pyx_L178;
- }
- /* "_pydevd_bundle/pydevd_cython.pyx":1166
- * should_skip = self.should_skip = 1
- * else:
- * should_skip = self.should_skip = 0 # <<<<<<<<<<<<<<
- * else:
- * should_skip = self.should_skip
- */
- /*else*/ {
- __pyx_v_should_skip = 0;
- __pyx_v_self->should_skip = 0;
- }
- __pyx_L178:;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1158
- * should_skip = 0
- * if pydevd_dont_trace.should_trace_hook is not None:
- * if self.should_skip == -1: # <<<<<<<<<<<<<<
- * # I.e.: cache the result on self.should_skip (no need to evaluate the same frame multiple times).
- * # Note that on a code reload, we won't re-evaluate this because in practice, the frame.f_code
- */
- goto __pyx_L177;
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1168
- * should_skip = self.should_skip = 0
- * else:
- * should_skip = self.should_skip # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1426
+ * # Note: check user unhandled before regular exceptions.
+ * exc_break_user = py_db.get_exception_breakpoint(exception, py_db.break_on_user_uncaught_exceptions)
+ * if exc_break_user is not None: # <<<<<<<<<<<<<<
+ * check_excs.append((exc_break_user, True))
*
- * plugin_stop = False
*/
- /*else*/ {
- __pyx_t_10 = __pyx_v_self->should_skip;
- __pyx_v_should_skip = __pyx_t_10;
}
- __pyx_L177:;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1157
- * try:
- * should_skip = 0
- * if pydevd_dont_trace.should_trace_hook is not None: # <<<<<<<<<<<<<<
- * if self.should_skip == -1:
- * # I.e.: cache the result on self.should_skip (no need to evaluate the same frame multiple times).
- */
- }
- /* "_pydevd_bundle/pydevd_cython.pyx":1170
- * should_skip = self.should_skip
+ /* "_pydevd_bundle/pydevd_cython.pyx":1429
+ * check_excs.append((exc_break_user, True))
*
- * plugin_stop = False # <<<<<<<<<<<<<<
- * if should_skip:
- * stop = False
+ * exc_break_caught = py_db.get_exception_breakpoint(exception, py_db.break_on_caught_exceptions) # <<<<<<<<<<<<<<
+ * if exc_break_caught is not None:
+ * check_excs.append((exc_break_caught, False))
*/
- __Pyx_INCREF(Py_False);
- __pyx_v_plugin_stop = Py_False;
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_get_exception_breakpoint); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1429, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_break_on_caught_exceptions); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1429, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = NULL;
+ __pyx_t_11 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_11 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_exception, __pyx_t_4};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_11, 2+__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1429, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_v_exc_break_caught = __pyx_t_3;
+ __pyx_t_3 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1171
+ /* "_pydevd_bundle/pydevd_cython.pyx":1430
*
- * plugin_stop = False
- * if should_skip: # <<<<<<<<<<<<<<
- * stop = False
+ * exc_break_caught = py_db.get_exception_breakpoint(exception, py_db.break_on_caught_exceptions)
+ * if exc_break_caught is not None: # <<<<<<<<<<<<<<
+ * check_excs.append((exc_break_caught, False))
*
*/
- __pyx_t_11 = (__pyx_v_should_skip != 0);
- if (__pyx_t_11) {
+ __pyx_t_7 = (__pyx_v_exc_break_caught != Py_None);
+ if (__pyx_t_7) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1172
- * plugin_stop = False
- * if should_skip:
- * stop = False # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1431
+ * exc_break_caught = py_db.get_exception_breakpoint(exception, py_db.break_on_caught_exceptions)
+ * if exc_break_caught is not None:
+ * check_excs.append((exc_break_caught, False)) # <<<<<<<<<<<<<<
*
- * elif step_cmd in (107, 144, 206):
+ * for exc_break, is_user_uncaught in check_excs:
*/
- __pyx_v_stop = 0;
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1431, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_v_exc_break_caught);
+ __Pyx_GIVEREF(__pyx_v_exc_break_caught);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_exc_break_caught)) __PYX_ERR(0, 1431, __pyx_L1_error);
+ __Pyx_INCREF(Py_False);
+ __Pyx_GIVEREF(Py_False);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, Py_False)) __PYX_ERR(0, 1431, __pyx_L1_error);
+ __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_check_excs, __pyx_t_3); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 1431, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1171
- *
- * plugin_stop = False
- * if should_skip: # <<<<<<<<<<<<<<
- * stop = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1430
*
- */
- goto __pyx_L179;
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1174
- * stop = False
+ * exc_break_caught = py_db.get_exception_breakpoint(exception, py_db.break_on_caught_exceptions)
+ * if exc_break_caught is not None: # <<<<<<<<<<<<<<
+ * check_excs.append((exc_break_caught, False))
*
- * elif step_cmd in (107, 144, 206): # <<<<<<<<<<<<<<
- * force_check_project_scope = step_cmd == 144
- * if is_line:
*/
- switch (__pyx_v_step_cmd) {
- case 0x6B:
- case 0x90:
- case 0xCE:
- __pyx_t_11 = 1;
- break;
- default:
- __pyx_t_11 = 0;
- break;
- }
- __pyx_t_9 = (__pyx_t_11 != 0);
- if (__pyx_t_9) {
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1175
+ /* "_pydevd_bundle/pydevd_cython.pyx":1433
+ * check_excs.append((exc_break_caught, False))
*
- * elif step_cmd in (107, 144, 206):
- * force_check_project_scope = step_cmd == 144 # <<<<<<<<<<<<<<
- * if is_line:
- * if not info.pydev_use_scoped_step_frame:
- */
- __pyx_t_8 = __Pyx_PyBool_FromLong((__pyx_v_step_cmd == 0x90)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1175, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_v_force_check_project_scope = __pyx_t_8;
- __pyx_t_8 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1176
- * elif step_cmd in (107, 144, 206):
- * force_check_project_scope = step_cmd == 144
- * if is_line: # <<<<<<<<<<<<<<
- * if not info.pydev_use_scoped_step_frame:
- * if force_check_project_scope or main_debugger.is_files_filter_enabled:
- */
- __pyx_t_9 = (__pyx_v_is_line != 0);
- if (__pyx_t_9) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1177
- * force_check_project_scope = step_cmd == 144
- * if is_line:
- * if not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
- * if force_check_project_scope or main_debugger.is_files_filter_enabled:
- * stop = not main_debugger.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope)
+ * for exc_break, is_user_uncaught in check_excs: # <<<<<<<<<<<<<<
+ * # Initially mark that it should stop and then go into exclusions.
+ * should_stop = True
*/
- __pyx_t_9 = ((!(__pyx_v_info->pydev_use_scoped_step_frame != 0)) != 0);
- if (__pyx_t_9) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1178
- * if is_line:
- * if not info.pydev_use_scoped_step_frame:
- * if force_check_project_scope or main_debugger.is_files_filter_enabled: # <<<<<<<<<<<<<<
- * stop = not main_debugger.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope)
- * else:
- */
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_force_check_project_scope); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1178, __pyx_L170_error)
- if (!__pyx_t_11) {
+ __pyx_t_3 = __pyx_v_check_excs; __Pyx_INCREF(__pyx_t_3);
+ __pyx_t_15 = 0;
+ for (;;) {
+ {
+ Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
+ #if !CYTHON_ASSUME_SAFE_MACROS
+ if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1433, __pyx_L1_error)
+ #endif
+ if (__pyx_t_15 >= __pyx_temp) break;
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_15); __Pyx_INCREF(__pyx_t_2); __pyx_t_15++; if (unlikely((0 < 0))) __PYX_ERR(0, 1433, __pyx_L1_error)
+ #else
+ __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1433, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ #endif
+ if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
+ PyObject* sequence = __pyx_t_2;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 2)) {
+ if (size > 2) __Pyx_RaiseTooManyValuesError(2);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 1433, __pyx_L1_error)
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1);
} else {
- __pyx_t_9 = __pyx_t_11;
- goto __pyx_L183_bool_binop_done;
+ __pyx_t_4 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_5 = PyList_GET_ITEM(sequence, 1);
}
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_is_files_filter_enabled); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1178, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1178, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_9 = __pyx_t_11;
- __pyx_L183_bool_binop_done:;
- if (__pyx_t_9) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1179
- * if not info.pydev_use_scoped_step_frame:
- * if force_check_project_scope or main_debugger.is_files_filter_enabled:
- * stop = not main_debugger.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope) # <<<<<<<<<<<<<<
- * else:
- * stop = True
- */
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1179, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1179, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1179, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = NULL;
- __pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_7, function);
- __pyx_t_10 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_frame, __pyx_t_3, __pyx_v_force_check_project_scope};
- __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1179, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_frame, __pyx_t_3, __pyx_v_force_check_project_scope};
- __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1179, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_1 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1179, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (__pyx_t_4) {
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL;
- }
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_10, __pyx_v_frame);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_10, __pyx_t_3);
- __Pyx_INCREF(__pyx_v_force_check_project_scope);
- __Pyx_GIVEREF(__pyx_v_force_check_project_scope);
- PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_10, __pyx_v_force_check_project_scope);
- __pyx_t_3 = 0;
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1179, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1179, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_v_stop = (!__pyx_t_9);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_5);
+ #else
+ __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1433, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1433, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ #endif
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ } else {
+ Py_ssize_t index = -1;
+ __pyx_t_13 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1433, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_13);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_13);
+ index = 0; __pyx_t_4 = __pyx_t_6(__pyx_t_13); if (unlikely(!__pyx_t_4)) goto __pyx_L32_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_4);
+ index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_13); if (unlikely(!__pyx_t_5)) goto __pyx_L32_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_5);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_13), 2) < 0) __PYX_ERR(0, 1433, __pyx_L1_error)
+ __pyx_t_6 = NULL;
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+ goto __pyx_L33_unpacking_done;
+ __pyx_L32_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __pyx_t_6 = NULL;
+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+ __PYX_ERR(0, 1433, __pyx_L1_error)
+ __pyx_L33_unpacking_done:;
+ }
+ __Pyx_XDECREF_SET(__pyx_v_exc_break, __pyx_t_4);
+ __pyx_t_4 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_is_user_uncaught, __pyx_t_5);
+ __pyx_t_5 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1178
- * if is_line:
- * if not info.pydev_use_scoped_step_frame:
- * if force_check_project_scope or main_debugger.is_files_filter_enabled: # <<<<<<<<<<<<<<
- * stop = not main_debugger.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope)
- * else:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1435
+ * for exc_break, is_user_uncaught in check_excs:
+ * # Initially mark that it should stop and then go into exclusions.
+ * should_stop = True # <<<<<<<<<<<<<<
+ *
+ * if py_db.exclude_exception_by_filter(exc_break, trace):
*/
- goto __pyx_L182;
- }
+ __pyx_v_should_stop = 1;
- /* "_pydevd_bundle/pydevd_cython.pyx":1181
- * stop = not main_debugger.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope)
- * else:
- * stop = True # <<<<<<<<<<<<<<
- * else:
- * if force_check_project_scope or main_debugger.is_files_filter_enabled:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1437
+ * should_stop = True
+ *
+ * if py_db.exclude_exception_by_filter(exc_break, trace): # <<<<<<<<<<<<<<
+ * pydev_log.debug(
+ * "Ignore exception %s in library %s -- (%s)" % (exception, frame.f_code.co_filename, frame.f_code.co_name)
*/
- /*else*/ {
- __pyx_v_stop = 1;
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_exclude_exception_by_filter); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1437, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_4 = NULL;
+ __pyx_t_11 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ __pyx_t_11 = 1;
}
- __pyx_L182:;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1177
- * force_check_project_scope = step_cmd == 144
- * if is_line:
- * if not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
- * if force_check_project_scope or main_debugger.is_files_filter_enabled:
- * stop = not main_debugger.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope)
- */
- goto __pyx_L181;
}
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_exc_break, __pyx_v_trace};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_11, 2+__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1437, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ }
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1437, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (__pyx_t_7) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1183
- * stop = True
- * else:
- * if force_check_project_scope or main_debugger.is_files_filter_enabled: # <<<<<<<<<<<<<<
- * # Make sure we check the filtering inside ipython calls too...
- * if not not main_debugger.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope):
+ /* "_pydevd_bundle/pydevd_cython.pyx":1438
+ *
+ * if py_db.exclude_exception_by_filter(exc_break, trace):
+ * pydev_log.debug( # <<<<<<<<<<<<<<
+ * "Ignore exception %s in library %s -- (%s)" % (exception, frame.f_code.co_filename, frame.f_code.co_name)
+ * )
*/
- /*else*/ {
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_force_check_project_scope); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1183, __pyx_L170_error)
- if (!__pyx_t_11) {
- } else {
- __pyx_t_9 = __pyx_t_11;
- goto __pyx_L186_bool_binop_done;
- }
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_is_files_filter_enabled); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1183, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1183, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_9 = __pyx_t_11;
- __pyx_L186_bool_binop_done:;
- if (__pyx_t_9) {
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1438, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_debug); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1438, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1185
- * if force_check_project_scope or main_debugger.is_files_filter_enabled:
- * # Make sure we check the filtering inside ipython calls too...
- * if not not main_debugger.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope): # <<<<<<<<<<<<<<
- * return None if is_call else NO_FTRACE
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":1439
+ * if py_db.exclude_exception_by_filter(exc_break, trace):
+ * pydev_log.debug(
+ * "Ignore exception %s in library %s -- (%s)" % (exception, frame.f_code.co_filename, frame.f_code.co_name) # <<<<<<<<<<<<<<
+ * )
+ * should_stop = False
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1185, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1185, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1185, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = NULL;
- __pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
- if (likely(__pyx_t_1)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_7, function);
- __pyx_t_10 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[4] = {__pyx_t_1, __pyx_v_frame, __pyx_t_3, __pyx_v_force_check_project_scope};
- __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1185, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[4] = {__pyx_t_1, __pyx_v_frame, __pyx_t_3, __pyx_v_force_check_project_scope};
- __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1185, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1185, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (__pyx_t_1) {
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
- }
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_10, __pyx_v_frame);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_10, __pyx_t_3);
- __Pyx_INCREF(__pyx_v_force_check_project_scope);
- __Pyx_GIVEREF(__pyx_v_force_check_project_scope);
- PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_10, __pyx_v_force_check_project_scope);
- __pyx_t_3 = 0;
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1185, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1439, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1439, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_13);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1439, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_co_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1439, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1439, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_INCREF(__pyx_v_exception);
+ __Pyx_GIVEREF(__pyx_v_exception);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_exception)) __PYX_ERR(0, 1439, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_13);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_13)) __PYX_ERR(0, 1439, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_12);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_12)) __PYX_ERR(0, 1439, __pyx_L1_error);
+ __pyx_t_13 = 0;
+ __pyx_t_12 = 0;
+ __pyx_t_12 = __Pyx_PyString_Format(__pyx_kp_s_Ignore_exception_s_in_library_s, __pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1439, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = NULL;
+ __pyx_t_11 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_11 = 1;
}
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1185, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_11 = ((!((!__pyx_t_9) != 0)) != 0);
- if (__pyx_t_11) {
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_12};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1438, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1186
- * # Make sure we check the filtering inside ipython calls too...
- * if not not main_debugger.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope):
- * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1441
+ * "Ignore exception %s in library %s -- (%s)" % (exception, frame.f_code.co_filename, frame.f_code.co_name)
+ * )
+ * should_stop = False # <<<<<<<<<<<<<<
*
- * # We can only stop inside the ipython call.
+ * elif exc_break.condition is not None and not py_db.handle_breakpoint_condition(info, exc_break, frame):
*/
- __Pyx_XDECREF(__pyx_r);
- if ((__pyx_v_is_call != 0)) {
- __Pyx_INCREF(Py_None);
- __pyx_t_8 = Py_None;
- } else {
- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1186, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __pyx_t_7;
- __pyx_t_7 = 0;
- }
- __pyx_r = __pyx_t_8;
- __pyx_t_8 = 0;
- goto __pyx_L174_try_return;
+ __pyx_v_should_stop = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1185
- * if force_check_project_scope or main_debugger.is_files_filter_enabled:
- * # Make sure we check the filtering inside ipython calls too...
- * if not not main_debugger.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope): # <<<<<<<<<<<<<<
- * return None if is_call else NO_FTRACE
+ /* "_pydevd_bundle/pydevd_cython.pyx":1437
+ * should_stop = True
*
+ * if py_db.exclude_exception_by_filter(exc_break, trace): # <<<<<<<<<<<<<<
+ * pydev_log.debug(
+ * "Ignore exception %s in library %s -- (%s)" % (exception, frame.f_code.co_filename, frame.f_code.co_name)
*/
- }
+ goto __pyx_L34;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1183
- * stop = True
- * else:
- * if force_check_project_scope or main_debugger.is_files_filter_enabled: # <<<<<<<<<<<<<<
- * # Make sure we check the filtering inside ipython calls too...
- * if not not main_debugger.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope):
+ /* "_pydevd_bundle/pydevd_cython.pyx":1443
+ * should_stop = False
+ *
+ * elif exc_break.condition is not None and not py_db.handle_breakpoint_condition(info, exc_break, frame): # <<<<<<<<<<<<<<
+ * should_stop = False
+ *
*/
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc_break, __pyx_n_s_condition); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1443, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = (__pyx_t_2 != Py_None);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (__pyx_t_1) {
+ } else {
+ __pyx_t_7 = __pyx_t_1;
+ goto __pyx_L35_bool_binop_done;
+ }
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_handle_breakpoint_condition); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1443, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_12 = NULL;
+ __pyx_t_11 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_12)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_12);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_11 = 1;
}
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_12, ((PyObject *)__pyx_v_info), __pyx_v_exc_break, __pyx_v_frame};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_11, 3+__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1443, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1443, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_16 = (!__pyx_t_1);
+ __pyx_t_7 = __pyx_t_16;
+ __pyx_L35_bool_binop_done:;
+ if (__pyx_t_7) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1189
+ /* "_pydevd_bundle/pydevd_cython.pyx":1444
*
- * # We can only stop inside the ipython call.
- * filename = frame.f_code.co_filename # <<<<<<<<<<<<<<
- * if filename.endswith('.pyc'):
- * filename = filename[:-1]
+ * elif exc_break.condition is not None and not py_db.handle_breakpoint_condition(info, exc_break, frame):
+ * should_stop = False # <<<<<<<<<<<<<<
+ *
+ * elif is_user_uncaught:
*/
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1189, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1189, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_v_filename = __pyx_t_7;
- __pyx_t_7 = 0;
+ __pyx_v_should_stop = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1190
- * # We can only stop inside the ipython call.
- * filename = frame.f_code.co_filename
- * if filename.endswith('.pyc'): # <<<<<<<<<<<<<<
- * filename = filename[:-1]
+ /* "_pydevd_bundle/pydevd_cython.pyx":1443
+ * should_stop = False
+ *
+ * elif exc_break.condition is not None and not py_db.handle_breakpoint_condition(info, exc_break, frame): # <<<<<<<<<<<<<<
+ * should_stop = False
*
*/
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_filename, __pyx_n_s_endswith); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1190, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
- }
- }
- __pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_4, __pyx_kp_s_pyc) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_kp_s_pyc);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1190, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1190, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_11) {
+ goto __pyx_L34;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1191
- * filename = frame.f_code.co_filename
- * if filename.endswith('.pyc'):
- * filename = filename[:-1] # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1446
+ * should_stop = False
*
- * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]):
+ * elif is_user_uncaught: # <<<<<<<<<<<<<<
+ * # Note: we don't stop here, we just collect the exc_info to use later on...
+ * should_stop = False
*/
- __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_filename, 0, -1L, NULL, NULL, &__pyx_slice__5, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1191, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_7);
- __pyx_t_7 = 0;
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_is_user_uncaught); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1446, __pyx_L1_error)
+ if (__pyx_t_7) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1190
- * # We can only stop inside the ipython call.
- * filename = frame.f_code.co_filename
- * if filename.endswith('.pyc'): # <<<<<<<<<<<<<<
- * filename = filename[:-1]
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":1448
+ * elif is_user_uncaught:
+ * # Note: we don't stop here, we just collect the exc_info to use later on...
+ * should_stop = False # <<<<<<<<<<<<<<
+ * if not py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and (
+ * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)
*/
- }
+ __pyx_v_should_stop = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1193
- * filename = filename[:-1]
- *
- * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]): # <<<<<<<<<<<<<<
- * f = frame.f_back
- * while f is not None:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1449
+ * # Note: we don't stop here, we just collect the exc_info to use later on...
+ * should_stop = False
+ * if not py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and ( # <<<<<<<<<<<<<<
+ * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)
+ * ):
*/
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_filename, __pyx_n_s_endswith); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1193, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1193, __pyx_L170_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1449, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1193, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_4);
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1449, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1449, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_12 = NULL;
+ __pyx_t_11 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_12)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_12);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_11 = 1;
}
}
- __pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1193, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1193, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_9 = ((!__pyx_t_11) != 0);
- if (__pyx_t_9) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1194
- *
- * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]):
- * f = frame.f_back # <<<<<<<<<<<<<<
- * while f is not None:
- * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
- */
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1194, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_XDECREF_SET(__pyx_v_f, __pyx_t_7);
- __pyx_t_7 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1195
- * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]):
- * f = frame.f_back
- * while f is not None: # <<<<<<<<<<<<<<
- * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
- * f2 = f.f_back
- */
- while (1) {
- __pyx_t_9 = (__pyx_v_f != Py_None);
- __pyx_t_11 = (__pyx_t_9 != 0);
- if (!__pyx_t_11) break;
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_12, __pyx_v_frame, __pyx_t_5, Py_True};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_11, 3+__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1449, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1449, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_1 = (!__pyx_t_16);
+ if (__pyx_t_1) {
+ } else {
+ __pyx_t_7 = __pyx_t_1;
+ goto __pyx_L38_bool_binop_done;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1196
- * f = frame.f_back
- * while f is not None:
- * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: # <<<<<<<<<<<<<<
- * f2 = f.f_back
- * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1450
+ * should_stop = False
+ * if not py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and (
+ * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) # <<<<<<<<<<<<<<
+ * ):
+ * # User uncaught means that we're currently in user code but the code
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1196, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_co_name); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1196, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1196, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1196, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyObject_RichCompare(__pyx_t_8, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1196, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1196, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_11) {
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1450, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = (__pyx_t_2 == Py_None);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (!__pyx_t_1) {
+ } else {
+ __pyx_t_7 = __pyx_t_1;
+ goto __pyx_L38_bool_binop_done;
+ }
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1450, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1450, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1450, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_f_code); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1450, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_13);
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1450, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __pyx_t_13 = NULL;
+ __pyx_t_11 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_13)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_13);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_11 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_5, __pyx_t_12, Py_True};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_11, 3+__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1450, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1450, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_7 = __pyx_t_1;
+ __pyx_L38_bool_binop_done:;
- /* "_pydevd_bundle/pydevd_cython.pyx":1197
- * while f is not None:
- * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
- * f2 = f.f_back # <<<<<<<<<<<<<<
- * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
- * pydev_log.debug('Stop inside ipython call')
+ /* "_pydevd_bundle/pydevd_cython.pyx":1449
+ * # Note: we don't stop here, we just collect the exc_info to use later on...
+ * should_stop = False
+ * if not py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and ( # <<<<<<<<<<<<<<
+ * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)
+ * ):
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1197, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_XDECREF_SET(__pyx_v_f2, __pyx_t_7);
- __pyx_t_7 = 0;
+ if (__pyx_t_7) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1198
- * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
- * f2 = f.f_back
- * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: # <<<<<<<<<<<<<<
- * pydev_log.debug('Stop inside ipython call')
- * stop = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":1454
+ * # User uncaught means that we're currently in user code but the code
+ * # up the stack is library code.
+ * exc_info = prev_user_uncaught_exc_info # <<<<<<<<<<<<<<
+ * if not exc_info:
+ * exc_info = (arg, frame.f_lineno, set([frame.f_lineno]))
+ */
+ __Pyx_INCREF(__pyx_v_prev_user_uncaught_exc_info);
+ __Pyx_XDECREF_SET(__pyx_v_exc_info, __pyx_v_prev_user_uncaught_exc_info);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1455
+ * # up the stack is library code.
+ * exc_info = prev_user_uncaught_exc_info
+ * if not exc_info: # <<<<<<<<<<<<<<
+ * exc_info = (arg, frame.f_lineno, set([frame.f_lineno]))
+ * else:
*/
- __pyx_t_9 = (__pyx_v_f2 != Py_None);
- __pyx_t_14 = (__pyx_t_9 != 0);
- if (__pyx_t_14) {
- } else {
- __pyx_t_11 = __pyx_t_14;
- goto __pyx_L195_bool_binop_done;
- }
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_f2, __pyx_n_s_f_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1198, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_co_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1198, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1198, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1198, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyObject_RichCompare(__pyx_t_3, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1198, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1198, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_11 = __pyx_t_14;
- __pyx_L195_bool_binop_done:;
- if (__pyx_t_11) {
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_exc_info); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1455, __pyx_L1_error)
+ __pyx_t_1 = (!__pyx_t_7);
+ if (__pyx_t_1) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1199
- * f2 = f.f_back
- * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
- * pydev_log.debug('Stop inside ipython call') # <<<<<<<<<<<<<<
- * stop = True
- * break
+ /* "_pydevd_bundle/pydevd_cython.pyx":1456
+ * exc_info = prev_user_uncaught_exc_info
+ * if not exc_info:
+ * exc_info = (arg, frame.f_lineno, set([frame.f_lineno])) # <<<<<<<<<<<<<<
+ * else:
+ * lines = exc_info[2]
*/
- __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1199, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1199, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_8);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
- }
- }
- __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_8, __pyx_kp_s_Stop_inside_ipython_call) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_Stop_inside_ipython_call);
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1199, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1456, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1456, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_12 = PySet_New(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1456, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ if (PySet_Add(__pyx_t_12, __pyx_t_4) < 0) __PYX_ERR(0, 1456, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1456, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_v_arg);
+ __Pyx_GIVEREF(__pyx_v_arg);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_arg)) __PYX_ERR(0, 1456, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_2);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2)) __PYX_ERR(0, 1456, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_12);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_12)) __PYX_ERR(0, 1456, __pyx_L1_error);
+ __pyx_t_2 = 0;
+ __pyx_t_12 = 0;
+ __Pyx_DECREF_SET(__pyx_v_exc_info, __pyx_t_4);
+ __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1200
- * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
- * pydev_log.debug('Stop inside ipython call')
- * stop = True # <<<<<<<<<<<<<<
- * break
- * f = f.f_back
+ /* "_pydevd_bundle/pydevd_cython.pyx":1455
+ * # up the stack is library code.
+ * exc_info = prev_user_uncaught_exc_info
+ * if not exc_info: # <<<<<<<<<<<<<<
+ * exc_info = (arg, frame.f_lineno, set([frame.f_lineno]))
+ * else:
*/
- __pyx_v_stop = 1;
+ goto __pyx_L41;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1201
- * pydev_log.debug('Stop inside ipython call')
- * stop = True
- * break # <<<<<<<<<<<<<<
- * f = f.f_back
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":1458
+ * exc_info = (arg, frame.f_lineno, set([frame.f_lineno]))
+ * else:
+ * lines = exc_info[2] # <<<<<<<<<<<<<<
+ * lines.add(frame.f_lineno)
+ * exc_info = (arg, frame.f_lineno, lines)
*/
- goto __pyx_L192_break;
+ /*else*/ {
+ __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_exc_info, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1458, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_XDECREF_SET(__pyx_v_lines, __pyx_t_4);
+ __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1198
- * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
- * f2 = f.f_back
- * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: # <<<<<<<<<<<<<<
- * pydev_log.debug('Stop inside ipython call')
- * stop = True
- */
+ /* "_pydevd_bundle/pydevd_cython.pyx":1459
+ * else:
+ * lines = exc_info[2]
+ * lines.add(frame.f_lineno) # <<<<<<<<<<<<<<
+ * exc_info = (arg, frame.f_lineno, lines)
+ * maybe_user_uncaught_exc_info = exc_info
+ */
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_lines, __pyx_n_s_add); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1459, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1459, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_5 = NULL;
+ __pyx_t_11 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_12))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_12);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_12, function);
+ __pyx_t_11 = 1;
}
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1196
- * f = frame.f_back
- * while f is not None:
- * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: # <<<<<<<<<<<<<<
- * f2 = f.f_back
- * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
- */
}
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_2};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1459, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1202
- * stop = True
- * break
- * f = f.f_back # <<<<<<<<<<<<<<
- *
- * del f
+ /* "_pydevd_bundle/pydevd_cython.pyx":1460
+ * lines = exc_info[2]
+ * lines.add(frame.f_lineno)
+ * exc_info = (arg, frame.f_lineno, lines) # <<<<<<<<<<<<<<
+ * maybe_user_uncaught_exc_info = exc_info
+ * else:
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1202, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_7);
- __pyx_t_7 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1460, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1460, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_INCREF(__pyx_v_arg);
+ __Pyx_GIVEREF(__pyx_v_arg);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_arg)) __PYX_ERR(0, 1460, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_4);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_4)) __PYX_ERR(0, 1460, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_lines);
+ __Pyx_GIVEREF(__pyx_v_lines);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_v_lines)) __PYX_ERR(0, 1460, __pyx_L1_error);
+ __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_v_exc_info, __pyx_t_12);
+ __pyx_t_12 = 0;
}
- __pyx_L192_break:;
+ __pyx_L41:;
- /* "_pydevd_bundle/pydevd_cython.pyx":1204
- * f = f.f_back
- *
- * del f # <<<<<<<<<<<<<<
- *
- * if not stop:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1461
+ * lines.add(frame.f_lineno)
+ * exc_info = (arg, frame.f_lineno, lines)
+ * maybe_user_uncaught_exc_info = exc_info # <<<<<<<<<<<<<<
+ * else:
+ * # I.e.: these are only checked if we're not dealing with user uncaught exceptions.
*/
- __Pyx_DECREF(__pyx_v_f);
- __pyx_v_f = NULL;
+ __Pyx_INCREF(__pyx_v_exc_info);
+ __Pyx_DECREF_SET(__pyx_v_maybe_user_uncaught_exc_info, __pyx_v_exc_info);
- /* "_pydevd_bundle/pydevd_cython.pyx":1193
- * filename = filename[:-1]
- *
- * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]): # <<<<<<<<<<<<<<
- * f = frame.f_back
- * while f is not None:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1449
+ * # Note: we don't stop here, we just collect the exc_info to use later on...
+ * should_stop = False
+ * if not py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and ( # <<<<<<<<<<<<<<
+ * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)
+ * ):
*/
}
- /* "_pydevd_bundle/pydevd_cython.pyx":1206
- * del f
+ /* "_pydevd_bundle/pydevd_cython.pyx":1446
+ * should_stop = False
*
- * if not stop: # <<<<<<<<<<<<<<
- * # In scoped mode if step in didn't work in this context it won't work
- * # afterwards anyways.
+ * elif is_user_uncaught: # <<<<<<<<<<<<<<
+ * # Note: we don't stop here, we just collect the exc_info to use later on...
+ * should_stop = False
*/
- __pyx_t_11 = ((!(__pyx_v_stop != 0)) != 0);
- if (__pyx_t_11) {
+ goto __pyx_L34;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1209
- * # In scoped mode if step in didn't work in this context it won't work
- * # afterwards anyways.
- * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<<
- *
- * elif is_return and frame.f_back is not None and not info.pydev_use_scoped_step_frame:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1464
+ * else:
+ * # I.e.: these are only checked if we're not dealing with user uncaught exceptions.
+ * if ( # <<<<<<<<<<<<<<
+ * exc_break.notify_on_first_raise_only
+ * and py_db.skip_on_exceptions_thrown_in_same_context
*/
- __Pyx_XDECREF(__pyx_r);
- if ((__pyx_v_is_call != 0)) {
- __Pyx_INCREF(Py_None);
- __pyx_t_7 = Py_None;
- } else {
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1209, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_7 = __pyx_t_3;
- __pyx_t_3 = 0;
- }
- __pyx_r = __pyx_t_7;
- __pyx_t_7 = 0;
- goto __pyx_L174_try_return;
+ /*else*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":1206
- * del f
- *
- * if not stop: # <<<<<<<<<<<<<<
- * # In scoped mode if step in didn't work in this context it won't work
- * # afterwards anyways.
+ /* "_pydevd_bundle/pydevd_cython.pyx":1465
+ * # I.e.: these are only checked if we're not dealing with user uncaught exceptions.
+ * if (
+ * exc_break.notify_on_first_raise_only # <<<<<<<<<<<<<<
+ * and py_db.skip_on_exceptions_thrown_in_same_context
+ * and not was_just_raised
*/
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc_break, __pyx_n_s_notify_on_first_raise_only); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1465, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1465, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (__pyx_t_7) {
+ } else {
+ __pyx_t_1 = __pyx_t_7;
+ goto __pyx_L43_bool_binop_done;
}
- }
- __pyx_L181:;
- /* "_pydevd_bundle/pydevd_cython.pyx":1176
- * elif step_cmd in (107, 144, 206):
- * force_check_project_scope = step_cmd == 144
- * if is_line: # <<<<<<<<<<<<<<
- * if not info.pydev_use_scoped_step_frame:
- * if force_check_project_scope or main_debugger.is_files_filter_enabled:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1466
+ * if (
+ * exc_break.notify_on_first_raise_only
+ * and py_db.skip_on_exceptions_thrown_in_same_context # <<<<<<<<<<<<<<
+ * and not was_just_raised
+ * and not just_raised(trace.tb_next)
*/
- goto __pyx_L180;
- }
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_skip_on_exceptions_thrown_in_sam); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1466, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1466, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (__pyx_t_7) {
+ } else {
+ __pyx_t_1 = __pyx_t_7;
+ goto __pyx_L43_bool_binop_done;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1211
- * return None if is_call else NO_FTRACE
- *
- * elif is_return and frame.f_back is not None and not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
- * if main_debugger.get_file_type(frame.f_back) == main_debugger.PYDEV_FILE:
- * stop = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1467
+ * exc_break.notify_on_first_raise_only
+ * and py_db.skip_on_exceptions_thrown_in_same_context
+ * and not was_just_raised # <<<<<<<<<<<<<<
+ * and not just_raised(trace.tb_next)
+ * ):
*/
- __pyx_t_14 = (__pyx_v_is_return != 0);
- if (__pyx_t_14) {
- } else {
- __pyx_t_11 = __pyx_t_14;
- goto __pyx_L198_bool_binop_done;
- }
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1211, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_14 = (__pyx_t_7 != Py_None);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_9 = (__pyx_t_14 != 0);
- if (__pyx_t_9) {
- } else {
- __pyx_t_11 = __pyx_t_9;
- goto __pyx_L198_bool_binop_done;
- }
- __pyx_t_9 = ((!(__pyx_v_info->pydev_use_scoped_step_frame != 0)) != 0);
- __pyx_t_11 = __pyx_t_9;
- __pyx_L198_bool_binop_done:;
- if (__pyx_t_11) {
+ __pyx_t_7 = (!__pyx_v_was_just_raised);
+ if (__pyx_t_7) {
+ } else {
+ __pyx_t_1 = __pyx_t_7;
+ goto __pyx_L43_bool_binop_done;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1212
- *
- * elif is_return and frame.f_back is not None and not info.pydev_use_scoped_step_frame:
- * if main_debugger.get_file_type(frame.f_back) == main_debugger.PYDEV_FILE: # <<<<<<<<<<<<<<
- * stop = False
- * else:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1468
+ * and py_db.skip_on_exceptions_thrown_in_same_context
+ * and not was_just_raised
+ * and not just_raised(trace.tb_next) # <<<<<<<<<<<<<<
+ * ):
+ * # In this case we never stop if it was just raised, so, to know if it was the first we
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_get_file_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1212, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1212, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_just_raised); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1468, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace, __pyx_n_s_tb_next); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1468, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_5 = NULL;
+ __pyx_t_11 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_11 = 1;
+ }
}
- }
- __pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1212, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_PYDEV_FILE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1212, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_8 = PyObject_RichCompare(__pyx_t_7, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1212, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1212, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (__pyx_t_11) {
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_2};
+ __pyx_t_12 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1468, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1468, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_16 = (!__pyx_t_7);
+ __pyx_t_1 = __pyx_t_16;
+ __pyx_L43_bool_binop_done:;
- /* "_pydevd_bundle/pydevd_cython.pyx":1213
- * elif is_return and frame.f_back is not None and not info.pydev_use_scoped_step_frame:
- * if main_debugger.get_file_type(frame.f_back) == main_debugger.PYDEV_FILE:
- * stop = False # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1464
* else:
- * if force_check_project_scope or main_debugger.is_files_filter_enabled:
+ * # I.e.: these are only checked if we're not dealing with user uncaught exceptions.
+ * if ( # <<<<<<<<<<<<<<
+ * exc_break.notify_on_first_raise_only
+ * and py_db.skip_on_exceptions_thrown_in_same_context
*/
- __pyx_v_stop = 0;
+ if (__pyx_t_1) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1212
+ /* "_pydevd_bundle/pydevd_cython.pyx":1472
+ * # In this case we never stop if it was just raised, so, to know if it was the first we
+ * # need to check if we're in the 2nd method.
+ * should_stop = False # I.e.: we stop only when we're at the caller of a method that throws an exception # <<<<<<<<<<<<<<
*
- * elif is_return and frame.f_back is not None and not info.pydev_use_scoped_step_frame:
- * if main_debugger.get_file_type(frame.f_back) == main_debugger.PYDEV_FILE: # <<<<<<<<<<<<<<
- * stop = False
- * else:
+ * elif (
*/
- goto __pyx_L201;
- }
+ __pyx_v_should_stop = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1215
- * stop = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1464
* else:
- * if force_check_project_scope or main_debugger.is_files_filter_enabled: # <<<<<<<<<<<<<<
- * stop = not main_debugger.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, force_check_project_scope)
- * if stop:
+ * # I.e.: these are only checked if we're not dealing with user uncaught exceptions.
+ * if ( # <<<<<<<<<<<<<<
+ * exc_break.notify_on_first_raise_only
+ * and py_db.skip_on_exceptions_thrown_in_same_context
*/
- /*else*/ {
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_force_check_project_scope); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1215, __pyx_L170_error)
- if (!__pyx_t_9) {
- } else {
- __pyx_t_11 = __pyx_t_9;
- goto __pyx_L203_bool_binop_done;
+ goto __pyx_L42;
}
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_is_files_filter_enabled); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1215, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1215, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_11 = __pyx_t_9;
- __pyx_L203_bool_binop_done:;
- if (__pyx_t_11) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1216
- * else:
- * if force_check_project_scope or main_debugger.is_files_filter_enabled:
- * stop = not main_debugger.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, force_check_project_scope) # <<<<<<<<<<<<<<
- * if stop:
- * # Prevent stopping in a return to the same location we were initially
- */
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1216, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1216, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1216, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1216, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1216, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = NULL;
- __pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_1)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
- __pyx_t_10 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[4] = {__pyx_t_1, __pyx_t_7, __pyx_t_4, __pyx_v_force_check_project_scope};
- __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1216, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[4] = {__pyx_t_1, __pyx_t_7, __pyx_t_4, __pyx_v_force_check_project_scope};
- __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1216, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_2 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1216, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_2);
- if (__pyx_t_1) {
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __pyx_t_1 = NULL;
- }
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_10, __pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_10, __pyx_t_4);
- __Pyx_INCREF(__pyx_v_force_check_project_scope);
- __Pyx_GIVEREF(__pyx_v_force_check_project_scope);
- PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_10, __pyx_v_force_check_project_scope);
- __pyx_t_7 = 0;
- __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1216, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1216, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_v_stop = (!__pyx_t_11);
- /* "_pydevd_bundle/pydevd_cython.pyx":1217
- * if force_check_project_scope or main_debugger.is_files_filter_enabled:
- * stop = not main_debugger.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, force_check_project_scope)
- * if stop: # <<<<<<<<<<<<<<
- * # Prevent stopping in a return to the same location we were initially
- * # (i.e.: double-stop at the same place due to some filtering).
+ /* "_pydevd_bundle/pydevd_cython.pyx":1475
+ *
+ * elif (
+ * exc_break.notify_on_first_raise_only # <<<<<<<<<<<<<<
+ * and not py_db.skip_on_exceptions_thrown_in_same_context
+ * and not was_just_raised
*/
- __pyx_t_11 = (__pyx_v_stop != 0);
- if (__pyx_t_11) {
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc_break, __pyx_n_s_notify_on_first_raise_only); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1475, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1475, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (__pyx_t_16) {
+ } else {
+ __pyx_t_1 = __pyx_t_16;
+ goto __pyx_L47_bool_binop_done;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1220
- * # Prevent stopping in a return to the same location we were initially
- * # (i.e.: double-stop at the same place due to some filtering).
- * if info.step_in_initial_location == (frame.f_back, frame.f_back.f_lineno): # <<<<<<<<<<<<<<
- * stop = False
- * else:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1476
+ * elif (
+ * exc_break.notify_on_first_raise_only
+ * and not py_db.skip_on_exceptions_thrown_in_same_context # <<<<<<<<<<<<<<
+ * and not was_just_raised
+ * ):
*/
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1220, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1220, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1220, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1220, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
- __pyx_t_8 = 0;
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_RichCompare(__pyx_v_info->step_in_initial_location, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1220, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1220, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (__pyx_t_11) {
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_skip_on_exceptions_thrown_in_sam); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1476, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1476, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_7 = (!__pyx_t_16);
+ if (__pyx_t_7) {
+ } else {
+ __pyx_t_1 = __pyx_t_7;
+ goto __pyx_L47_bool_binop_done;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1221
- * # (i.e.: double-stop at the same place due to some filtering).
- * if info.step_in_initial_location == (frame.f_back, frame.f_back.f_lineno):
- * stop = False # <<<<<<<<<<<<<<
- * else:
- * stop = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":1477
+ * exc_break.notify_on_first_raise_only
+ * and not py_db.skip_on_exceptions_thrown_in_same_context
+ * and not was_just_raised # <<<<<<<<<<<<<<
+ * ):
+ * should_stop = False # I.e.: we stop only when it was just raised
*/
- __pyx_v_stop = 0;
+ __pyx_t_7 = (!__pyx_v_was_just_raised);
+ __pyx_t_1 = __pyx_t_7;
+ __pyx_L47_bool_binop_done:;
- /* "_pydevd_bundle/pydevd_cython.pyx":1220
- * # Prevent stopping in a return to the same location we were initially
- * # (i.e.: double-stop at the same place due to some filtering).
- * if info.step_in_initial_location == (frame.f_back, frame.f_back.f_lineno): # <<<<<<<<<<<<<<
- * stop = False
- * else:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1474
+ * should_stop = False # I.e.: we stop only when we're at the caller of a method that throws an exception
+ *
+ * elif ( # <<<<<<<<<<<<<<
+ * exc_break.notify_on_first_raise_only
+ * and not py_db.skip_on_exceptions_thrown_in_same_context
*/
- }
+ if (__pyx_t_1) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1217
- * if force_check_project_scope or main_debugger.is_files_filter_enabled:
- * stop = not main_debugger.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, force_check_project_scope)
- * if stop: # <<<<<<<<<<<<<<
- * # Prevent stopping in a return to the same location we were initially
- * # (i.e.: double-stop at the same place due to some filtering).
+ /* "_pydevd_bundle/pydevd_cython.pyx":1479
+ * and not was_just_raised
+ * ):
+ * should_stop = False # I.e.: we stop only when it was just raised # <<<<<<<<<<<<<<
+ *
+ * elif was_just_raised and py_db.skip_on_exceptions_thrown_in_same_context:
*/
- }
+ __pyx_v_should_stop = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1215
- * stop = False
- * else:
- * if force_check_project_scope or main_debugger.is_files_filter_enabled: # <<<<<<<<<<<<<<
- * stop = not main_debugger.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, force_check_project_scope)
- * if stop:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1474
+ * should_stop = False # I.e.: we stop only when we're at the caller of a method that throws an exception
+ *
+ * elif ( # <<<<<<<<<<<<<<
+ * exc_break.notify_on_first_raise_only
+ * and not py_db.skip_on_exceptions_thrown_in_same_context
*/
- goto __pyx_L202;
+ goto __pyx_L42;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":1223
- * stop = False
- * else:
- * stop = True # <<<<<<<<<<<<<<
- * else:
- * stop = False
- */
- /*else*/ {
- __pyx_v_stop = 1;
+ /* "_pydevd_bundle/pydevd_cython.pyx":1481
+ * should_stop = False # I.e.: we stop only when it was just raised
+ *
+ * elif was_just_raised and py_db.skip_on_exceptions_thrown_in_same_context: # <<<<<<<<<<<<<<
+ * # Option: Don't break if an exception is caught in the same function from which it is thrown
+ * should_stop = False
+ */
+ if (__pyx_v_was_just_raised) {
+ } else {
+ __pyx_t_1 = __pyx_v_was_just_raised;
+ goto __pyx_L50_bool_binop_done;
}
- __pyx_L202:;
- }
- __pyx_L201:;
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_skip_on_exceptions_thrown_in_sam); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1481, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1481, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_1 = __pyx_t_7;
+ __pyx_L50_bool_binop_done:;
+ if (__pyx_t_1) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1211
- * return None if is_call else NO_FTRACE
+ /* "_pydevd_bundle/pydevd_cython.pyx":1483
+ * elif was_just_raised and py_db.skip_on_exceptions_thrown_in_same_context:
+ * # Option: Don't break if an exception is caught in the same function from which it is thrown
+ * should_stop = False # <<<<<<<<<<<<<<
*
- * elif is_return and frame.f_back is not None and not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
- * if main_debugger.get_file_type(frame.f_back) == main_debugger.PYDEV_FILE:
- * stop = False
+ * if should_stop:
*/
- goto __pyx_L180;
- }
+ __pyx_v_should_stop = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1225
- * stop = True
- * else:
- * stop = False # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1481
+ * should_stop = False # I.e.: we stop only when it was just raised
*
- * if stop:
+ * elif was_just_raised and py_db.skip_on_exceptions_thrown_in_same_context: # <<<<<<<<<<<<<<
+ * # Option: Don't break if an exception is caught in the same function from which it is thrown
+ * should_stop = False
*/
- /*else*/ {
- __pyx_v_stop = 0;
- }
- __pyx_L180:;
+ }
+ __pyx_L42:;
+ }
+ __pyx_L34:;
- /* "_pydevd_bundle/pydevd_cython.pyx":1227
- * stop = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1485
+ * should_stop = False
*
- * if stop: # <<<<<<<<<<<<<<
- * if step_cmd == 206:
- * # i.e.: Check if we're stepping into the proper context.
+ * if should_stop: # <<<<<<<<<<<<<<
+ * exception_breakpoint = exc_break
+ * try:
*/
- __pyx_t_11 = (__pyx_v_stop != 0);
- if (__pyx_t_11) {
+ if (__pyx_v_should_stop) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1228
+ /* "_pydevd_bundle/pydevd_cython.pyx":1486
*
- * if stop:
- * if step_cmd == 206: # <<<<<<<<<<<<<<
- * # i.e.: Check if we're stepping into the proper context.
- * f = frame
+ * if should_stop:
+ * exception_breakpoint = exc_break # <<<<<<<<<<<<<<
+ * try:
+ * info.pydev_message = exc_break.qname
*/
- __pyx_t_11 = ((__pyx_v_step_cmd == 0xCE) != 0);
- if (__pyx_t_11) {
+ __Pyx_INCREF(__pyx_v_exc_break);
+ __Pyx_DECREF_SET(__pyx_v_exception_breakpoint, __pyx_v_exc_break);
- /* "_pydevd_bundle/pydevd_cython.pyx":1230
- * if step_cmd == 206:
- * # i.e.: Check if we're stepping into the proper context.
- * f = frame # <<<<<<<<<<<<<<
- * while f is not None:
- * if self._is_same_frame(stop_frame, f):
+ /* "_pydevd_bundle/pydevd_cython.pyx":1487
+ * if should_stop:
+ * exception_breakpoint = exc_break
+ * try: # <<<<<<<<<<<<<<
+ * info.pydev_message = exc_break.qname
+ * except:
*/
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_XDECREF_SET(__pyx_v_f, __pyx_v_frame);
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8);
+ __Pyx_XGOTREF(__pyx_t_10);
+ __Pyx_XGOTREF(__pyx_t_9);
+ __Pyx_XGOTREF(__pyx_t_8);
+ /*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":1231
- * # i.e.: Check if we're stepping into the proper context.
- * f = frame
- * while f is not None: # <<<<<<<<<<<<<<
- * if self._is_same_frame(stop_frame, f):
- * break
- */
- while (1) {
- __pyx_t_11 = (__pyx_v_f != Py_None);
- __pyx_t_9 = (__pyx_t_11 != 0);
- if (!__pyx_t_9) break;
+ /* "_pydevd_bundle/pydevd_cython.pyx":1488
+ * exception_breakpoint = exc_break
+ * try:
+ * info.pydev_message = exc_break.qname # <<<<<<<<<<<<<<
+ * except:
+ * info.pydev_message = exc_break.qname.encode("utf-8")
+ */
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc_break, __pyx_n_s_qname); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1488, __pyx_L53_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ if (!(likely(PyString_CheckExact(__pyx_t_12))||((__pyx_t_12) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_12))) __PYX_ERR(0, 1488, __pyx_L53_error)
+ __Pyx_GIVEREF(__pyx_t_12);
+ __Pyx_GOTREF(__pyx_v_info->pydev_message);
+ __Pyx_DECREF(__pyx_v_info->pydev_message);
+ __pyx_v_info->pydev_message = ((PyObject*)__pyx_t_12);
+ __pyx_t_12 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1232
- * f = frame
- * while f is not None:
- * if self._is_same_frame(stop_frame, f): # <<<<<<<<<<<<<<
- * break
- * f = f.f_back
+ /* "_pydevd_bundle/pydevd_cython.pyx":1487
+ * if should_stop:
+ * exception_breakpoint = exc_break
+ * try: # <<<<<<<<<<<<<<
+ * info.pydev_message = exc_break.qname
+ * except:
*/
- __pyx_t_2 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_f); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1232, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1232, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (__pyx_t_9) {
+ }
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ goto __pyx_L60_try_end;
+ __pyx_L53_error:;
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1233
- * while f is not None:
- * if self._is_same_frame(stop_frame, f):
- * break # <<<<<<<<<<<<<<
- * f = f.f_back
- * else:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1489
+ * try:
+ * info.pydev_message = exc_break.qname
+ * except: # <<<<<<<<<<<<<<
+ * info.pydev_message = exc_break.qname.encode("utf-8")
+ * break
*/
- goto __pyx_L210_break;
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.should_stop_on_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_4, &__pyx_t_2) < 0) __PYX_ERR(0, 1489, __pyx_L55_except_error)
+ __Pyx_XGOTREF(__pyx_t_12);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_2);
- /* "_pydevd_bundle/pydevd_cython.pyx":1232
- * f = frame
- * while f is not None:
- * if self._is_same_frame(stop_frame, f): # <<<<<<<<<<<<<<
- * break
- * f = f.f_back
+ /* "_pydevd_bundle/pydevd_cython.pyx":1490
+ * info.pydev_message = exc_break.qname
+ * except:
+ * info.pydev_message = exc_break.qname.encode("utf-8") # <<<<<<<<<<<<<<
+ * break
+ *
*/
+ __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc_break, __pyx_n_s_qname); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1490, __pyx_L55_except_error)
+ __Pyx_GOTREF(__pyx_t_13);
+ __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_encode); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1490, __pyx_L55_except_error)
+ __Pyx_GOTREF(__pyx_t_17);
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __pyx_t_13 = NULL;
+ __pyx_t_11 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_17))) {
+ __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_17);
+ if (likely(__pyx_t_13)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_17);
+ __Pyx_INCREF(__pyx_t_13);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_17, function);
+ __pyx_t_11 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_kp_s_utf_8};
+ __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_17, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1490, __pyx_L55_except_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+ }
+ if (!(likely(PyString_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_5))) __PYX_ERR(0, 1490, __pyx_L55_except_error)
+ __Pyx_GIVEREF(__pyx_t_5);
+ __Pyx_GOTREF(__pyx_v_info->pydev_message);
+ __Pyx_DECREF(__pyx_v_info->pydev_message);
+ __pyx_v_info->pydev_message = ((PyObject*)__pyx_t_5);
+ __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ goto __pyx_L54_exception_handled;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":1234
- * if self._is_same_frame(stop_frame, f):
- * break
- * f = f.f_back # <<<<<<<<<<<<<<
- * else:
- * stop = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1487
+ * if should_stop:
+ * exception_breakpoint = exc_break
+ * try: # <<<<<<<<<<<<<<
+ * info.pydev_message = exc_break.qname
+ * except:
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1234, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_2);
- __pyx_t_2 = 0;
+ __pyx_L55_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_10);
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
+ goto __pyx_L1_error;
+ __pyx_L54_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_10);
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
+ __pyx_L60_try_end:;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":1236
- * f = f.f_back
- * else:
- * stop = False # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1491
+ * except:
+ * info.pydev_message = exc_break.qname.encode("utf-8")
+ * break # <<<<<<<<<<<<<<
*
- * if plugin_manager is not None:
+ * if should_stop:
*/
- /*else*/ {
- __pyx_v_stop = 0;
- }
- __pyx_L210_break:;
+ goto __pyx_L31_break;
- /* "_pydevd_bundle/pydevd_cython.pyx":1228
+ /* "_pydevd_bundle/pydevd_cython.pyx":1485
+ * should_stop = False
*
- * if stop:
- * if step_cmd == 206: # <<<<<<<<<<<<<<
- * # i.e.: Check if we're stepping into the proper context.
- * f = frame
+ * if should_stop: # <<<<<<<<<<<<<<
+ * exception_breakpoint = exc_break
+ * try:
*/
}
- /* "_pydevd_bundle/pydevd_cython.pyx":1227
- * stop = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1433
+ * check_excs.append((exc_break_caught, False))
*
- * if stop: # <<<<<<<<<<<<<<
- * if step_cmd == 206:
- * # i.e.: Check if we're stepping into the proper context.
+ * for exc_break, is_user_uncaught in check_excs: # <<<<<<<<<<<<<<
+ * # Initially mark that it should stop and then go into exclusions.
+ * should_stop = True
*/
}
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L63_for_end;
+ __pyx_L31_break:;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L63_for_end;
+ __pyx_L63_for_end:;
+ }
+ __pyx_L22:;
- /* "_pydevd_bundle/pydevd_cython.pyx":1238
- * stop = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1405
+ * pydev_log.exception()
*
- * if plugin_manager is not None: # <<<<<<<<<<<<<<
- * result = plugin_manager.cmd_step_into(main_debugger, frame, event, self._args, stop_info, stop)
- * if result:
+ * if not should_stop: # <<<<<<<<<<<<<<
+ * # Apply checks that don't need the exception breakpoint (where we shouldn't ever stop).
+ * if exception == SystemExit and py_db.ignore_system_exit_code(value):
*/
- __pyx_t_9 = (__pyx_v_plugin_manager != Py_None);
- __pyx_t_11 = (__pyx_t_9 != 0);
- if (__pyx_t_11) {
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1239
+ /* "_pydevd_bundle/pydevd_cython.pyx":1493
+ * break
*
- * if plugin_manager is not None:
- * result = plugin_manager.cmd_step_into(main_debugger, frame, event, self._args, stop_info, stop) # <<<<<<<<<<<<<<
- * if result:
- * stop, plugin_stop = result
+ * if should_stop: # <<<<<<<<<<<<<<
+ * # Always add exception to frame (must remove later after we proceed).
+ * add_exception_to_frame(frame, (exception, value, trace))
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_cmd_step_into); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1239, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_8 = __Pyx_PyBool_FromLong(__pyx_v_stop); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1239, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_4 = NULL;
- __pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
- __pyx_t_10 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[7] = {__pyx_t_4, __pyx_v_main_debugger, __pyx_v_frame, __pyx_v_event, __pyx_v_self->_args, __pyx_v_stop_info, __pyx_t_8};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1239, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[7] = {__pyx_t_4, __pyx_v_main_debugger, __pyx_v_frame, __pyx_v_event, __pyx_v_self->_args, __pyx_v_stop_info, __pyx_t_8};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1239, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- } else
- #endif
- {
- __pyx_t_7 = PyTuple_New(6+__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1239, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- if (__pyx_t_4) {
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
- }
- __Pyx_INCREF(__pyx_v_main_debugger);
- __Pyx_GIVEREF(__pyx_v_main_debugger);
- PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_10, __pyx_v_main_debugger);
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_10, __pyx_v_frame);
- __Pyx_INCREF(__pyx_v_event);
- __Pyx_GIVEREF(__pyx_v_event);
- PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_10, __pyx_v_event);
- __Pyx_INCREF(__pyx_v_self->_args);
- __Pyx_GIVEREF(__pyx_v_self->_args);
- PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_10, __pyx_v_self->_args);
- __Pyx_INCREF(__pyx_v_stop_info);
- __Pyx_GIVEREF(__pyx_v_stop_info);
- PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_10, __pyx_v_stop_info);
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_7, 5+__pyx_t_10, __pyx_t_8);
- __pyx_t_8 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1239, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_XDECREF_SET(__pyx_v_result, __pyx_t_2);
- __pyx_t_2 = 0;
+ if (__pyx_v_should_stop) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1240
- * if plugin_manager is not None:
- * result = plugin_manager.cmd_step_into(main_debugger, frame, event, self._args, stop_info, stop)
- * if result: # <<<<<<<<<<<<<<
- * stop, plugin_stop = result
+ /* "_pydevd_bundle/pydevd_cython.pyx":1495
+ * if should_stop:
+ * # Always add exception to frame (must remove later after we proceed).
+ * add_exception_to_frame(frame, (exception, value, trace)) # <<<<<<<<<<<<<<
*
+ * if exception_breakpoint is not None and exception_breakpoint.expression is not None:
*/
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1240, __pyx_L170_error)
- if (__pyx_t_11) {
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_add_exception_to_frame); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1495, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1495, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_v_exception);
+ __Pyx_GIVEREF(__pyx_v_exception);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_exception)) __PYX_ERR(0, 1495, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_value);
+ __Pyx_GIVEREF(__pyx_v_value);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_value)) __PYX_ERR(0, 1495, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_trace);
+ __Pyx_GIVEREF(__pyx_v_trace);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_trace)) __PYX_ERR(0, 1495, __pyx_L1_error);
+ __pyx_t_12 = NULL;
+ __pyx_t_11 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_12)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_12);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_11 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_v_frame, __pyx_t_4};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_11, 2+__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1495, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1241
- * result = plugin_manager.cmd_step_into(main_debugger, frame, event, self._args, stop_info, stop)
- * if result:
- * stop, plugin_stop = result # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1497
+ * add_exception_to_frame(frame, (exception, value, trace))
*
- * elif step_cmd in (108, 159):
- */
- if ((likely(PyTuple_CheckExact(__pyx_v_result))) || (PyList_CheckExact(__pyx_v_result))) {
- PyObject* sequence = __pyx_v_result;
- Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
- if (unlikely(size != 2)) {
- if (size > 2) __Pyx_RaiseTooManyValuesError(2);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 1241, __pyx_L170_error)
- }
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
- } else {
- __pyx_t_2 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_3 = PyList_GET_ITEM(sequence, 1);
- }
- __Pyx_INCREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_3);
- #else
- __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1241, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1241, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- #endif
- } else {
- Py_ssize_t index = -1;
- __pyx_t_7 = PyObject_GetIter(__pyx_v_result); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1241, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_15 = Py_TYPE(__pyx_t_7)->tp_iternext;
- index = 0; __pyx_t_2 = __pyx_t_15(__pyx_t_7); if (unlikely(!__pyx_t_2)) goto __pyx_L214_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_2);
- index = 1; __pyx_t_3 = __pyx_t_15(__pyx_t_7); if (unlikely(!__pyx_t_3)) goto __pyx_L214_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_3);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_7), 2) < 0) __PYX_ERR(0, 1241, __pyx_L170_error)
- __pyx_t_15 = NULL;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- goto __pyx_L215_unpacking_done;
- __pyx_L214_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_15 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 1241, __pyx_L170_error)
- __pyx_L215_unpacking_done:;
- }
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1241, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_v_stop = __pyx_t_11;
- __Pyx_DECREF_SET(__pyx_v_plugin_stop, __pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1240
- * if plugin_manager is not None:
- * result = plugin_manager.cmd_step_into(main_debugger, frame, event, self._args, stop_info, stop)
- * if result: # <<<<<<<<<<<<<<
- * stop, plugin_stop = result
+ * if exception_breakpoint is not None and exception_breakpoint.expression is not None: # <<<<<<<<<<<<<<
+ * py_db.handle_breakpoint_expression(exception_breakpoint, info, frame)
*
*/
- }
+ __pyx_t_7 = (__pyx_v_exception_breakpoint != Py_None);
+ if (__pyx_t_7) {
+ } else {
+ __pyx_t_1 = __pyx_t_7;
+ goto __pyx_L66_bool_binop_done;
+ }
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_exception_breakpoint, __pyx_n_s_expression); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1497, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_7 = (__pyx_t_3 != Py_None);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_1 = __pyx_t_7;
+ __pyx_L66_bool_binop_done:;
+ if (__pyx_t_1) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1238
- * stop = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1498
*
- * if plugin_manager is not None: # <<<<<<<<<<<<<<
- * result = plugin_manager.cmd_step_into(main_debugger, frame, event, self._args, stop_info, stop)
- * if result:
+ * if exception_breakpoint is not None and exception_breakpoint.expression is not None:
+ * py_db.handle_breakpoint_expression(exception_breakpoint, info, frame) # <<<<<<<<<<<<<<
+ *
+ * return should_stop, frame, maybe_user_uncaught_exc_info
*/
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_handle_breakpoint_expression); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1498, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = NULL;
+ __pyx_t_11 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_11 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_v_exception_breakpoint, ((PyObject *)__pyx_v_info), __pyx_v_frame};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_11, 3+__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1498, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1174
- * stop = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1497
+ * add_exception_to_frame(frame, (exception, value, trace))
*
- * elif step_cmd in (107, 144, 206): # <<<<<<<<<<<<<<
- * force_check_project_scope = step_cmd == 144
- * if is_line:
- */
- goto __pyx_L179;
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1243
- * stop, plugin_stop = result
+ * if exception_breakpoint is not None and exception_breakpoint.expression is not None: # <<<<<<<<<<<<<<
+ * py_db.handle_breakpoint_expression(exception_breakpoint, info, frame)
*
- * elif step_cmd in (108, 159): # <<<<<<<<<<<<<<
- * # Note: when dealing with a step over my code it's the same as a step over (the
- * # difference is that when we return from a frame in one we go to regular step
*/
- switch (__pyx_v_step_cmd) {
- case 0x6C:
- case 0x9F:
- __pyx_t_11 = 1;
- break;
- default:
- __pyx_t_11 = 0;
- break;
}
- __pyx_t_9 = (__pyx_t_11 != 0);
- if (__pyx_t_9) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1247
- * # difference is that when we return from a frame in one we go to regular step
- * # into and in the other we go to a step into my code).
- * stop = self._is_same_frame(stop_frame, frame) and is_line # <<<<<<<<<<<<<<
- * # Note: don't stop on a return for step over, only for line events
- * # i.e.: don't stop in: (stop_frame is frame.f_back and is_return) as we'd stop twice in that line.
+ /* "_pydevd_bundle/pydevd_cython.pyx":1493
+ * break
+ *
+ * if should_stop: # <<<<<<<<<<<<<<
+ * # Always add exception to frame (must remove later after we proceed).
+ * add_exception_to_frame(frame, (exception, value, trace))
*/
- __pyx_t_3 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_frame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1247, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1247, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_11) {
- } else {
- __pyx_t_9 = __pyx_t_11;
- goto __pyx_L216_bool_binop_done;
- }
- __pyx_t_11 = (__pyx_v_is_line != 0);
- __pyx_t_9 = __pyx_t_11;
- __pyx_L216_bool_binop_done:;
- __pyx_v_stop = __pyx_t_9;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1251
- * # i.e.: don't stop in: (stop_frame is frame.f_back and is_return) as we'd stop twice in that line.
+ /* "_pydevd_bundle/pydevd_cython.pyx":1392
+ * exception, value, trace = arg
+ *
+ * if trace is not None and hasattr(trace, "tb_next"): # <<<<<<<<<<<<<<
+ * # on jython trace is None on the first event and it may not have a tb_next.
*
- * if plugin_manager is not None: # <<<<<<<<<<<<<<
- * result = plugin_manager.cmd_step_over(main_debugger, frame, event, self._args, stop_info, stop)
- * if result:
*/
- __pyx_t_9 = (__pyx_v_plugin_manager != Py_None);
- __pyx_t_11 = (__pyx_t_9 != 0);
- if (__pyx_t_11) {
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1252
+ /* "_pydevd_bundle/pydevd_cython.pyx":1389
+ *
+ * # 2 = 2
+ * if info.pydev_state != 2: # and breakpoint is not None: # <<<<<<<<<<<<<<
+ * exception, value, trace = arg
*
- * if plugin_manager is not None:
- * result = plugin_manager.cmd_step_over(main_debugger, frame, event, self._args, stop_info, stop) # <<<<<<<<<<<<<<
- * if result:
- * stop, plugin_stop = result
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_cmd_step_over); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1252, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_stop); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1252, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = NULL;
- __pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_8);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- __pyx_t_10 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[7] = {__pyx_t_8, __pyx_v_main_debugger, __pyx_v_frame, __pyx_v_event, __pyx_v_self->_args, __pyx_v_stop_info, __pyx_t_7};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1252, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[7] = {__pyx_t_8, __pyx_v_main_debugger, __pyx_v_frame, __pyx_v_event, __pyx_v_self->_args, __pyx_v_stop_info, __pyx_t_7};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1252, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(6+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1252, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (__pyx_t_8) {
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8); __pyx_t_8 = NULL;
- }
- __Pyx_INCREF(__pyx_v_main_debugger);
- __Pyx_GIVEREF(__pyx_v_main_debugger);
- PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_10, __pyx_v_main_debugger);
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_10, __pyx_v_frame);
- __Pyx_INCREF(__pyx_v_event);
- __Pyx_GIVEREF(__pyx_v_event);
- PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_10, __pyx_v_event);
- __Pyx_INCREF(__pyx_v_self->_args);
- __Pyx_GIVEREF(__pyx_v_self->_args);
- PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_10, __pyx_v_self->_args);
- __Pyx_INCREF(__pyx_v_stop_info);
- __Pyx_GIVEREF(__pyx_v_stop_info);
- PyTuple_SET_ITEM(__pyx_t_4, 4+__pyx_t_10, __pyx_v_stop_info);
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_4, 5+__pyx_t_10, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1252, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF_SET(__pyx_v_result, __pyx_t_3);
- __pyx_t_3 = 0;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1253
- * if plugin_manager is not None:
- * result = plugin_manager.cmd_step_over(main_debugger, frame, event, self._args, stop_info, stop)
- * if result: # <<<<<<<<<<<<<<
- * stop, plugin_stop = result
+ /* "_pydevd_bundle/pydevd_cython.pyx":1500
+ * py_db.handle_breakpoint_expression(exception_breakpoint, info, frame)
+ *
+ * return should_stop, frame, maybe_user_uncaught_exc_info # <<<<<<<<<<<<<<
+ *
*
*/
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1253, __pyx_L170_error)
- if (__pyx_t_11) {
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_should_stop); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1500, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1500, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GIVEREF(__pyx_t_3);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3)) __PYX_ERR(0, 1500, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_frame);
+ __Pyx_GIVEREF(__pyx_v_frame);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_frame)) __PYX_ERR(0, 1500, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_maybe_user_uncaught_exc_info);
+ __Pyx_GIVEREF(__pyx_v_maybe_user_uncaught_exc_info);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_maybe_user_uncaught_exc_info)) __PYX_ERR(0, 1500, __pyx_L1_error);
+ __pyx_t_3 = 0;
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
+ goto __pyx_L0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1254
- * result = plugin_manager.cmd_step_over(main_debugger, frame, event, self._args, stop_info, stop)
- * if result:
- * stop, plugin_stop = result # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1377
*
- * elif step_cmd == 128:
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * def should_stop_on_exception(py_db, PyDBAdditionalThreadInfo info, frame, thread, arg, prev_user_uncaught_exc_info): # <<<<<<<<<<<<<<
+ * cdef bint should_stop;
+ * cdef bint was_just_raised;
*/
- if ((likely(PyTuple_CheckExact(__pyx_v_result))) || (PyList_CheckExact(__pyx_v_result))) {
- PyObject* sequence = __pyx_v_result;
- Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
- if (unlikely(size != 2)) {
- if (size > 2) __Pyx_RaiseTooManyValuesError(2);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 1254, __pyx_L170_error)
- }
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1);
- } else {
- __pyx_t_3 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_2 = PyList_GET_ITEM(sequence, 1);
- }
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_2);
- #else
- __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1254, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1254, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_2);
- #endif
- } else {
- Py_ssize_t index = -1;
- __pyx_t_4 = PyObject_GetIter(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1254, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_15 = Py_TYPE(__pyx_t_4)->tp_iternext;
- index = 0; __pyx_t_3 = __pyx_t_15(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L220_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_3);
- index = 1; __pyx_t_2 = __pyx_t_15(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L220_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_2);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1254, __pyx_L170_error)
- __pyx_t_15 = NULL;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- goto __pyx_L221_unpacking_done;
- __pyx_L220_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_15 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 1254, __pyx_L170_error)
- __pyx_L221_unpacking_done:;
- }
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1254, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_stop = __pyx_t_11;
- __Pyx_DECREF_SET(__pyx_v_plugin_stop, __pyx_t_2);
- __pyx_t_2 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1253
- * if plugin_manager is not None:
- * result = plugin_manager.cmd_step_over(main_debugger, frame, event, self._args, stop_info, stop)
- * if result: # <<<<<<<<<<<<<<
- * stop, plugin_stop = result
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_12);
+ __Pyx_XDECREF(__pyx_t_13);
+ __Pyx_XDECREF(__pyx_t_17);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.should_stop_on_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_check_excs);
+ __Pyx_XDECREF(__pyx_v_maybe_user_uncaught_exc_info);
+ __Pyx_XDECREF(__pyx_v_exception);
+ __Pyx_XDECREF(__pyx_v_value);
+ __Pyx_XDECREF(__pyx_v_trace);
+ __Pyx_XDECREF(__pyx_v_exception_breakpoint);
+ __Pyx_XDECREF(__pyx_v_result);
+ __Pyx_XDECREF(__pyx_v_exc_break_user);
+ __Pyx_XDECREF(__pyx_v_exc_break_caught);
+ __Pyx_XDECREF(__pyx_v_exc_break);
+ __Pyx_XDECREF(__pyx_v_is_user_uncaught);
+ __Pyx_XDECREF(__pyx_v_exc_info);
+ __Pyx_XDECREF(__pyx_v_lines);
+ __Pyx_XDECREF(__pyx_v_frame);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_bundle/pydevd_cython.pyx":1510
*
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * def handle_exception(py_db, thread, frame, arg, str exception_type): # <<<<<<<<<<<<<<
+ * cdef bint stopped;
+ * cdef tuple abs_real_path_and_base;
*/
- }
- /* "_pydevd_bundle/pydevd_cython.pyx":1251
- * # i.e.: don't stop in: (stop_frame is frame.f_back and is_return) as we'd stop twice in that line.
- *
- * if plugin_manager is not None: # <<<<<<<<<<<<<<
- * result = plugin_manager.cmd_step_over(main_debugger, frame, event, self._args, stop_info, stop)
- * if result:
- */
- }
+/* Python wrapper */
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_15handle_exception(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_15handle_exception = {"handle_exception", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_15handle_exception, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_15handle_exception(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_py_db = 0;
+ PyObject *__pyx_v_thread = 0;
+ PyObject *__pyx_v_frame = 0;
+ PyObject *__pyx_v_arg = 0;
+ PyObject *__pyx_v_exception_type = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[5] = {0,0,0,0,0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("handle_exception (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_py_db,&__pyx_n_s_thread,&__pyx_n_s_frame,&__pyx_n_s_arg,&__pyx_n_s_exception_type,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
+ CYTHON_FALLTHROUGH;
+ case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
+ CYTHON_FALLTHROUGH;
+ case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ CYTHON_FALLTHROUGH;
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ CYTHON_FALLTHROUGH;
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_py_db)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1510, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ CYTHON_FALLTHROUGH;
+ case 1:
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_thread)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1510, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("handle_exception", 1, 5, 5, 1); __PYX_ERR(0, 1510, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 2:
+ if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1510, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("handle_exception", 1, 5, 5, 2); __PYX_ERR(0, 1510, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 3:
+ if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1510, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("handle_exception", 1, 5, 5, 3); __PYX_ERR(0, 1510, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 4:
+ if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_exception_type)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1510, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("handle_exception", 1, 5, 5, 4); __PYX_ERR(0, 1510, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "handle_exception") < 0)) __PYX_ERR(0, 1510, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 5)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
+ values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
+ }
+ __pyx_v_py_db = values[0];
+ __pyx_v_thread = values[1];
+ __pyx_v_frame = values[2];
+ __pyx_v_arg = values[3];
+ __pyx_v_exception_type = ((PyObject*)values[4]);
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("handle_exception", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 1510, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.handle_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_exception_type), (&PyString_Type), 1, "exception_type", 1))) __PYX_ERR(0, 1510, __pyx_L1_error)
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_14handle_exception(__pyx_self, __pyx_v_py_db, __pyx_v_thread, __pyx_v_frame, __pyx_v_arg, __pyx_v_exception_type);
+
+ /* function exit code */
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __pyx_r = NULL;
+ __pyx_L0:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_14handle_exception(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_py_db, PyObject *__pyx_v_thread, PyObject *__pyx_v_frame, PyObject *__pyx_v_arg, PyObject *__pyx_v_exception_type) {
+ int __pyx_v_stopped;
+ PyObject *__pyx_v_abs_real_path_and_base = 0;
+ PyObject *__pyx_v_absolute_filename = 0;
+ PyObject *__pyx_v_canonical_normalized_filename = 0;
+ PyObject *__pyx_v_lines_ignored = 0;
+ PyObject *__pyx_v_frame_id_to_frame = 0;
+ PyObject *__pyx_v_merged = 0;
+ PyObject *__pyx_v_trace_obj = 0;
+ PyObject *__pyx_v_initial_trace_obj = NULL;
+ PyObject *__pyx_v_check_trace_obj = NULL;
+ PyObject *__pyx_v_curr_stat = NULL;
+ PyObject *__pyx_v_last_stat = NULL;
+ PyObject *__pyx_v_from_user_input = NULL;
+ PyObject *__pyx_v_exc_lineno = NULL;
+ PyObject *__pyx_v_line = NULL;
+ PyObject *__pyx_v_f = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_2;
+ int __pyx_t_3;
+ PyObject *__pyx_t_4 = NULL;
+ Py_ssize_t __pyx_t_5;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ unsigned int __pyx_t_9;
+ PyObject *__pyx_t_10 = NULL;
+ PyObject *__pyx_t_11 = NULL;
+ PyObject *__pyx_t_12 = NULL;
+ int __pyx_t_13;
+ PyObject *__pyx_t_14 = NULL;
+ PyObject *__pyx_t_15 = NULL;
+ int __pyx_t_16;
+ int __pyx_t_17;
+ char const *__pyx_t_18;
+ PyObject *__pyx_t_19 = NULL;
+ PyObject *__pyx_t_20 = NULL;
+ PyObject *__pyx_t_21 = NULL;
+ PyObject *__pyx_t_22 = NULL;
+ PyObject *__pyx_t_23 = NULL;
+ PyObject *__pyx_t_24 = NULL;
+ char const *__pyx_t_25;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("handle_exception", 0);
+ __Pyx_INCREF(__pyx_v_py_db);
+ __Pyx_INCREF(__pyx_v_thread);
+ __Pyx_INCREF(__pyx_v_frame);
- /* "_pydevd_bundle/pydevd_cython.pyx":1243
- * stop, plugin_stop = result
- *
- * elif step_cmd in (108, 159): # <<<<<<<<<<<<<<
- * # Note: when dealing with a step over my code it's the same as a step over (the
- * # difference is that when we return from a frame in one we go to regular step
+ /* "_pydevd_bundle/pydevd_cython.pyx":1522
+ * # def handle_exception(py_db, thread, frame, arg, exception_type):
+ * # ENDIF
+ * stopped = False # <<<<<<<<<<<<<<
+ * try:
+ * # print('handle_exception', frame.f_lineno, frame.f_code.co_name)
*/
- goto __pyx_L179;
- }
+ __pyx_v_stopped = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1256
- * stop, plugin_stop = result
+ /* "_pydevd_bundle/pydevd_cython.pyx":1523
+ * # ENDIF
+ * stopped = False
+ * try: # <<<<<<<<<<<<<<
+ * # print('handle_exception', frame.f_lineno, frame.f_code.co_name)
*
- * elif step_cmd == 128: # <<<<<<<<<<<<<<
- * stop = False
- * back = frame.f_back
*/
- __pyx_t_11 = ((__pyx_v_step_cmd == 0x80) != 0);
- if (__pyx_t_11) {
+ /*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":1257
+ /* "_pydevd_bundle/pydevd_cython.pyx":1527
*
- * elif step_cmd == 128:
- * stop = False # <<<<<<<<<<<<<<
- * back = frame.f_back
- * if self._is_same_frame(stop_frame, frame) and is_return:
- */
- __pyx_v_stop = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1258
- * elif step_cmd == 128:
- * stop = False
- * back = frame.f_back # <<<<<<<<<<<<<<
- * if self._is_same_frame(stop_frame, frame) and is_return:
- * # We're exiting the smart step into initial frame (so, we probably didn't find our target).
- */
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1258, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_v_back = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1259
- * stop = False
- * back = frame.f_back
- * if self._is_same_frame(stop_frame, frame) and is_return: # <<<<<<<<<<<<<<
- * # We're exiting the smart step into initial frame (so, we probably didn't find our target).
- * stop = True
- */
- __pyx_t_2 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_frame); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1259, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1259, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (__pyx_t_9) {
- } else {
- __pyx_t_11 = __pyx_t_9;
- goto __pyx_L223_bool_binop_done;
- }
- __pyx_t_9 = (__pyx_v_is_return != 0);
- __pyx_t_11 = __pyx_t_9;
- __pyx_L223_bool_binop_done:;
- if (__pyx_t_11) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1261
- * if self._is_same_frame(stop_frame, frame) and is_return:
- * # We're exiting the smart step into initial frame (so, we probably didn't find our target).
- * stop = True # <<<<<<<<<<<<<<
+ * # We have 3 things in arg: exception type, description, traceback object
+ * trace_obj = arg[2] # <<<<<<<<<<<<<<
*
- * elif self._is_same_frame(stop_frame, back) and is_line:
- */
- __pyx_v_stop = 1;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1259
- * stop = False
- * back = frame.f_back
- * if self._is_same_frame(stop_frame, frame) and is_return: # <<<<<<<<<<<<<<
- * # We're exiting the smart step into initial frame (so, we probably didn't find our target).
- * stop = True
+ * initial_trace_obj = trace_obj
*/
- goto __pyx_L222;
- }
+ __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_arg, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1527, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_trace_obj = __pyx_t_1;
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1263
- * stop = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":1529
+ * trace_obj = arg[2]
*
- * elif self._is_same_frame(stop_frame, back) and is_line: # <<<<<<<<<<<<<<
- * if info.pydev_smart_child_offset != -1:
- * # i.e.: in this case, we're not interested in the pause in the parent, rather
+ * initial_trace_obj = trace_obj # <<<<<<<<<<<<<<
+ * if trace_obj.tb_next is None and trace_obj.tb_frame is frame:
+ * # I.e.: tb_next should be only None in the context it was thrown (trace_obj.tb_frame is frame is just a double check).
*/
- __pyx_t_2 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_back); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1263, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1263, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (__pyx_t_9) {
- } else {
- __pyx_t_11 = __pyx_t_9;
- goto __pyx_L225_bool_binop_done;
- }
- __pyx_t_9 = (__pyx_v_is_line != 0);
- __pyx_t_11 = __pyx_t_9;
- __pyx_L225_bool_binop_done:;
- if (__pyx_t_11) {
+ __Pyx_INCREF(__pyx_v_trace_obj);
+ __pyx_v_initial_trace_obj = __pyx_v_trace_obj;
- /* "_pydevd_bundle/pydevd_cython.pyx":1264
+ /* "_pydevd_bundle/pydevd_cython.pyx":1530
*
- * elif self._is_same_frame(stop_frame, back) and is_line:
- * if info.pydev_smart_child_offset != -1: # <<<<<<<<<<<<<<
- * # i.e.: in this case, we're not interested in the pause in the parent, rather
- * # we're interested in the pause in the child (when the parent is at the proper place).
+ * initial_trace_obj = trace_obj
+ * if trace_obj.tb_next is None and trace_obj.tb_frame is frame: # <<<<<<<<<<<<<<
+ * # I.e.: tb_next should be only None in the context it was thrown (trace_obj.tb_frame is frame is just a double check).
+ * pass
*/
- __pyx_t_11 = ((__pyx_v_info->pydev_smart_child_offset != -1L) != 0);
- if (__pyx_t_11) {
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace_obj, __pyx_n_s_tb_next); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1530, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = (__pyx_t_1 == Py_None);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_3) {
+ } else {
+ __pyx_t_2 = __pyx_t_3;
+ goto __pyx_L7_bool_binop_done;
+ }
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace_obj, __pyx_n_s_tb_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1530, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = (__pyx_t_1 == __pyx_v_frame);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __pyx_t_3;
+ __pyx_L7_bool_binop_done:;
+ if (__pyx_t_2) {
+ goto __pyx_L6;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1267
- * # i.e.: in this case, we're not interested in the pause in the parent, rather
- * # we're interested in the pause in the child (when the parent is at the proper place).
- * stop = False # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1535
+ * else:
+ * # Get the trace_obj from where the exception was raised...
+ * while trace_obj.tb_next is not None: # <<<<<<<<<<<<<<
+ * trace_obj = trace_obj.tb_next
*
- * else:
*/
- __pyx_v_stop = 0;
+ /*else*/ {
+ while (1) {
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace_obj, __pyx_n_s_tb_next); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1535, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = (__pyx_t_1 != Py_None);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (!__pyx_t_2) break;
- /* "_pydevd_bundle/pydevd_cython.pyx":1264
+ /* "_pydevd_bundle/pydevd_cython.pyx":1536
+ * # Get the trace_obj from where the exception was raised...
+ * while trace_obj.tb_next is not None:
+ * trace_obj = trace_obj.tb_next # <<<<<<<<<<<<<<
*
- * elif self._is_same_frame(stop_frame, back) and is_line:
- * if info.pydev_smart_child_offset != -1: # <<<<<<<<<<<<<<
- * # i.e.: in this case, we're not interested in the pause in the parent, rather
- * # we're interested in the pause in the child (when the parent is at the proper place).
+ * if py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception:
*/
- goto __pyx_L227;
- }
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace_obj, __pyx_n_s_tb_next); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1536, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF_SET(__pyx_v_trace_obj, __pyx_t_1);
+ __pyx_t_1 = 0;
+ }
+ }
+ __pyx_L6:;
- /* "_pydevd_bundle/pydevd_cython.pyx":1270
- *
- * else:
- * pydev_smart_parent_offset = info.pydev_smart_parent_offset # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1538
+ * trace_obj = trace_obj.tb_next
*
- * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+ * if py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception: # <<<<<<<<<<<<<<
+ * for check_trace_obj in (initial_trace_obj, trace_obj):
+ * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame)
*/
- /*else*/ {
- __pyx_t_10 = __pyx_v_info->pydev_smart_parent_offset;
- __pyx_v_pydev_smart_parent_offset = __pyx_t_10;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_ignore_exceptions_thrown_in_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1538, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1538, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_2) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1272
- * pydev_smart_parent_offset = info.pydev_smart_parent_offset
+ /* "_pydevd_bundle/pydevd_cython.pyx":1539
*
- * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants # <<<<<<<<<<<<<<
- * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants:
- * # Preferred mode (when the smart step into variants are available
+ * if py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception:
+ * for check_trace_obj in (initial_trace_obj, trace_obj): # <<<<<<<<<<<<<<
+ * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame)
+ * absolute_filename = abs_real_path_and_base[0]
*/
- __pyx_t_2 = __pyx_v_info->pydev_smart_step_into_variants;
- __Pyx_INCREF(__pyx_t_2);
- __pyx_v_pydev_smart_step_into_variants = ((PyObject*)__pyx_t_2);
- __pyx_t_2 = 0;
+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1539, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_v_initial_trace_obj);
+ __Pyx_GIVEREF(__pyx_v_initial_trace_obj);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_initial_trace_obj)) __PYX_ERR(0, 1539, __pyx_L4_error);
+ __Pyx_INCREF(__pyx_v_trace_obj);
+ __Pyx_GIVEREF(__pyx_v_trace_obj);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_trace_obj)) __PYX_ERR(0, 1539, __pyx_L4_error);
+ __pyx_t_4 = __pyx_t_1; __Pyx_INCREF(__pyx_t_4);
+ __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ for (;;) {
+ if (__pyx_t_5 >= 2) break;
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 1539, __pyx_L4_error)
+ #else
+ __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1539, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ #endif
+ __Pyx_XDECREF_SET(__pyx_v_check_trace_obj, __pyx_t_1);
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1273
- *
- * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
- * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants: # <<<<<<<<<<<<<<
- * # Preferred mode (when the smart step into variants are available
- * # and the offset is set).
+ /* "_pydevd_bundle/pydevd_cython.pyx":1540
+ * if py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception:
+ * for check_trace_obj in (initial_trace_obj, trace_obj):
+ * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame) # <<<<<<<<<<<<<<
+ * absolute_filename = abs_real_path_and_base[0]
+ * canonical_normalized_filename = abs_real_path_and_base[1]
*/
- __pyx_t_9 = ((__pyx_v_pydev_smart_parent_offset >= 0) != 0);
- if (__pyx_t_9) {
- } else {
- __pyx_t_11 = __pyx_t_9;
- goto __pyx_L229_bool_binop_done;
- }
- __pyx_t_9 = (__pyx_v_pydev_smart_step_into_variants != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_pydev_smart_step_into_variants) != 0);
- __pyx_t_11 = __pyx_t_9;
- __pyx_L229_bool_binop_done:;
- if (__pyx_t_11) {
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_get_abs_path_real_path_and_base); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1540, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_check_trace_obj, __pyx_n_s_tb_frame); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1540, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ __pyx_t_9 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_7};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1540, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ }
+ if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(0, 1540, __pyx_L4_error)
+ __Pyx_XDECREF_SET(__pyx_v_abs_real_path_and_base, ((PyObject*)__pyx_t_1));
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1276
- * # Preferred mode (when the smart step into variants are available
- * # and the offset is set).
- * stop = get_smart_step_into_variant_from_frame_offset(back.f_lasti, pydev_smart_step_into_variants) is \ # <<<<<<<<<<<<<<
- * get_smart_step_into_variant_from_frame_offset(pydev_smart_parent_offset, pydev_smart_step_into_variants)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1541
+ * for check_trace_obj in (initial_trace_obj, trace_obj):
+ * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame)
+ * absolute_filename = abs_real_path_and_base[0] # <<<<<<<<<<<<<<
+ * canonical_normalized_filename = abs_real_path_and_base[1]
*
*/
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1276, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_back, __pyx_n_s_f_lasti); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1276, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_7 = NULL;
- __pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_7)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_7);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
- __pyx_t_10 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_4, __pyx_v_pydev_smart_step_into_variants};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1276, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_4, __pyx_v_pydev_smart_step_into_variants};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1276, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_8 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1276, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- if (__pyx_t_7) {
- __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
- }
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_10, __pyx_t_4);
- __Pyx_INCREF(__pyx_v_pydev_smart_step_into_variants);
- __Pyx_GIVEREF(__pyx_v_pydev_smart_step_into_variants);
- PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_10, __pyx_v_pydev_smart_step_into_variants);
- __pyx_t_4 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1276, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(__pyx_v_abs_real_path_and_base == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 1541, __pyx_L4_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_abs_real_path_and_base, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1541, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(0, 1541, __pyx_L4_error)
+ __Pyx_XDECREF_SET(__pyx_v_absolute_filename, ((PyObject*)__pyx_t_1));
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1277
- * # and the offset is set).
- * stop = get_smart_step_into_variant_from_frame_offset(back.f_lasti, pydev_smart_step_into_variants) is \
- * get_smart_step_into_variant_from_frame_offset(pydev_smart_parent_offset, pydev_smart_step_into_variants) # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1542
+ * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame)
+ * absolute_filename = abs_real_path_and_base[0]
+ * canonical_normalized_filename = abs_real_path_and_base[1] # <<<<<<<<<<<<<<
*
- * else:
+ * lines_ignored = filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename)
*/
- __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1277, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_pydev_smart_parent_offset); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1277, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_7 = NULL;
- __pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_7)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_7);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
- __pyx_t_10 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_4, __pyx_v_pydev_smart_step_into_variants};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1277, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_4, __pyx_v_pydev_smart_step_into_variants};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1277, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_1 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1277, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (__pyx_t_7) {
- __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
- }
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_10, __pyx_t_4);
- __Pyx_INCREF(__pyx_v_pydev_smart_step_into_variants);
- __Pyx_GIVEREF(__pyx_v_pydev_smart_step_into_variants);
- PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_10, __pyx_v_pydev_smart_step_into_variants);
- __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1277, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_11 = (__pyx_t_2 == __pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_stop = __pyx_t_11;
+ if (unlikely(__pyx_v_abs_real_path_and_base == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 1542, __pyx_L4_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_abs_real_path_and_base, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1542, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(0, 1542, __pyx_L4_error)
+ __Pyx_XDECREF_SET(__pyx_v_canonical_normalized_filename, ((PyObject*)__pyx_t_1));
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1273
+ /* "_pydevd_bundle/pydevd_cython.pyx":1544
+ * canonical_normalized_filename = abs_real_path_and_base[1]
*
- * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
- * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants: # <<<<<<<<<<<<<<
- * # Preferred mode (when the smart step into variants are available
- * # and the offset is set).
+ * lines_ignored = filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename) # <<<<<<<<<<<<<<
+ * if lines_ignored is None:
+ * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {}
*/
- goto __pyx_L228;
- }
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_filename_to_lines_where_exceptio); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1544, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_get); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1544, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_9 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_canonical_normalized_filename};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1544, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(0, 1544, __pyx_L4_error)
+ __Pyx_XDECREF_SET(__pyx_v_lines_ignored, ((PyObject*)__pyx_t_1));
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1281
- * else:
- * # Only the name/line is available, so, check that.
- * curr_func_name = frame.f_code.co_name # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1545
*
- * # global context is set with an empty name
- */
- /*else*/ {
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1281, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_co_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1281, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 1281, __pyx_L170_error)
- __Pyx_XDECREF_SET(__pyx_v_curr_func_name, ((PyObject*)__pyx_t_2));
- __pyx_t_2 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1284
+ * lines_ignored = filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename)
+ * if lines_ignored is None: # <<<<<<<<<<<<<<
+ * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {}
*
- * # global context is set with an empty name
- * if curr_func_name in ('?', '') or curr_func_name is None: # <<<<<<<<<<<<<<
- * curr_func_name = ''
- * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line:
- */
- __Pyx_INCREF(__pyx_v_curr_func_name);
- __pyx_t_21 = __pyx_v_curr_func_name;
- __pyx_t_14 = (__Pyx_PyString_Equals(__pyx_t_21, __pyx_kp_s__3, Py_EQ)); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1284, __pyx_L170_error)
- __pyx_t_29 = (__pyx_t_14 != 0);
- if (!__pyx_t_29) {
- } else {
- __pyx_t_9 = __pyx_t_29;
- goto __pyx_L234_bool_binop_done;
- }
- __pyx_t_29 = (__Pyx_PyString_Equals(__pyx_t_21, __pyx_kp_s_module, Py_EQ)); if (unlikely(__pyx_t_29 < 0)) __PYX_ERR(0, 1284, __pyx_L170_error)
- __pyx_t_14 = (__pyx_t_29 != 0);
- __pyx_t_9 = __pyx_t_14;
- __pyx_L234_bool_binop_done:;
- __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
- __pyx_t_14 = (__pyx_t_9 != 0);
- if (!__pyx_t_14) {
- } else {
- __pyx_t_11 = __pyx_t_14;
- goto __pyx_L232_bool_binop_done;
- }
- __pyx_t_14 = (__pyx_v_curr_func_name == ((PyObject*)Py_None));
- __pyx_t_9 = (__pyx_t_14 != 0);
- __pyx_t_11 = __pyx_t_9;
- __pyx_L232_bool_binop_done:;
- if (__pyx_t_11) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1285
- * # global context is set with an empty name
- * if curr_func_name in ('?', '') or curr_func_name is None:
- * curr_func_name = '' # <<<<<<<<<<<<<<
- * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line:
- * stop = True
*/
- __Pyx_INCREF(__pyx_kp_s_);
- __Pyx_DECREF_SET(__pyx_v_curr_func_name, __pyx_kp_s_);
+ __pyx_t_2 = (__pyx_v_lines_ignored == ((PyObject*)Py_None));
+ if (__pyx_t_2) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1284
+ /* "_pydevd_bundle/pydevd_cython.pyx":1546
+ * lines_ignored = filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename)
+ * if lines_ignored is None:
+ * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {} # <<<<<<<<<<<<<<
*
- * # global context is set with an empty name
- * if curr_func_name in ('?', '') or curr_func_name is None: # <<<<<<<<<<<<<<
- * curr_func_name = ''
- * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line:
+ * try:
*/
- }
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1546, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_DECREF_SET(__pyx_v_lines_ignored, __pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_filename_to_lines_where_exceptio); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1546, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (unlikely((PyObject_SetItem(__pyx_t_7, __pyx_v_canonical_normalized_filename, __pyx_t_1) < 0))) __PYX_ERR(0, 1546, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1286
- * if curr_func_name in ('?', '') or curr_func_name is None:
- * curr_func_name = ''
- * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line: # <<<<<<<<<<<<<<
- * stop = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":1545
+ *
+ * lines_ignored = filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename)
+ * if lines_ignored is None: # <<<<<<<<<<<<<<
+ * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {}
*
*/
- __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_curr_func_name, __pyx_v_info->pydev_func_name, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1286, __pyx_L170_error)
- __pyx_t_14 = (__pyx_t_9 != 0);
- if (__pyx_t_14) {
- } else {
- __pyx_t_11 = __pyx_t_14;
- goto __pyx_L237_bool_binop_done;
- }
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_stop_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1286, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_info->pydev_next_line); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1286, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_8 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1286, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1286, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_11 = __pyx_t_14;
- __pyx_L237_bool_binop_done:;
- if (__pyx_t_11) {
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1287
- * curr_func_name = ''
- * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line:
- * stop = True # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1548
+ * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {}
*
- * if not stop:
+ * try: # <<<<<<<<<<<<<<
+ * curr_stat = os.stat(absolute_filename)
+ * curr_stat = (curr_stat.st_size, curr_stat.st_mtime)
*/
- __pyx_v_stop = 1;
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
+ __Pyx_XGOTREF(__pyx_t_10);
+ __Pyx_XGOTREF(__pyx_t_11);
+ __Pyx_XGOTREF(__pyx_t_12);
+ /*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":1286
- * if curr_func_name in ('?', '') or curr_func_name is None:
- * curr_func_name = ''
- * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line: # <<<<<<<<<<<<<<
- * stop = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":1549
*
+ * try:
+ * curr_stat = os.stat(absolute_filename) # <<<<<<<<<<<<<<
+ * curr_stat = (curr_stat.st_size, curr_stat.st_mtime)
+ * except:
*/
- }
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_os); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1549, __pyx_L15_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_stat); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1549, __pyx_L15_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ __pyx_t_9 = 1;
}
- __pyx_L228:;
}
- __pyx_L227:;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1289
- * stop = True
- *
- * if not stop: # <<<<<<<<<<<<<<
- * # In smart step into, if we didn't hit it in this frame once, that'll
- * # not be the case next time either, so, disable tracing for this frame.
- */
- __pyx_t_11 = ((!(__pyx_v_stop != 0)) != 0);
- if (__pyx_t_11) {
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_absolute_filename};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1549, __pyx_L15_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ }
+ __Pyx_XDECREF_SET(__pyx_v_curr_stat, __pyx_t_1);
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1292
- * # In smart step into, if we didn't hit it in this frame once, that'll
- * # not be the case next time either, so, disable tracing for this frame.
- * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<<
- *
- * elif back is not None and self._is_same_frame(stop_frame, back.f_back) and is_line:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1550
+ * try:
+ * curr_stat = os.stat(absolute_filename)
+ * curr_stat = (curr_stat.st_size, curr_stat.st_mtime) # <<<<<<<<<<<<<<
+ * except:
+ * curr_stat = None
*/
- __Pyx_XDECREF(__pyx_r);
- if ((__pyx_v_is_call != 0)) {
- __Pyx_INCREF(Py_None);
- __pyx_t_8 = Py_None;
- } else {
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1292, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_8 = __pyx_t_3;
- __pyx_t_3 = 0;
- }
- __pyx_r = __pyx_t_8;
- __pyx_t_8 = 0;
- goto __pyx_L174_try_return;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_curr_stat, __pyx_n_s_st_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1550, __pyx_L15_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_curr_stat, __pyx_n_s_st_mtime); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1550, __pyx_L15_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1550, __pyx_L15_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GIVEREF(__pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1)) __PYX_ERR(0, 1550, __pyx_L15_error);
+ __Pyx_GIVEREF(__pyx_t_6);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6)) __PYX_ERR(0, 1550, __pyx_L15_error);
+ __pyx_t_1 = 0;
+ __pyx_t_6 = 0;
+ __Pyx_DECREF_SET(__pyx_v_curr_stat, __pyx_t_7);
+ __pyx_t_7 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1289
- * stop = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":1548
+ * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {}
*
- * if not stop: # <<<<<<<<<<<<<<
- * # In smart step into, if we didn't hit it in this frame once, that'll
- * # not be the case next time either, so, disable tracing for this frame.
+ * try: # <<<<<<<<<<<<<<
+ * curr_stat = os.stat(absolute_filename)
+ * curr_stat = (curr_stat.st_size, curr_stat.st_mtime)
*/
- }
+ }
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ goto __pyx_L22_try_end;
+ __pyx_L15_error:;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1263
- * stop = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":1551
+ * curr_stat = os.stat(absolute_filename)
+ * curr_stat = (curr_stat.st_size, curr_stat.st_mtime)
+ * except: # <<<<<<<<<<<<<<
+ * curr_stat = None
*
- * elif self._is_same_frame(stop_frame, back) and is_line: # <<<<<<<<<<<<<<
- * if info.pydev_smart_child_offset != -1:
- * # i.e.: in this case, we're not interested in the pause in the parent, rather
*/
- goto __pyx_L222;
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1294
- * return None if is_call else NO_FTRACE
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.handle_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_1) < 0) __PYX_ERR(0, 1551, __pyx_L17_except_error)
+ __Pyx_XGOTREF(__pyx_t_7);
+ __Pyx_XGOTREF(__pyx_t_6);
+ __Pyx_XGOTREF(__pyx_t_1);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1552
+ * curr_stat = (curr_stat.st_size, curr_stat.st_mtime)
+ * except:
+ * curr_stat = None # <<<<<<<<<<<<<<
*
- * elif back is not None and self._is_same_frame(stop_frame, back.f_back) and is_line: # <<<<<<<<<<<<<<
- * # Ok, we have to track 2 stops at this point, the parent and the child offset.
- * # This happens when handling a step into which targets a function inside a list comprehension
+ * last_stat = filename_to_stat_info.get(absolute_filename)
*/
- __pyx_t_14 = (__pyx_v_back != Py_None);
- __pyx_t_9 = (__pyx_t_14 != 0);
- if (__pyx_t_9) {
- } else {
- __pyx_t_11 = __pyx_t_9;
- goto __pyx_L240_bool_binop_done;
- }
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_back, __pyx_n_s_f_back); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1294, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_3 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1294, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1294, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_9) {
- } else {
- __pyx_t_11 = __pyx_t_9;
- goto __pyx_L240_bool_binop_done;
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_curr_stat, Py_None);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ goto __pyx_L16_exception_handled;
}
- __pyx_t_9 = (__pyx_v_is_line != 0);
- __pyx_t_11 = __pyx_t_9;
- __pyx_L240_bool_binop_done:;
- if (__pyx_t_11) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1298
- * # This happens when handling a step into which targets a function inside a list comprehension
- * # or generator (in which case an intermediary frame is created due to an internal function call).
- * pydev_smart_parent_offset = info.pydev_smart_parent_offset # <<<<<<<<<<<<<<
- * pydev_smart_child_offset = info.pydev_smart_child_offset
- * # print('matched back frame', pydev_smart_parent_offset, pydev_smart_child_offset)
- */
- __pyx_t_10 = __pyx_v_info->pydev_smart_parent_offset;
- __pyx_v_pydev_smart_parent_offset = __pyx_t_10;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1299
- * # or generator (in which case an intermediary frame is created due to an internal function call).
- * pydev_smart_parent_offset = info.pydev_smart_parent_offset
- * pydev_smart_child_offset = info.pydev_smart_child_offset # <<<<<<<<<<<<<<
- * # print('matched back frame', pydev_smart_parent_offset, pydev_smart_child_offset)
- * # print('parent f_lasti', back.f_back.f_lasti)
- */
- __pyx_t_10 = __pyx_v_info->pydev_smart_child_offset;
- __pyx_v_pydev_smart_child_offset = __pyx_t_10;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1303
- * # print('parent f_lasti', back.f_back.f_lasti)
- * # print('child f_lasti', back.f_lasti)
- * stop = False # <<<<<<<<<<<<<<
- * if pydev_smart_child_offset >= 0 and pydev_smart_child_offset >= 0:
- * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
- */
- __pyx_v_stop = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1304
- * # print('child f_lasti', back.f_lasti)
- * stop = False
- * if pydev_smart_child_offset >= 0 and pydev_smart_child_offset >= 0: # <<<<<<<<<<<<<<
- * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+ /* "_pydevd_bundle/pydevd_cython.pyx":1548
+ * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {}
*
+ * try: # <<<<<<<<<<<<<<
+ * curr_stat = os.stat(absolute_filename)
+ * curr_stat = (curr_stat.st_size, curr_stat.st_mtime)
*/
- __pyx_t_9 = ((__pyx_v_pydev_smart_child_offset >= 0) != 0);
- if (__pyx_t_9) {
- } else {
- __pyx_t_11 = __pyx_t_9;
- goto __pyx_L244_bool_binop_done;
- }
- __pyx_t_9 = ((__pyx_v_pydev_smart_child_offset >= 0) != 0);
- __pyx_t_11 = __pyx_t_9;
- __pyx_L244_bool_binop_done:;
- if (__pyx_t_11) {
+ __pyx_L17_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_10);
+ __Pyx_XGIVEREF(__pyx_t_11);
+ __Pyx_XGIVEREF(__pyx_t_12);
+ __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
+ goto __pyx_L4_error;
+ __pyx_L16_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_10);
+ __Pyx_XGIVEREF(__pyx_t_11);
+ __Pyx_XGIVEREF(__pyx_t_12);
+ __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
+ __pyx_L22_try_end:;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1305
- * stop = False
- * if pydev_smart_child_offset >= 0 and pydev_smart_child_offset >= 0:
- * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1554
+ * curr_stat = None
*
- * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants:
+ * last_stat = filename_to_stat_info.get(absolute_filename) # <<<<<<<<<<<<<<
+ * if last_stat != curr_stat:
+ * filename_to_stat_info[absolute_filename] = curr_stat
*/
- __pyx_t_3 = __pyx_v_info->pydev_smart_step_into_variants;
- __Pyx_INCREF(__pyx_t_3);
- __pyx_v_pydev_smart_step_into_variants = ((PyObject*)__pyx_t_3);
- __pyx_t_3 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_filename_to_stat_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1554, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_get); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1554, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_9 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_absolute_filename};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1554, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __Pyx_XDECREF_SET(__pyx_v_last_stat, __pyx_t_1);
+ __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1307
- * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+ /* "_pydevd_bundle/pydevd_cython.pyx":1555
*
- * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants: # <<<<<<<<<<<<<<
- * # Note that we don't really check the parent offset, only the offset of
- * # the child (because this is a generator, the parent may have moved forward
+ * last_stat = filename_to_stat_info.get(absolute_filename)
+ * if last_stat != curr_stat: # <<<<<<<<<<<<<<
+ * filename_to_stat_info[absolute_filename] = curr_stat
+ * lines_ignored.clear()
*/
- __pyx_t_9 = ((__pyx_v_pydev_smart_parent_offset >= 0) != 0);
- if (__pyx_t_9) {
- } else {
- __pyx_t_11 = __pyx_t_9;
- goto __pyx_L247_bool_binop_done;
- }
- __pyx_t_9 = (__pyx_v_pydev_smart_step_into_variants != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_pydev_smart_step_into_variants) != 0);
- __pyx_t_11 = __pyx_t_9;
- __pyx_L247_bool_binop_done:;
- if (__pyx_t_11) {
+ __pyx_t_1 = PyObject_RichCompare(__pyx_v_last_stat, __pyx_v_curr_stat, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1555, __pyx_L4_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1555, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_2) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1312
- * # already -- and that's ok, so, we just check that the parent frame
- * # matches in this case).
- * smart_step_into_variant = get_smart_step_into_variant_from_frame_offset(pydev_smart_parent_offset, pydev_smart_step_into_variants) # <<<<<<<<<<<<<<
- * # print('matched parent offset', pydev_smart_parent_offset)
- * # Ok, now, check the child variant
+ /* "_pydevd_bundle/pydevd_cython.pyx":1556
+ * last_stat = filename_to_stat_info.get(absolute_filename)
+ * if last_stat != curr_stat:
+ * filename_to_stat_info[absolute_filename] = curr_stat # <<<<<<<<<<<<<<
+ * lines_ignored.clear()
+ * try:
*/
- __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1312, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_pydev_smart_parent_offset); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1312, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = NULL;
- __pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_1)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
- __pyx_t_10 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_t_2, __pyx_v_pydev_smart_step_into_variants};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1312, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_t_2, __pyx_v_pydev_smart_step_into_variants};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1312, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1312, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (__pyx_t_1) {
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
- }
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_10, __pyx_t_2);
- __Pyx_INCREF(__pyx_v_pydev_smart_step_into_variants);
- __Pyx_GIVEREF(__pyx_v_pydev_smart_step_into_variants);
- PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_10, __pyx_v_pydev_smart_step_into_variants);
- __pyx_t_2 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1312, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_v_smart_step_into_variant = __pyx_t_3;
- __pyx_t_3 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_filename_to_stat_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1556, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (unlikely((PyObject_SetItem(__pyx_t_1, __pyx_v_absolute_filename, __pyx_v_curr_stat) < 0))) __PYX_ERR(0, 1556, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1315
- * # print('matched parent offset', pydev_smart_parent_offset)
- * # Ok, now, check the child variant
- * children_variants = smart_step_into_variant.children_variants # <<<<<<<<<<<<<<
- * stop = children_variants and (
- * get_smart_step_into_variant_from_frame_offset(back.f_lasti, children_variants) is \
+ /* "_pydevd_bundle/pydevd_cython.pyx":1557
+ * if last_stat != curr_stat:
+ * filename_to_stat_info[absolute_filename] = curr_stat
+ * lines_ignored.clear() # <<<<<<<<<<<<<<
+ * try:
+ * linecache.checkcache(absolute_filename)
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_smart_step_into_variant, __pyx_n_s_children_variants); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1315, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_v_children_variants = __pyx_t_3;
- __pyx_t_3 = 0;
+ if (unlikely(__pyx_v_lines_ignored == Py_None)) {
+ PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "clear");
+ __PYX_ERR(0, 1557, __pyx_L4_error)
+ }
+ __pyx_t_13 = __Pyx_PyDict_Clear(__pyx_v_lines_ignored); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 1557, __pyx_L4_error)
- /* "_pydevd_bundle/pydevd_cython.pyx":1316
- * # Ok, now, check the child variant
- * children_variants = smart_step_into_variant.children_variants
- * stop = children_variants and ( # <<<<<<<<<<<<<<
- * get_smart_step_into_variant_from_frame_offset(back.f_lasti, children_variants) is \
- * get_smart_step_into_variant_from_frame_offset(pydev_smart_child_offset, children_variants)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1558
+ * filename_to_stat_info[absolute_filename] = curr_stat
+ * lines_ignored.clear()
+ * try: # <<<<<<<<<<<<<<
+ * linecache.checkcache(absolute_filename)
+ * except:
*/
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_children_variants); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1316, __pyx_L170_error)
- if (__pyx_t_9) {
- } else {
- __pyx_t_11 = __pyx_t_9;
- goto __pyx_L249_bool_binop_done;
- }
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10);
+ __Pyx_XGOTREF(__pyx_t_12);
+ __Pyx_XGOTREF(__pyx_t_11);
+ __Pyx_XGOTREF(__pyx_t_10);
+ /*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":1317
- * children_variants = smart_step_into_variant.children_variants
- * stop = children_variants and (
- * get_smart_step_into_variant_from_frame_offset(back.f_lasti, children_variants) is \ # <<<<<<<<<<<<<<
- * get_smart_step_into_variant_from_frame_offset(pydev_smart_child_offset, children_variants)
- * )
+ /* "_pydevd_bundle/pydevd_cython.pyx":1559
+ * lines_ignored.clear()
+ * try:
+ * linecache.checkcache(absolute_filename) # <<<<<<<<<<<<<<
+ * except:
+ * pydev_log.exception("Error in linecache.checkcache(%r)", absolute_filename)
*/
- __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1317, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_back, __pyx_n_s_f_lasti); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1317, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = NULL;
- __pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_2)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_2);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
- __pyx_t_10 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_4, __pyx_v_children_variants};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1317, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_4, __pyx_v_children_variants};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1317, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_1 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1317, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (__pyx_t_2) {
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL;
- }
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_10, __pyx_t_4);
- __Pyx_INCREF(__pyx_v_children_variants);
- __Pyx_GIVEREF(__pyx_v_children_variants);
- PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_10, __pyx_v_children_variants);
- __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1317, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_linecache); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1559, __pyx_L26_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_checkcache); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1559, __pyx_L26_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ __pyx_t_9 = 1;
}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1318
- * stop = children_variants and (
- * get_smart_step_into_variant_from_frame_offset(back.f_lasti, children_variants) is \
- * get_smart_step_into_variant_from_frame_offset(pydev_smart_child_offset, children_variants) # <<<<<<<<<<<<<<
- * )
- * # print('stop at child', stop)
- */
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1318, __pyx_L170_error)
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_absolute_filename};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1559, __pyx_L26_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_pydev_smart_child_offset); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1318, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = NULL;
- __pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_2)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_2);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
- __pyx_t_10 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_4, __pyx_v_children_variants};
- __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1318, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_4, __pyx_v_children_variants};
- __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1318, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_7 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1318, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- if (__pyx_t_2) {
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
- }
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_10, __pyx_t_4);
- __Pyx_INCREF(__pyx_v_children_variants);
- __Pyx_GIVEREF(__pyx_v_children_variants);
- PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_10, __pyx_v_children_variants);
- __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1318, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_9 = (__pyx_t_3 == __pyx_t_8);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1317
- * children_variants = smart_step_into_variant.children_variants
- * stop = children_variants and (
- * get_smart_step_into_variant_from_frame_offset(back.f_lasti, children_variants) is \ # <<<<<<<<<<<<<<
- * get_smart_step_into_variant_from_frame_offset(pydev_smart_child_offset, children_variants)
- * )
- */
- __pyx_t_14 = (__pyx_t_9 != 0);
- __pyx_t_11 = __pyx_t_14;
- __pyx_L249_bool_binop_done:;
- __pyx_v_stop = __pyx_t_11;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1307
- * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
- *
- * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants: # <<<<<<<<<<<<<<
- * # Note that we don't really check the parent offset, only the offset of
- * # the child (because this is a generator, the parent may have moved forward
- */
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1304
- * # print('child f_lasti', back.f_lasti)
- * stop = False
- * if pydev_smart_child_offset >= 0 and pydev_smart_child_offset >= 0: # <<<<<<<<<<<<<<
- * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":1558
+ * filename_to_stat_info[absolute_filename] = curr_stat
+ * lines_ignored.clear()
+ * try: # <<<<<<<<<<<<<<
+ * linecache.checkcache(absolute_filename)
+ * except:
*/
}
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ goto __pyx_L33_try_end;
+ __pyx_L26_error:;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1322
- * # print('stop at child', stop)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1560
+ * try:
+ * linecache.checkcache(absolute_filename)
+ * except: # <<<<<<<<<<<<<<
+ * pydev_log.exception("Error in linecache.checkcache(%r)", absolute_filename)
*
- * if not stop: # <<<<<<<<<<<<<<
- * # In smart step into, if we didn't hit it in this frame once, that'll
- * # not be the case next time either, so, disable tracing for this frame.
*/
- __pyx_t_11 = ((!(__pyx_v_stop != 0)) != 0);
- if (__pyx_t_11) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1325
- * # In smart step into, if we didn't hit it in this frame once, that'll
- * # not be the case next time either, so, disable tracing for this frame.
- * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<<
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.handle_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(0, 1560, __pyx_L28_except_error)
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_6);
+ __Pyx_XGOTREF(__pyx_t_7);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1561
+ * linecache.checkcache(absolute_filename)
+ * except:
+ * pydev_log.exception("Error in linecache.checkcache(%r)", absolute_filename) # <<<<<<<<<<<<<<
*
- * elif step_cmd in (109, 160):
+ * from_user_input = py_db.filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename)
*/
- __Pyx_XDECREF(__pyx_r);
- if ((__pyx_v_is_call != 0)) {
- __Pyx_INCREF(Py_None);
- __pyx_t_8 = Py_None;
- } else {
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1325, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_8 = __pyx_t_3;
- __pyx_t_3 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1561, __pyx_L28_except_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_exception); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1561, __pyx_L28_except_error)
+ __Pyx_GOTREF(__pyx_t_15);
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __pyx_t_14 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_15))) {
+ __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_15);
+ if (likely(__pyx_t_14)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15);
+ __Pyx_INCREF(__pyx_t_14);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_15, function);
+ __pyx_t_9 = 1;
+ }
}
- __pyx_r = __pyx_t_8;
- __pyx_t_8 = 0;
- goto __pyx_L174_try_return;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1322
- * # print('stop at child', stop)
- *
- * if not stop: # <<<<<<<<<<<<<<
- * # In smart step into, if we didn't hit it in this frame once, that'll
- * # not be the case next time either, so, disable tracing for this frame.
- */
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_14, __pyx_kp_s_Error_in_linecache_checkcache_r, __pyx_v_absolute_filename};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_15, __pyx_callargs+1-__pyx_t_9, 2+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1561, __pyx_L28_except_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ goto __pyx_L27_exception_handled;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":1294
- * return None if is_call else NO_FTRACE
- *
- * elif back is not None and self._is_same_frame(stop_frame, back.f_back) and is_line: # <<<<<<<<<<<<<<
- * # Ok, we have to track 2 stops at this point, the parent and the child offset.
- * # This happens when handling a step into which targets a function inside a list comprehension
+ /* "_pydevd_bundle/pydevd_cython.pyx":1558
+ * filename_to_stat_info[absolute_filename] = curr_stat
+ * lines_ignored.clear()
+ * try: # <<<<<<<<<<<<<<
+ * linecache.checkcache(absolute_filename)
+ * except:
*/
+ __pyx_L28_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_12);
+ __Pyx_XGIVEREF(__pyx_t_11);
+ __Pyx_XGIVEREF(__pyx_t_10);
+ __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10);
+ goto __pyx_L4_error;
+ __pyx_L27_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_12);
+ __Pyx_XGIVEREF(__pyx_t_11);
+ __Pyx_XGIVEREF(__pyx_t_10);
+ __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10);
+ __pyx_L33_try_end:;
}
- __pyx_L222:;
- /* "_pydevd_bundle/pydevd_cython.pyx":1256
- * stop, plugin_stop = result
+ /* "_pydevd_bundle/pydevd_cython.pyx":1555
*
- * elif step_cmd == 128: # <<<<<<<<<<<<<<
- * stop = False
- * back = frame.f_back
+ * last_stat = filename_to_stat_info.get(absolute_filename)
+ * if last_stat != curr_stat: # <<<<<<<<<<<<<<
+ * filename_to_stat_info[absolute_filename] = curr_stat
+ * lines_ignored.clear()
*/
- goto __pyx_L179;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":1327
- * return None if is_call else NO_FTRACE
- *
- * elif step_cmd in (109, 160): # <<<<<<<<<<<<<<
- * stop = is_return and self._is_same_frame(stop_frame, frame)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1563
+ * pydev_log.exception("Error in linecache.checkcache(%r)", absolute_filename)
*
+ * from_user_input = py_db.filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename) # <<<<<<<<<<<<<<
+ * if from_user_input:
+ * merged = {}
*/
- switch (__pyx_v_step_cmd) {
- case 0x6D:
- case 0xA0:
- __pyx_t_11 = 1;
- break;
- default:
- __pyx_t_11 = 0;
- break;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_filename_to_lines_where_exceptio); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1563, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1563, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_9 = 1;
+ }
}
- __pyx_t_14 = (__pyx_t_11 != 0);
- if (__pyx_t_14) {
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_canonical_normalized_filename};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1563, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __Pyx_XDECREF_SET(__pyx_v_from_user_input, __pyx_t_7);
+ __pyx_t_7 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1328
- *
- * elif step_cmd in (109, 160):
- * stop = is_return and self._is_same_frame(stop_frame, frame) # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1564
*
+ * from_user_input = py_db.filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename)
+ * if from_user_input: # <<<<<<<<<<<<<<
+ * merged = {}
+ * merged.update(lines_ignored)
+ */
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_user_input); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1564, __pyx_L4_error)
+ if (__pyx_t_2) {
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1565
+ * from_user_input = py_db.filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename)
+ * if from_user_input:
+ * merged = {} # <<<<<<<<<<<<<<
+ * merged.update(lines_ignored)
+ * # Override what we have with the related entries that the user entered
+ */
+ __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1565, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_XDECREF_SET(__pyx_v_merged, ((PyObject*)__pyx_t_7));
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1566
+ * if from_user_input:
+ * merged = {}
+ * merged.update(lines_ignored) # <<<<<<<<<<<<<<
+ * # Override what we have with the related entries that the user entered
+ * merged.update(from_user_input)
+ */
+ __pyx_t_7 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_update, __pyx_v_merged, __pyx_v_lines_ignored); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1566, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1568
+ * merged.update(lines_ignored)
+ * # Override what we have with the related entries that the user entered
+ * merged.update(from_user_input) # <<<<<<<<<<<<<<
* else:
+ * merged = lines_ignored
*/
- __pyx_t_11 = (__pyx_v_is_return != 0);
- if (__pyx_t_11) {
- } else {
- __pyx_t_14 = __pyx_t_11;
- goto __pyx_L252_bool_binop_done;
- }
- __pyx_t_8 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_frame); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1328, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1328, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_14 = __pyx_t_11;
- __pyx_L252_bool_binop_done:;
- __pyx_v_stop = __pyx_t_14;
+ __pyx_t_7 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_update, __pyx_v_merged, __pyx_v_from_user_input); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1568, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1327
- * return None if is_call else NO_FTRACE
- *
- * elif step_cmd in (109, 160): # <<<<<<<<<<<<<<
- * stop = is_return and self._is_same_frame(stop_frame, frame)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1564
*
+ * from_user_input = py_db.filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename)
+ * if from_user_input: # <<<<<<<<<<<<<<
+ * merged = {}
+ * merged.update(lines_ignored)
*/
- goto __pyx_L179;
+ goto __pyx_L36;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":1331
- *
+ /* "_pydevd_bundle/pydevd_cython.pyx":1570
+ * merged.update(from_user_input)
* else:
- * stop = False # <<<<<<<<<<<<<<
+ * merged = lines_ignored # <<<<<<<<<<<<<<
*
- * if stop and step_cmd != -1 and is_return and hasattr(frame, "f_back"):
+ * exc_lineno = check_trace_obj.tb_lineno
*/
/*else*/ {
- __pyx_v_stop = 0;
+ __Pyx_INCREF(__pyx_v_lines_ignored);
+ __Pyx_XDECREF_SET(__pyx_v_merged, __pyx_v_lines_ignored);
}
- __pyx_L179:;
+ __pyx_L36:;
- /* "_pydevd_bundle/pydevd_cython.pyx":1333
- * stop = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1572
+ * merged = lines_ignored
*
- * if stop and step_cmd != -1 and is_return and hasattr(frame, "f_back"): # <<<<<<<<<<<<<<
- * f_code = getattr(frame.f_back, 'f_code', None)
- * if f_code is not None:
+ * exc_lineno = check_trace_obj.tb_lineno # <<<<<<<<<<<<<<
+ *
+ * # print ('lines ignored', lines_ignored)
*/
- __pyx_t_11 = (__pyx_v_stop != 0);
- if (__pyx_t_11) {
- } else {
- __pyx_t_14 = __pyx_t_11;
- goto __pyx_L255_bool_binop_done;
- }
- __pyx_t_11 = ((__pyx_v_step_cmd != -1L) != 0);
- if (__pyx_t_11) {
- } else {
- __pyx_t_14 = __pyx_t_11;
- goto __pyx_L255_bool_binop_done;
- }
- __pyx_t_11 = (__pyx_v_is_return != 0);
- if (__pyx_t_11) {
- } else {
- __pyx_t_14 = __pyx_t_11;
- goto __pyx_L255_bool_binop_done;
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_check_trace_obj, __pyx_n_s_tb_lineno); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1572, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_XDECREF_SET(__pyx_v_exc_lineno, __pyx_t_7);
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1578
+ * # print ('merged', merged, 'curr', exc_lineno)
+ *
+ * if exc_lineno not in merged: # Note: check on merged but update lines_ignored. # <<<<<<<<<<<<<<
+ * try:
+ * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals)
+ */
+ if (unlikely(__pyx_v_merged == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+ __PYX_ERR(0, 1578, __pyx_L4_error)
}
- __pyx_t_11 = __Pyx_HasAttr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 1333, __pyx_L170_error)
- __pyx_t_9 = (__pyx_t_11 != 0);
- __pyx_t_14 = __pyx_t_9;
- __pyx_L255_bool_binop_done:;
- if (__pyx_t_14) {
+ __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_exc_lineno, __pyx_v_merged, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1578, __pyx_L4_error)
+ if (__pyx_t_2) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1334
+ /* "_pydevd_bundle/pydevd_cython.pyx":1579
*
- * if stop and step_cmd != -1 and is_return and hasattr(frame, "f_back"):
- * f_code = getattr(frame.f_back, 'f_code', None) # <<<<<<<<<<<<<<
- * if f_code is not None:
- * if main_debugger.get_file_type(frame.f_back) == main_debugger.PYDEV_FILE:
+ * if exc_lineno not in merged: # Note: check on merged but update lines_ignored.
+ * try: # <<<<<<<<<<<<<<
+ * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals)
+ * except:
*/
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1334, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_3 = __Pyx_GetAttr3(__pyx_t_8, __pyx_n_s_f_code, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1334, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_v_f_code = __pyx_t_3;
- __pyx_t_3 = 0;
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
+ __Pyx_XGOTREF(__pyx_t_10);
+ __Pyx_XGOTREF(__pyx_t_11);
+ __Pyx_XGOTREF(__pyx_t_12);
+ /*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":1335
- * if stop and step_cmd != -1 and is_return and hasattr(frame, "f_back"):
- * f_code = getattr(frame.f_back, 'f_code', None)
- * if f_code is not None: # <<<<<<<<<<<<<<
- * if main_debugger.get_file_type(frame.f_back) == main_debugger.PYDEV_FILE:
- * stop = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1580
+ * if exc_lineno not in merged: # Note: check on merged but update lines_ignored.
+ * try:
+ * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals) # <<<<<<<<<<<<<<
+ * except:
+ * pydev_log.exception("Error in linecache.getline(%r, %s, f_globals)", absolute_filename, exc_lineno)
*/
- __pyx_t_14 = (__pyx_v_f_code != Py_None);
- __pyx_t_9 = (__pyx_t_14 != 0);
- if (__pyx_t_9) {
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_linecache); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1580, __pyx_L38_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_getline); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1580, __pyx_L38_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_check_trace_obj, __pyx_n_s_tb_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1580, __pyx_L38_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_f_globals); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1580, __pyx_L38_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ __pyx_t_9 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_1, __pyx_v_absolute_filename, __pyx_v_exc_lineno, __pyx_t_8};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_9, 3+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1580, __pyx_L38_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ }
+ __Pyx_XDECREF_SET(__pyx_v_line, __pyx_t_7);
+ __pyx_t_7 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1336
- * f_code = getattr(frame.f_back, 'f_code', None)
- * if f_code is not None:
- * if main_debugger.get_file_type(frame.f_back) == main_debugger.PYDEV_FILE: # <<<<<<<<<<<<<<
- * stop = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1579
*
+ * if exc_lineno not in merged: # Note: check on merged but update lines_ignored.
+ * try: # <<<<<<<<<<<<<<
+ * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals)
+ * except:
*/
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_get_file_type); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1336, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1336, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_7 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_7)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_7);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
- }
}
- __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_7, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ goto __pyx_L45_try_end;
+ __pyx_L38_error:;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1336, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_PYDEV_FILE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1336, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1336, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1336, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_9) {
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1337
- * if f_code is not None:
- * if main_debugger.get_file_type(frame.f_back) == main_debugger.PYDEV_FILE:
- * stop = False # <<<<<<<<<<<<<<
- *
- * if plugin_stop:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1581
+ * try:
+ * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals)
+ * except: # <<<<<<<<<<<<<<
+ * pydev_log.exception("Error in linecache.getline(%r, %s, f_globals)", absolute_filename, exc_lineno)
+ * line = ""
*/
- __pyx_v_stop = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1336
- * f_code = getattr(frame.f_back, 'f_code', None)
- * if f_code is not None:
- * if main_debugger.get_file_type(frame.f_back) == main_debugger.PYDEV_FILE: # <<<<<<<<<<<<<<
- * stop = False
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.handle_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_8) < 0) __PYX_ERR(0, 1581, __pyx_L40_except_error)
+ __Pyx_XGOTREF(__pyx_t_7);
+ __Pyx_XGOTREF(__pyx_t_6);
+ __Pyx_XGOTREF(__pyx_t_8);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1582
+ * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals)
+ * except:
+ * pydev_log.exception("Error in linecache.getline(%r, %s, f_globals)", absolute_filename, exc_lineno) # <<<<<<<<<<<<<<
+ * line = ""
*
*/
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1335
- * if stop and step_cmd != -1 and is_return and hasattr(frame, "f_back"):
- * f_code = getattr(frame.f_back, 'f_code', None)
- * if f_code is not None: # <<<<<<<<<<<<<<
- * if main_debugger.get_file_type(frame.f_back) == main_debugger.PYDEV_FILE:
- * stop = False
- */
- }
+ __Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1582, __pyx_L40_except_error)
+ __Pyx_GOTREF(__pyx_t_15);
+ __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_exception); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1582, __pyx_L40_except_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __pyx_t_15 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_14))) {
+ __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_14);
+ if (likely(__pyx_t_15)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
+ __Pyx_INCREF(__pyx_t_15);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_14, function);
+ __pyx_t_9 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_15, __pyx_kp_s_Error_in_linecache_getline_r_s_f, __pyx_v_absolute_filename, __pyx_v_exc_lineno};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+1-__pyx_t_9, 3+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1582, __pyx_L40_except_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1333
- * stop = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1583
+ * except:
+ * pydev_log.exception("Error in linecache.getline(%r, %s, f_globals)", absolute_filename, exc_lineno)
+ * line = "" # <<<<<<<<<<<<<<
*
- * if stop and step_cmd != -1 and is_return and hasattr(frame, "f_back"): # <<<<<<<<<<<<<<
- * f_code = getattr(frame.f_back, 'f_code', None)
- * if f_code is not None:
+ * if IGNORE_EXCEPTION_TAG.match(line) is not None:
*/
- }
+ __Pyx_INCREF(__pyx_kp_s_);
+ __Pyx_XDECREF_SET(__pyx_v_line, __pyx_kp_s_);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ goto __pyx_L39_exception_handled;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1339
- * stop = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1579
*
- * if plugin_stop: # <<<<<<<<<<<<<<
- * stopped_on_plugin = plugin_manager.stop(main_debugger, frame, event, self._args, stop_info, arg, step_cmd)
- * elif stop:
+ * if exc_lineno not in merged: # Note: check on merged but update lines_ignored.
+ * try: # <<<<<<<<<<<<<<
+ * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals)
+ * except:
*/
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_plugin_stop); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1339, __pyx_L170_error)
- if (__pyx_t_9) {
+ __pyx_L40_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_10);
+ __Pyx_XGIVEREF(__pyx_t_11);
+ __Pyx_XGIVEREF(__pyx_t_12);
+ __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
+ goto __pyx_L4_error;
+ __pyx_L39_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_10);
+ __Pyx_XGIVEREF(__pyx_t_11);
+ __Pyx_XGIVEREF(__pyx_t_12);
+ __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
+ __pyx_L45_try_end:;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1340
- *
- * if plugin_stop:
- * stopped_on_plugin = plugin_manager.stop(main_debugger, frame, event, self._args, stop_info, arg, step_cmd) # <<<<<<<<<<<<<<
- * elif stop:
- * if is_line:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1585
+ * line = ""
+ *
+ * if IGNORE_EXCEPTION_TAG.match(line) is not None: # <<<<<<<<<<<<<<
+ * lines_ignored[exc_lineno] = 1
+ * return False
*/
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_stop); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1340, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1340, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_7 = NULL;
- __pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_7)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_IGNORE_EXCEPTION_TAG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1585, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_match); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1585, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
- __pyx_t_10 = 1;
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_9 = 1;
}
}
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[8] = {__pyx_t_7, __pyx_v_main_debugger, __pyx_v_frame, __pyx_v_event, __pyx_v_self->_args, __pyx_v_stop_info, __pyx_v_arg, __pyx_t_3};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 7+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1340, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[8] = {__pyx_t_7, __pyx_v_main_debugger, __pyx_v_frame, __pyx_v_event, __pyx_v_self->_args, __pyx_v_stop_info, __pyx_v_arg, __pyx_t_3};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 7+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1340, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
#endif
{
- __pyx_t_4 = PyTuple_New(7+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1340, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (__pyx_t_7) {
- __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __pyx_t_7 = NULL;
- }
- __Pyx_INCREF(__pyx_v_main_debugger);
- __Pyx_GIVEREF(__pyx_v_main_debugger);
- PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_10, __pyx_v_main_debugger);
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_10, __pyx_v_frame);
- __Pyx_INCREF(__pyx_v_event);
- __Pyx_GIVEREF(__pyx_v_event);
- PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_10, __pyx_v_event);
- __Pyx_INCREF(__pyx_v_self->_args);
- __Pyx_GIVEREF(__pyx_v_self->_args);
- PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_10, __pyx_v_self->_args);
- __Pyx_INCREF(__pyx_v_stop_info);
- __Pyx_GIVEREF(__pyx_v_stop_info);
- PyTuple_SET_ITEM(__pyx_t_4, 4+__pyx_t_10, __pyx_v_stop_info);
- __Pyx_INCREF(__pyx_v_arg);
- __Pyx_GIVEREF(__pyx_v_arg);
- PyTuple_SET_ITEM(__pyx_t_4, 5+__pyx_t_10, __pyx_v_arg);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_4, 6+__pyx_t_10, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1340, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_line};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1585, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
+ __pyx_t_2 = (__pyx_t_8 != Py_None);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_v_stopped_on_plugin = __pyx_t_1;
- __pyx_t_1 = 0;
+ if (__pyx_t_2) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1339
- * stop = False
+ /* "_pydevd_bundle/pydevd_cython.pyx":1586
*
- * if plugin_stop: # <<<<<<<<<<<<<<
- * stopped_on_plugin = plugin_manager.stop(main_debugger, frame, event, self._args, stop_info, arg, step_cmd)
- * elif stop:
- */
- goto __pyx_L261;
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1341
- * if plugin_stop:
- * stopped_on_plugin = plugin_manager.stop(main_debugger, frame, event, self._args, stop_info, arg, step_cmd)
- * elif stop: # <<<<<<<<<<<<<<
- * if is_line:
- * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
- */
- __pyx_t_9 = (__pyx_v_stop != 0);
- if (__pyx_t_9) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1342
- * stopped_on_plugin = plugin_manager.stop(main_debugger, frame, event, self._args, stop_info, arg, step_cmd)
- * elif stop:
- * if is_line: # <<<<<<<<<<<<<<
- * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
- * self.do_wait_suspend(thread, frame, event, arg)
+ * if IGNORE_EXCEPTION_TAG.match(line) is not None:
+ * lines_ignored[exc_lineno] = 1 # <<<<<<<<<<<<<<
+ * return False
+ * else:
*/
- __pyx_t_9 = (__pyx_v_is_line != 0);
- if (__pyx_t_9) {
+ if (unlikely(__pyx_v_lines_ignored == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 1586, __pyx_L4_error)
+ }
+ if (unlikely((PyDict_SetItem(__pyx_v_lines_ignored, __pyx_v_exc_lineno, __pyx_int_1) < 0))) __PYX_ERR(0, 1586, __pyx_L4_error)
- /* "_pydevd_bundle/pydevd_cython.pyx":1343
- * elif stop:
- * if is_line:
- * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) # <<<<<<<<<<<<<<
- * self.do_wait_suspend(thread, frame, event, arg)
- * elif is_return: # return event
+ /* "_pydevd_bundle/pydevd_cython.pyx":1587
+ * if IGNORE_EXCEPTION_TAG.match(line) is not None:
+ * lines_ignored[exc_lineno] = 1
+ * return False # <<<<<<<<<<<<<<
+ * else:
+ * # Put in the cache saying not to ignore
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1343, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1343, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1343, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_v_thread);
- __Pyx_GIVEREF(__pyx_v_thread);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_thread);
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_8);
- __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1343, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_info->pydev_original_step_cmd); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1343, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_original_step_cmd, __pyx_t_3) < 0) __PYX_ERR(0, 1343, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1343, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_False);
+ __pyx_r = Py_False;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L3_return;
- /* "_pydevd_bundle/pydevd_cython.pyx":1344
- * if is_line:
- * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
- * self.do_wait_suspend(thread, frame, event, arg) # <<<<<<<<<<<<<<
- * elif is_return: # return event
- * back = frame.f_back
+ /* "_pydevd_bundle/pydevd_cython.pyx":1585
+ * line = ""
+ *
+ * if IGNORE_EXCEPTION_TAG.match(line) is not None: # <<<<<<<<<<<<<<
+ * lines_ignored[exc_lineno] = 1
+ * return False
*/
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1344, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_4 = NULL;
- __pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
- __pyx_t_10 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_thread, __pyx_v_frame, __pyx_v_event, __pyx_v_arg};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1344, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_thread, __pyx_v_frame, __pyx_v_event, __pyx_v_arg};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1344, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_1 = PyTuple_New(4+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1344, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (__pyx_t_4) {
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL;
- }
- __Pyx_INCREF(__pyx_v_thread);
- __Pyx_GIVEREF(__pyx_v_thread);
- PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_10, __pyx_v_thread);
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_10, __pyx_v_frame);
- __Pyx_INCREF(__pyx_v_event);
- __Pyx_GIVEREF(__pyx_v_event);
- PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_10, __pyx_v_event);
- __Pyx_INCREF(__pyx_v_arg);
- __Pyx_GIVEREF(__pyx_v_arg);
- PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_10, __pyx_v_arg);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1344, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1342
- * stopped_on_plugin = plugin_manager.stop(main_debugger, frame, event, self._args, stop_info, arg, step_cmd)
- * elif stop:
- * if is_line: # <<<<<<<<<<<<<<
- * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
- * self.do_wait_suspend(thread, frame, event, arg)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1590
+ * else:
+ * # Put in the cache saying not to ignore
+ * lines_ignored[exc_lineno] = 0 # <<<<<<<<<<<<<<
+ * else:
+ * # Ok, dict has it already cached, so, let's check it...
*/
- goto __pyx_L262;
+ /*else*/ {
+ if (unlikely(__pyx_v_lines_ignored == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 1590, __pyx_L4_error)
+ }
+ if (unlikely((PyDict_SetItem(__pyx_v_lines_ignored, __pyx_v_exc_lineno, __pyx_int_0) < 0))) __PYX_ERR(0, 1590, __pyx_L4_error)
}
- /* "_pydevd_bundle/pydevd_cython.pyx":1345
- * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
- * self.do_wait_suspend(thread, frame, event, arg)
- * elif is_return: # return event # <<<<<<<<<<<<<<
- * back = frame.f_back
- * if back is not None:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1578
+ * # print ('merged', merged, 'curr', exc_lineno)
+ *
+ * if exc_lineno not in merged: # Note: check on merged but update lines_ignored. # <<<<<<<<<<<<<<
+ * try:
+ * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals)
*/
- __pyx_t_9 = (__pyx_v_is_return != 0);
- if (__pyx_t_9) {
+ goto __pyx_L37;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1346
- * self.do_wait_suspend(thread, frame, event, arg)
- * elif is_return: # return event
- * back = frame.f_back # <<<<<<<<<<<<<<
- * if back is not None:
- * # When we get to the pydevd run function, the debugging has actually finished for the main thread
+ /* "_pydevd_bundle/pydevd_cython.pyx":1593
+ * else:
+ * # Ok, dict has it already cached, so, let's check it...
+ * if merged.get(exc_lineno, 0): # <<<<<<<<<<<<<<
+ * return False
+ *
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1346, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_XDECREF_SET(__pyx_v_back, __pyx_t_3);
- __pyx_t_3 = 0;
+ /*else*/ {
+ if (unlikely(__pyx_v_merged == Py_None)) {
+ PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
+ __PYX_ERR(0, 1593, __pyx_L4_error)
+ }
+ __pyx_t_8 = __Pyx_PyDict_GetItemDefault(__pyx_v_merged, __pyx_v_exc_lineno, __pyx_int_0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1593, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1593, __pyx_L4_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_2) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1347
- * elif is_return: # return event
- * back = frame.f_back
- * if back is not None: # <<<<<<<<<<<<<<
- * # When we get to the pydevd run function, the debugging has actually finished for the main thread
- * # (note that it can still go on for other threads, but for this one, we just make it finish)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1594
+ * # Ok, dict has it already cached, so, let's check it...
+ * if merged.get(exc_lineno, 0):
+ * return False # <<<<<<<<<<<<<<
+ *
+ * try:
*/
- __pyx_t_9 = (__pyx_v_back != Py_None);
- __pyx_t_14 = (__pyx_t_9 != 0);
- if (__pyx_t_14) {
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_False);
+ __pyx_r = Py_False;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ goto __pyx_L3_return;
- /* "_pydevd_bundle/pydevd_cython.pyx":1351
- * # (note that it can still go on for other threads, but for this one, we just make it finish)
- * # So, just setting it to None should be OK
- * back_absolute_filename, _, base = get_abs_path_real_path_and_base_from_frame(back) # <<<<<<<<<<<<<<
- * if (base, back.f_code.co_name) in (DEBUG_START, DEBUG_START_PY3K):
- * back = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":1593
+ * else:
+ * # Ok, dict has it already cached, so, let's check it...
+ * if merged.get(exc_lineno, 0): # <<<<<<<<<<<<<<
+ * return False
+ *
*/
- __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_get_abs_path_real_path_and_base); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1351, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_1 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_1)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
- }
- }
- __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_1, __pyx_v_back) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_back);
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1351, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
- PyObject* sequence = __pyx_t_3;
- Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
- if (unlikely(size != 3)) {
- if (size > 3) __Pyx_RaiseTooManyValuesError(3);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 1351, __pyx_L170_error)
- }
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1);
- __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2);
- } else {
- __pyx_t_8 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_1 = PyList_GET_ITEM(sequence, 1);
- __pyx_t_4 = PyList_GET_ITEM(sequence, 2);
- }
- __Pyx_INCREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_4);
- #else
- __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1351, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1351, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1351, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- #endif
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else {
- Py_ssize_t index = -1;
- __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1351, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_15 = Py_TYPE(__pyx_t_7)->tp_iternext;
- index = 0; __pyx_t_8 = __pyx_t_15(__pyx_t_7); if (unlikely(!__pyx_t_8)) goto __pyx_L264_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_8);
- index = 1; __pyx_t_1 = __pyx_t_15(__pyx_t_7); if (unlikely(!__pyx_t_1)) goto __pyx_L264_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_1);
- index = 2; __pyx_t_4 = __pyx_t_15(__pyx_t_7); if (unlikely(!__pyx_t_4)) goto __pyx_L264_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_4);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_7), 3) < 0) __PYX_ERR(0, 1351, __pyx_L170_error)
- __pyx_t_15 = NULL;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- goto __pyx_L265_unpacking_done;
- __pyx_L264_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_15 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 1351, __pyx_L170_error)
- __pyx_L265_unpacking_done:;
- }
- __pyx_v_back_absolute_filename = __pyx_t_8;
- __pyx_t_8 = 0;
- __pyx_v__ = __pyx_t_1;
- __pyx_t_1 = 0;
- __pyx_v_base = __pyx_t_4;
- __pyx_t_4 = 0;
+ }
+ }
+ __pyx_L37:;
- /* "_pydevd_bundle/pydevd_cython.pyx":1352
- * # So, just setting it to None should be OK
- * back_absolute_filename, _, base = get_abs_path_real_path_and_base_from_frame(back)
- * if (base, back.f_code.co_name) in (DEBUG_START, DEBUG_START_PY3K): # <<<<<<<<<<<<<<
- * back = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":1539
*
+ * if py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception:
+ * for check_trace_obj in (initial_trace_obj, trace_obj): # <<<<<<<<<<<<<<
+ * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame)
+ * absolute_filename = abs_real_path_and_base[0]
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_back, __pyx_n_s_f_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1352, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_co_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1352, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1352, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_v_base);
- __Pyx_GIVEREF(__pyx_v_base);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_base);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4);
- __pyx_t_4 = 0;
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_DEBUG_START); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1352, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1352, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1352, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (!__pyx_t_9) {
- } else {
- __pyx_t_14 = __pyx_t_9;
- goto __pyx_L267_bool_binop_done;
- }
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DEBUG_START_PY3K); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1352, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1352, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1352, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_14 = __pyx_t_9;
- __pyx_L267_bool_binop_done:;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_9 = (__pyx_t_14 != 0);
- if (__pyx_t_9) {
+ }
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1353
- * back_absolute_filename, _, base = get_abs_path_real_path_and_base_from_frame(back)
- * if (base, back.f_code.co_name) in (DEBUG_START, DEBUG_START_PY3K):
- * back = None # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1538
+ * trace_obj = trace_obj.tb_next
*
- * elif base == TRACE_PROPERTY:
+ * if py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception: # <<<<<<<<<<<<<<
+ * for check_trace_obj in (initial_trace_obj, trace_obj):
+ * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame)
*/
- __Pyx_INCREF(Py_None);
- __Pyx_DECREF_SET(__pyx_v_back, Py_None);
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1352
- * # So, just setting it to None should be OK
- * back_absolute_filename, _, base = get_abs_path_real_path_and_base_from_frame(back)
- * if (base, back.f_code.co_name) in (DEBUG_START, DEBUG_START_PY3K): # <<<<<<<<<<<<<<
- * back = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":1596
+ * return False
*
+ * try: # <<<<<<<<<<<<<<
+ * frame_id_to_frame = {}
+ * frame_id_to_frame[id(frame)] = frame
*/
- goto __pyx_L266;
- }
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10);
+ __Pyx_XGOTREF(__pyx_t_12);
+ __Pyx_XGOTREF(__pyx_t_11);
+ __Pyx_XGOTREF(__pyx_t_10);
+ /*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":1355
- * back = None
+ /* "_pydevd_bundle/pydevd_cython.pyx":1597
*
- * elif base == TRACE_PROPERTY: # <<<<<<<<<<<<<<
- * # We dont want to trace the return event of pydevd_traceproperty (custom property for debugging)
- * # if we're in a return, we want it to appear to the user in the previous frame!
+ * try:
+ * frame_id_to_frame = {} # <<<<<<<<<<<<<<
+ * frame_id_to_frame[id(frame)] = frame
+ * f = trace_obj.tb_frame
*/
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_TRACE_PROPERTY); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1355, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_base, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1355, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1355, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_9) {
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1597, __pyx_L51_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_v_frame_id_to_frame = ((PyObject*)__pyx_t_4);
+ __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1358
- * # We dont want to trace the return event of pydevd_traceproperty (custom property for debugging)
- * # if we're in a return, we want it to appear to the user in the previous frame!
- * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<<
- *
- * elif pydevd_dont_trace.should_trace_hook is not None:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1598
+ * try:
+ * frame_id_to_frame = {}
+ * frame_id_to_frame[id(frame)] = frame # <<<<<<<<<<<<<<
+ * f = trace_obj.tb_frame
+ * while f is not None:
*/
- __Pyx_XDECREF(__pyx_r);
- if ((__pyx_v_is_call != 0)) {
- __Pyx_INCREF(Py_None);
- __pyx_t_4 = Py_None;
- } else {
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1358, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __pyx_t_3;
- __pyx_t_3 = 0;
- }
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- goto __pyx_L174_try_return;
+ __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_frame); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1598, __pyx_L51_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ if (unlikely((PyDict_SetItem(__pyx_v_frame_id_to_frame, __pyx_t_4, __pyx_v_frame) < 0))) __PYX_ERR(0, 1598, __pyx_L51_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1355
- * back = None
- *
- * elif base == TRACE_PROPERTY: # <<<<<<<<<<<<<<
- * # We dont want to trace the return event of pydevd_traceproperty (custom property for debugging)
- * # if we're in a return, we want it to appear to the user in the previous frame!
+ /* "_pydevd_bundle/pydevd_cython.pyx":1599
+ * frame_id_to_frame = {}
+ * frame_id_to_frame[id(frame)] = frame
+ * f = trace_obj.tb_frame # <<<<<<<<<<<<<<
+ * while f is not None:
+ * frame_id_to_frame[id(f)] = f
*/
- }
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace_obj, __pyx_n_s_tb_frame); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1599, __pyx_L51_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_v_f = __pyx_t_4;
+ __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1360
- * return None if is_call else NO_FTRACE
- *
- * elif pydevd_dont_trace.should_trace_hook is not None: # <<<<<<<<<<<<<<
- * if not pydevd_dont_trace.should_trace_hook(back, back_absolute_filename):
- * # In this case, we'll have to skip the previous one because it shouldn't be traced.
+ /* "_pydevd_bundle/pydevd_cython.pyx":1600
+ * frame_id_to_frame[id(frame)] = frame
+ * f = trace_obj.tb_frame
+ * while f is not None: # <<<<<<<<<<<<<<
+ * frame_id_to_frame[id(f)] = f
+ * f = f.f_back
*/
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pydevd_dont_trace); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1360, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_should_trace_hook); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1360, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_9 = (__pyx_t_3 != Py_None);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_14 = (__pyx_t_9 != 0);
- if (__pyx_t_14) {
+ while (1) {
+ __pyx_t_2 = (__pyx_v_f != Py_None);
+ if (!__pyx_t_2) break;
- /* "_pydevd_bundle/pydevd_cython.pyx":1361
- *
- * elif pydevd_dont_trace.should_trace_hook is not None:
- * if not pydevd_dont_trace.should_trace_hook(back, back_absolute_filename): # <<<<<<<<<<<<<<
- * # In this case, we'll have to skip the previous one because it shouldn't be traced.
- * # Also, we have to reset the tracing, because if the parent's parent (or some
+ /* "_pydevd_bundle/pydevd_cython.pyx":1601
+ * f = trace_obj.tb_frame
+ * while f is not None:
+ * frame_id_to_frame[id(f)] = f # <<<<<<<<<<<<<<
+ * f = f.f_back
+ * f = None
*/
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pydevd_dont_trace); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1361, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_should_trace_hook); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1361, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = NULL;
- __pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
- __pyx_t_10 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_back, __pyx_v_back_absolute_filename};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1361, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_back, __pyx_v_back_absolute_filename};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1361, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_8 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1361, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- if (__pyx_t_4) {
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
- }
- __Pyx_INCREF(__pyx_v_back);
- __Pyx_GIVEREF(__pyx_v_back);
- PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_10, __pyx_v_back);
- __Pyx_INCREF(__pyx_v_back_absolute_filename);
- __Pyx_GIVEREF(__pyx_v_back_absolute_filename);
- PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_10, __pyx_v_back_absolute_filename);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1361, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1361, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_9 = ((!__pyx_t_14) != 0);
- if (__pyx_t_9) {
+ __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_f); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1601, __pyx_L51_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ if (unlikely((PyDict_SetItem(__pyx_v_frame_id_to_frame, __pyx_t_4, __pyx_v_f) < 0))) __PYX_ERR(0, 1601, __pyx_L51_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1367
- * # we should anymore (so, a step in/over/return may not stop anywhere if no parent is traced).
- * # Related test: _debugger_case17a.py
- * main_debugger.set_trace_for_frame_and_parents(back) # <<<<<<<<<<<<<<
- * return None if is_call else NO_FTRACE
+ /* "_pydevd_bundle/pydevd_cython.pyx":1602
+ * while f is not None:
+ * frame_id_to_frame[id(f)] = f
+ * f = f.f_back # <<<<<<<<<<<<<<
+ * f = None
*
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_set_trace_for_frame_and_parents); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1367, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_8);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
- }
- }
- __pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_8, __pyx_v_back) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_back);
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1367, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1602, __pyx_L51_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_4);
+ __pyx_t_4 = 0;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1368
- * # Related test: _debugger_case17a.py
- * main_debugger.set_trace_for_frame_and_parents(back)
- * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1603
+ * frame_id_to_frame[id(f)] = f
+ * f = f.f_back
+ * f = None # <<<<<<<<<<<<<<
*
- * if back is not None:
+ * stopped = True
*/
- __Pyx_XDECREF(__pyx_r);
- if ((__pyx_v_is_call != 0)) {
- __Pyx_INCREF(Py_None);
- __pyx_t_3 = Py_None;
- } else {
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1368, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __pyx_t_1;
- __pyx_t_1 = 0;
- }
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L174_try_return;
+ __Pyx_INCREF(Py_None);
+ __Pyx_DECREF_SET(__pyx_v_f, Py_None);
- /* "_pydevd_bundle/pydevd_cython.pyx":1361
+ /* "_pydevd_bundle/pydevd_cython.pyx":1605
+ * f = None
*
- * elif pydevd_dont_trace.should_trace_hook is not None:
- * if not pydevd_dont_trace.should_trace_hook(back, back_absolute_filename): # <<<<<<<<<<<<<<
- * # In this case, we'll have to skip the previous one because it shouldn't be traced.
- * # Also, we have to reset the tracing, because if the parent's parent (or some
+ * stopped = True # <<<<<<<<<<<<<<
+ * py_db.send_caught_exception_stack(thread, arg, id(frame))
+ * try:
*/
- }
+ __pyx_v_stopped = 1;
- /* "_pydevd_bundle/pydevd_cython.pyx":1360
- * return None if is_call else NO_FTRACE
+ /* "_pydevd_bundle/pydevd_cython.pyx":1606
*
- * elif pydevd_dont_trace.should_trace_hook is not None: # <<<<<<<<<<<<<<
- * if not pydevd_dont_trace.should_trace_hook(back, back_absolute_filename):
- * # In this case, we'll have to skip the previous one because it shouldn't be traced.
+ * stopped = True
+ * py_db.send_caught_exception_stack(thread, arg, id(frame)) # <<<<<<<<<<<<<<
+ * try:
+ * py_db.set_suspend(thread, 137)
*/
- }
- __pyx_L266:;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_send_caught_exception_stack); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1606, __pyx_L51_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_frame); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1606, __pyx_L51_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_6 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_9 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_6, __pyx_v_thread, __pyx_v_arg, __pyx_t_7};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_9, 3+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1606, __pyx_L51_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1347
- * elif is_return: # return event
- * back = frame.f_back
- * if back is not None: # <<<<<<<<<<<<<<
- * # When we get to the pydevd run function, the debugging has actually finished for the main thread
- * # (note that it can still go on for other threads, but for this one, we just make it finish)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1607
+ * stopped = True
+ * py_db.send_caught_exception_stack(thread, arg, id(frame))
+ * try: # <<<<<<<<<<<<<<
+ * py_db.set_suspend(thread, 137)
+ * py_db.do_wait_suspend(thread, frame, "exception", arg, exception_type=exception_type)
*/
- }
+ /*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":1370
- * return None if is_call else NO_FTRACE
- *
- * if back is not None: # <<<<<<<<<<<<<<
- * # if we're in a return, we want it to appear to the user in the previous frame!
- * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1608
+ * py_db.send_caught_exception_stack(thread, arg, id(frame))
+ * try:
+ * py_db.set_suspend(thread, 137) # <<<<<<<<<<<<<<
+ * py_db.do_wait_suspend(thread, frame, "exception", arg, exception_type=exception_type)
+ * finally:
*/
- __pyx_t_9 = (__pyx_v_back != Py_None);
- __pyx_t_14 = (__pyx_t_9 != 0);
- if (__pyx_t_14) {
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1608, __pyx_L60_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_7 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_9 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_thread, __pyx_int_137};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_9, 2+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1608, __pyx_L60_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1372
- * if back is not None:
- * # if we're in a return, we want it to appear to the user in the previous frame!
- * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) # <<<<<<<<<<<<<<
- * self.do_wait_suspend(thread, back, event, arg)
- * else:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1609
+ * try:
+ * py_db.set_suspend(thread, 137)
+ * py_db.do_wait_suspend(thread, frame, "exception", arg, exception_type=exception_type) # <<<<<<<<<<<<<<
+ * finally:
+ * py_db.send_caught_exception_stack_proceeded(thread)
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1372, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1372, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1372, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_v_thread);
- __Pyx_GIVEREF(__pyx_v_thread);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_thread);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1372, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_info->pydev_original_step_cmd); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1372, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_original_step_cmd, __pyx_t_4) < 0) __PYX_ERR(0, 1372, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1372, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1609, __pyx_L60_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1609, __pyx_L60_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_INCREF(__pyx_v_thread);
+ __Pyx_GIVEREF(__pyx_v_thread);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_thread)) __PYX_ERR(0, 1609, __pyx_L60_error);
+ __Pyx_INCREF(__pyx_v_frame);
+ __Pyx_GIVEREF(__pyx_v_frame);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_frame)) __PYX_ERR(0, 1609, __pyx_L60_error);
+ __Pyx_INCREF(__pyx_n_s_exception);
+ __Pyx_GIVEREF(__pyx_n_s_exception);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_n_s_exception)) __PYX_ERR(0, 1609, __pyx_L60_error);
+ __Pyx_INCREF(__pyx_v_arg);
+ __Pyx_GIVEREF(__pyx_v_arg);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_v_arg)) __PYX_ERR(0, 1609, __pyx_L60_error);
+ __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1609, __pyx_L60_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_exception_type, __pyx_v_exception_type) < 0) __PYX_ERR(0, 1609, __pyx_L60_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1609, __pyx_L60_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ }
- /* "_pydevd_bundle/pydevd_cython.pyx":1373
- * # if we're in a return, we want it to appear to the user in the previous frame!
- * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
- * self.do_wait_suspend(thread, back, event, arg) # <<<<<<<<<<<<<<
- * else:
- * # in jython we may not have a back frame
+ /* "_pydevd_bundle/pydevd_cython.pyx":1611
+ * py_db.do_wait_suspend(thread, frame, "exception", arg, exception_type=exception_type)
+ * finally:
+ * py_db.send_caught_exception_stack_proceeded(thread) # <<<<<<<<<<<<<<
+ * except:
+ * pydev_log.exception()
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1373, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_1);
+ /*finally:*/ {
+ /*normal exit:*/{
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_send_caught_exception_stack_proc); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1611, __pyx_L51_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_9 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_thread};
+ __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1611, __pyx_L51_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L61;
+ }
+ __pyx_L60_error:;
+ /*exception exit:*/{
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24);
+ if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
+ __Pyx_XGOTREF(__pyx_t_19);
+ __Pyx_XGOTREF(__pyx_t_20);
+ __Pyx_XGOTREF(__pyx_t_21);
+ __Pyx_XGOTREF(__pyx_t_22);
+ __Pyx_XGOTREF(__pyx_t_23);
+ __Pyx_XGOTREF(__pyx_t_24);
+ __pyx_t_16 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename;
+ {
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_send_caught_exception_stack_proc); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1611, __pyx_L63_error)
+ __Pyx_GOTREF(__pyx_t_7);
__pyx_t_8 = NULL;
- __pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
- __pyx_t_10 = 1;
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_9 = 1;
}
}
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_v_thread, __pyx_v_back, __pyx_v_event, __pyx_v_arg};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1373, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_v_thread, __pyx_v_back, __pyx_v_event, __pyx_v_arg};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1373, __pyx_L170_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else
#endif
{
- __pyx_t_3 = PyTuple_New(4+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1373, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_3);
- if (__pyx_t_8) {
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8); __pyx_t_8 = NULL;
- }
- __Pyx_INCREF(__pyx_v_thread);
- __Pyx_GIVEREF(__pyx_v_thread);
- PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_10, __pyx_v_thread);
- __Pyx_INCREF(__pyx_v_back);
- __Pyx_GIVEREF(__pyx_v_back);
- PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_10, __pyx_v_back);
- __Pyx_INCREF(__pyx_v_event);
- __Pyx_GIVEREF(__pyx_v_event);
- PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_10, __pyx_v_event);
- __Pyx_INCREF(__pyx_v_arg);
- __Pyx_GIVEREF(__pyx_v_arg);
- PyTuple_SET_ITEM(__pyx_t_3, 3+__pyx_t_10, __pyx_v_arg);
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1373, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_thread};
+ __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1611, __pyx_L63_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1370
- * return None if is_call else NO_FTRACE
- *
- * if back is not None: # <<<<<<<<<<<<<<
- * # if we're in a return, we want it to appear to the user in the previous frame!
- * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
- */
- goto __pyx_L270;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1376
- * else:
- * # in jython we may not have a back frame
- * info.pydev_step_stop = None # <<<<<<<<<<<<<<
- * info.pydev_original_step_cmd = -1
- * info.pydev_step_cmd = -1
- */
- /*else*/ {
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_info->pydev_step_stop);
- __Pyx_DECREF(__pyx_v_info->pydev_step_stop);
- __pyx_v_info->pydev_step_stop = Py_None;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1377
- * # in jython we may not have a back frame
- * info.pydev_step_stop = None
- * info.pydev_original_step_cmd = -1 # <<<<<<<<<<<<<<
- * info.pydev_step_cmd = -1
- * info.pydev_state = 1
- */
- __pyx_v_info->pydev_original_step_cmd = -1;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1378
- * info.pydev_step_stop = None
- * info.pydev_original_step_cmd = -1
- * info.pydev_step_cmd = -1 # <<<<<<<<<<<<<<
- * info.pydev_state = 1
- *
- */
- __pyx_v_info->pydev_step_cmd = -1;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1379
- * info.pydev_original_step_cmd = -1
- * info.pydev_step_cmd = -1
- * info.pydev_state = 1 # <<<<<<<<<<<<<<
- *
- * # if we are quitting, let's stop the tracing
- */
- __pyx_v_info->pydev_state = 1;
+ if (PY_MAJOR_VERSION >= 3) {
+ __Pyx_XGIVEREF(__pyx_t_22);
+ __Pyx_XGIVEREF(__pyx_t_23);
+ __Pyx_XGIVEREF(__pyx_t_24);
+ __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24);
}
- __pyx_L270:;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1345
- * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
- * self.do_wait_suspend(thread, frame, event, arg)
- * elif is_return: # return event # <<<<<<<<<<<<<<
- * back = frame.f_back
- * if back is not None:
- */
- }
- __pyx_L262:;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1341
- * if plugin_stop:
- * stopped_on_plugin = plugin_manager.stop(main_debugger, frame, event, self._args, stop_info, arg, step_cmd)
- * elif stop: # <<<<<<<<<<<<<<
- * if is_line:
- * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
- */
- }
- __pyx_L261:;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1382
- *
- * # if we are quitting, let's stop the tracing
- * if main_debugger.quitting: # <<<<<<<<<<<<<<
- * return None if is_call else NO_FTRACE
- *
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_quitting); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1382, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1382, __pyx_L170_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_14) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1383
- * # if we are quitting, let's stop the tracing
- * if main_debugger.quitting:
- * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<<
- *
- * return self.trace_dispatch
- */
- __Pyx_XDECREF(__pyx_r);
- if ((__pyx_v_is_call != 0)) {
- __Pyx_INCREF(Py_None);
- __pyx_t_4 = Py_None;
- } else {
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1383, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = __pyx_t_1;
- __pyx_t_1 = 0;
+ __Pyx_XGIVEREF(__pyx_t_19);
+ __Pyx_XGIVEREF(__pyx_t_20);
+ __Pyx_XGIVEREF(__pyx_t_21);
+ __Pyx_ErrRestore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
+ __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0;
+ __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18;
+ goto __pyx_L51_error;
+ __pyx_L63_error:;
+ if (PY_MAJOR_VERSION >= 3) {
+ __Pyx_XGIVEREF(__pyx_t_22);
+ __Pyx_XGIVEREF(__pyx_t_23);
+ __Pyx_XGIVEREF(__pyx_t_24);
+ __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24);
+ }
+ __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
+ __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
+ __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
+ __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0;
+ goto __pyx_L51_error;
}
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- goto __pyx_L174_try_return;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1382
- *
- * # if we are quitting, let's stop the tracing
- * if main_debugger.quitting: # <<<<<<<<<<<<<<
- * return None if is_call else NO_FTRACE
- *
- */
+ __pyx_L61:;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":1385
- * return None if is_call else NO_FTRACE
- *
- * return self.trace_dispatch # <<<<<<<<<<<<<<
- * except:
- * # Unfortunately Python itself stops the tracing when it originates from
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1385, __pyx_L170_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- goto __pyx_L174_try_return;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1155
+ /* "_pydevd_bundle/pydevd_cython.pyx":1596
+ * return False
*
- * # step handling. We stop when we hit the right frame
- * try: # <<<<<<<<<<<<<<
- * should_skip = 0
- * if pydevd_dont_trace.should_trace_hook is not None:
+ * try: # <<<<<<<<<<<<<<
+ * frame_id_to_frame = {}
+ * frame_id_to_frame[id(frame)] = frame
*/
}
- __pyx_L170_error:;
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ goto __pyx_L56_try_end;
+ __pyx_L51_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1386
+ /* "_pydevd_bundle/pydevd_cython.pyx":1612
+ * finally:
+ * py_db.send_caught_exception_stack_proceeded(thread)
+ * except: # <<<<<<<<<<<<<<
+ * pydev_log.exception()
*
- * return self.trace_dispatch
- * except: # <<<<<<<<<<<<<<
- * # Unfortunately Python itself stops the tracing when it originates from
- * # the tracing function, so, we can't do much about it (just let the user know).
*/
/*except:*/ {
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_1, &__pyx_t_3) < 0) __PYX_ERR(0, 1386, __pyx_L172_except_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_t_3);
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1389
- * # Unfortunately Python itself stops the tracing when it originates from
- * # the tracing function, so, we can't do much about it (just let the user know).
- * exc = sys.exc_info()[0] # <<<<<<<<<<<<<<
- * cmd = main_debugger.cmd_factory.make_console_message(
- * '%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n' % (exc, thread,))
- */
- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_sys); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1389, __pyx_L172_except_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1389, __pyx_L172_except_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_7)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_7);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- }
- }
- __pyx_t_8 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1389, __pyx_L172_except_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1389, __pyx_L172_except_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_v_exc = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1390
- * # the tracing function, so, we can't do much about it (just let the user know).
- * exc = sys.exc_info()[0]
- * cmd = main_debugger.cmd_factory.make_console_message( # <<<<<<<<<<<<<<
- * '%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n' % (exc, thread,))
- * main_debugger.writer.add_command(cmd)
- */
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_cmd_factory); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1390, __pyx_L172_except_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_make_console_message); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1390, __pyx_L172_except_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.handle_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 1612, __pyx_L53_except_error)
+ __Pyx_XGOTREF(__pyx_t_6);
+ __Pyx_XGOTREF(__pyx_t_7);
+ __Pyx_XGOTREF(__pyx_t_8);
- /* "_pydevd_bundle/pydevd_cython.pyx":1391
- * exc = sys.exc_info()[0]
- * cmd = main_debugger.cmd_factory.make_console_message(
- * '%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n' % (exc, thread,)) # <<<<<<<<<<<<<<
- * main_debugger.writer.add_command(cmd)
- * if not issubclass(exc, (KeyboardInterrupt, SystemExit)):
+ /* "_pydevd_bundle/pydevd_cython.pyx":1613
+ * py_db.send_caught_exception_stack_proceeded(thread)
+ * except:
+ * pydev_log.exception() # <<<<<<<<<<<<<<
+ *
+ * py_db.set_trace_for_frame_and_parents(thread.ident, frame)
*/
- __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1391, __pyx_L172_except_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_v_exc);
- __Pyx_GIVEREF(__pyx_v_exc);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_exc);
- __Pyx_INCREF(__pyx_v_thread);
- __Pyx_GIVEREF(__pyx_v_thread);
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_thread);
- __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_s_raised_from_within_the_callba, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1391, __pyx_L172_except_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_8);
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1613, __pyx_L53_except_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_exception); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1613, __pyx_L53_except_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_14))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_14);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
+ __Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_7, function);
+ __Pyx_DECREF_SET(__pyx_t_14, function);
+ __pyx_t_9 = 1;
}
}
- __pyx_t_2 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1390, __pyx_L172_except_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF_SET(__pyx_v_cmd, __pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1392
- * cmd = main_debugger.cmd_factory.make_console_message(
- * '%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n' % (exc, thread,))
- * main_debugger.writer.add_command(cmd) # <<<<<<<<<<<<<<
- * if not issubclass(exc, (KeyboardInterrupt, SystemExit)):
- * pydev_log.exception()
- */
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_writer); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1392, __pyx_L172_except_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_add_command); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1392, __pyx_L172_except_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
- if (likely(__pyx_t_7)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
- __Pyx_INCREF(__pyx_t_7);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_6, function);
- }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1613, __pyx_L53_except_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
}
- __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_v_cmd) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_cmd);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1392, __pyx_L172_except_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1393
- * '%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n' % (exc, thread,))
- * main_debugger.writer.add_command(cmd)
- * if not issubclass(exc, (KeyboardInterrupt, SystemExit)): # <<<<<<<<<<<<<<
- * pydev_log.exception()
- * raise
- */
- __pyx_t_14 = PyObject_IsSubclass(__pyx_v_exc, __pyx_tuple__6); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 1393, __pyx_L172_except_error)
- __pyx_t_9 = ((!(__pyx_t_14 != 0)) != 0);
- if (__pyx_t_9) {
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1394
- * main_debugger.writer.add_command(cmd)
- * if not issubclass(exc, (KeyboardInterrupt, SystemExit)):
- * pydev_log.exception() # <<<<<<<<<<<<<<
- * raise
- *
- */
- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1394, __pyx_L172_except_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_exception); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1394, __pyx_L172_except_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
- if (likely(__pyx_t_6)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_6);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_7, function);
- }
- }
- __pyx_t_2 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1394, __pyx_L172_except_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1393
- * '%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n' % (exc, thread,))
- * main_debugger.writer.add_command(cmd)
- * if not issubclass(exc, (KeyboardInterrupt, SystemExit)): # <<<<<<<<<<<<<<
- * pydev_log.exception()
- * raise
- */
- }
-
- /* "_pydevd_bundle/pydevd_cython.pyx":1395
- * if not issubclass(exc, (KeyboardInterrupt, SystemExit)):
- * pydev_log.exception()
- * raise # <<<<<<<<<<<<<<
- *
- * finally:
- */
- __Pyx_GIVEREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_XGIVEREF(__pyx_t_3);
- __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_1, __pyx_t_3);
- __pyx_t_4 = 0; __pyx_t_1 = 0; __pyx_t_3 = 0;
- __PYX_ERR(0, 1395, __pyx_L172_except_error)
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ goto __pyx_L52_exception_handled;
}
- __pyx_L172_except_error:;
- /* "_pydevd_bundle/pydevd_cython.pyx":1155
+ /* "_pydevd_bundle/pydevd_cython.pyx":1596
+ * return False
*
- * # step handling. We stop when we hit the right frame
- * try: # <<<<<<<<<<<<<<
- * should_skip = 0
- * if pydevd_dont_trace.should_trace_hook is not None:
+ * try: # <<<<<<<<<<<<<<
+ * frame_id_to_frame = {}
+ * frame_id_to_frame[id(frame)] = frame
*/
- __Pyx_XGIVEREF(__pyx_t_16);
- __Pyx_XGIVEREF(__pyx_t_17);
- __Pyx_XGIVEREF(__pyx_t_18);
- __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
+ __pyx_L53_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_12);
+ __Pyx_XGIVEREF(__pyx_t_11);
+ __Pyx_XGIVEREF(__pyx_t_10);
+ __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10);
goto __pyx_L4_error;
- __pyx_L174_try_return:;
- __Pyx_XGIVEREF(__pyx_t_16);
- __Pyx_XGIVEREF(__pyx_t_17);
- __Pyx_XGIVEREF(__pyx_t_18);
- __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
- goto __pyx_L3_return;
+ __pyx_L52_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_12);
+ __Pyx_XGIVEREF(__pyx_t_11);
+ __Pyx_XGIVEREF(__pyx_t_10);
+ __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10);
+ __pyx_L56_try_end:;
}
- }
- /* "_pydevd_bundle/pydevd_cython.pyx":1398
- *
- * finally:
- * info.is_tracing -= 1 # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1615
+ * pydev_log.exception()
*
- * # end trace_dispatch
+ * py_db.set_trace_for_frame_and_parents(thread.ident, frame) # <<<<<<<<<<<<<<
+ * finally:
+ * # Make sure the user cannot see the '__exception__' we added after we leave the suspend state.
*/
- /*finally:*/ {
- __pyx_L4_error:;
- /*exception exit:*/{
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_28, &__pyx_t_27, &__pyx_t_26);
- if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
- __Pyx_XGOTREF(__pyx_t_18);
- __Pyx_XGOTREF(__pyx_t_17);
- __Pyx_XGOTREF(__pyx_t_16);
- __Pyx_XGOTREF(__pyx_t_28);
- __Pyx_XGOTREF(__pyx_t_27);
- __Pyx_XGOTREF(__pyx_t_26);
- __pyx_t_10 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_30 = __pyx_filename;
- {
- if (unlikely(!__pyx_v_info)) { __Pyx_RaiseUnboundLocalError("info"); __PYX_ERR(0, 1398, __pyx_L276_error) }
- if (unlikely(!__pyx_v_info)) { __Pyx_RaiseUnboundLocalError("info"); __PYX_ERR(0, 1398, __pyx_L276_error) }
- __pyx_v_info->is_tracing = (__pyx_v_info->is_tracing - 1);
- }
- if (PY_MAJOR_VERSION >= 3) {
- __Pyx_XGIVEREF(__pyx_t_28);
- __Pyx_XGIVEREF(__pyx_t_27);
- __Pyx_XGIVEREF(__pyx_t_26);
- __Pyx_ExceptionReset(__pyx_t_28, __pyx_t_27, __pyx_t_26);
- }
- __Pyx_XGIVEREF(__pyx_t_18);
- __Pyx_XGIVEREF(__pyx_t_17);
- __Pyx_XGIVEREF(__pyx_t_16);
- __Pyx_ErrRestore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
- __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0;
- __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_30;
- goto __pyx_L1_error;
- __pyx_L276_error:;
- if (PY_MAJOR_VERSION >= 3) {
- __Pyx_XGIVEREF(__pyx_t_28);
- __Pyx_XGIVEREF(__pyx_t_27);
- __Pyx_XGIVEREF(__pyx_t_26);
- __Pyx_ExceptionReset(__pyx_t_28, __pyx_t_27, __pyx_t_26);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_set_trace_for_frame_and_parents); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1615, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_ident_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1615, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_9 = 1;
}
- __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
- __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
- __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
- __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0;
- goto __pyx_L1_error;
}
- __pyx_L3_return: {
- __pyx_t_26 = __pyx_r;
- __pyx_r = 0;
- __pyx_v_info->is_tracing = (__pyx_v_info->is_tracing - 1);
- __pyx_r = __pyx_t_26;
- __pyx_t_26 = 0;
- goto __pyx_L0;
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_6, __pyx_v_frame};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 2+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1615, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":701
- *
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
- * cpdef trace_dispatch(self, frame, str event, arg): # <<<<<<<<<<<<<<
- * cdef tuple abs_path_canonical_path_and_base;
- * cdef bint is_exception_event;
+ /* "_pydevd_bundle/pydevd_cython.pyx":1618
+ * finally:
+ * # Make sure the user cannot see the '__exception__' we added after we leave the suspend state.
+ * remove_exception_from_frame(frame) # <<<<<<<<<<<<<<
+ * # Clear some local variables...
+ * frame = None
*/
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_21);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_abs_path_canonical_path_and_base);
- __Pyx_XDECREF((PyObject *)__pyx_v_info);
- __Pyx_XDECREF(__pyx_v_breakpoints_for_file);
- __Pyx_XDECREF(__pyx_v_stop_info);
- __Pyx_XDECREF(__pyx_v_curr_func_name);
- __Pyx_XDECREF(__pyx_v_frame_skips_cache);
- __Pyx_XDECREF(__pyx_v_frame_cache_key);
- __Pyx_XDECREF(__pyx_v_line_cache_key);
- __Pyx_XDECREF(__pyx_v_bp);
- __Pyx_XDECREF(__pyx_v_pydev_smart_step_into_variants);
- __Pyx_XDECREF(__pyx_v_main_debugger);
- __Pyx_XDECREF(__pyx_v_thread);
- __Pyx_XDECREF(__pyx_v_plugin_manager);
- __Pyx_XDECREF(__pyx_v_stop_frame);
- __Pyx_XDECREF(__pyx_v_function_breakpoint_on_call_event);
- __Pyx_XDECREF(__pyx_v_returns_cache_key);
- __Pyx_XDECREF(__pyx_v_return_lines);
- __Pyx_XDECREF(__pyx_v_x);
- __Pyx_XDECREF(__pyx_v_f);
- __Pyx_XDECREF(__pyx_v_func_lines);
- __Pyx_XDECREF(__pyx_v_offset_and_lineno);
- __Pyx_XDECREF(__pyx_v_breakpoint);
- __Pyx_XDECREF(__pyx_v_stop_reason);
- __Pyx_XDECREF(__pyx_v_bp_type);
- __Pyx_XDECREF(__pyx_v_new_frame);
- __Pyx_XDECREF(__pyx_v_result);
- __Pyx_XDECREF(__pyx_v_eval_result);
- __Pyx_XDECREF(__pyx_v_cmd);
- __Pyx_XDECREF(__pyx_v_exc);
- __Pyx_XDECREF(__pyx_v_plugin_stop);
- __Pyx_XDECREF(__pyx_v_force_check_project_scope);
- __Pyx_XDECREF(__pyx_v_filename);
- __Pyx_XDECREF(__pyx_v_f2);
- __Pyx_XDECREF(__pyx_v_back);
- __Pyx_XDECREF(__pyx_v_smart_step_into_variant);
- __Pyx_XDECREF(__pyx_v_children_variants);
- __Pyx_XDECREF(__pyx_v_f_code);
- __Pyx_XDECREF(__pyx_v_stopped_on_plugin);
- __Pyx_XDECREF(__pyx_v_back_absolute_filename);
- __Pyx_XDECREF(__pyx_v__);
- __Pyx_XDECREF(__pyx_v_base);
- __Pyx_XDECREF(__pyx_v_frame);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_11trace_dispatch(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_11trace_dispatch(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_frame = 0;
- PyObject *__pyx_v_event = 0;
- PyObject *__pyx_v_arg = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("trace_dispatch (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_frame,&__pyx_n_s_event,&__pyx_n_s_arg,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- CYTHON_FALLTHROUGH;
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- CYTHON_FALLTHROUGH;
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- CYTHON_FALLTHROUGH;
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_frame)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- CYTHON_FALLTHROUGH;
- case 1:
- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_event)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("trace_dispatch", 1, 3, 3, 1); __PYX_ERR(0, 701, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 2:
- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_arg)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("trace_dispatch", 1, 3, 3, 2); __PYX_ERR(0, 701, __pyx_L3_error)
+ /*finally:*/ {
+ /*normal exit:*/{
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_remove_exception_from_frame); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1618, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_6 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_9 = 1;
}
}
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "trace_dispatch") < 0)) __PYX_ERR(0, 701, __pyx_L3_error)
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_frame};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1618, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- }
- __pyx_v_frame = values[0];
- __pyx_v_event = ((PyObject*)values[1]);
- __pyx_v_arg = values[2];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("trace_dispatch", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 701, __pyx_L3_error)
- __pyx_L3_error:;
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_event), (&PyString_Type), 1, "event", 1))) __PYX_ERR(0, 701, __pyx_L1_error)
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_10trace_dispatch(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), __pyx_v_frame, __pyx_v_event, __pyx_v_arg);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* function exit code */
- goto __pyx_L0;
- __pyx_L1_error:;
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
+ /* "_pydevd_bundle/pydevd_cython.pyx":1620
+ * remove_exception_from_frame(frame)
+ * # Clear some local variables...
+ * frame = None # <<<<<<<<<<<<<<
+ * trace_obj = None
+ * initial_trace_obj = None
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_DECREF_SET(__pyx_v_frame, Py_None);
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_10trace_dispatch(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("trace_dispatch", 0);
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_trace_dispatch(__pyx_v_self, __pyx_v_frame, __pyx_v_event, __pyx_v_arg, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 701, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
+ /* "_pydevd_bundle/pydevd_cython.pyx":1621
+ * # Clear some local variables...
+ * frame = None
+ * trace_obj = None # <<<<<<<<<<<<<<
+ * initial_trace_obj = None
+ * check_trace_obj = None
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_DECREF_SET(__pyx_v_trace_obj, Py_None);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1622
+ * frame = None
+ * trace_obj = None
+ * initial_trace_obj = None # <<<<<<<<<<<<<<
+ * check_trace_obj = None
+ * f = None
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_DECREF_SET(__pyx_v_initial_trace_obj, Py_None);
+
+ /* "_pydevd_bundle/pydevd_cython.pyx":1623
+ * trace_obj = None
+ * initial_trace_obj = None
+ * check_trace_obj = None # <<<<<<<<<<<<<<
+ * f = None
+ * frame_id_to_frame = None
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_check_trace_obj, Py_None);
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
+ /* "_pydevd_bundle/pydevd_cython.pyx":1624
+ * initial_trace_obj = None
+ * check_trace_obj = None
+ * f = None # <<<<<<<<<<<<<<
+ * frame_id_to_frame = None
+ * py_db = None
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_f, Py_None);
-/* "(tree fragment)":1
- * def __reduce_cython__(self): # <<<<<<<<<<<<<<
- * cdef tuple state
- * cdef object _dict
+ /* "_pydevd_bundle/pydevd_cython.pyx":1625
+ * check_trace_obj = None
+ * f = None
+ * frame_id_to_frame = None # <<<<<<<<<<<<<<
+ * py_db = None
+ * thread = None
*/
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_frame_id_to_frame, ((PyObject*)Py_None));
-/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_13__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_13__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_12__reduce_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self));
+ /* "_pydevd_bundle/pydevd_cython.pyx":1626
+ * f = None
+ * frame_id_to_frame = None
+ * py_db = None # <<<<<<<<<<<<<<
+ * thread = None
+ *
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_DECREF_SET(__pyx_v_py_db, Py_None);
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
+ /* "_pydevd_bundle/pydevd_cython.pyx":1627
+ * frame_id_to_frame = None
+ * py_db = None
+ * thread = None # <<<<<<<<<<<<<<
+ *
+ * return stopped
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_DECREF_SET(__pyx_v_thread, Py_None);
+ goto __pyx_L5;
+ }
+ __pyx_L4_error:;
+ /*exception exit:*/{
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_24, &__pyx_t_23, &__pyx_t_22);
+ if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
+ __Pyx_XGOTREF(__pyx_t_10);
+ __Pyx_XGOTREF(__pyx_t_11);
+ __Pyx_XGOTREF(__pyx_t_12);
+ __Pyx_XGOTREF(__pyx_t_24);
+ __Pyx_XGOTREF(__pyx_t_23);
+ __Pyx_XGOTREF(__pyx_t_22);
+ __pyx_t_17 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_25 = __pyx_filename;
+ {
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_12__reduce_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self) {
- PyObject *__pyx_v_state = 0;
- PyObject *__pyx_v__dict = 0;
- int __pyx_v_use_setstate;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
- int __pyx_t_4;
- int __pyx_t_5;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__reduce_cython__", 0);
+ /* "_pydevd_bundle/pydevd_cython.pyx":1618
+ * finally:
+ * # Make sure the user cannot see the '__exception__' we added after we leave the suspend state.
+ * remove_exception_from_frame(frame) # <<<<<<<<<<<<<<
+ * # Clear some local variables...
+ * frame = None
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_remove_exception_from_frame); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1618, __pyx_L67_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_6 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_9 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_frame};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1618, __pyx_L67_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "(tree fragment)":5
- * cdef object _dict
- * cdef bint use_setstate
- * state = (self._args, self.exc_info, self.should_skip) # <<<<<<<<<<<<<<
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1620
+ * remove_exception_from_frame(frame)
+ * # Clear some local variables...
+ * frame = None # <<<<<<<<<<<<<<
+ * trace_obj = None
+ * initial_trace_obj = None
*/
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->should_skip); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_v_self->_args);
- __Pyx_GIVEREF(__pyx_v_self->_args);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->_args);
- __Pyx_INCREF(__pyx_v_self->exc_info);
- __Pyx_GIVEREF(__pyx_v_self->exc_info);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->exc_info);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_v_state = ((PyObject*)__pyx_t_2);
- __pyx_t_2 = 0;
+ __Pyx_INCREF(Py_None);
+ __Pyx_DECREF_SET(__pyx_v_frame, Py_None);
- /* "(tree fragment)":6
- * cdef bint use_setstate
- * state = (self._args, self.exc_info, self.should_skip)
- * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<<
- * if _dict is not None:
- * state += (_dict,)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1621
+ * # Clear some local variables...
+ * frame = None
+ * trace_obj = None # <<<<<<<<<<<<<<
+ * initial_trace_obj = None
+ * check_trace_obj = None
*/
- __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_v__dict = __pyx_t_2;
- __pyx_t_2 = 0;
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_trace_obj, Py_None);
- /* "(tree fragment)":7
- * state = (self._args, self.exc_info, self.should_skip)
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None: # <<<<<<<<<<<<<<
- * state += (_dict,)
- * use_setstate = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":1622
+ * frame = None
+ * trace_obj = None
+ * initial_trace_obj = None # <<<<<<<<<<<<<<
+ * check_trace_obj = None
+ * f = None
*/
- __pyx_t_3 = (__pyx_v__dict != Py_None);
- __pyx_t_4 = (__pyx_t_3 != 0);
- if (__pyx_t_4) {
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_initial_trace_obj, Py_None);
- /* "(tree fragment)":8
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None:
- * state += (_dict,) # <<<<<<<<<<<<<<
- * use_setstate = True
- * else:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1623
+ * trace_obj = None
+ * initial_trace_obj = None
+ * check_trace_obj = None # <<<<<<<<<<<<<<
+ * f = None
+ * frame_id_to_frame = None
*/
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 8, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_v__dict);
- __Pyx_GIVEREF(__pyx_v__dict);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
- __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 8, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
- __pyx_t_1 = 0;
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_check_trace_obj, Py_None);
- /* "(tree fragment)":9
- * if _dict is not None:
- * state += (_dict,)
- * use_setstate = True # <<<<<<<<<<<<<<
- * else:
- * use_setstate = self._args is not None or self.exc_info is not None
+ /* "_pydevd_bundle/pydevd_cython.pyx":1624
+ * initial_trace_obj = None
+ * check_trace_obj = None
+ * f = None # <<<<<<<<<<<<<<
+ * frame_id_to_frame = None
+ * py_db = None
*/
- __pyx_v_use_setstate = 1;
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_f, Py_None);
- /* "(tree fragment)":7
- * state = (self._args, self.exc_info, self.should_skip)
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None: # <<<<<<<<<<<<<<
- * state += (_dict,)
- * use_setstate = True
+ /* "_pydevd_bundle/pydevd_cython.pyx":1625
+ * check_trace_obj = None
+ * f = None
+ * frame_id_to_frame = None # <<<<<<<<<<<<<<
+ * py_db = None
+ * thread = None
*/
- goto __pyx_L3;
- }
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_frame_id_to_frame, ((PyObject*)Py_None));
- /* "(tree fragment)":11
- * use_setstate = True
- * else:
- * use_setstate = self._args is not None or self.exc_info is not None # <<<<<<<<<<<<<<
- * if use_setstate:
- * return __pyx_unpickle_PyDBFrame, (type(self), 0x506e682, None), state
+ /* "_pydevd_bundle/pydevd_cython.pyx":1626
+ * f = None
+ * frame_id_to_frame = None
+ * py_db = None # <<<<<<<<<<<<<<
+ * thread = None
+ *
*/
- /*else*/ {
- __pyx_t_3 = (__pyx_v_self->_args != ((PyObject*)Py_None));
- __pyx_t_5 = (__pyx_t_3 != 0);
- if (!__pyx_t_5) {
- } else {
- __pyx_t_4 = __pyx_t_5;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_5 = (__pyx_v_self->exc_info != Py_None);
- __pyx_t_3 = (__pyx_t_5 != 0);
- __pyx_t_4 = __pyx_t_3;
- __pyx_L4_bool_binop_done:;
- __pyx_v_use_setstate = __pyx_t_4;
- }
- __pyx_L3:;
+ __Pyx_INCREF(Py_None);
+ __Pyx_DECREF_SET(__pyx_v_py_db, Py_None);
- /* "(tree fragment)":12
- * else:
- * use_setstate = self._args is not None or self.exc_info is not None
- * if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle_PyDBFrame, (type(self), 0x506e682, None), state
- * else:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1627
+ * frame_id_to_frame = None
+ * py_db = None
+ * thread = None # <<<<<<<<<<<<<<
+ *
+ * return stopped
*/
- __pyx_t_4 = (__pyx_v_use_setstate != 0);
- if (__pyx_t_4) {
+ __Pyx_INCREF(Py_None);
+ __Pyx_DECREF_SET(__pyx_v_thread, Py_None);
+ }
+ if (PY_MAJOR_VERSION >= 3) {
+ __Pyx_XGIVEREF(__pyx_t_24);
+ __Pyx_XGIVEREF(__pyx_t_23);
+ __Pyx_XGIVEREF(__pyx_t_22);
+ __Pyx_ExceptionReset(__pyx_t_24, __pyx_t_23, __pyx_t_22);
+ }
+ __Pyx_XGIVEREF(__pyx_t_10);
+ __Pyx_XGIVEREF(__pyx_t_11);
+ __Pyx_XGIVEREF(__pyx_t_12);
+ __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
+ __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0;
+ __pyx_lineno = __pyx_t_17; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_25;
+ goto __pyx_L1_error;
+ __pyx_L67_error:;
+ if (PY_MAJOR_VERSION >= 3) {
+ __Pyx_XGIVEREF(__pyx_t_24);
+ __Pyx_XGIVEREF(__pyx_t_23);
+ __Pyx_XGIVEREF(__pyx_t_22);
+ __Pyx_ExceptionReset(__pyx_t_24, __pyx_t_23, __pyx_t_22);
+ }
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0;
+ goto __pyx_L1_error;
+ }
+ __pyx_L3_return: {
+ __pyx_t_22 = __pyx_r;
+ __pyx_r = 0;
- /* "(tree fragment)":13
- * use_setstate = self._args is not None or self.exc_info is not None
- * if use_setstate:
- * return __pyx_unpickle_PyDBFrame, (type(self), 0x506e682, None), state # <<<<<<<<<<<<<<
- * else:
- * return __pyx_unpickle_PyDBFrame, (type(self), 0x506e682, state)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1618
+ * finally:
+ * # Make sure the user cannot see the '__exception__' we added after we leave the suspend state.
+ * remove_exception_from_frame(frame) # <<<<<<<<<<<<<<
+ * # Clear some local variables...
+ * frame = None
*/
- __Pyx_XDECREF(__pyx_r);
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_PyDBFrame); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_84338306);
- __Pyx_GIVEREF(__pyx_int_84338306);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_84338306);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
- __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
- __Pyx_INCREF(__pyx_v_state);
- __Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
- __pyx_t_1 = 0;
- __pyx_t_2 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
- goto __pyx_L0;
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_remove_exception_from_frame); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1618, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_6 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_9 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_frame};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1618, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "(tree fragment)":12
- * else:
- * use_setstate = self._args is not None or self.exc_info is not None
- * if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle_PyDBFrame, (type(self), 0x506e682, None), state
- * else:
+ /* "_pydevd_bundle/pydevd_cython.pyx":1620
+ * remove_exception_from_frame(frame)
+ * # Clear some local variables...
+ * frame = None # <<<<<<<<<<<<<<
+ * trace_obj = None
+ * initial_trace_obj = None
*/
- }
+ __Pyx_INCREF(Py_None);
+ __Pyx_DECREF_SET(__pyx_v_frame, Py_None);
- /* "(tree fragment)":15
- * return __pyx_unpickle_PyDBFrame, (type(self), 0x506e682, None), state
- * else:
- * return __pyx_unpickle_PyDBFrame, (type(self), 0x506e682, state) # <<<<<<<<<<<<<<
- * def __setstate_cython__(self, __pyx_state):
- * __pyx_unpickle_PyDBFrame__set_state(self, __pyx_state)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1621
+ * # Clear some local variables...
+ * frame = None
+ * trace_obj = None # <<<<<<<<<<<<<<
+ * initial_trace_obj = None
+ * check_trace_obj = None
*/
- /*else*/ {
- __Pyx_XDECREF(__pyx_r);
- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_PyDBFrame); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_84338306);
- __Pyx_GIVEREF(__pyx_int_84338306);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_84338306);
- __Pyx_INCREF(__pyx_v_state);
- __Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
- __pyx_t_6 = 0;
- __pyx_t_2 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
- }
+ __Pyx_INCREF(Py_None);
+ __Pyx_DECREF_SET(__pyx_v_trace_obj, Py_None);
- /* "(tree fragment)":1
- * def __reduce_cython__(self): # <<<<<<<<<<<<<<
- * cdef tuple state
- * cdef object _dict
+ /* "_pydevd_bundle/pydevd_cython.pyx":1622
+ * frame = None
+ * trace_obj = None
+ * initial_trace_obj = None # <<<<<<<<<<<<<<
+ * check_trace_obj = None
+ * f = None
*/
+ __Pyx_INCREF(Py_None);
+ __Pyx_DECREF_SET(__pyx_v_initial_trace_obj, Py_None);
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_state);
- __Pyx_XDECREF(__pyx_v__dict);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
+ /* "_pydevd_bundle/pydevd_cython.pyx":1623
+ * trace_obj = None
+ * initial_trace_obj = None
+ * check_trace_obj = None # <<<<<<<<<<<<<<
+ * f = None
+ * frame_id_to_frame = None
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_check_trace_obj, Py_None);
-/* "(tree fragment)":16
- * else:
- * return __pyx_unpickle_PyDBFrame, (type(self), 0x506e682, state)
- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
- * __pyx_unpickle_PyDBFrame__set_state(self, __pyx_state)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1624
+ * initial_trace_obj = None
+ * check_trace_obj = None
+ * f = None # <<<<<<<<<<<<<<
+ * frame_id_to_frame = None
+ * py_db = None
*/
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_f, Py_None);
-/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_15__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_15__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_14__setstate_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
+ /* "_pydevd_bundle/pydevd_cython.pyx":1625
+ * check_trace_obj = None
+ * f = None
+ * frame_id_to_frame = None # <<<<<<<<<<<<<<
+ * py_db = None
+ * thread = None
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_frame_id_to_frame, ((PyObject*)Py_None));
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
+ /* "_pydevd_bundle/pydevd_cython.pyx":1626
+ * f = None
+ * frame_id_to_frame = None
+ * py_db = None # <<<<<<<<<<<<<<
+ * thread = None
+ *
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_DECREF_SET(__pyx_v_py_db, Py_None);
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_14__setstate_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__setstate_cython__", 0);
+ /* "_pydevd_bundle/pydevd_cython.pyx":1627
+ * frame_id_to_frame = None
+ * py_db = None
+ * thread = None # <<<<<<<<<<<<<<
+ *
+ * return stopped
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_DECREF_SET(__pyx_v_thread, Py_None);
+ __pyx_r = __pyx_t_22;
+ __pyx_t_22 = 0;
+ goto __pyx_L0;
+ }
+ __pyx_L5:;
+ }
- /* "(tree fragment)":17
- * return __pyx_unpickle_PyDBFrame, (type(self), 0x506e682, state)
- * def __setstate_cython__(self, __pyx_state):
- * __pyx_unpickle_PyDBFrame__set_state(self, __pyx_state) # <<<<<<<<<<<<<<
+ /* "_pydevd_bundle/pydevd_cython.pyx":1629
+ * thread = None
+ *
+ * return stopped # <<<<<<<<<<<<<<
+ * from _pydev_bundle.pydev_is_thread_alive import is_thread_alive
+ * from _pydev_bundle.pydev_log import exception as pydev_log_exception
*/
- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(2, 17, __pyx_L1_error)
- __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_PyDBFrame__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 17, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_8 = __Pyx_PyBool_FromLong(__pyx_v_stopped); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1629, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_r = __pyx_t_8;
+ __pyx_t_8 = 0;
+ goto __pyx_L0;
- /* "(tree fragment)":16
- * else:
- * return __pyx_unpickle_PyDBFrame, (type(self), 0x506e682, state)
- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
- * __pyx_unpickle_PyDBFrame__set_state(self, __pyx_state)
+ /* "_pydevd_bundle/pydevd_cython.pyx":1510
+ *
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * def handle_exception(py_db, thread, frame, arg, str exception_type): # <<<<<<<<<<<<<<
+ * cdef bint stopped;
+ * cdef tuple abs_real_path_and_base;
*/
/* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_14);
+ __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.handle_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_abs_real_path_and_base);
+ __Pyx_XDECREF(__pyx_v_absolute_filename);
+ __Pyx_XDECREF(__pyx_v_canonical_normalized_filename);
+ __Pyx_XDECREF(__pyx_v_lines_ignored);
+ __Pyx_XDECREF(__pyx_v_frame_id_to_frame);
+ __Pyx_XDECREF(__pyx_v_merged);
+ __Pyx_XDECREF(__pyx_v_trace_obj);
+ __Pyx_XDECREF(__pyx_v_initial_trace_obj);
+ __Pyx_XDECREF(__pyx_v_check_trace_obj);
+ __Pyx_XDECREF(__pyx_v_curr_stat);
+ __Pyx_XDECREF(__pyx_v_last_stat);
+ __Pyx_XDECREF(__pyx_v_from_user_input);
+ __Pyx_XDECREF(__pyx_v_exc_lineno);
+ __Pyx_XDECREF(__pyx_v_line);
+ __Pyx_XDECREF(__pyx_v_f);
+ __Pyx_XDECREF(__pyx_v_py_db);
+ __Pyx_XDECREF(__pyx_v_thread);
+ __Pyx_XDECREF(__pyx_v_frame);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-/* "_pydevd_bundle/pydevd_cython.pyx":1436
+/* "_pydevd_bundle/pydevd_cython.pyx":1674
*
*
* def notify_skipped_step_in_because_of_filters(py_db, frame): # <<<<<<<<<<<<<<
@@ -24537,71 +31108,117 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_14__setsta
*/
/* Python wrapper */
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_5notify_skipped_step_in_because_of_filters(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_5notify_skipped_step_in_because_of_filters = {"notify_skipped_step_in_because_of_filters", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_5notify_skipped_step_in_because_of_filters, METH_VARARGS|METH_KEYWORDS, 0};
-static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_5notify_skipped_step_in_because_of_filters(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_17notify_skipped_step_in_because_of_filters(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_17notify_skipped_step_in_because_of_filters = {"notify_skipped_step_in_because_of_filters", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_17notify_skipped_step_in_because_of_filters, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_17notify_skipped_step_in_because_of_filters(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
PyObject *__pyx_v_py_db = 0;
PyObject *__pyx_v_frame = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[2] = {0,0};
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("notify_skipped_step_in_because_of_filters (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_py_db,&__pyx_n_s_frame,0};
- PyObject* values[2] = {0,0};
- if (unlikely(__pyx_kwds)) {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_py_db,&__pyx_n_s_frame,0};
+ if (__pyx_kwds) {
Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ switch (__pyx_nargs) {
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_py_db)) != 0)) kw_args--;
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_py_db)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1674, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_frame)) != 0)) kw_args--;
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1674, __pyx_L3_error)
else {
- __Pyx_RaiseArgtupleInvalid("notify_skipped_step_in_because_of_filters", 1, 2, 2, 1); __PYX_ERR(0, 1436, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("notify_skipped_step_in_because_of_filters", 1, 2, 2, 1); __PYX_ERR(0, 1674, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "notify_skipped_step_in_because_of_filters") < 0)) __PYX_ERR(0, 1436, __pyx_L3_error)
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "notify_skipped_step_in_because_of_filters") < 0)) __PYX_ERR(0, 1674, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+ } else if (unlikely(__pyx_nargs != 2)) {
goto __pyx_L5_argtuple_error;
} else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
}
__pyx_v_py_db = values[0];
__pyx_v_frame = values[1];
}
- goto __pyx_L4_argument_unpacking_done;
+ goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("notify_skipped_step_in_because_of_filters", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1436, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("notify_skipped_step_in_because_of_filters", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 1674, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.notify_skipped_step_in_because_of_filters", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_4notify_skipped_step_in_because_of_filters(__pyx_self, __pyx_v_py_db, __pyx_v_frame);
+ __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_16notify_skipped_step_in_because_of_filters(__pyx_self, __pyx_v_py_db, __pyx_v_frame);
/* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_4notify_skipped_step_in_because_of_filters(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame) {
+static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_16notify_skipped_step_in_because_of_filters(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
@@ -24609,18 +31226,19 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_4notify_skipped_step_
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
+ unsigned int __pyx_t_6;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- int __pyx_t_9;
- PyObject *__pyx_t_10 = NULL;
- int __pyx_t_11;
+ PyObject *__pyx_t_9 = NULL;
+ int __pyx_t_10;
+ PyObject *__pyx_t_11 = NULL;
+ int __pyx_t_12;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("notify_skipped_step_in_because_of_filters", 0);
+ __Pyx_RefNannySetupContext("notify_skipped_step_in_because_of_filters", 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":1439
+ /* "_pydevd_bundle/pydevd_cython.pyx":1677
* global _global_notify_skipped_step_in
*
* with _global_notify_skipped_step_in_lock: # <<<<<<<<<<<<<<
@@ -24628,50 +31246,57 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_4notify_skipped_step_
* # Check with lock in place (callers should actually have checked
*/
/*with:*/ {
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_global_notify_skipped_step_in_l); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1439, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_global_notify_skipped_step_in_l); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1677, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1439, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1677, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1439, __pyx_L3_error)
+ __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1677, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
if (likely(__pyx_t_5)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_6 = 1;
}
}
- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1439, __pyx_L3_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1677, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/*try:*/ {
{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
- __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
- __Pyx_XGOTREF(__pyx_t_6);
+ __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
__Pyx_XGOTREF(__pyx_t_7);
__Pyx_XGOTREF(__pyx_t_8);
+ __Pyx_XGOTREF(__pyx_t_9);
/*try:*/ {
- /* "_pydevd_bundle/pydevd_cython.pyx":1440
+ /* "_pydevd_bundle/pydevd_cython.pyx":1678
*
* with _global_notify_skipped_step_in_lock:
* if _global_notify_skipped_step_in: # <<<<<<<<<<<<<<
* # Check with lock in place (callers should actually have checked
* # before without the lock in place due to performance).
*/
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_14_pydevd_bundle_13pydevd_cython__global_notify_skipped_step_in); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1440, __pyx_L7_error)
- if (__pyx_t_9) {
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_14_pydevd_bundle_13pydevd_cython__global_notify_skipped_step_in); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1678, __pyx_L7_error)
+ if (__pyx_t_10) {
- /* "_pydevd_bundle/pydevd_cython.pyx":1443
+ /* "_pydevd_bundle/pydevd_cython.pyx":1681
* # Check with lock in place (callers should actually have checked
* # before without the lock in place due to performance).
* return # <<<<<<<<<<<<<<
@@ -24682,7 +31307,7 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_4notify_skipped_step_
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L11_try_return;
- /* "_pydevd_bundle/pydevd_cython.pyx":1440
+ /* "_pydevd_bundle/pydevd_cython.pyx":1678
*
* with _global_notify_skipped_step_in_lock:
* if _global_notify_skipped_step_in: # <<<<<<<<<<<<<<
@@ -24691,7 +31316,7 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_4notify_skipped_step_
*/
}
- /* "_pydevd_bundle/pydevd_cython.pyx":1444
+ /* "_pydevd_bundle/pydevd_cython.pyx":1682
* # before without the lock in place due to performance).
* return
* _global_notify_skipped_step_in = True # <<<<<<<<<<<<<<
@@ -24703,33 +31328,40 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_4notify_skipped_step_
__Pyx_DECREF_SET(__pyx_v_14_pydevd_bundle_13pydevd_cython__global_notify_skipped_step_in, ((PyObject*)Py_True));
__Pyx_GIVEREF(Py_True);
- /* "_pydevd_bundle/pydevd_cython.pyx":1445
+ /* "_pydevd_bundle/pydevd_cython.pyx":1683
* return
* _global_notify_skipped_step_in = True
* py_db.notify_skipped_step_in_because_of_filters(frame) # <<<<<<<<<<<<<<
*
- * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ *
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_notify_skipped_step_in_because_o); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1445, __pyx_L7_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_notify_skipped_step_in_because_o); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1683, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_6 = 1;
}
}
- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_frame) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_frame);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1445, __pyx_L7_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_frame};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1683, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "_pydevd_bundle/pydevd_cython.pyx":1439
+ /* "_pydevd_bundle/pydevd_cython.pyx":1677
* global _global_notify_skipped_step_in
*
* with _global_notify_skipped_step_in_lock: # <<<<<<<<<<<<<<
@@ -24737,9 +31369,9 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_4notify_skipped_step_
* # Check with lock in place (callers should actually have checked
*/
}
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L12_try_end;
__pyx_L7_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -24748,28 +31380,28 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_4notify_skipped_step_
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/*except:*/ {
__Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.notify_skipped_step_in_because_of_filters", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(0, 1439, __pyx_L9_except_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1439, __pyx_L9_except_error)
+ if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(0, 1677, __pyx_L9_except_error)
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __pyx_t_5 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1677, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL);
+ __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1439, __pyx_L9_except_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__pyx_t_9 < 0) __PYX_ERR(0, 1439, __pyx_L9_except_error)
- __pyx_t_11 = ((!(__pyx_t_9 != 0)) != 0);
- if (__pyx_t_11) {
+ if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1677, __pyx_L9_except_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ if (__pyx_t_10 < 0) __PYX_ERR(0, 1677, __pyx_L9_except_error)
+ __pyx_t_12 = (!__pyx_t_10);
+ if (unlikely(__pyx_t_12)) {
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_4);
__pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0;
- __PYX_ERR(0, 1439, __pyx_L9_except_error)
+ __PYX_ERR(0, 1677, __pyx_L9_except_error)
}
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -24777,48 +31409,48 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_4notify_skipped_step_
goto __pyx_L8_exception_handled;
}
__pyx_L9_except_error:;
- __Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
- __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
goto __pyx_L1_error;
__pyx_L11_try_return:;
- __Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
- __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
goto __pyx_L4_return;
__pyx_L8_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
- __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
__pyx_L12_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_2) {
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__2, NULL);
+ __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__3, NULL);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1439, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1677, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
goto __pyx_L6;
}
__pyx_L4_return: {
- __pyx_t_8 = __pyx_r;
+ __pyx_t_9 = __pyx_r;
__pyx_r = 0;
if (__pyx_t_2) {
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__2, NULL);
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__3, NULL);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1439, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1677, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
- __pyx_r = __pyx_t_8;
- __pyx_t_8 = 0;
+ __pyx_r = __pyx_t_9;
+ __pyx_t_9 = 0;
goto __pyx_L0;
}
__pyx_L6:;
@@ -24830,7 +31462,7 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_4notify_skipped_step_
__pyx_L17:;
}
- /* "_pydevd_bundle/pydevd_cython.pyx":1436
+ /* "_pydevd_bundle/pydevd_cython.pyx":1674
*
*
* def notify_skipped_step_in_because_of_filters(py_db, frame): # <<<<<<<<<<<<<<
@@ -24854,7 +31486,7 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_4notify_skipped_step_
return __pyx_r;
}
-/* "_pydevd_bundle/pydevd_cython.pyx":1450
+/* "_pydevd_bundle/pydevd_cython.pyx":1690
* cdef class SafeCallWrapper:
* cdef method_object
* def __init__(self, method_object): # <<<<<<<<<<<<<<
@@ -24866,44 +31498,64 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_4notify_skipped_step_
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_method_object = 0;
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method_object,0};
- PyObject* values[1] = {0};
- if (unlikely(__pyx_kwds)) {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method_object,0};
+ if (__pyx_kwds) {
Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
+ kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+ switch (__pyx_nargs) {
case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method_object)) != 0)) kw_args--;
+ if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_method_object)) != 0)) {
+ (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1690, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1450, __pyx_L3_error)
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 1690, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
+ } else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
}
__pyx_v_method_object = values[0];
}
- goto __pyx_L4_argument_unpacking_done;
+ goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1450, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1690, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
+ }
+ }
__Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.SafeCallWrapper.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
@@ -24911,6 +31563,12 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_1__init__
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper___init__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *)__pyx_v_self), __pyx_v_method_object);
/* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -24918,9 +31576,9 @@ static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_1__init__
static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper___init__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *__pyx_v_self, PyObject *__pyx_v_method_object) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__init__", 0);
+ __Pyx_RefNannySetupContext("__init__", 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":1451
+ /* "_pydevd_bundle/pydevd_cython.pyx":1691
* cdef method_object
* def __init__(self, method_object):
* self.method_object = method_object # <<<<<<<<<<<<<<
@@ -24933,7 +31591,7 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper___init__(
__Pyx_DECREF(__pyx_v_self->method_object);
__pyx_v_self->method_object = __pyx_v_method_object;
- /* "_pydevd_bundle/pydevd_cython.pyx":1450
+ /* "_pydevd_bundle/pydevd_cython.pyx":1690
* cdef class SafeCallWrapper:
* cdef method_object
* def __init__(self, method_object): # <<<<<<<<<<<<<<
@@ -24947,7 +31605,7 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper___init__(
return __pyx_r;
}
-/* "_pydevd_bundle/pydevd_cython.pyx":1452
+/* "_pydevd_bundle/pydevd_cython.pyx":1692
* def __init__(self, method_object):
* self.method_object = method_object
* def __call__(self, *args): # <<<<<<<<<<<<<<
@@ -24959,16 +31617,24 @@ static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper___init__(
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_3__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_3__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_args = 0;
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__call__ (wrapper)", 0);
- if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__call__", 0))) return NULL;
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__call__", 0))) return NULL;
__Pyx_INCREF(__pyx_args);
__pyx_v_args = __pyx_args;
__pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_2__call__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *)__pyx_v_self), __pyx_v_args);
/* function exit code */
- __Pyx_XDECREF(__pyx_v_args);
+ __Pyx_DECREF(__pyx_v_args);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -24984,9 +31650,9 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_2__
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__call__", 0);
+ __Pyx_RefNannySetupContext("__call__", 1);
- /* "_pydevd_bundle/pydevd_cython.pyx":1455
+ /* "_pydevd_bundle/pydevd_cython.pyx":1695
* #Cannot use 'self' once inside the delegate call since we are borrowing the self reference f_trace field
* #in the frame, and that reference might get destroyed by set trace on frame and parents
* cdef PyObject* method_obj = self.method_object # <<<<<<<<<<<<<<
@@ -24995,7 +31661,7 @@ static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_2__
*/
__pyx_v_method_obj = ((PyObject *)__pyx_v_self->method_object);
- /* "_pydevd_bundle/pydevd_cython.pyx":1456
+ /* "_pydevd_bundle/pydevd_cython.pyx":1696
* #in the frame, and that reference might get destroyed by set trace on frame and parents
* cdef PyObject* method_obj = self.method_object
* Py_INCREF( | | | | | | | ')
- return NetCommand(CMD_GET_THREAD_STACK, seq, ''.join(cmd_text))
+ cmd_text.append("")
+ return NetCommand(CMD_GET_THREAD_STACK, seq, "".join(cmd_text))
except:
return self.make_error_message(seq, get_exception_traceback_str())
@@ -135,18 +165,18 @@ def make_console_message(self, msg):
return self.make_io_message(msg, 2)
def make_io_message(self, msg, ctx):
- '''
+ """
@param msg: the message to pass to the debug server
@param ctx: 1 for stdio 2 for stderr
- '''
+ """
try:
msg = pydevd_constants.as_str(msg)
if len(msg) > MAX_IO_MSG_SIZE:
msg = msg[0:MAX_IO_MSG_SIZE]
- msg += '...'
+ msg += "..."
- msg = pydevd_xml.make_valid_xml_value(quote(msg, '/>_= '))
+ msg = pydevd_xml.make_valid_xml_value(quote(msg, "/>_= "))
return NetCommand(str(CMD_WRITE_TO_CONSOLE), 0, '' % (msg, ctx))
except:
return self.make_error_message(0, get_exception_traceback_str())
@@ -171,16 +201,16 @@ def _iter_visible_frames_info(self, py_db, frames_list, flatten_chained=False):
for frame in frames_list:
show_as_current_frame = frame is frames_list.current_frame
if frame.f_code is None:
- pydev_log.info('Frame without f_code: %s', frame)
+ pydev_log.info("Frame without f_code: %s", frame)
continue # IronPython sometimes does not have it!
method_name = frame.f_code.co_name # method name (if in method) or ? if global
if method_name is None:
- pydev_log.info('Frame without co_name: %s', frame)
+ pydev_log.info("Frame without co_name: %s", frame)
continue # IronPython sometimes does not have it!
if is_chained:
- method_name = '[Chained Exc: %s] %s' % (frames_list.exc_desc, method_name)
+ method_name = "[Chained Exc: %s] %s" % (frames_list.exc_desc, method_name)
abs_path_real_path_and_base = get_abs_path_real_path_and_base_from_frame(frame)
if py_db.get_file_type(frame, abs_path_real_path_and_base) == py_db.PYDEV_FILE:
@@ -196,7 +226,17 @@ def _iter_visible_frames_info(self, py_db, frames_list, flatten_chained=False):
new_filename_in_utf8, applied_mapping = pydevd_file_utils.map_file_to_client(filename_in_utf8)
applied_mapping = applied_mapping or changed
- yield frame_id, frame, method_name, abs_path_real_path_and_base[0], new_filename_in_utf8, lineno, applied_mapping, show_as_current_frame, line_col_info
+ yield (
+ frame_id,
+ frame,
+ method_name,
+ abs_path_real_path_and_base[0],
+ new_filename_in_utf8,
+ lineno,
+ applied_mapping,
+ show_as_current_frame,
+ line_col_info,
+ )
if not flatten_chained:
break
@@ -213,21 +253,28 @@ def make_thread_stack_str(self, py_db, frames_list):
append = cmd_text_list.append
try:
- for frame_id, frame, method_name, _original_filename, filename_in_utf8, lineno, _applied_mapping, _show_as_current_frame, line_col_info in self._iter_visible_frames_info(
- py_db, frames_list, flatten_chained=True
- ):
-
+ for (
+ frame_id,
+ frame,
+ method_name,
+ _original_filename,
+ filename_in_utf8,
+ lineno,
+ _applied_mapping,
+ _show_as_current_frame,
+ line_col_info,
+ ) in self._iter_visible_frames_info(py_db, frames_list, flatten_chained=True):
# print("file is ", filename_in_utf8)
# print("line is ", lineno)
# Note: variables are all gotten 'on-demand'.
- append('' % (quote(make_valid_xml_value(filename_in_utf8), '/>_= \t'), lineno))
+ append('' % (quote(make_valid_xml_value(filename_in_utf8), "/>_= \t"), lineno))
append("")
except:
pydev_log.exception()
- return ''.join(cmd_text_list)
+ return "".join(cmd_text_list)
def make_thread_suspend_str(
self,
@@ -236,8 +283,8 @@ def make_thread_suspend_str(
frames_list,
stop_reason=None,
message=None,
- suspend_type="trace",
- ):
+ trace_suspend_type="trace",
+ ):
"""
:return tuple(str,str):
Returns tuple(thread_suspended_str, thread_stack_str).
@@ -264,7 +311,7 @@ def make_thread_suspend_str(
cmd_text_list = []
append = cmd_text_list.append
- cmd_text_list.append('')
+ cmd_text_list.append("")
if message:
message = make_valid_xml_value(message)
@@ -273,19 +320,20 @@ def make_thread_suspend_str(
append(' stop_reason="%s"' % (stop_reason,))
if message is not None:
append(' message="%s"' % (message,))
- if suspend_type is not None:
- append(' suspend_type="%s"' % (suspend_type,))
- append('>')
+ if trace_suspend_type is not None:
+ append(' suspend_type="%s"' % (trace_suspend_type,))
+ append(">")
thread_stack_str = self.make_thread_stack_str(py_db, frames_list)
append(thread_stack_str)
append("")
- return ''.join(cmd_text_list), thread_stack_str
+ return "".join(cmd_text_list), thread_stack_str
- def make_thread_suspend_message(self, py_db, thread_id, frames_list, stop_reason, message, suspend_type):
+ def make_thread_suspend_message(self, py_db, thread_id, frames_list, stop_reason, message, trace_suspend_type, thread, additional_info):
try:
thread_suspend_str, thread_stack_str = self.make_thread_suspend_str(
- py_db, thread_id, frames_list, stop_reason, message, suspend_type)
+ py_db, thread_id, frames_list, stop_reason, message, trace_suspend_type
+ )
cmd = NetCommand(CMD_THREAD_SUSPEND, 0, thread_suspend_str)
cmd.thread_stack_str = thread_stack_str
cmd.thread_suspend_str = thread_suspend_str
@@ -295,19 +343,17 @@ def make_thread_suspend_message(self, py_db, thread_id, frames_list, stop_reason
def make_thread_suspend_single_notification(self, py_db, thread_id, thread, stop_reason):
try:
- return NetCommand(CMD_THREAD_SUSPEND_SINGLE_NOTIFICATION, 0, json.dumps(
- {'thread_id': thread_id, 'stop_reason':stop_reason}))
+ return NetCommand(CMD_THREAD_SUSPEND_SINGLE_NOTIFICATION, 0, json.dumps({"thread_id": thread_id, "stop_reason": stop_reason}))
except:
return self.make_error_message(0, get_exception_traceback_str())
def make_thread_resume_single_notification(self, thread_id):
try:
- return NetCommand(CMD_THREAD_RESUME_SINGLE_NOTIFICATION, 0, json.dumps(
- {'thread_id': thread_id}))
+ return NetCommand(CMD_THREAD_RESUME_SINGLE_NOTIFICATION, 0, json.dumps({"thread_id": thread_id}))
except:
return self.make_error_message(0, get_exception_traceback_str())
- def make_thread_run_message(self, thread_id, reason):
+ def make_thread_run_message(self, py_db, thread_id, reason):
try:
return NetCommand(CMD_THREAD_RUN, 0, "%s\t%s" % (thread_id, reason))
except:
@@ -371,24 +417,26 @@ def make_send_breakpoint_exception_message(self, seq, payload):
def _make_send_curr_exception_trace_str(self, py_db, thread_id, exc_type, exc_desc, trace_obj):
frames_list = pydevd_frame_utils.create_frames_list_from_traceback(trace_obj, None, exc_type, exc_desc)
- exc_type = pydevd_xml.make_valid_xml_value(str(exc_type)).replace('\t', ' ') or 'exception: type unknown'
- exc_desc = pydevd_xml.make_valid_xml_value(str(exc_desc)).replace('\t', ' ') or 'exception: no description'
+ exc_type = pydevd_xml.make_valid_xml_value(str(exc_type)).replace("\t", " ") or "exception: type unknown"
+ exc_desc = pydevd_xml.make_valid_xml_value(str(exc_desc)).replace("\t", " ") or "exception: no description"
thread_suspend_str, thread_stack_str = self.make_thread_suspend_str(
- py_db, thread_id, frames_list, CMD_SEND_CURR_EXCEPTION_TRACE, '')
+ py_db, thread_id, frames_list, CMD_SEND_CURR_EXCEPTION_TRACE, ""
+ )
return exc_type, exc_desc, thread_suspend_str, thread_stack_str
def make_send_curr_exception_trace_message(self, py_db, seq, thread_id, curr_frame_id, exc_type, exc_desc, trace_obj):
try:
exc_type, exc_desc, thread_suspend_str, _thread_stack_str = self._make_send_curr_exception_trace_str(
- py_db, thread_id, exc_type, exc_desc, trace_obj)
- payload = str(curr_frame_id) + '\t' + exc_type + "\t" + exc_desc + "\t" + thread_suspend_str
+ py_db, thread_id, exc_type, exc_desc, trace_obj
+ )
+ payload = str(curr_frame_id) + "\t" + exc_type + "\t" + exc_desc + "\t" + thread_suspend_str
return NetCommand(CMD_SEND_CURR_EXCEPTION_TRACE, seq, payload)
except Exception:
return self.make_error_message(seq, get_exception_traceback_str())
def make_get_exception_details_message(self, py_db, seq, thread_id, topmost_frame):
- """Returns exception details as XML """
+ """Returns exception details as XML"""
try:
# If the debugger is not suspended, just return the thread and its id.
cmd_text = ['')
+ cmd_text.append(">")
cmd_text.append(thread_stack_str)
break
frame = frame.f_back
else:
- cmd_text.append('>')
+ cmd_text.append(">")
finally:
frame = None
- cmd_text.append('')
- return NetCommand(CMD_GET_EXCEPTION_DETAILS, seq, ''.join(cmd_text))
+ cmd_text.append("")
+ return NetCommand(CMD_GET_EXCEPTION_DETAILS, seq, "".join(cmd_text))
except:
return self.make_error_message(seq, get_exception_traceback_str())
@@ -445,8 +494,7 @@ def make_load_source_from_frame_id_message(self, seq, source):
def make_show_console_message(self, py_db, thread_id, frame):
try:
frames_list = pydevd_frame_utils.create_frames_list_from_frame(frame)
- thread_suspended_str, _thread_stack_str = self.make_thread_suspend_str(
- py_db, thread_id, frames_list, CMD_SHOW_CONSOLE, '')
+ thread_suspended_str, _thread_stack_str = self.make_thread_suspend_str(py_db, thread_id, frames_list, CMD_SHOW_CONSOLE, "")
return NetCommand(CMD_SHOW_CONSOLE, 0, thread_suspended_str)
except:
return self.make_error_message(0, get_exception_traceback_str())
@@ -459,7 +507,7 @@ def make_input_requested_message(self, started):
def make_set_next_stmnt_status_message(self, seq, is_success, exception_msg):
try:
- message = str(is_success) + '\t' + exception_msg
+ message = str(is_success) + "\t" + exception_msg
return NetCommand(CMD_SET_NEXT_STATEMENT, int(seq), message)
except:
return self.make_error_message(0, get_exception_traceback_str())
@@ -480,7 +528,7 @@ def make_skipped_step_in_because_of_filters(self, py_db, frame):
return NULL_NET_COMMAND # Not a part of the xml protocol
def make_evaluation_timeout_msg(self, py_db, expression, thread):
- msg = '''pydevd: Evaluating: %s did not finish after %.2f seconds.
+ msg = """pydevd: Evaluating: %s did not finish after %.2f seconds.
This may mean a number of things:
- This evaluation is really slow and this is expected.
In this case it's possible to silence this error by raising the timeout, setting the
@@ -498,12 +546,12 @@ def make_evaluation_timeout_msg(self, py_db, expression, thread):
environment variable to true so that a thread dump is shown along with this message and
optionally, set the PYDEVD_INTERRUPT_THREAD_TIMEOUT to some value so that the debugger
tries to interrupt the evaluation (if possible) when this happens.
-''' % (expression, pydevd_constants.PYDEVD_WARN_EVALUATION_TIMEOUT)
+""" % (expression, pydevd_constants.PYDEVD_WARN_EVALUATION_TIMEOUT)
if pydevd_constants.PYDEVD_THREAD_DUMP_ON_WARN_EVALUATION_TIMEOUT:
stream = StringIO()
pydevd_utils.dump_threads(stream, show_pydevd_threads=False)
- msg += '\n\n%s\n' % stream.getvalue()
+ msg += "\n\n%s\n" % stream.getvalue()
return self.make_warning_message(msg)
def make_exit_command(self, py_db):
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py
index 0cd0d7615..71b526896 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py
@@ -1,19 +1,20 @@
import types
from _pydev_bundle import pydev_log
-from _pydevd_bundle import pydevd_trace_api
+from typing import Tuple, Literal
try:
from pydevd_plugins import django_debug
except:
django_debug = None
- pydev_log.debug('Unable to load django_debug plugin')
+ pydev_log.debug("Unable to load django_debug plugin")
try:
from pydevd_plugins import jinja2_debug
except:
jinja2_debug = None
- pydev_log.debug('Unable to load jinja2_debug plugin')
+ pydev_log.debug("Unable to load jinja2_debug plugin")
+
def load_plugins():
plugins = []
@@ -33,59 +34,175 @@ def bind_func_to_method(func, obj, method_name):
class PluginManager(object):
+ EMPTY_SENTINEL = object()
def __init__(self, main_debugger):
self.plugins = load_plugins()
+
+ # When some breakpoint is added for a given plugin it becomes active.
self.active_plugins = []
+
self.main_debugger = main_debugger
- self.rebind_methods()
def add_breakpoint(self, func_name, *args, **kwargs):
- # add breakpoint for plugin and remember which plugin to use in tracing
+ # add breakpoint for plugin
for plugin in self.plugins:
if hasattr(plugin, func_name):
func = getattr(plugin, func_name)
- result = func(self, *args, **kwargs)
+ result = func(*args, **kwargs)
if result:
self.activate(plugin)
-
return result
return None
def activate(self, plugin):
if plugin not in self.active_plugins:
self.active_plugins.append(plugin)
- self.rebind_methods()
-
- def rebind_methods(self):
- if len(self.active_plugins) == 0:
- self.bind_functions(pydevd_trace_api, getattr, pydevd_trace_api)
- elif len(self.active_plugins) == 1:
- self.bind_functions(pydevd_trace_api, getattr, self.active_plugins[0])
- else:
- self.bind_functions(pydevd_trace_api, create_dispatch, self.active_plugins)
- def bind_functions(self, interface, function_factory, arg):
- for name in dir(interface):
- func = function_factory(arg, name)
- if type(func) == types.FunctionType:
- bind_func_to_method(func, self, name)
+ # These are not a part of the API, rather, `add_breakpoint` should be used with `add_line_breakpoint` or `add_exception_breakpoint`
+ # which will call it for all plugins and then if it's valid it'll be activated.
+ #
+ # def add_line_breakpoint(self, py_db, type, canonical_normalized_filename, breakpoint_id, line, condition, expression, func_name, hit_condition=None, is_logpoint=False, add_breakpoint_result=None, on_changed_breakpoint_state=None):
+ # def add_exception_breakpoint(plugin, py_db, type, exception):
+
+ def after_breakpoints_consolidated(self, py_db, canonical_normalized_filename, id_to_pybreakpoint, file_to_line_to_breakpoints):
+ for plugin in self.active_plugins:
+ plugin.after_breakpoints_consolidated(py_db, canonical_normalized_filename, id_to_pybreakpoint, file_to_line_to_breakpoints)
+
+ def remove_exception_breakpoint(self, py_db, exception_type, exception):
+ """
+ :param exception_type: 'django', 'jinja2' (can be extended)
+ """
+ for plugin in self.active_plugins:
+ ret = plugin.remove_exception_breakpoint(py_db, exception_type, exception)
+ if ret:
+ return ret
+ return None
-def create_dispatch(obj, name):
- def dispatch(self, *args, **kwargs):
- result = None
- for p in self.active_plugins:
- r = getattr(p, name)(self, *args, **kwargs)
- if not result:
- result = r
- return result
- return dispatch
-
+ def remove_all_exception_breakpoints(self, py_db):
+ for plugin in self.active_plugins:
+ plugin.remove_all_exception_breakpoints(py_db)
+
+ def get_breakpoints(self, py_db, breakpoint_type):
+ """
+ :param breakpoint_type: 'django-line', 'jinja2-line'
+ """
+ for plugin in self.active_plugins:
+ ret = plugin.get_breakpoints(py_db, breakpoint_type)
+ if ret:
+ return ret
+
+ def can_skip(self, py_db, frame):
+ for plugin in self.active_plugins:
+ if not plugin.can_skip(py_db, frame):
+ return False
+ return True
+
+ def required_events_breakpoint(self) -> Tuple[Literal["line", "call"], ...]:
+ ret = ()
+ for plugin in self.active_plugins:
+ new = plugin.required_events_breakpoint()
+ if new:
+ ret += new
+
+ return ret
+
+ def required_events_stepping(self) -> Tuple[Literal["line", "call", "return"], ...]:
+ ret = ()
+ for plugin in self.active_plugins:
+ new = plugin.required_events_stepping()
+ if new:
+ ret += new
+
+ return ret
+
+ def is_tracked_frame(self, frame) -> bool:
+ for plugin in self.active_plugins:
+ if plugin.is_tracked_frame(frame):
+ return True
+ return False
+
+ def has_exception_breaks(self, py_db) -> bool:
+ for plugin in self.active_plugins:
+ if plugin.has_exception_breaks(py_db):
+ return True
+ return False
+
+ def has_line_breaks(self, py_db) -> bool:
+ for plugin in self.active_plugins:
+ if plugin.has_line_breaks(py_db):
+ return True
+ return False
+
+ def cmd_step_into(self, py_db, frame, event, info, thread, stop_info, stop: bool):
+ """
+ :param stop_info: in/out information. If it should stop then it'll be
+ filled by the plugin.
+ :param stop: whether the stop has already been flagged for this frame.
+ :returns:
+ tuple(stop, plugin_stop)
+ """
+ plugin_stop = False
+ for plugin in self.active_plugins:
+ stop, plugin_stop = plugin.cmd_step_into(py_db, frame, event, info, thread, stop_info, stop)
+ if plugin_stop:
+ return stop, plugin_stop
+ return stop, plugin_stop
+
+ def cmd_step_over(self, py_db, frame, event, info, thread, stop_info, stop):
+ plugin_stop = False
+ for plugin in self.active_plugins:
+ stop, plugin_stop = plugin.cmd_step_over(py_db, frame, event, info, thread, stop_info, stop)
+ if plugin_stop:
+ return stop, plugin_stop
+ return stop, plugin_stop
+
+ def stop(self, py_db, frame, event, thread, stop_info, arg, step_cmd):
+ """
+ The way this works is that the `cmd_step_into` or `cmd_step_over`
+ is called which then fills the `stop_info` and then this method
+ is called to do the actual stop.
+ """
+ for plugin in self.active_plugins:
+ stopped = plugin.stop(py_db, frame, event, thread, stop_info, arg, step_cmd)
+ if stopped:
+ return stopped
+ return False
+
+ def get_breakpoint(self, py_db, frame, event, info):
+ for plugin in self.active_plugins:
+ ret = plugin.get_breakpoint(py_db, frame, event, info)
+ if ret:
+ return ret
+ return None
+ def suspend(self, py_db, thread, frame, bp_type):
+ """
+ :param bp_type: 'django' or 'jinja2'
+ :return:
+ The frame for the suspend or None if it should not be suspended.
+ """
+ for plugin in self.active_plugins:
+ ret = plugin.suspend(py_db, thread, frame, bp_type)
+ if ret is not None:
+ return ret
+ return None
+ def exception_break(self, py_db, frame, thread, arg):
+ for plugin in self.active_plugins:
+ ret = plugin.exception_break(py_db, frame, thread, arg)
+ if ret is not None:
+ return ret
+ return None
+ def change_variable(self, frame, attr, expression):
+ for plugin in self.active_plugins:
+ ret = plugin.change_variable(frame, attr, expression, self.EMPTY_SENTINEL)
+ if ret is not self.EMPTY_SENTINEL:
+ return ret
+ return self.EMPTY_SENTINEL
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py
index 046048411..92902ed2f 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py
@@ -9,8 +9,12 @@
from _pydevd_bundle.pydevd_additional_thread_info import set_additional_thread_info
from _pydevd_bundle.pydevd_breakpoints import get_exception_class
from _pydevd_bundle.pydevd_comm import (
- InternalEvaluateConsoleExpression, InternalConsoleGetCompletions, InternalRunCustomOperation,
- internal_get_next_statement_targets, internal_get_smart_step_into_variants)
+ InternalEvaluateConsoleExpression,
+ InternalConsoleGetCompletions,
+ InternalRunCustomOperation,
+ internal_get_next_statement_targets,
+ internal_get_smart_step_into_variants,
+)
from _pydevd_bundle.pydevd_constants import NEXT_VALUE_SEPARATOR, IS_WINDOWS, NULL
from _pydevd_bundle.pydevd_comm_constants import ID_TO_MEANING, CMD_EXEC_EXPRESSION, CMD_AUTHENTICATE
from _pydevd_bundle.pydevd_api import PyDevdAPI
@@ -21,22 +25,21 @@
class _PyDevCommandProcessor(object):
-
def __init__(self):
self.api = PyDevdAPI()
def process_net_command(self, py_db, cmd_id, seq, text):
- '''Processes a command received from the Java side
+ """Processes a command received from the Java side
@param cmd_id: the id of the command
@param seq: the sequence of the command
@param text: the text received in the command
- '''
+ """
# We can only proceed if the client is already authenticated or if it's the
# command to authenticate.
if cmd_id != CMD_AUTHENTICATE and not py_db.authentication.is_authenticated():
- cmd = py_db.cmd_factory.make_error_message(seq, 'Client not authenticated.')
+ cmd = py_db.cmd_factory.make_error_message(seq, "Client not authenticated.")
py_db.writer.add_command(cmd)
return
@@ -54,7 +57,7 @@ def process_net_command(self, py_db, cmd_id, seq, text):
return
lock = py_db._main_lock
- if method_name == 'cmd_thread_dump_to_stderr':
+ if method_name == "cmd_thread_dump_to_stderr":
# We can skip the main debugger locks for cases where we know it's not needed.
lock = NULL
@@ -71,9 +74,8 @@ def process_net_command(self, py_db, cmd_id, seq, text):
traceback.print_exc(file=stream)
cmd = py_db.cmd_factory.make_error_message(
seq,
- "Unexpected exception in process_net_command.\nInitial params: %s. Exception: %s" % (
- ((cmd_id, seq, text), stream.getvalue())
- )
+ "Unexpected exception in process_net_command.\nInitial params: %s. Exception: %s"
+ % (((cmd_id, seq, text), stream.getvalue())),
)
if cmd is not None:
py_db.writer.add_command(cmd)
@@ -84,7 +86,7 @@ def cmd_authenticate(self, py_db, cmd_id, seq, text):
if py_db.authentication.is_authenticated():
return NetCommand(cmd_id, seq, py_db.authentication.client_access_token)
- return py_db.cmd_factory.make_error_message(seq, 'Client not authenticated.')
+ return py_db.cmd_factory.make_error_message(seq, "Client not authenticated.")
def cmd_run(self, py_db, cmd_id, seq, text):
return self.api.run(py_db)
@@ -95,19 +97,19 @@ def cmd_list_threads(self, py_db, cmd_id, seq, text):
def cmd_get_completions(self, py_db, cmd_id, seq, text):
# we received some command to get a variable
# the text is: thread_id\tframe_id\tactivation token
- thread_id, frame_id, _scope, act_tok = text.split('\t', 3)
+ thread_id, frame_id, _scope, act_tok = text.split("\t", 3)
return self.api.request_completions(py_db, seq, thread_id, frame_id, act_tok)
def cmd_get_thread_stack(self, py_db, cmd_id, seq, text):
# Receives a thread_id and a given timeout, which is the time we should
# wait to the provide the stack if a given thread is still not suspended.
- if '\t' in text:
- thread_id, timeout = text.split('\t')
+ if "\t" in text:
+ thread_id, timeout = text.split("\t")
timeout = float(timeout)
else:
thread_id = text
- timeout = .5 # Default timeout is .5 seconds
+ timeout = 0.5 # Default timeout is .5 seconds
return self.api.request_stack(py_db, seq, thread_id, fmt={}, timeout=timeout)
@@ -121,14 +123,14 @@ def cmd_version(self, py_db, cmd_id, seq, text):
# Default based on server process (although ideally the IDE should
# provide it).
if IS_WINDOWS:
- ide_os = 'WINDOWS'
+ ide_os = "WINDOWS"
else:
- ide_os = 'UNIX'
+ ide_os = "UNIX"
# Breakpoints can be grouped by 'LINE' or by 'ID'.
- breakpoints_by = 'LINE'
+ breakpoints_by = "LINE"
- splitted = text.split('\t')
+ splitted = text.split("\t")
if len(splitted) == 1:
_local_version = splitted
@@ -159,23 +161,23 @@ def _cmd_step(self, py_db, cmd_id, seq, text):
cmd_step_return_my_code = _cmd_step
def _cmd_set_next(self, py_db, cmd_id, seq, text):
- thread_id, line, func_name = text.split('\t', 2)
+ thread_id, line, func_name = text.split("\t", 2)
return self.api.request_set_next(py_db, seq, thread_id, cmd_id, None, line, func_name)
cmd_run_to_line = _cmd_set_next
cmd_set_next_statement = _cmd_set_next
def cmd_smart_step_into(self, py_db, cmd_id, seq, text):
- thread_id, line_or_bytecode_offset, func_name = text.split('\t', 2)
- if line_or_bytecode_offset.startswith('offset='):
+ thread_id, line_or_bytecode_offset, func_name = text.split("\t", 2)
+ if line_or_bytecode_offset.startswith("offset="):
# In this case we request the smart step into to stop given the parent frame
# and the location of the parent frame bytecode offset and not just the func_name
# (this implies that `CMD_GET_SMART_STEP_INTO_VARIANTS` was previously used
# to know what are the valid stop points).
- temp = line_or_bytecode_offset[len('offset='):]
- if ';' in temp:
- offset, child_offset = temp.split(';')
+ temp = line_or_bytecode_offset[len("offset=") :]
+ if ";" in temp:
+ offset, child_offset = temp.split(";")
offset = int(offset)
child_offset = int(child_offset)
else:
@@ -188,29 +190,29 @@ def cmd_smart_step_into(self, py_db, cmd_id, seq, text):
def cmd_reload_code(self, py_db, cmd_id, seq, text):
text = text.strip()
- if '\t' not in text:
+ if "\t" not in text:
module_name = text.strip()
filename = None
else:
- module_name, filename = text.split('\t', 1)
+ module_name, filename = text.split("\t", 1)
self.api.request_reload_code(py_db, seq, module_name, filename)
def cmd_change_variable(self, py_db, cmd_id, seq, text):
# the text is: thread\tstackframe\tFRAME|GLOBAL\tattribute_to_change\tvalue_to_change
- thread_id, frame_id, scope, attr_and_value = text.split('\t', 3)
+ thread_id, frame_id, scope, attr_and_value = text.split("\t", 3)
- tab_index = attr_and_value.rindex('\t')
- attr = attr_and_value[0:tab_index].replace('\t', '.')
- value = attr_and_value[tab_index + 1:]
+ tab_index = attr_and_value.rindex("\t")
+ attr = attr_and_value[0:tab_index].replace("\t", ".")
+ value = attr_and_value[tab_index + 1 :]
self.api.request_change_variable(py_db, seq, thread_id, frame_id, scope, attr, value)
def cmd_get_variable(self, py_db, cmd_id, seq, text):
# we received some command to get a variable
# the text is: thread_id\tframe_id\tFRAME|GLOBAL\tattributes*
- thread_id, frame_id, scopeattrs = text.split('\t', 2)
+ thread_id, frame_id, scopeattrs = text.split("\t", 2)
- if scopeattrs.find('\t') != -1: # there are attributes beyond scope
- scope, attrs = scopeattrs.split('\t', 1)
+ if scopeattrs.find("\t") != -1: # there are attributes beyond scope
+ scope, attrs = scopeattrs.split("\t", 1)
else:
scope, attrs = (scopeattrs, None)
@@ -220,84 +222,91 @@ def cmd_get_array(self, py_db, cmd_id, seq, text):
# Note: untested and unused in pydev
# we received some command to get an array variable
# the text is: thread_id\tframe_id\tFRAME|GLOBAL\tname\ttemp\troffs\tcoffs\trows\tcols\tformat
- roffset, coffset, rows, cols, format, thread_id, frame_id, scopeattrs = text.split('\t', 7)
+ roffset, coffset, rows, cols, format, thread_id, frame_id, scopeattrs = text.split("\t", 7)
- if scopeattrs.find('\t') != -1: # there are attributes beyond scope
- scope, attrs = scopeattrs.split('\t', 1)
+ if scopeattrs.find("\t") != -1: # there are attributes beyond scope
+ scope, attrs = scopeattrs.split("\t", 1)
else:
scope, attrs = (scopeattrs, None)
self.api.request_get_array(py_db, seq, roffset, coffset, rows, cols, format, thread_id, frame_id, scope, attrs)
def cmd_show_return_values(self, py_db, cmd_id, seq, text):
- show_return_values = text.split('\t')[1]
+ show_return_values = text.split("\t")[1]
self.api.set_show_return_values(py_db, int(show_return_values) == 1)
def cmd_load_full_value(self, py_db, cmd_id, seq, text):
# Note: untested and unused in pydev
- thread_id, frame_id, scopeattrs = text.split('\t', 2)
+ thread_id, frame_id, scopeattrs = text.split("\t", 2)
vars = scopeattrs.split(NEXT_VALUE_SEPARATOR)
self.api.request_load_full_value(py_db, seq, thread_id, frame_id, vars)
def cmd_get_description(self, py_db, cmd_id, seq, text):
# Note: untested and unused in pydev
- thread_id, frame_id, expression = text.split('\t', 2)
+ thread_id, frame_id, expression = text.split("\t", 2)
self.api.request_get_description(py_db, seq, thread_id, frame_id, expression)
def cmd_get_frame(self, py_db, cmd_id, seq, text):
- thread_id, frame_id, scope = text.split('\t', 2)
+ thread_id, frame_id, scope = text.split("\t", 2)
self.api.request_get_frame(py_db, seq, thread_id, frame_id)
def cmd_set_break(self, py_db, cmd_id, seq, text):
# func name: 'None': match anything. Empty: match global, specified: only method context.
# command to add some breakpoint.
# text is filename\tline. Add to breakpoints dictionary
- suspend_policy = u"NONE" # Can be 'NONE' or 'ALL'
+ suspend_policy = "NONE" # Can be 'NONE' or 'ALL'
is_logpoint = False
hit_condition = None
if py_db._set_breakpoints_with_id:
try:
try:
- breakpoint_id, btype, filename, line, func_name, condition, expression, hit_condition, is_logpoint, suspend_policy = text.split(u'\t', 9)
+ (
+ breakpoint_id,
+ btype,
+ filename,
+ line,
+ func_name,
+ condition,
+ expression,
+ hit_condition,
+ is_logpoint,
+ suspend_policy,
+ ) = text.split("\t", 9)
except ValueError: # not enough values to unpack
# No suspend_policy passed (use default).
- breakpoint_id, btype, filename, line, func_name, condition, expression, hit_condition, is_logpoint = text.split(u'\t', 8)
- is_logpoint = is_logpoint == u'True'
+ breakpoint_id, btype, filename, line, func_name, condition, expression, hit_condition, is_logpoint = text.split("\t", 8)
+ is_logpoint = is_logpoint == "True"
except ValueError: # not enough values to unpack
- breakpoint_id, btype, filename, line, func_name, condition, expression = text.split(u'\t', 6)
+ breakpoint_id, btype, filename, line, func_name, condition, expression = text.split("\t", 6)
breakpoint_id = int(breakpoint_id)
line = int(line)
# We must restore new lines and tabs as done in
# AbstractDebugTarget.breakpointAdded
- condition = condition.replace(u"@_@NEW_LINE_CHAR@_@", u'\n').\
- replace(u"@_@TAB_CHAR@_@", u'\t').strip()
+ condition = condition.replace("@_@NEW_LINE_CHAR@_@", "\n").replace("@_@TAB_CHAR@_@", "\t").strip()
- expression = expression.replace(u"@_@NEW_LINE_CHAR@_@", u'\n').\
- replace(u"@_@TAB_CHAR@_@", u'\t').strip()
+ expression = expression.replace("@_@NEW_LINE_CHAR@_@", "\n").replace("@_@TAB_CHAR@_@", "\t").strip()
else:
# Note: this else should be removed after PyCharm migrates to setting
# breakpoints by id (and ideally also provides func_name).
- btype, filename, line, func_name, suspend_policy, condition, expression = text.split(u'\t', 6)
+ btype, filename, line, func_name, suspend_policy, condition, expression = text.split("\t", 6)
# If we don't have an id given for each breakpoint, consider
# the id to be the line.
breakpoint_id = line = int(line)
- condition = condition.replace(u"@_@NEW_LINE_CHAR@_@", u'\n'). \
- replace(u"@_@TAB_CHAR@_@", u'\t').strip()
+ condition = condition.replace("@_@NEW_LINE_CHAR@_@", "\n").replace("@_@TAB_CHAR@_@", "\t").strip()
- expression = expression.replace(u"@_@NEW_LINE_CHAR@_@", u'\n'). \
- replace(u"@_@TAB_CHAR@_@", u'\t').strip()
+ expression = expression.replace("@_@NEW_LINE_CHAR@_@", "\n").replace("@_@TAB_CHAR@_@", "\t").strip()
- if condition is not None and (len(condition) <= 0 or condition == u"None"):
+ if condition is not None and (len(condition) <= 0 or condition == "None"):
condition = None
- if expression is not None and (len(expression) <= 0 or expression == u"None"):
+ if expression is not None and (len(expression) <= 0 or expression == "None"):
expression = None
- if hit_condition is not None and (len(hit_condition) <= 0 or hit_condition == u"None"):
+ if hit_condition is not None and (len(hit_condition) <= 0 or hit_condition == "None"):
hit_condition = None
def on_changed_breakpoint_state(breakpoint_id, add_breakpoint_result):
@@ -305,49 +314,73 @@ def on_changed_breakpoint_state(breakpoint_id, add_breakpoint_result):
translated_line = add_breakpoint_result.translated_line
translated_filename = add_breakpoint_result.translated_filename
- msg = ''
+ msg = ""
if error_code:
-
if error_code == self.api.ADD_BREAKPOINT_FILE_NOT_FOUND:
- msg = 'pydev debugger: Trying to add breakpoint to file that does not exist: %s (will have no effect).\n' % (translated_filename,)
+ msg = "pydev debugger: Trying to add breakpoint to file that does not exist: %s (will have no effect).\n" % (
+ translated_filename,
+ )
elif error_code == self.api.ADD_BREAKPOINT_FILE_EXCLUDED_BY_FILTERS:
- msg = 'pydev debugger: Trying to add breakpoint to file that is excluded by filters: %s (will have no effect).\n' % (translated_filename,)
+ msg = "pydev debugger: Trying to add breakpoint to file that is excluded by filters: %s (will have no effect).\n" % (
+ translated_filename,
+ )
elif error_code == self.api.ADD_BREAKPOINT_LAZY_VALIDATION:
- msg = '' # Ignore this here (if/when loaded, it'll call on_changed_breakpoint_state again accordingly).
+ msg = "" # Ignore this here (if/when loaded, it'll call on_changed_breakpoint_state again accordingly).
elif error_code == self.api.ADD_BREAKPOINT_INVALID_LINE:
- msg = 'pydev debugger: Trying to add breakpoint to line (%s) that is not valid in: %s.\n' % (translated_line, translated_filename,)
+ msg = "pydev debugger: Trying to add breakpoint to line (%s) that is not valid in: %s.\n" % (
+ translated_line,
+ translated_filename,
+ )
else:
# Shouldn't get here.
- msg = 'pydev debugger: Breakpoint not validated (reason unknown -- please report as error): %s (%s).\n' % (translated_filename, translated_line)
+ msg = "pydev debugger: Breakpoint not validated (reason unknown -- please report as error): %s (%s).\n" % (
+ translated_filename,
+ translated_line,
+ )
else:
if add_breakpoint_result.original_line != translated_line:
- msg = 'pydev debugger (info): Breakpoint in line: %s moved to line: %s (in %s).\n' % (add_breakpoint_result.original_line, translated_line, translated_filename)
+ msg = "pydev debugger (info): Breakpoint in line: %s moved to line: %s (in %s).\n" % (
+ add_breakpoint_result.original_line,
+ translated_line,
+ translated_filename,
+ )
if msg:
py_db.writer.add_command(py_db.cmd_factory.make_warning_message(msg))
result = self.api.add_breakpoint(
- py_db, self.api.filename_to_str(filename), btype, breakpoint_id, line, condition, func_name,
- expression, suspend_policy, hit_condition, is_logpoint, on_changed_breakpoint_state=on_changed_breakpoint_state)
+ py_db,
+ self.api.filename_to_str(filename),
+ btype,
+ breakpoint_id,
+ line,
+ condition,
+ func_name,
+ expression,
+ suspend_policy,
+ hit_condition,
+ is_logpoint,
+ on_changed_breakpoint_state=on_changed_breakpoint_state,
+ )
on_changed_breakpoint_state(breakpoint_id, result)
def cmd_remove_break(self, py_db, cmd_id, seq, text):
# command to remove some breakpoint
# text is type\file\tid. Remove from breakpoints dictionary
- breakpoint_type, filename, breakpoint_id = text.split('\t', 2)
+ breakpoint_type, filename, breakpoint_id = text.split("\t", 2)
filename = self.api.filename_to_str(filename)
try:
breakpoint_id = int(breakpoint_id)
except ValueError:
- pydev_log.critical('Error removing breakpoint. Expected breakpoint_id to be an int. Found: %s', breakpoint_id)
+ pydev_log.critical("Error removing breakpoint. Expected breakpoint_id to be an int. Found: %s", breakpoint_id)
else:
self.api.remove_breakpoint(py_db, filename, breakpoint_type, breakpoint_id)
@@ -357,14 +390,13 @@ def _cmd_exec_or_evaluate_expression(self, py_db, cmd_id, seq, text):
# text is: thread\tstackframe\tLOCAL\texpression
attr_to_set_result = ""
try:
- thread_id, frame_id, scope, expression, trim, attr_to_set_result = text.split('\t', 5)
+ thread_id, frame_id, scope, expression, trim, attr_to_set_result = text.split("\t", 5)
except ValueError:
- thread_id, frame_id, scope, expression, trim = text.split('\t', 4)
+ thread_id, frame_id, scope, expression, trim = text.split("\t", 4)
is_exec = cmd_id == CMD_EXEC_EXPRESSION
trim_if_too_big = int(trim) == 1
- self.api.request_exec_or_evaluate(
- py_db, seq, thread_id, frame_id, expression, is_exec, trim_if_too_big, attr_to_set_result)
+ self.api.request_exec_or_evaluate(py_db, seq, thread_id, frame_id, expression, is_exec, trim_if_too_big, attr_to_set_result)
cmd_evaluate_expression = _cmd_exec_or_evaluate_expression
cmd_exec_expression = _cmd_exec_or_evaluate_expression
@@ -373,11 +405,11 @@ def cmd_console_exec(self, py_db, cmd_id, seq, text):
# command to exec expression in console, in case expression is only partially valid 'False' is returned
# text is: thread\tstackframe\tLOCAL\texpression
- thread_id, frame_id, scope, expression = text.split('\t', 3)
+ thread_id, frame_id, scope, expression = text.split("\t", 3)
self.api.request_console_exec(py_db, seq, thread_id, frame_id, expression)
def cmd_set_path_mapping_json(self, py_db, cmd_id, seq, text):
- '''
+ """
:param text:
Json text. Something as:
@@ -391,21 +423,21 @@ def cmd_set_path_mapping_json(self, py_db, cmd_id, seq, text):
"debug": true,
"force": false
}
- '''
+ """
as_json = json.loads(text)
- force = as_json.get('force', False)
+ force = as_json.get("force", False)
path_mappings = []
- for pathMapping in as_json.get('pathMappings', []):
- localRoot = pathMapping.get('localRoot', '')
- remoteRoot = pathMapping.get('remoteRoot', '')
- if (localRoot != '') and (remoteRoot != ''):
+ for pathMapping in as_json.get("pathMappings", []):
+ localRoot = pathMapping.get("localRoot", "")
+ remoteRoot = pathMapping.get("remoteRoot", "")
+ if (localRoot != "") and (remoteRoot != ""):
path_mappings.append((localRoot, remoteRoot))
if bool(path_mappings) or force:
pydevd_file_utils.setup_client_server_paths(path_mappings)
- debug = as_json.get('debug', False)
+ debug = as_json.get("debug", False)
if debug or force:
pydevd_file_utils.DEBUG_CLIENT_SERVER_TRANSLATION = debug
@@ -423,13 +455,15 @@ def cmd_set_py_exception_json(self, py_db, cmd_id, seq, text):
py_db.break_on_user_uncaught_exceptions = {}
as_json = json.loads(text)
- break_on_uncaught = as_json.get('break_on_uncaught', False)
- break_on_caught = as_json.get('break_on_caught', False)
- break_on_user_caught = as_json.get('break_on_user_caught', False)
- py_db.skip_on_exceptions_thrown_in_same_context = as_json.get('skip_on_exceptions_thrown_in_same_context', False)
- py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception = as_json.get('ignore_exceptions_thrown_in_lines_with_ignore_exception', False)
- ignore_libraries = as_json.get('ignore_libraries', False)
- exception_types = as_json.get('exception_types', [])
+ break_on_uncaught = as_json.get("break_on_uncaught", False)
+ break_on_caught = as_json.get("break_on_caught", False)
+ break_on_user_caught = as_json.get("break_on_user_caught", False)
+ py_db.skip_on_exceptions_thrown_in_same_context = as_json.get("skip_on_exceptions_thrown_in_same_context", False)
+ py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception = as_json.get(
+ "ignore_exceptions_thrown_in_lines_with_ignore_exception", False
+ )
+ ignore_libraries = as_json.get("ignore_libraries", False)
+ exception_types = as_json.get("exception_types", [])
for exception_type in exception_types:
if not exception_type:
@@ -453,32 +487,32 @@ def cmd_set_py_exception_json(self, py_db, cmd_id, seq, text):
def cmd_set_py_exception(self, py_db, cmd_id, seq, text):
# DEPRECATED. Use cmd_set_py_exception_json instead.
try:
- splitted = text.split(';')
+ splitted = text.split(";")
py_db.break_on_uncaught_exceptions = {}
py_db.break_on_caught_exceptions = {}
py_db.break_on_user_uncaught_exceptions = {}
if len(splitted) >= 5:
- if splitted[0] == 'true':
+ if splitted[0] == "true":
break_on_uncaught = True
else:
break_on_uncaught = False
- if splitted[1] == 'true':
+ if splitted[1] == "true":
break_on_caught = True
else:
break_on_caught = False
- if splitted[2] == 'true':
+ if splitted[2] == "true":
py_db.skip_on_exceptions_thrown_in_same_context = True
else:
py_db.skip_on_exceptions_thrown_in_same_context = False
- if splitted[3] == 'true':
+ if splitted[3] == "true":
py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception = True
else:
py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception = False
- if splitted[4] == 'true':
+ if splitted[4] == "true":
ignore_libraries = True
else:
ignore_libraries = False
@@ -520,24 +554,24 @@ def cmd_set_property_trace(self, py_db, cmd_id, seq, text):
# Command which receives whether to trace property getter/setter/deleter
# text is feature_state(true/false);disable_getter/disable_setter/disable_deleter
if text:
- splitted = text.split(';')
+ splitted = text.split(";")
if len(splitted) >= 3:
- if not py_db.disable_property_trace and splitted[0] == 'true':
+ if not py_db.disable_property_trace and splitted[0] == "true":
# Replacing property by custom property only when the debugger starts
pydevd_traceproperty.replace_builtin_property()
py_db.disable_property_trace = True
# Enable/Disable tracing of the property getter
- if splitted[1] == 'true':
+ if splitted[1] == "true":
py_db.disable_property_getter_trace = True
else:
py_db.disable_property_getter_trace = False
# Enable/Disable tracing of the property setter
- if splitted[2] == 'true':
+ if splitted[2] == "true":
py_db.disable_property_setter_trace = True
else:
py_db.disable_property_setter_trace = False
# Enable/Disable tracing of the property deleter
- if splitted[3] == 'true':
+ if splitted[3] == "true":
py_db.disable_property_deleter_trace = True
else:
py_db.disable_property_deleter_trace = False
@@ -565,32 +599,42 @@ def cmd_add_exception_break(self, py_db, cmd_id, seq, text):
condition = ""
expression = ""
- if text.find('\t') != -1:
+ if text.find("\t") != -1:
try:
- exception, condition, expression, notify_on_handled_exceptions, notify_on_unhandled_exceptions, ignore_libraries = text.split('\t', 5)
+ (
+ exception,
+ condition,
+ expression,
+ notify_on_handled_exceptions,
+ notify_on_unhandled_exceptions,
+ ignore_libraries,
+ ) = text.split("\t", 5)
except:
- exception, notify_on_handled_exceptions, notify_on_unhandled_exceptions, ignore_libraries = text.split('\t', 3)
+ exception, notify_on_handled_exceptions, notify_on_unhandled_exceptions, ignore_libraries = text.split("\t", 3)
else:
exception, notify_on_handled_exceptions, notify_on_unhandled_exceptions, ignore_libraries = text, 0, 0, 0
- condition = condition.replace("@_@NEW_LINE_CHAR@_@", '\n').replace("@_@TAB_CHAR@_@", '\t').strip()
+ condition = condition.replace("@_@NEW_LINE_CHAR@_@", "\n").replace("@_@TAB_CHAR@_@", "\t").strip()
if condition is not None and (len(condition) == 0 or condition == "None"):
condition = None
- expression = expression.replace("@_@NEW_LINE_CHAR@_@", '\n').replace("@_@TAB_CHAR@_@", '\t').strip()
+ expression = expression.replace("@_@NEW_LINE_CHAR@_@", "\n").replace("@_@TAB_CHAR@_@", "\t").strip()
if expression is not None and (len(expression) == 0 or expression == "None"):
expression = None
- if exception.find('-') != -1:
- breakpoint_type, exception = exception.split('-')
+ if exception.find("-") != -1:
+ breakpoint_type, exception = exception.split("-")
else:
- breakpoint_type = 'python'
+ breakpoint_type = "python"
- if breakpoint_type == 'python':
+ if breakpoint_type == "python":
self.api.add_python_exception_breakpoint(
- py_db, exception, condition, expression,
+ py_db,
+ exception,
+ condition,
+ expression,
notify_on_handled_exceptions=int(notify_on_handled_exceptions) > 0,
notify_on_unhandled_exceptions=int(notify_on_unhandled_exceptions) == 1,
notify_on_user_unhandled_exceptions=0, # TODO (not currently supported in this API).
@@ -602,41 +646,39 @@ def cmd_add_exception_break(self, py_db, cmd_id, seq, text):
def cmd_remove_exception_break(self, py_db, cmd_id, seq, text):
exception = text
- if exception.find('-') != -1:
- exception_type, exception = exception.split('-')
+ if exception.find("-") != -1:
+ exception_type, exception = exception.split("-")
else:
- exception_type = 'python'
+ exception_type = "python"
- if exception_type == 'python':
+ if exception_type == "python":
self.api.remove_python_exception_breakpoint(py_db, exception)
else:
self.api.remove_plugins_exception_breakpoint(py_db, exception_type, exception)
def cmd_add_django_exception_break(self, py_db, cmd_id, seq, text):
- self.api.add_plugins_exception_breakpoint(py_db, breakpoint_type='django', exception=text)
+ self.api.add_plugins_exception_breakpoint(py_db, breakpoint_type="django", exception=text)
def cmd_remove_django_exception_break(self, py_db, cmd_id, seq, text):
- self.api.remove_plugins_exception_breakpoint(py_db, exception_type='django', exception=text)
+ self.api.remove_plugins_exception_breakpoint(py_db, exception_type="django", exception=text)
def cmd_evaluate_console_expression(self, py_db, cmd_id, seq, text):
# Command which takes care for the debug console communication
if text != "":
- thread_id, frame_id, console_command = text.split('\t', 2)
- console_command, line = console_command.split('\t')
+ thread_id, frame_id, console_command = text.split("\t", 2)
+ console_command, line = console_command.split("\t")
- if console_command == 'EVALUATE':
- int_cmd = InternalEvaluateConsoleExpression(
- seq, thread_id, frame_id, line, buffer_output=True)
+ if console_command == "EVALUATE":
+ int_cmd = InternalEvaluateConsoleExpression(seq, thread_id, frame_id, line, buffer_output=True)
- elif console_command == 'EVALUATE_UNBUFFERED':
- int_cmd = InternalEvaluateConsoleExpression(
- seq, thread_id, frame_id, line, buffer_output=False)
+ elif console_command == "EVALUATE_UNBUFFERED":
+ int_cmd = InternalEvaluateConsoleExpression(seq, thread_id, frame_id, line, buffer_output=False)
- elif console_command == 'GET_COMPLETIONS':
+ elif console_command == "GET_COMPLETIONS":
int_cmd = InternalConsoleGetCompletions(seq, thread_id, frame_id, line)
else:
- raise ValueError('Unrecognized command: %s' % (console_command,))
+ raise ValueError("Unrecognized command: %s" % (console_command,))
py_db.post_internal_command(int_cmd, thread_id)
@@ -644,36 +686,35 @@ def cmd_run_custom_operation(self, py_db, cmd_id, seq, text):
# Command which runs a custom operation
if text != "":
try:
- location, custom = text.split('||', 1)
+ location, custom = text.split("||", 1)
except:
- sys.stderr.write('Custom operation now needs a || separator. Found: %s\n' % (text,))
+ sys.stderr.write("Custom operation now needs a || separator. Found: %s\n" % (text,))
raise
- thread_id, frame_id, scopeattrs = location.split('\t', 2)
+ thread_id, frame_id, scopeattrs = location.split("\t", 2)
- if scopeattrs.find('\t') != -1: # there are attributes beyond scope
- scope, attrs = scopeattrs.split('\t', 1)
+ if scopeattrs.find("\t") != -1: # there are attributes beyond scope
+ scope, attrs = scopeattrs.split("\t", 1)
else:
scope, attrs = (scopeattrs, None)
# : style: EXECFILE or EXEC
# : encoded_code_or_file: file to execute or code
# : fname: name of function to be executed in the resulting namespace
- style, encoded_code_or_file, fnname = custom.split('\t', 3)
- int_cmd = InternalRunCustomOperation(seq, thread_id, frame_id, scope, attrs,
- style, encoded_code_or_file, fnname)
+ style, encoded_code_or_file, fnname = custom.split("\t", 3)
+ int_cmd = InternalRunCustomOperation(seq, thread_id, frame_id, scope, attrs, style, encoded_code_or_file, fnname)
py_db.post_internal_command(int_cmd, thread_id)
def cmd_ignore_thrown_exception_at(self, py_db, cmd_id, seq, text):
if text:
- replace = 'REPLACE:' # Not all 3.x versions support u'REPLACE:', so, doing workaround.
+ replace = "REPLACE:" # Not all 3.x versions support u'REPLACE:', so, doing workaround.
if text.startswith(replace):
text = text[8:]
py_db.filename_to_lines_where_exceptions_are_ignored.clear()
if text:
- for line in text.split('||'): # Can be bulk-created (one in each line)
- original_filename, line_number = line.split('|')
+ for line in text.split("||"): # Can be bulk-created (one in each line)
+ original_filename, line_number = line.split("|")
original_filename = self.api.filename_to_server(original_filename)
canonical_normalized_filename = pydevd_file_utils.canonical_normalized_path(original_filename)
@@ -685,39 +726,48 @@ def cmd_ignore_thrown_exception_at(self, py_db, cmd_id, seq, text):
lines_ignored = py_db.filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {}
lines_ignored[int(line_number)] = 1
else:
- sys.stderr.write('pydev debugger: warning: trying to ignore exception thrown'\
- ' on file that does not exist: %s (will have no effect)\n' % (absolute_filename,))
+ sys.stderr.write(
+ "pydev debugger: warning: trying to ignore exception thrown"
+ " on file that does not exist: %s (will have no effect)\n" % (absolute_filename,)
+ )
def cmd_enable_dont_trace(self, py_db, cmd_id, seq, text):
if text:
- true_str = 'true' # Not all 3.x versions support u'str', so, doing workaround.
+ true_str = "true" # Not all 3.x versions support u'str', so, doing workaround.
mode = text.strip() == true_str
pydevd_dont_trace.trace_filter(mode)
def cmd_redirect_output(self, py_db, cmd_id, seq, text):
if text:
- py_db.enable_output_redirection('STDOUT' in text, 'STDERR' in text)
+ py_db.enable_output_redirection("STDOUT" in text, "STDERR" in text)
def cmd_get_next_statement_targets(self, py_db, cmd_id, seq, text):
- thread_id, frame_id = text.split('\t', 1)
+ thread_id, frame_id = text.split("\t", 1)
- py_db.post_method_as_internal_command(
- thread_id, internal_get_next_statement_targets, seq, thread_id, frame_id)
+ py_db.post_method_as_internal_command(thread_id, internal_get_next_statement_targets, seq, thread_id, frame_id)
def cmd_get_smart_step_into_variants(self, py_db, cmd_id, seq, text):
- thread_id, frame_id, start_line, end_line = text.split('\t', 3)
+ thread_id, frame_id, start_line, end_line = text.split("\t", 3)
py_db.post_method_as_internal_command(
- thread_id, internal_get_smart_step_into_variants, seq, thread_id, frame_id, start_line, end_line, set_additional_thread_info=set_additional_thread_info)
+ thread_id,
+ internal_get_smart_step_into_variants,
+ seq,
+ thread_id,
+ frame_id,
+ start_line,
+ end_line,
+ set_additional_thread_info=set_additional_thread_info,
+ )
def cmd_set_project_roots(self, py_db, cmd_id, seq, text):
- self.api.set_project_roots(py_db, text.split(u'\t'))
+ self.api.set_project_roots(py_db, text.split("\t"))
def cmd_thread_dump_to_stderr(self, py_db, cmd_id, seq, text):
pydevd_utils.dump_threads()
def cmd_stop_on_start(self, py_db, cmd_id, seq, text):
- if text.strip() in ('True', 'true', '1'):
+ if text.strip() in ("True", "true", "1"):
self.api.stop_on_entry()
def cmd_pydevd_json_config(self, py_db, cmd_id, seq, text):
@@ -728,22 +778,20 @@ def cmd_pydevd_json_config(self, py_db, cmd_id, seq, text):
# 'multi_threads_single_notification': bool,
# }
msg = json.loads(text.strip())
- if 'skip_suspend_on_breakpoint_exception' in msg:
- py_db.skip_suspend_on_breakpoint_exception = tuple(
- get_exception_class(x) for x in msg['skip_suspend_on_breakpoint_exception'])
+ if "skip_suspend_on_breakpoint_exception" in msg:
+ py_db.skip_suspend_on_breakpoint_exception = tuple(get_exception_class(x) for x in msg["skip_suspend_on_breakpoint_exception"])
- if 'skip_print_breakpoint_exception' in msg:
- py_db.skip_print_breakpoint_exception = tuple(
- get_exception_class(x) for x in msg['skip_print_breakpoint_exception'])
+ if "skip_print_breakpoint_exception" in msg:
+ py_db.skip_print_breakpoint_exception = tuple(get_exception_class(x) for x in msg["skip_print_breakpoint_exception"])
- if 'multi_threads_single_notification' in msg:
- py_db.multi_threads_single_notification = msg['multi_threads_single_notification']
+ if "multi_threads_single_notification" in msg:
+ py_db.multi_threads_single_notification = msg["multi_threads_single_notification"]
def cmd_get_exception_details(self, py_db, cmd_id, seq, text):
thread_id = text
t = pydevd_find_thread_by_id(thread_id)
frame = None
- if t is not None and not getattr(t, 'pydev_do_not_trace', None):
+ if t is not None and not getattr(t, "pydev_do_not_trace", None):
additional_info = set_additional_thread_info(t)
frame = additional_info.get_topmost_frame(t)
try:
@@ -755,4 +803,3 @@ def cmd_get_exception_details(self, py_db, cmd_id, seq, text):
process_net_command = _PyDevCommandProcessor().process_net_command
-
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py
index 42eb59914..9b51fcf9e 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py
@@ -10,26 +10,50 @@
from _pydev_bundle import pydev_log
from _pydevd_bundle._debug_adapter import pydevd_base_schema, pydevd_schema
from _pydevd_bundle._debug_adapter.pydevd_schema import (
- CompletionsResponseBody, EvaluateResponseBody, ExceptionOptions,
- GotoTargetsResponseBody, ModulesResponseBody, ProcessEventBody,
- ProcessEvent, Scope, ScopesResponseBody, SetExpressionResponseBody,
- SetVariableResponseBody, SourceBreakpoint, SourceResponseBody,
- VariablesResponseBody, SetBreakpointsResponseBody, Response,
- Capabilities, PydevdAuthorizeRequest, Request,
- StepInTargetsResponseBody, SetFunctionBreakpointsResponseBody, BreakpointEvent,
- BreakpointEventBody, InitializedEvent)
+ CompletionsResponseBody,
+ EvaluateResponseBody,
+ ExceptionOptions,
+ GotoTargetsResponseBody,
+ ModulesResponseBody,
+ ProcessEventBody,
+ ProcessEvent,
+ Scope,
+ ScopesResponseBody,
+ SetExpressionResponseBody,
+ SetVariableResponseBody,
+ SourceBreakpoint,
+ SourceResponseBody,
+ VariablesResponseBody,
+ SetBreakpointsResponseBody,
+ Response,
+ Capabilities,
+ PydevdAuthorizeRequest,
+ Request,
+ StepInTargetsResponseBody,
+ SetFunctionBreakpointsResponseBody,
+ BreakpointEvent,
+ BreakpointEventBody,
+ InitializedEvent,
+)
from _pydevd_bundle.pydevd_api import PyDevdAPI
from _pydevd_bundle.pydevd_breakpoints import get_exception_class, FunctionBreakpoint
from _pydevd_bundle.pydevd_comm_constants import (
- CMD_PROCESS_EVENT, CMD_RETURN, CMD_SET_NEXT_STATEMENT, CMD_STEP_INTO,
- CMD_STEP_INTO_MY_CODE, CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE, file_system_encoding,
- CMD_STEP_RETURN_MY_CODE, CMD_STEP_RETURN)
+ CMD_PROCESS_EVENT,
+ CMD_RETURN,
+ CMD_SET_NEXT_STATEMENT,
+ CMD_STEP_INTO,
+ CMD_STEP_INTO_MY_CODE,
+ CMD_STEP_OVER,
+ CMD_STEP_OVER_MY_CODE,
+ file_system_encoding,
+ CMD_STEP_RETURN_MY_CODE,
+ CMD_STEP_RETURN,
+)
from _pydevd_bundle.pydevd_filtering import ExcludeFilter
from _pydevd_bundle.pydevd_json_debug_options import _extract_debug_options, DebugOptions
from _pydevd_bundle.pydevd_net_command import NetCommand
from _pydevd_bundle.pydevd_utils import convert_dap_log_message_to_expression, ScopeRequest
-from _pydevd_bundle.pydevd_constants import (PY_IMPL_NAME, DebugInfoHolder, PY_VERSION_STR,
- PY_IMPL_VERSION_STR, IS_64BIT_PROCESS)
+from _pydevd_bundle.pydevd_constants import PY_IMPL_NAME, DebugInfoHolder, PY_VERSION_STR, PY_IMPL_VERSION_STR, IS_64BIT_PROCESS
from _pydevd_bundle.pydevd_trace_dispatch import USING_CYTHON
from _pydevd_frame_eval.pydevd_frame_eval_main import USING_FRAME_EVAL
from _pydevd_bundle.pydevd_comm import internal_get_step_in_targets_json
@@ -52,27 +76,27 @@ def _convert_rules_to_exclude_filters(rules, on_error):
on_error('Invalid "rules" (expected list of dicts). Found: %s' % (rules,))
continue
- include = rule.get('include')
+ include = rule.get("include")
if include is None:
on_error('Invalid "rule" (expected dict with "include"). Found: %s' % (rule,))
continue
- path = rule.get('path')
- module = rule.get('module')
+ path = rule.get("path")
+ module = rule.get("module")
if path is None and module is None:
on_error('Invalid "rule" (expected dict with "path" or "module"). Found: %s' % (rule,))
continue
if path is not None:
glob_pattern = path
- if '*' not in path and '?' not in path:
+ if "*" not in path and "?" not in path:
if os.path.isdir(glob_pattern):
# If a directory was specified, add a '/**'
# to be consistent with the glob pattern required
# by pydevd.
- if not glob_pattern.endswith('/') and not glob_pattern.endswith('\\'):
- glob_pattern += '/'
- glob_pattern += '**'
+ if not glob_pattern.endswith("/") and not glob_pattern.endswith("\\"):
+ glob_pattern += "/"
+ glob_pattern += "**"
directory_exclude_filters.append(ExcludeFilter(glob_pattern, not include, True))
else:
glob_exclude_filters.append(ExcludeFilter(glob_pattern, not include, True))
@@ -81,22 +105,21 @@ def _convert_rules_to_exclude_filters(rules, on_error):
module_exclude_filters.append(ExcludeFilter(module, not include, False))
else:
- on_error('Internal error: expected path or module to be specified.')
+ on_error("Internal error: expected path or module to be specified.")
# Note that we have to sort the directory/module exclude filters so that the biggest
# paths match first.
# i.e.: if we have:
# /sub1/sub2/sub3
# a rule with /sub1/sub2 would match before a rule only with /sub1.
- directory_exclude_filters = sorted(directory_exclude_filters, key=lambda exclude_filter:-len(exclude_filter.name))
- module_exclude_filters = sorted(module_exclude_filters, key=lambda exclude_filter:-len(exclude_filter.name))
+ directory_exclude_filters = sorted(directory_exclude_filters, key=lambda exclude_filter: -len(exclude_filter.name))
+ module_exclude_filters = sorted(module_exclude_filters, key=lambda exclude_filter: -len(exclude_filter.name))
exclude_filters = directory_exclude_filters + glob_exclude_filters + module_exclude_filters
return exclude_filters
class IDMap(object):
-
def __init__(self):
self._value_to_key = {}
self._key_to_value = {}
@@ -116,7 +139,6 @@ def obtain_key(self, value):
class PyDevJsonCommandProcessor(object):
-
def __init__(self, from_json):
self.from_json = from_json
self.api = PyDevdAPI()
@@ -126,24 +148,24 @@ def __init__(self, from_json):
self._launch_or_attach_request_done = False
def process_net_command_json(self, py_db, json_contents, send_response=True):
- '''
+ """
Processes a debug adapter protocol json command.
- '''
+ """
DEBUG = False
try:
if isinstance(json_contents, bytes):
- json_contents = json_contents.decode('utf-8')
+ json_contents = json_contents.decode("utf-8")
request = self.from_json(json_contents, update_ids_from_dap=True)
except Exception as e:
try:
loaded_json = json.loads(json_contents)
- request = Request(loaded_json.get('command', ''), loaded_json['seq'])
+ request = Request(loaded_json.get("command", ""), loaded_json["seq"])
except:
# There's not much we can do in this case...
- pydev_log.exception('Error loading json: %s', json_contents)
+ pydev_log.exception("Error loading json: %s", json_contents)
return
error_msg = str(e)
@@ -154,28 +176,33 @@ def process_net_command_json(self, py_db, json_contents, send_response=True):
# so, answer with a failure response).
def on_request(py_db, request):
error_response = {
- 'type': 'response',
- 'request_seq': request.seq,
- 'success': False,
- 'command': request.command,
- 'message': error_msg,
+ "type": "response",
+ "request_seq": request.seq,
+ "success": False,
+ "command": request.command,
+ "message": error_msg,
}
return NetCommand(CMD_RETURN, 0, error_response, is_json=True)
else:
if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 1:
- pydev_log.info('Process %s: %s\n' % (
- request.__class__.__name__, json.dumps(request.to_dict(update_ids_to_dap=True), indent=4, sort_keys=True),))
+ pydev_log.info(
+ "Process %s: %s\n"
+ % (
+ request.__class__.__name__,
+ json.dumps(request.to_dict(update_ids_to_dap=True), indent=4, sort_keys=True),
+ )
+ )
- assert request.type == 'request'
- method_name = 'on_%s_request' % (request.command.lower(),)
+ assert request.type == "request"
+ method_name = "on_%s_request" % (request.command.lower(),)
on_request = getattr(self, method_name, None)
if on_request is None:
- print('Unhandled: %s not available in PyDevJsonCommandProcessor.\n' % (method_name,))
+ print("Unhandled: %s not available in PyDevJsonCommandProcessor.\n" % (method_name,))
return
if DEBUG:
- print('Handled in pydevd: %s (in PyDevJsonCommandProcessor).\n' % (method_name,))
+ print("Handled in pydevd: %s (in PyDevJsonCommandProcessor).\n" % (method_name,))
with py_db._main_lock:
if request.__class__ == PydevdAuthorizeRequest:
@@ -184,8 +211,7 @@ def on_request(py_db, request):
py_db.authentication.login(access_token)
if not py_db.authentication.is_authenticated():
- response = Response(
- request.seq, success=False, command=request.command, message='Client not authenticated.', body={})
+ response = Response(request.seq, success=False, command=request.command, message="Client not authenticated.", body={})
cmd = NetCommand(CMD_RETURN, 0, response, is_json=True)
py_db.writer.add_command(cmd)
return
@@ -196,11 +222,11 @@ def on_request(py_db, request):
def on_pydevdauthorize_request(self, py_db, request):
client_access_token = py_db.authentication.client_access_token
- body = {'clientAccessToken': None}
+ body = {"clientAccessToken": None}
if client_access_token:
- body['clientAccessToken'] = client_access_token
+ body["clientAccessToken"] = client_access_token
- response = pydevd_base_schema.build_response(request, kwargs={'body': body})
+ response = pydevd_base_schema.build_response(request, kwargs={"body": body})
return NetCommand(CMD_RETURN, 0, response, is_json=True)
def on_initialize_request(self, py_db, request):
@@ -224,13 +250,11 @@ def on_initialize_request(self, py_db, request):
supportsTerminateRequest=True,
supportsClipboardContext=True,
supportsFunctionBreakpoints=True,
-
exceptionBreakpointFilters=[
- {'filter': 'raised', 'label': 'Raised Exceptions', 'default': False},
- {'filter': 'uncaught', 'label': 'Uncaught Exceptions', 'default': True},
+ {"filter": "raised", "label": "Raised Exceptions", "default": False},
+ {"filter": "uncaught", "label": "Uncaught Exceptions", "default": True},
{"filter": "userUnhandled", "label": "User Uncaught Exceptions", "default": False},
],
-
# Not supported.
supportsStepBack=False,
supportsRestartFrame=False,
@@ -247,20 +271,20 @@ def on_initialize_request(self, py_db, request):
).to_dict()
# Non-standard capabilities/info below.
- body['supportsDebuggerProperties'] = True
+ body["supportsDebuggerProperties"] = True
- body['pydevd'] = pydevd_info = {}
- pydevd_info['processId'] = os.getpid()
+ body["pydevd"] = pydevd_info = {}
+ pydevd_info["processId"] = os.getpid()
self.api.notify_initialize(py_db)
- response = pydevd_base_schema.build_response(request, kwargs={'body': body})
+ response = pydevd_base_schema.build_response(request, kwargs={"body": body})
return NetCommand(CMD_RETURN, 0, response, is_json=True)
def on_configurationdone_request(self, py_db, request):
- '''
+ """
:param ConfigurationDoneRequest request:
- '''
+ """
if not self._launch_or_attach_request_done:
- pydev_log.critical('Missing launch request or attach request before configuration done request.')
+ pydev_log.critical("Missing launch request or attach request before configuration done request.")
self.api.run(py_db)
self.api.notify_configuration_done(py_db)
@@ -269,15 +293,15 @@ def on_configurationdone_request(self, py_db, request):
return NetCommand(CMD_RETURN, 0, configuration_done_response, is_json=True)
def on_threads_request(self, py_db, request):
- '''
+ """
:param ThreadsRequest request:
- '''
+ """
return self.api.list_threads(py_db, request.seq)
def on_terminate_request(self, py_db, request):
- '''
+ """
:param TerminateRequest request:
- '''
+ """
self._request_terminate_process(py_db)
response = pydevd_base_schema.build_response(request)
return NetCommand(CMD_RETURN, 0, response, is_json=True)
@@ -286,25 +310,20 @@ def _request_terminate_process(self, py_db):
self.api.request_terminate_process(py_db)
def on_completions_request(self, py_db, request):
- '''
+ """
:param CompletionsRequest request:
- '''
+ """
arguments = request.arguments # : :type arguments: CompletionsArguments
seq = request.seq
text = arguments.text
frame_id = arguments.frameId
- thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(
- frame_id)
+ thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(frame_id)
if thread_id is None:
body = CompletionsResponseBody([])
variables_response = pydevd_base_schema.build_response(
- request,
- kwargs={
- 'body': body,
- 'success': False,
- 'message': 'Thread to get completions seems to have resumed already.'
- })
+ request, kwargs={"body": body, "success": False, "message": "Thread to get completions seems to have resumed already."}
+ )
return NetCommand(CMD_RETURN, 0, variables_response, is_json=True)
# Note: line and column are 1-based (convert to 0-based for pydevd).
@@ -319,61 +338,62 @@ def on_completions_request(self, py_db, request):
self.api.request_completions(py_db, seq, thread_id, frame_id, text, line=line, column=column)
def _resolve_remote_root(self, local_root, remote_root):
- if remote_root == '.':
+ if remote_root == ".":
cwd = os.getcwd()
- append_pathsep = local_root.endswith('\\') or local_root.endswith('/')
- return cwd + (os.path.sep if append_pathsep else '')
+ append_pathsep = local_root.endswith("\\") or local_root.endswith("/")
+ return cwd + (os.path.sep if append_pathsep else "")
return remote_root
def _set_debug_options(self, py_db, args, start_reason):
- rules = args.get('rules')
- stepping_resumes_all_threads = args.get('steppingResumesAllThreads', True)
+ rules = args.get("rules")
+ stepping_resumes_all_threads = args.get("steppingResumesAllThreads", True)
self.api.set_stepping_resumes_all_threads(py_db, stepping_resumes_all_threads)
- terminate_child_processes = args.get('terminateChildProcesses', True)
+ terminate_child_processes = args.get("terminateChildProcesses", True)
self.api.set_terminate_child_processes(py_db, terminate_child_processes)
- terminate_keyboard_interrupt = args.get('onTerminate', 'kill') == 'KeyboardInterrupt'
+ terminate_keyboard_interrupt = args.get("onTerminate", "kill") == "KeyboardInterrupt"
self.api.set_terminate_keyboard_interrupt(py_db, terminate_keyboard_interrupt)
- variable_presentation = args.get('variablePresentation', None)
+ variable_presentation = args.get("variablePresentation", None)
if isinstance(variable_presentation, dict):
def get_variable_presentation(setting, default):
value = variable_presentation.get(setting, default)
- if value not in ('group', 'inline', 'hide'):
+ if value not in ("group", "inline", "hide"):
pydev_log.info(
- 'The value set for "%s" (%s) in the variablePresentation is not valid. Valid values are: "group", "inline", "hide"' % (
- setting, value,))
+ 'The value set for "%s" (%s) in the variablePresentation is not valid. Valid values are: "group", "inline", "hide"'
+ % (
+ setting,
+ value,
+ )
+ )
value = default
return value
- default = get_variable_presentation('all', 'group')
+ default = get_variable_presentation("all", "group")
- special_presentation = get_variable_presentation('special', default)
- function_presentation = get_variable_presentation('function', default)
- class_presentation = get_variable_presentation('class', default)
- protected_presentation = get_variable_presentation('protected', default)
+ special_presentation = get_variable_presentation("special", default)
+ function_presentation = get_variable_presentation("function", default)
+ class_presentation = get_variable_presentation("class", default)
+ protected_presentation = get_variable_presentation("protected", default)
- self.api.set_variable_presentation(py_db, self.api.VariablePresentation(
- special_presentation,
- function_presentation,
- class_presentation,
- protected_presentation
- ))
+ self.api.set_variable_presentation(
+ py_db,
+ self.api.VariablePresentation(special_presentation, function_presentation, class_presentation, protected_presentation),
+ )
exclude_filters = []
if rules is not None:
- exclude_filters = _convert_rules_to_exclude_filters(
- rules, lambda msg: self.api.send_error_message(py_db, msg))
+ exclude_filters = _convert_rules_to_exclude_filters(rules, lambda msg: self.api.send_error_message(py_db, msg))
self.api.set_exclude_filters(py_db, exclude_filters)
debug_options = _extract_debug_options(
- args.get('options'),
- args.get('debugOptions'),
+ args.get("options"),
+ args.get("debugOptions"),
)
self._options.update_fom_debug_options(debug_options)
self._options.update_from_args(args)
@@ -384,17 +404,17 @@ def get_variable_presentation(setting, default):
self.api.set_ide_os(self._options.client_os)
path_mappings = []
- for pathMapping in args.get('pathMappings', []):
- localRoot = pathMapping.get('localRoot', '')
- remoteRoot = pathMapping.get('remoteRoot', '')
+ for pathMapping in args.get("pathMappings", []):
+ localRoot = pathMapping.get("localRoot", "")
+ remoteRoot = pathMapping.get("remoteRoot", "")
remoteRoot = self._resolve_remote_root(localRoot, remoteRoot)
- if (localRoot != '') and (remoteRoot != ''):
+ if (localRoot != "") and (remoteRoot != ""):
path_mappings.append((localRoot, remoteRoot))
if bool(path_mappings):
pydevd_file_utils.setup_client_server_paths(path_mappings)
- resolve_symlinks = args.get('resolveSymlinks', None)
+ resolve_symlinks = args.get("resolveSymlinks", None)
if resolve_symlinks is not None:
pydevd_file_utils.set_resolve_symlinks(resolve_symlinks)
@@ -416,13 +436,13 @@ def get_variable_presentation(setting, default):
self.api.set_ignore_system_exit_codes(py_db, ignore_system_exit_codes)
- auto_reload = args.get('autoReload', {})
+ auto_reload = args.get("autoReload", {})
if not isinstance(auto_reload, dict):
- pydev_log.info('Expected autoReload to be a dict. Received: %s' % (auto_reload,))
+ pydev_log.info("Expected autoReload to be a dict. Received: %s" % (auto_reload,))
auto_reload = {}
- enable_auto_reload = auto_reload.get('enable', False)
- watch_dirs = auto_reload.get('watchDirectories')
+ enable_auto_reload = auto_reload.get("enable", False)
+ watch_dirs = auto_reload.get("watchDirectories")
if not watch_dirs:
watch_dirs = []
# Note: by default this is no longer done because on some cases there are entries in the PYTHONPATH
@@ -435,15 +455,15 @@ def get_variable_presentation(setting, default):
# watch_dirs = [pydevd_file_utils.absolute_path(w) for w in check]
# watch_dirs = [w for w in watch_dirs if py_db.in_project_roots_filename_uncached(w) and os.path.isdir(w)]
- program = args.get('program')
+ program = args.get("program")
if program:
if os.path.isdir(program):
watch_dirs.append(program)
else:
watch_dirs.append(os.path.dirname(program))
- watch_dirs.append(os.path.abspath('.'))
+ watch_dirs.append(os.path.abspath("."))
- argv = getattr(sys, 'argv', [])
+ argv = getattr(sys, "argv", [])
if argv:
f = argv[0]
if f: # argv[0] could be None (https://github.com/microsoft/debugpy/issues/987)
@@ -459,30 +479,31 @@ def get_variable_presentation(setting, default):
try:
new_watch_dirs.add(pydevd_file_utils.get_path_with_real_case(pydevd_file_utils.absolute_path(w)))
except Exception:
- pydev_log.exception('Error adding watch dir: %s', w)
+ pydev_log.exception("Error adding watch dir: %s", w)
watch_dirs = new_watch_dirs
- poll_target_time = auto_reload.get('pollingInterval', 1)
- exclude_patterns = auto_reload.get('exclude', ('**/.git/**', '**/__pycache__/**', '**/node_modules/**', '**/.metadata/**', '**/site-packages/**'))
- include_patterns = auto_reload.get('include', ('**/*.py', '**/*.pyw'))
- self.api.setup_auto_reload_watcher(
- py_db, enable_auto_reload, watch_dirs, poll_target_time, exclude_patterns, include_patterns)
+ poll_target_time = auto_reload.get("pollingInterval", 1)
+ exclude_patterns = auto_reload.get(
+ "exclude", ("**/.git/**", "**/__pycache__/**", "**/node_modules/**", "**/.metadata/**", "**/site-packages/**")
+ )
+ include_patterns = auto_reload.get("include", ("**/*.py", "**/*.pyw"))
+ self.api.setup_auto_reload_watcher(py_db, enable_auto_reload, watch_dirs, poll_target_time, exclude_patterns, include_patterns)
- if self._options.stop_on_entry and start_reason == 'launch':
+ if self._options.stop_on_entry and start_reason == "launch":
self.api.stop_on_entry()
self.api.set_gui_event_loop(py_db, self._options.gui_event_loop)
def _send_process_event(self, py_db, start_method):
- argv = getattr(sys, 'argv', [])
+ argv = getattr(sys, "argv", [])
if len(argv) > 0:
name = argv[0]
else:
- name = ''
+ name = ""
if isinstance(name, bytes):
- name = name.decode(file_system_encoding, 'replace')
- name = name.encode('utf-8')
+ name = name.decode(file_system_encoding, "replace")
+ name = name.encode("utf-8")
body = ProcessEventBody(
name=name,
@@ -505,21 +526,21 @@ def _handle_launch_or_attach_request(self, py_db, request, start_reason):
return NetCommand(CMD_RETURN, 0, response, is_json=True)
def on_launch_request(self, py_db, request):
- '''
+ """
:param LaunchRequest request:
- '''
- return self._handle_launch_or_attach_request(py_db, request, start_reason='launch')
+ """
+ return self._handle_launch_or_attach_request(py_db, request, start_reason="launch")
def on_attach_request(self, py_db, request):
- '''
+ """
:param AttachRequest request:
- '''
- return self._handle_launch_or_attach_request(py_db, request, start_reason='attach')
+ """
+ return self._handle_launch_or_attach_request(py_db, request, start_reason="attach")
def on_pause_request(self, py_db, request):
- '''
+ """
:param PauseRequest request:
- '''
+ """
arguments = request.arguments # : :type arguments: PauseArguments
thread_id = arguments.threadId
@@ -529,29 +550,37 @@ def on_pause_request(self, py_db, request):
return NetCommand(CMD_RETURN, 0, response, is_json=True)
def on_continue_request(self, py_db, request):
- '''
+ """
:param ContinueRequest request:
- '''
+ """
arguments = request.arguments # : :type arguments: ContinueArguments
thread_id = arguments.threadId
def on_resumed():
- body = {'allThreadsContinued': thread_id == '*'}
- response = pydevd_base_schema.build_response(request, kwargs={'body': body})
+ body = {"allThreadsContinued": thread_id == "*"}
+ response = pydevd_base_schema.build_response(request, kwargs={"body": body})
cmd = NetCommand(CMD_RETURN, 0, response, is_json=True)
py_db.writer.add_command(cmd)
- # Only send resumed notification when it has actually resumed!
- # (otherwise the user could send a continue, receive the notification and then
- # request a new pause which would be paused without sending any notification as
- # it didn't really run in the first place).
- py_db.threads_suspended_single_notification.add_on_resumed_callback(on_resumed)
- self.api.request_resume_thread(thread_id)
+ if py_db.multi_threads_single_notification:
+ # Only send resumed notification when it has actually resumed!
+ # (otherwise the user could send a continue, receive the notification and then
+ # request a new pause which would be paused without sending any notification as
+ # it didn't really run in the first place).
+ py_db.threads_suspended_single_notification.add_on_resumed_callback(on_resumed)
+ self.api.request_resume_thread(thread_id)
+ else:
+ # Only send resumed notification when it has actually resumed!
+ # (otherwise the user could send a continue, receive the notification and then
+ # request a new pause which would be paused without sending any notification as
+ # it didn't really run in the first place).
+ self.api.request_resume_thread(thread_id)
+ on_resumed()
def on_next_request(self, py_db, request):
- '''
+ """
:param NextRequest request:
- '''
+ """
arguments = request.arguments # : :type arguments: NextArguments
thread_id = arguments.threadId
@@ -566,9 +595,9 @@ def on_next_request(self, py_db, request):
return NetCommand(CMD_RETURN, 0, response, is_json=True)
def on_stepin_request(self, py_db, request):
- '''
+ """
:param StepInRequest request:
- '''
+ """
arguments = request.arguments # : :type arguments: StepInArguments
thread_id = arguments.threadId
@@ -580,7 +609,7 @@ def on_stepin_request(self, py_db, request):
request_seq=request.seq,
success=False,
command=request.command,
- message='Unable to find thread from thread_id: %s' % (thread_id,),
+ message="Unable to find thread from thread_id: %s" % (thread_id,),
body={},
)
return NetCommand(CMD_RETURN, 0, response, is_json=True)
@@ -589,11 +618,8 @@ def on_stepin_request(self, py_db, request):
target_id_to_smart_step_into_variant = info.target_id_to_smart_step_into_variant
if not target_id_to_smart_step_into_variant:
variables_response = pydevd_base_schema.build_response(
- request,
- kwargs={
- 'success': False,
- 'message': 'Unable to step into target (no targets are saved in the thread info).'
- })
+ request, kwargs={"success": False, "message": "Unable to step into target (no targets are saved in the thread info)."}
+ )
return NetCommand(CMD_RETURN, 0, variables_response, is_json=True)
variant = target_id_to_smart_step_into_variant.get(target_id)
@@ -607,10 +633,11 @@ def on_stepin_request(self, py_db, request):
variables_response = pydevd_base_schema.build_response(
request,
kwargs={
- 'success': False,
- 'message': 'Unable to find step into target %s. Available targets: %s' % (
- target_id, target_id_to_smart_step_into_variant)
- })
+ "success": False,
+ "message": "Unable to find step into target %s. Available targets: %s"
+ % (target_id, target_id_to_smart_step_into_variant),
+ },
+ )
return NetCommand(CMD_RETURN, 0, variables_response, is_json=True)
else:
@@ -625,31 +652,32 @@ def on_stepin_request(self, py_db, request):
return NetCommand(CMD_RETURN, 0, response, is_json=True)
def on_stepintargets_request(self, py_db, request):
- '''
+ """
:param StepInTargetsRequest request:
- '''
+ """
frame_id = request.arguments.frameId
- thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(
- frame_id)
+ thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(frame_id)
if thread_id is None:
body = StepInTargetsResponseBody([])
variables_response = pydevd_base_schema.build_response(
request,
kwargs={
- 'body': body,
- 'success': False,
- 'message': 'Unable to get thread_id from frame_id (thread to get step in targets seems to have resumed already).'
- })
+ "body": body,
+ "success": False,
+ "message": "Unable to get thread_id from frame_id (thread to get step in targets seems to have resumed already).",
+ },
+ )
return NetCommand(CMD_RETURN, 0, variables_response, is_json=True)
py_db.post_method_as_internal_command(
- thread_id, internal_get_step_in_targets_json, request.seq, thread_id, frame_id, request, set_additional_thread_info)
+ thread_id, internal_get_step_in_targets_json, request.seq, thread_id, frame_id, request, set_additional_thread_info
+ )
def on_stepout_request(self, py_db, request):
- '''
+ """
:param StepOutRequest request:
- '''
+ """
arguments = request.arguments # : :type arguments: StepOutArguments
thread_id = arguments.threadId
@@ -664,38 +692,36 @@ def on_stepout_request(self, py_db, request):
return NetCommand(CMD_RETURN, 0, response, is_json=True)
def _get_hit_condition_expression(self, hit_condition):
- '''Following hit condition values are supported
+ """Following hit condition values are supported
* x or == x when breakpoint is hit x times
* >= x when breakpoint is hit more than or equal to x times
* % x when breakpoint is hit multiple of x times
Returns '@HIT@ == x' where @HIT@ will be replaced by number of hits
- '''
+ """
if not hit_condition:
return None
expr = hit_condition.strip()
try:
int(expr)
- return '@HIT@ == {}'.format(expr)
+ return "@HIT@ == {}".format(expr)
except ValueError:
pass
- if expr.startswith('%'):
- return '@HIT@ {} == 0'.format(expr)
+ if expr.startswith("%"):
+ return "@HIT@ {} == 0".format(expr)
- if expr.startswith('==') or \
- expr.startswith('>') or \
- expr.startswith('<'):
- return '@HIT@ {}'.format(expr)
+ if expr.startswith("==") or expr.startswith(">") or expr.startswith("<"):
+ return "@HIT@ {}".format(expr)
return hit_condition
def on_disconnect_request(self, py_db, request):
- '''
+ """
:param DisconnectRequest request:
- '''
+ """
if request.arguments.terminateDebuggee:
self._request_terminate_process(py_db)
response = pydevd_base_schema.build_response(request)
@@ -712,30 +738,27 @@ def _verify_launch_or_attach_done(self, request):
if not self._launch_or_attach_request_done:
# Note that to validate the breakpoints we need the launch request to be done already
# (otherwise the filters wouldn't be set for the breakpoint validation).
- if request.command == 'setFunctionBreakpoints':
+ if request.command == "setFunctionBreakpoints":
body = SetFunctionBreakpointsResponseBody([])
else:
body = SetBreakpointsResponseBody([])
response = pydevd_base_schema.build_response(
request,
- kwargs={
- 'body': body,
- 'success': False,
- 'message': 'Breakpoints may only be set after the launch request is received.'
- })
+ kwargs={"body": body, "success": False, "message": "Breakpoints may only be set after the launch request is received."},
+ )
return NetCommand(CMD_RETURN, 0, response, is_json=True)
def on_setfunctionbreakpoints_request(self, py_db, request):
- '''
+ """
:param SetFunctionBreakpointsRequest request:
- '''
+ """
response = self._verify_launch_or_attach_done(request)
if response is not None:
return response
arguments = request.arguments # : :type arguments: SetFunctionBreakpointsArguments
function_breakpoints = []
- suspend_policy = 'ALL'
+ suspend_policy = "ALL" if py_db.multi_threads_single_notification else "NONE"
# Not currently covered by the DAP.
is_logpoint = False
@@ -743,26 +766,24 @@ def on_setfunctionbreakpoints_request(self, py_db, request):
breakpoints_set = []
for bp in arguments.breakpoints:
- hit_condition = self._get_hit_condition_expression(bp.get('hitCondition'))
- condition = bp.get('condition')
+ hit_condition = self._get_hit_condition_expression(bp.get("hitCondition"))
+ condition = bp.get("condition")
- function_breakpoints.append(
- FunctionBreakpoint(bp['name'], condition, expression, suspend_policy, hit_condition, is_logpoint))
+ function_breakpoints.append(FunctionBreakpoint(bp["name"], condition, expression, suspend_policy, hit_condition, is_logpoint))
# Note: always succeeds.
- breakpoints_set.append(pydevd_schema.Breakpoint(
- verified=True, id=self._next_breakpoint_id()).to_dict())
+ breakpoints_set.append(pydevd_schema.Breakpoint(verified=True, id=self._next_breakpoint_id()).to_dict())
self.api.set_function_breakpoints(py_db, function_breakpoints)
- body = {'breakpoints': breakpoints_set}
- set_breakpoints_response = pydevd_base_schema.build_response(request, kwargs={'body': body})
+ body = {"breakpoints": breakpoints_set}
+ set_breakpoints_response = pydevd_base_schema.build_response(request, kwargs={"body": body})
return NetCommand(CMD_RETURN, 0, set_breakpoints_response, is_json=True)
def on_setbreakpoints_request(self, py_db, request):
- '''
+ """
:param SetBreakpointsRequest request:
- '''
+ """
response = self._verify_launch_or_attach_done(request)
if response is not None:
return response
@@ -770,18 +791,18 @@ def on_setbreakpoints_request(self, py_db, request):
arguments = request.arguments # : :type arguments: SetBreakpointsArguments
# TODO: Path is optional here it could be source reference.
filename = self.api.filename_to_str(arguments.source.path)
- func_name = 'None'
+ func_name = "None"
self.api.remove_all_breakpoints(py_db, filename)
- btype = 'python-line'
- suspend_policy = 'ALL'
+ btype = "python-line"
+ suspend_policy = "ALL" if py_db.multi_threads_single_notification else "NONE"
- if not filename.lower().endswith('.py'): # Note: check based on original file, not mapping.
+ if not filename.lower().endswith(".py"): # Note: check based on original file, not mapping.
if self._options.django_debug:
- btype = 'django-line'
+ btype = "django-line"
elif self._options.flask_debug:
- btype = 'jinja2-line'
+ btype = "jinja2-line"
breakpoints_set = []
@@ -802,20 +823,32 @@ def on_setbreakpoints_request(self, py_db, request):
on_changed_breakpoint_state = partial(self._on_changed_breakpoint_state, py_db, arguments.source)
result = self.api.add_breakpoint(
- py_db, filename, btype, breakpoint_id, line, condition, func_name, expression,
- suspend_policy, hit_condition, is_logpoint, adjust_line=True, on_changed_breakpoint_state=on_changed_breakpoint_state)
+ py_db,
+ filename,
+ btype,
+ breakpoint_id,
+ line,
+ condition,
+ func_name,
+ expression,
+ suspend_policy,
+ hit_condition,
+ is_logpoint,
+ adjust_line=True,
+ on_changed_breakpoint_state=on_changed_breakpoint_state,
+ )
bp = self._create_breakpoint_from_add_breakpoint_result(py_db, arguments.source, breakpoint_id, result)
breakpoints_set.append(bp)
- body = {'breakpoints': breakpoints_set}
- set_breakpoints_response = pydevd_base_schema.build_response(request, kwargs={'body': body})
+ body = {"breakpoints": breakpoints_set}
+ set_breakpoints_response = pydevd_base_schema.build_response(request, kwargs={"body": body})
return NetCommand(CMD_RETURN, 0, set_breakpoints_response, is_json=True)
def _on_changed_breakpoint_state(self, py_db, source, breakpoint_id, result):
bp = self._create_breakpoint_from_add_breakpoint_result(py_db, source, breakpoint_id, result)
body = BreakpointEventBody(
- reason='changed',
+ reason="changed",
breakpoint=bp,
)
event = BreakpointEvent(body)
@@ -827,34 +860,36 @@ def _create_breakpoint_from_add_breakpoint_result(self, py_db, source, breakpoin
if error_code:
if error_code == self.api.ADD_BREAKPOINT_FILE_NOT_FOUND:
- error_msg = 'Breakpoint in file that does not exist.'
+ error_msg = "Breakpoint in file that does not exist."
elif error_code == self.api.ADD_BREAKPOINT_FILE_EXCLUDED_BY_FILTERS:
- error_msg = 'Breakpoint in file excluded by filters.'
+ error_msg = "Breakpoint in file excluded by filters."
if py_db.get_use_libraries_filter():
- error_msg += ('\nNote: may be excluded because of "justMyCode" option (default == true).'
- 'Try setting \"justMyCode\": false in the debug configuration (e.g., launch.json).\n')
+ error_msg += (
+ '\nNote: may be excluded because of "justMyCode" option (default == true).'
+ 'Try setting "justMyCode": false in the debug configuration (e.g., launch.json).\n'
+ )
elif error_code == self.api.ADD_BREAKPOINT_LAZY_VALIDATION:
- error_msg = 'Waiting for code to be loaded to verify breakpoint.'
+ error_msg = "Waiting for code to be loaded to verify breakpoint."
elif error_code == self.api.ADD_BREAKPOINT_INVALID_LINE:
- error_msg = 'Breakpoint added to invalid line.'
+ error_msg = "Breakpoint added to invalid line."
else:
# Shouldn't get here.
- error_msg = 'Breakpoint not validated (reason unknown -- please report as bug).'
+ error_msg = "Breakpoint not validated (reason unknown -- please report as bug)."
return pydevd_schema.Breakpoint(
- verified=False, id=breakpoint_id, line=result.translated_line, message=error_msg, source=source).to_dict()
+ verified=False, id=breakpoint_id, line=result.translated_line, message=error_msg, source=source
+ ).to_dict()
else:
- return pydevd_schema.Breakpoint(
- verified=True, id=breakpoint_id, line=result.translated_line, source=source).to_dict()
+ return pydevd_schema.Breakpoint(verified=True, id=breakpoint_id, line=result.translated_line, source=source).to_dict()
def on_setexceptionbreakpoints_request(self, py_db, request):
- '''
+ """
:param SetExceptionBreakpointsRequest request:
- '''
+ """
# : :type arguments: SetExceptionBreakpointsArguments
arguments = request.arguments
filters = arguments.filters
@@ -885,9 +920,9 @@ def on_setexceptionbreakpoints_request(self, py_db, request):
#
# userUnhandled: breaks if the exception is not handled by user code
- notify_on_handled_exceptions = 1 if option.breakMode == 'always' else 0
- notify_on_unhandled_exceptions = 1 if option.breakMode == 'unhandled' else 0
- notify_on_user_unhandled_exceptions = 1 if option.breakMode == 'userUnhandled' else 0
+ notify_on_handled_exceptions = 1 if option.breakMode == "always" else 0
+ notify_on_unhandled_exceptions = 1 if option.breakMode == "unhandled" else 0
+ notify_on_user_unhandled_exceptions = 1 if option.breakMode == "userUnhandled" else 0
exception_paths = option.path
break_raised |= notify_on_handled_exceptions
break_uncaught |= notify_on_unhandled_exceptions
@@ -897,14 +932,14 @@ def on_setexceptionbreakpoints_request(self, py_db, request):
continue
elif len(exception_paths) == 1:
- if 'Python Exceptions' in exception_paths[0]['names']:
- exception_names = ['BaseException']
+ if "Python Exceptions" in exception_paths[0]["names"]:
+ exception_names = ["BaseException"]
else:
path_iterator = iter(exception_paths)
- if 'Python Exceptions' in next(path_iterator)['names']:
+ if "Python Exceptions" in next(path_iterator)["names"]:
for path in path_iterator:
- for ex_name in path['names']:
+ for ex_name in path["names"]:
exception_names.append(ex_name)
for exception_name in exception_names:
@@ -917,18 +952,18 @@ def on_setexceptionbreakpoints_request(self, py_db, request):
notify_on_unhandled_exceptions,
notify_on_user_unhandled_exceptions,
notify_on_first_raise_only,
- ignore_libraries
+ ignore_libraries,
)
else:
- break_raised = 'raised' in filters
- break_uncaught = 'uncaught' in filters
- break_user = 'userUnhandled' in filters
+ break_raised = "raised" in filters
+ break_uncaught = "uncaught" in filters
+ break_user = "userUnhandled" in filters
if break_raised or break_uncaught or break_user:
notify_on_handled_exceptions = 1 if break_raised else 0
notify_on_unhandled_exceptions = 1 if break_uncaught else 0
notify_on_user_unhandled_exceptions = 1 if break_user else 0
- exception = 'BaseException'
+ exception = "BaseException"
self.api.add_python_exception_breakpoint(
py_db,
@@ -939,28 +974,27 @@ def on_setexceptionbreakpoints_request(self, py_db, request):
notify_on_unhandled_exceptions,
notify_on_user_unhandled_exceptions,
notify_on_first_raise_only,
- ignore_libraries
+ ignore_libraries,
)
if break_raised:
btype = None
if self._options.django_debug:
- btype = 'django'
+ btype = "django"
elif self._options.flask_debug:
- btype = 'jinja2'
+ btype = "jinja2"
if btype:
- self.api.add_plugins_exception_breakpoint(
- py_db, btype, 'BaseException') # Note: Exception name could be anything here.
+ self.api.add_plugins_exception_breakpoint(py_db, btype, "BaseException") # Note: Exception name could be anything here.
# Note: no body required on success.
set_breakpoints_response = pydevd_base_schema.build_response(request)
return NetCommand(CMD_RETURN, 0, set_breakpoints_response, is_json=True)
def on_stacktrace_request(self, py_db, request):
- '''
+ """
:param StackTraceRequest request:
- '''
+ """
# : :type stack_trace_arguments: StackTraceArguments
stack_trace_arguments = request.arguments
thread_id = stack_trace_arguments.threadId
@@ -976,14 +1010,14 @@ def on_stacktrace_request(self, py_db, request):
levels = 0
fmt = stack_trace_arguments.format
- if hasattr(fmt, 'to_dict'):
+ if hasattr(fmt, "to_dict"):
fmt = fmt.to_dict()
self.api.request_stack(py_db, request.seq, thread_id, fmt=fmt, start_frame=start_frame, levels=levels)
def on_exceptioninfo_request(self, py_db, request):
- '''
+ """
:param ExceptionInfoRequest request:
- '''
+ """
# : :type exception_into_arguments: ExceptionInfoArguments
exception_into_arguments = request.arguments
thread_id = exception_into_arguments.threadId
@@ -996,78 +1030,67 @@ def on_exceptioninfo_request(self, py_db, request):
request_seq=request.seq,
success=False,
command=request.command,
- message='Unable to find thread from thread_id: %s' % (thread_id,),
+ message="Unable to find thread from thread_id: %s" % (thread_id,),
body={},
)
return NetCommand(CMD_RETURN, 0, response, is_json=True)
def on_scopes_request(self, py_db, request):
- '''
+ """
Scopes are the top-level items which appear for a frame (so, we receive the frame id
and provide the scopes it has).
:param ScopesRequest request:
- '''
+ """
frame_id = request.arguments.frameId
variables_reference = frame_id
scopes = [
- Scope('Locals', ScopeRequest(int(variables_reference), 'locals'), False, presentationHint='locals'),
- Scope('Globals', ScopeRequest(int(variables_reference), 'globals'), False),
+ Scope("Locals", ScopeRequest(int(variables_reference), "locals"), False, presentationHint="locals"),
+ Scope("Globals", ScopeRequest(int(variables_reference), "globals"), False),
]
body = ScopesResponseBody(scopes)
- scopes_response = pydevd_base_schema.build_response(request, kwargs={'body': body})
+ scopes_response = pydevd_base_schema.build_response(request, kwargs={"body": body})
return NetCommand(CMD_RETURN, 0, scopes_response, is_json=True)
def on_evaluate_request(self, py_db, request):
- '''
+ """
:param EvaluateRequest request:
- '''
+ """
# : :type arguments: EvaluateArguments
arguments = request.arguments
if arguments.frameId is None:
- self.api.request_exec_or_evaluate_json(py_db, request, thread_id='*')
+ self.api.request_exec_or_evaluate_json(py_db, request, thread_id="*")
else:
- thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(
- arguments.frameId)
+ thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(arguments.frameId)
if thread_id is not None:
- self.api.request_exec_or_evaluate_json(
- py_db, request, thread_id)
+ self.api.request_exec_or_evaluate_json(py_db, request, thread_id)
else:
- body = EvaluateResponseBody('', 0)
+ body = EvaluateResponseBody("", 0)
response = pydevd_base_schema.build_response(
- request,
- kwargs={
- 'body': body,
- 'success': False,
- 'message': 'Unable to find thread for evaluation.'
- })
+ request, kwargs={"body": body, "success": False, "message": "Unable to find thread for evaluation."}
+ )
return NetCommand(CMD_RETURN, 0, response, is_json=True)
def on_setexpression_request(self, py_db, request):
# : :type arguments: SetExpressionArguments
arguments = request.arguments
- thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(
- arguments.frameId)
+ thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(arguments.frameId)
if thread_id is not None:
self.api.request_set_expression_json(py_db, request, thread_id)
else:
- body = SetExpressionResponseBody('')
+ body = SetExpressionResponseBody("")
response = pydevd_base_schema.build_response(
- request,
- kwargs={
- 'body': body,
- 'success': False,
- 'message': 'Unable to find thread to set expression.'
- })
+ request, kwargs={"body": body, "success": False, "message": "Unable to find thread to set expression."}
+ )
return NetCommand(CMD_RETURN, 0, response, is_json=True)
def on_variables_request(self, py_db, request):
- '''
+ """
Variables can be asked whenever some place returned a variables reference (so, it
can be a scope gotten from on_scopes_request, the result of some evaluation, etc.).
@@ -1080,25 +1103,22 @@ def on_variables_request(self, py_db, request):
see: SuspendedFramesManager
:param VariablesRequest request:
- '''
+ """
arguments = request.arguments # : :type arguments: VariablesArguments
variables_reference = arguments.variablesReference
if isinstance(variables_reference, ScopeRequest):
variables_reference = variables_reference.variable_reference
- thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(
- variables_reference)
+ thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(variables_reference)
if thread_id is not None:
self.api.request_get_variable_json(py_db, request, thread_id)
else:
variables = []
body = VariablesResponseBody(variables)
- variables_response = pydevd_base_schema.build_response(request, kwargs={
- 'body': body,
- 'success': False,
- 'message': 'Unable to find thread to evaluate variable reference.'
- })
+ variables_response = pydevd_base_schema.build_response(
+ request, kwargs={"body": body, "success": False, "message": "Unable to find thread to evaluate variable reference."}
+ )
return NetCommand(CMD_RETURN, 0, variables_response, is_json=True)
def on_setvariable_request(self, py_db, request):
@@ -1108,18 +1128,13 @@ def on_setvariable_request(self, py_db, request):
if isinstance(variables_reference, ScopeRequest):
variables_reference = variables_reference.variable_reference
- if arguments.name.startswith('(return) '):
+ if arguments.name.startswith("(return) "):
response = pydevd_base_schema.build_response(
- request,
- kwargs={
- 'body': SetVariableResponseBody(''),
- 'success': False,
- 'message': 'Cannot change return value'
- })
+ request, kwargs={"body": SetVariableResponseBody(""), "success": False, "message": "Cannot change return value"}
+ )
return NetCommand(CMD_RETURN, 0, response, is_json=True)
- thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(
- variables_reference)
+ thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(variables_reference)
if thread_id is not None:
self.api.request_change_variable_json(py_db, request, thread_id)
@@ -1127,23 +1142,24 @@ def on_setvariable_request(self, py_db, request):
response = pydevd_base_schema.build_response(
request,
kwargs={
- 'body': SetVariableResponseBody(''),
- 'success': False,
- 'message': 'Unable to find thread to evaluate variable reference.'
- })
+ "body": SetVariableResponseBody(""),
+ "success": False,
+ "message": "Unable to find thread to evaluate variable reference.",
+ },
+ )
return NetCommand(CMD_RETURN, 0, response, is_json=True)
def on_modules_request(self, py_db, request):
modules_manager = py_db.cmd_factory.modules_manager # : :type modules_manager: ModulesManager
modules_info = modules_manager.get_modules_info()
body = ModulesResponseBody(modules_info)
- variables_response = pydevd_base_schema.build_response(request, kwargs={'body': body})
+ variables_response = pydevd_base_schema.build_response(request, kwargs={"body": body})
return NetCommand(CMD_RETURN, 0, variables_response, is_json=True)
def on_source_request(self, py_db, request):
- '''
+ """
:param SourceRequest request:
- '''
+ """
source_reference = request.arguments.sourceReference
server_filename = None
content = None
@@ -1156,7 +1172,7 @@ def on_source_request(self, py_db, request):
if server_filename:
# Try direct file access first - it's much faster when available.
try:
- with open(server_filename, 'r') as stream:
+ with open(server_filename, "r") as stream:
content = stream.read()
except:
pass
@@ -1170,29 +1186,29 @@ def on_source_request(self, py_db, request):
# If we didn't get at least one line back, reset it to None so that it's
# reported as error below, and not as an empty file.
- content = ''.join(lines) or None
+ content = "".join(lines) or None
if content is None:
frame_id = pydevd_file_utils.get_frame_id_from_source_reference(source_reference)
- pydev_log.debug('Found frame id: %s for source reference: %s', frame_id, source_reference)
+ pydev_log.debug("Found frame id: %s for source reference: %s", frame_id, source_reference)
if frame_id is not None:
try:
content = self.api.get_decompiled_source_from_frame_id(py_db, frame_id)
except Exception:
- pydev_log.exception('Error getting source for frame id: %s', frame_id)
+ pydev_log.exception("Error getting source for frame id: %s", frame_id)
content = None
- body = SourceResponseBody(content or '')
- response_args = {'body': body}
+ body = SourceResponseBody(content or "")
+ response_args = {"body": body}
if content is None:
if source_reference == 0:
- message = 'Source unavailable'
+ message = "Source unavailable"
elif server_filename:
- message = 'Unable to retrieve source for %s' % (server_filename,)
+ message = "Unable to retrieve source for %s" % (server_filename,)
else:
- message = 'Invalid sourceReference %d' % (source_reference,)
- response_args.update({'success': False, 'message': message})
+ message = "Invalid sourceReference %d" % (source_reference,)
+ response_args.update({"success": False, "message": message})
response = pydevd_base_schema.build_response(request, kwargs=response_args)
return NetCommand(CMD_RETURN, 0, response, is_json=True)
@@ -1201,13 +1217,9 @@ def on_gototargets_request(self, py_db, request):
path = request.arguments.source.path
line = request.arguments.line
target_id = self._goto_targets_map.obtain_key((path, line))
- target = {
- 'id': target_id,
- 'label': '%s:%s' % (path, line),
- 'line': line
- }
+ target = {"id": target_id, "label": "%s:%s" % (path, line), "line": line}
body = GotoTargetsResponseBody(targets=[target])
- response_args = {'body': body}
+ response_args = {"body": body}
response = pydevd_base_schema.build_response(request, kwargs=response_args)
return NetCommand(CMD_RETURN, 0, response, is_json=True)
@@ -1220,13 +1232,14 @@ def on_goto_request(self, py_db, request):
response = pydevd_base_schema.build_response(
request,
kwargs={
- 'body': {},
- 'success': False,
- 'message': 'Unknown goto target id: %d' % (target_id,),
- })
+ "body": {},
+ "success": False,
+ "message": "Unknown goto target id: %d" % (target_id,),
+ },
+ )
return NetCommand(CMD_RETURN, 0, response, is_json=True)
- self.api.request_set_next(py_db, request.seq, thread_id, CMD_SET_NEXT_STATEMENT, path, line, '*')
+ self.api.request_set_next(py_db, request.seq, thread_id, CMD_SET_NEXT_STATEMENT, path, line, "*")
# See 'NetCommandFactoryJson.make_set_next_stmnt_status_message' for response
return None
@@ -1241,12 +1254,10 @@ def on_setdebuggerproperty_request(self, py_db, request):
self.api.set_dont_trace_start_end_patterns(py_db, start_patterns, end_patterns)
if args.skipSuspendOnBreakpointException is not None:
- py_db.skip_suspend_on_breakpoint_exception = tuple(
- get_exception_class(x) for x in args.skipSuspendOnBreakpointException)
+ py_db.skip_suspend_on_breakpoint_exception = tuple(get_exception_class(x) for x in args.skipSuspendOnBreakpointException)
if args.skipPrintBreakpointException is not None:
- py_db.skip_print_breakpoint_exception = tuple(
- get_exception_class(x) for x in args.skipPrintBreakpointException)
+ py_db.skip_print_breakpoint_exception = tuple(get_exception_class(x) for x in args.skipPrintBreakpointException)
if args.multiThreadsSingleNotification is not None:
py_db.multi_threads_single_notification = args.multiThreadsSingleNotification
@@ -1260,7 +1271,7 @@ def on_setdebuggerproperty_request(self, py_db, request):
# WarnIfNoUserCodeOnLaunch: 0 or 1
# EnableStepFiltering: true of false
- response = pydevd_base_schema.build_response(request, kwargs={'body': {}})
+ response = pydevd_base_schema.build_response(request, kwargs={"body": {}})
return NetCommand(CMD_RETURN, 0, response, is_json=True)
def on_pydevdsysteminfo_request(self, py_db, request):
@@ -1287,7 +1298,7 @@ def on_pydevdsysteminfo_request(self, py_db, request):
name=PY_IMPL_NAME,
version=PY_IMPL_VERSION_STR,
description=impl_desc,
- )
+ ),
)
platform_info = pydevd_schema.PydevdPlatformInfo(name=sys.platform)
process_info = pydevd_schema.PydevdProcessInfo(
@@ -1301,12 +1312,12 @@ def on_pydevdsysteminfo_request(self, py_db, request):
usingFrameEval=USING_FRAME_EVAL,
)
body = {
- 'python': py_info,
- 'platform': platform_info,
- 'process': process_info,
- 'pydevd': pydevd_info,
+ "python": py_info,
+ "platform": platform_info,
+ "process": process_info,
+ "pydevd": pydevd_info,
}
- response = pydevd_base_schema.build_response(request, kwargs={'body': body})
+ response = pydevd_base_schema.build_response(request, kwargs={"body": body})
return NetCommand(CMD_RETURN, 0, response, is_json=True)
def on_setpydevdsourcemap_request(self, py_db, request):
@@ -1318,11 +1329,12 @@ def on_setpydevdsourcemap_request(self, py_db, request):
# : :type source_map: PydevdSourceMap
new_mappings = [
SourceMappingEntry(
- source_map['line'],
- source_map['endLine'],
- source_map['runtimeLine'],
- self.api.filename_to_str(source_map['runtimeSource']['path'])
- ) for source_map in source_maps
+ source_map["line"],
+ source_map["endLine"],
+ source_map["runtimeLine"],
+ self.api.filename_to_str(source_map["runtimeSource"]["path"]),
+ )
+ for source_map in source_maps
]
error_msg = self.api.set_source_mapping(py_db, path, new_mappings)
@@ -1330,12 +1342,12 @@ def on_setpydevdsourcemap_request(self, py_db, request):
response = pydevd_base_schema.build_response(
request,
kwargs={
- 'body': {},
- 'success': False,
- 'message': error_msg,
- })
+ "body": {},
+ "success": False,
+ "message": error_msg,
+ },
+ )
return NetCommand(CMD_RETURN, 0, response, is_json=True)
response = pydevd_base_schema.build_response(request)
return NetCommand(CMD_RETURN, 0, response, is_json=True)
-
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py
index c7e1bfaf4..9f8a29c4e 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py
@@ -6,103 +6,107 @@
from _pydevd_bundle.pydevd_constants import IS_PY311_OR_GREATER
-#===================================================================================================
+# ===================================================================================================
# print_var_node
-#===================================================================================================
+# ===================================================================================================
def print_var_node(xml_node, stream):
- name = xml_node.getAttribute('name')
- value = xml_node.getAttribute('value')
- val_type = xml_node.getAttribute('type')
+ name = xml_node.getAttribute("name")
+ value = xml_node.getAttribute("value")
+ val_type = xml_node.getAttribute("type")
- found_as = xml_node.getAttribute('found_as')
- stream.write('Name: ')
+ found_as = xml_node.getAttribute("found_as")
+ stream.write("Name: ")
stream.write(unquote_plus(name))
- stream.write(', Value: ')
+ stream.write(", Value: ")
stream.write(unquote_plus(value))
- stream.write(', Type: ')
+ stream.write(", Type: ")
stream.write(unquote_plus(val_type))
if found_as:
- stream.write(', Found as: %s' % (unquote_plus(found_as),))
- stream.write('\n')
+ stream.write(", Found as: %s" % (unquote_plus(found_as),))
+ stream.write("\n")
-#===================================================================================================
+# ===================================================================================================
# print_referrers
-#===================================================================================================
+# ===================================================================================================
def print_referrers(obj, stream=None):
if stream is None:
stream = sys.stdout
result = get_referrer_info(obj)
from xml.dom.minidom import parseString
+
dom = parseString(result)
- xml = dom.getElementsByTagName('xml')[0]
+ xml = dom.getElementsByTagName("xml")[0]
for node in xml.childNodes:
if node.nodeType == node.TEXT_NODE:
continue
- if node.localName == 'for':
- stream.write('Searching references for: ')
+ if node.localName == "for":
+ stream.write("Searching references for: ")
for child in node.childNodes:
if child.nodeType == node.TEXT_NODE:
continue
print_var_node(child, stream)
- elif node.localName == 'var':
- stream.write('Referrer found: ')
+ elif node.localName == "var":
+ stream.write("Referrer found: ")
print_var_node(node, stream)
else:
- sys.stderr.write('Unhandled node: %s\n' % (node,))
+ sys.stderr.write("Unhandled node: %s\n" % (node,))
return result
-#===================================================================================================
+# ===================================================================================================
# get_referrer_info
-#===================================================================================================
+# ===================================================================================================
def get_referrer_info(searched_obj):
DEBUG = 0
if DEBUG:
- sys.stderr.write('Getting referrers info.\n')
+ sys.stderr.write("Getting referrers info.\n")
try:
try:
if searched_obj is None:
- ret = ['\n']
-
- ret.append('\n')
- ret.append(pydevd_xml.var_to_xml(
- searched_obj,
- 'Skipping getting referrers for None',
- additional_in_xml=' id="%s"' % (id(searched_obj),)))
- ret.append('\n')
- ret.append('')
- ret = ''.join(ret)
+ ret = ["\n"]
+
+ ret.append("\n")
+ ret.append(
+ pydevd_xml.var_to_xml(
+ searched_obj, "Skipping getting referrers for None", additional_in_xml=' id="%s"' % (id(searched_obj),)
+ )
+ )
+ ret.append("\n")
+ ret.append("")
+ ret = "".join(ret)
return ret
obj_id = id(searched_obj)
try:
if DEBUG:
- sys.stderr.write('Getting referrers...\n')
+ sys.stderr.write("Getting referrers...\n")
import gc
+
referrers = gc.get_referrers(searched_obj)
except:
pydev_log.exception()
- ret = ['\n']
-
- ret.append('\n')
- ret.append(pydevd_xml.var_to_xml(
- searched_obj,
- 'Exception raised while trying to get_referrers.',
- additional_in_xml=' id="%s"' % (id(searched_obj),)))
- ret.append('\n')
- ret.append('')
- ret = ''.join(ret)
+ ret = ["\n"]
+
+ ret.append("\n")
+ ret.append(
+ pydevd_xml.var_to_xml(
+ searched_obj, "Exception raised while trying to get_referrers.", additional_in_xml=' id="%s"' % (id(searched_obj),)
+ )
+ )
+ ret.append("\n")
+ ret.append("")
+ ret = "".join(ret)
return ret
if DEBUG:
- sys.stderr.write('Found %s referrers.\n' % (len(referrers),))
+ sys.stderr.write("Found %s referrers.\n" % (len(referrers),))
curr_frame = sys._getframe()
frame_type = type(curr_frame)
@@ -111,20 +115,18 @@ def get_referrer_info(searched_obj):
ignore_frames = {} # Should be a set, but it's not available on all python versions.
while curr_frame is not None:
- if basename(curr_frame.f_code.co_filename).startswith('pydev'):
+ if basename(curr_frame.f_code.co_filename).startswith("pydev"):
ignore_frames[curr_frame] = 1
curr_frame = curr_frame.f_back
- ret = ['\n']
+ ret = ["\n"]
- ret.append('\n')
+ ret.append("\n")
if DEBUG:
sys.stderr.write('Searching Referrers of obj with id="%s"\n' % (obj_id,))
- ret.append(pydevd_xml.var_to_xml(
- searched_obj,
- 'Referrers of obj with id="%s"' % (obj_id,)))
- ret.append('\n')
+ ret.append(pydevd_xml.var_to_xml(searched_obj, 'Referrers of obj with id="%s"' % (obj_id,)))
+ ret.append("\n")
curr_frame = sys._getframe()
all_objects = None
@@ -147,10 +149,10 @@ def get_referrer_info(searched_obj):
representation = str(r_type)
- found_as = ''
+ found_as = ""
if r_type == frame_type:
if DEBUG:
- sys.stderr.write('Found frame referrer: %r\n' % (r,))
+ sys.stderr.write("Found frame referrer: %r\n" % (r,))
for key, val in r.f_locals.items():
if val is searched_obj:
found_as = key
@@ -158,14 +160,14 @@ def get_referrer_info(searched_obj):
elif r_type == dict:
if DEBUG:
- sys.stderr.write('Found dict referrer: %r\n' % (r,))
+ sys.stderr.write("Found dict referrer: %r\n" % (r,))
# Try to check if it's a value in the dict (and under which key it was found)
for key, val in r.items():
if val is searched_obj:
found_as = key
if DEBUG:
- sys.stderr.write(' Found as %r in dict\n' % (found_as,))
+ sys.stderr.write(" Found as %r in dict\n" % (found_as,))
break
# Ok, there's one annoying thing: many times we find it in a dict from an instance,
@@ -176,7 +178,7 @@ def get_referrer_info(searched_obj):
for x in all_objects:
try:
- if getattr(x, '__dict__', None) is r:
+ if getattr(x, "__dict__", None) is r:
r = x
r_type = type(x)
r_id = str(id(r))
@@ -187,13 +189,13 @@ def get_referrer_info(searched_obj):
elif r_type in (tuple, list):
if DEBUG:
- sys.stderr.write('Found tuple referrer: %r\n' % (r,))
+ sys.stderr.write("Found tuple referrer: %r\n" % (r,))
for i, x in enumerate(r):
if x is searched_obj:
- found_as = '%s[%s]' % (r_type.__name__, i)
+ found_as = "%s[%s]" % (r_type.__name__, i)
if DEBUG:
- sys.stderr.write(' Found as %s in tuple: \n' % (found_as,))
+ sys.stderr.write(" Found as %s in tuple: \n" % (found_as,))
break
elif IS_PY311_OR_GREATER:
@@ -202,16 +204,16 @@ def get_referrer_info(searched_obj):
# handling is a bit easier (we don't need the workaround from the dict
# case to find the actual instance, we just need to find the attribute name).
if DEBUG:
- sys.stderr.write('Found dict referrer: %r\n' % (r,))
+ sys.stderr.write("Found dict referrer: %r\n" % (r,))
- dct = getattr(r, '__dict__', None)
+ dct = getattr(r, "__dict__", None)
if dct:
# Try to check if it's a value in the dict (and under which key it was found)
for key, val in dct.items():
if val is searched_obj:
found_as = key
if DEBUG:
- sys.stderr.write(' Found as %r in object instance\n' % (found_as,))
+ sys.stderr.write(" Found as %r in object instance\n" % (found_as,))
break
if found_as:
@@ -219,13 +221,10 @@ def get_referrer_info(searched_obj):
found_as = str(found_as)
found_as = ' found_as="%s"' % (pydevd_xml.make_valid_xml_value(found_as),)
- ret.append(pydevd_xml.var_to_xml(
- r,
- representation,
- additional_in_xml=' id="%s"%s' % (r_id, found_as)))
+ ret.append(pydevd_xml.var_to_xml(r, representation, additional_in_xml=' id="%s"%s' % (r_id, found_as)))
finally:
if DEBUG:
- sys.stderr.write('Done searching for references.\n')
+ sys.stderr.write("Done searching for references.\n")
# If we have any exceptions, don't keep dangling references from this frame to any of our objects.
all_objects = None
@@ -239,19 +238,15 @@ def get_referrer_info(searched_obj):
ignore_frames = None
except:
pydev_log.exception()
- ret = ['\n']
-
- ret.append('\n')
- ret.append(pydevd_xml.var_to_xml(
- searched_obj,
- 'Error getting referrers for:',
- additional_in_xml=' id="%s"' % (id(searched_obj),)))
- ret.append('\n')
- ret.append('')
- ret = ''.join(ret)
+ ret = ["\n"]
+
+ ret.append("\n")
+ ret.append(pydevd_xml.var_to_xml(searched_obj, "Error getting referrers for:", additional_in_xml=' id="%s"' % (id(searched_obj),)))
+ ret.append("\n")
+ ret.append("")
+ ret = "".join(ret)
return ret
- ret.append('')
- ret = ''.join(ret)
+ ret.append("")
+ ret = "".join(ret)
return ret
-
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py
index 507e73be2..60131a7cc 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py
@@ -118,8 +118,8 @@ def write_err(*args):
for a in args:
new_lst.append(str(a))
- msg = ' '.join(new_lst)
- s = 'code reload: %s\n' % (msg,)
+ msg = " ".join(new_lst)
+ s = "code reload: %s\n" % (msg,)
cmd = py_db.cmd_factory.make_io_message(s, 2)
if py_db.writer is not None:
py_db.writer.add_command(cmd)
@@ -143,21 +143,21 @@ def notify_error(*args):
write_err(*args)
-#=======================================================================================================================
+# =======================================================================================================================
# code_objects_equal
-#=======================================================================================================================
+# =======================================================================================================================
def code_objects_equal(code0, code1):
for d in dir(code0):
- if d.startswith('_') or 'line' in d or d in ('replace', 'co_positions', 'co_qualname'):
+ if d.startswith("_") or "line" in d or d in ("replace", "co_positions", "co_qualname"):
continue
if getattr(code0, d) != getattr(code1, d):
return False
return True
-#=======================================================================================================================
+# =======================================================================================================================
# xreload
-#=======================================================================================================================
+# =======================================================================================================================
def xreload(mod):
"""Reload a module in place, updating classes, methods and functions.
@@ -172,6 +172,7 @@ def xreload(mod):
pydevd_dont_trace.clear_trace_filter_cache()
return found_change
+
# This isn't actually used... Initially I planned to reload variables which are immutable on the
# namespace, but this can destroy places where we're saving state, which may not be what we want,
# so, we're being conservative and giving the user hooks if he wants to do a reload.
@@ -186,11 +187,10 @@ def xreload(mod):
# immutable_types = tuple(immutable_types)
-#=======================================================================================================================
+# =======================================================================================================================
# Reload
-#=======================================================================================================================
+# =======================================================================================================================
class Reload:
-
def __init__(self, mod, mod_name=None, mod_filename=None):
self.mod = mod
if mod_name:
@@ -229,11 +229,11 @@ def apply(self):
if self.mod_name:
new_namespace["__name__"] = self.mod_name
- if new_namespace["__name__"] == '__main__':
+ if new_namespace["__name__"] == "__main__":
# We do this because usually the __main__ starts-up the program, guarded by
# the if __name__ == '__main__', but we don't want to start the program again
# on a reload.
- new_namespace["__name__"] = '__main_reloaded__'
+ new_namespace["__name__"] = "__main_reloaded__"
execfile(self.mod_filename, new_namespace, new_namespace)
# Now we get to the hard part
@@ -242,7 +242,7 @@ def apply(self):
# Create new tokens (note: not deleting existing)
for name in newnames - oldnames:
- notify_info0('Added:', name, 'to namespace')
+ notify_info0("Added:", name, "to namespace")
self.found_change = True
modns[name] = new_namespace[name]
@@ -261,13 +261,13 @@ def apply(self):
def _handle_namespace(self, namespace, is_class_namespace=False):
on_finish = None
if is_class_namespace:
- xreload_after_update = getattr(namespace, '__xreload_after_reload_update__', None)
+ xreload_after_update = getattr(namespace, "__xreload_after_reload_update__", None)
if xreload_after_update is not None:
self.found_change = True
on_finish = lambda: xreload_after_update()
- elif '__xreload_after_reload_update__' in namespace:
- xreload_after_update = namespace['__xreload_after_reload_update__']
+ elif "__xreload_after_reload_update__" in namespace:
+ xreload_after_update = namespace["__xreload_after_reload_update__"]
self.found_change = True
on_finish = lambda: xreload_after_update(namespace)
@@ -285,15 +285,15 @@ def _update(self, namespace, name, oldobj, newobj, is_class_namespace=False):
newobj: the object used as the source for the update
"""
try:
- notify_info2('Updating: ', oldobj)
+ notify_info2("Updating: ", oldobj)
if oldobj is newobj:
# Probably something imported
return
if type(oldobj) is not type(newobj):
# Cop-out: if the type changed, give up
- if name not in ('__builtins__',):
- notify_error('Type of: %s (old: %s != new: %s) changed... Skipping.' % (name, type(oldobj), type(newobj)))
+ if name not in ("__builtins__",):
+ notify_error("Type of: %s (old: %s != new: %s) changed... Skipping." % (name, type(oldobj), type(newobj)))
return
if isinstance(newobj, types.FunctionType):
@@ -312,7 +312,7 @@ def _update(self, namespace, name, oldobj, newobj, is_class_namespace=False):
self._update_staticmethod(oldobj, newobj)
return
- if hasattr(types, 'ClassType'):
+ if hasattr(types, "ClassType"):
classtype = (types.ClassType, type) # object is not instance of types.ClassType.
else:
classtype = type
@@ -322,7 +322,7 @@ def _update(self, namespace, name, oldobj, newobj, is_class_namespace=False):
return
# New: dealing with metaclasses.
- if hasattr(newobj, '__metaclass__') and hasattr(newobj, '__class__') and newobj.__metaclass__ == newobj.__class__:
+ if hasattr(newobj, "__metaclass__") and hasattr(newobj, "__class__") and newobj.__metaclass__ == newobj.__class__:
self._update_class(oldobj, newobj)
return
@@ -331,13 +331,13 @@ def _update(self, namespace, name, oldobj, newobj, is_class_namespace=False):
# as even doing a comparison may break things -- see: https://github.com/microsoft/debugpy/issues/615).
xreload_old_new = None
if is_class_namespace:
- xreload_old_new = getattr(namespace, '__xreload_old_new__', None)
+ xreload_old_new = getattr(namespace, "__xreload_old_new__", None)
if xreload_old_new is not None:
self.found_change = True
xreload_old_new(name, oldobj, newobj)
- elif '__xreload_old_new__' in namespace:
- xreload_old_new = namespace['__xreload_old_new__']
+ elif "__xreload_old_new__" in namespace:
+ xreload_old_new = namespace["__xreload_old_new__"]
xreload_old_new(namespace, name, oldobj, newobj)
self.found_change = True
@@ -346,7 +346,7 @@ def _update(self, namespace, name, oldobj, newobj, is_class_namespace=False):
# notify_info0('%s NOT updated. Create __xreload_old_new__(name, old, new) for custom reload' % (name,))
except:
- notify_error('Exception found when updating %s. Proceeding for other items.' % (name,))
+ notify_error("Exception found when updating %s. Proceeding for other items." % (name,))
pydev_log.exception()
# All of the following functions have the same signature as _update()
@@ -358,15 +358,15 @@ def _update_function(self, oldfunc, newfunc):
try:
newfunc.__code__
- attr_name = '__code__'
+ attr_name = "__code__"
except AttributeError:
newfunc.func_code
- attr_name = 'func_code'
+ attr_name = "func_code"
old_code = getattr(oldfunc, attr_name)
new_code = getattr(newfunc, attr_name)
if not code_objects_equal(old_code, new_code):
- notify_info0('Updated function code:', oldfunc)
+ notify_info0("Updated function code:", oldfunc)
setattr(oldfunc, attr_name, new_code)
self.found_change = True
@@ -380,9 +380,9 @@ def _update_function(self, oldfunc, newfunc):
def _update_method(self, oldmeth, newmeth):
"""Update a method object."""
# XXX What if im_func is not a function?
- if hasattr(oldmeth, 'im_func') and hasattr(newmeth, 'im_func'):
+ if hasattr(oldmeth, "im_func") and hasattr(newmeth, "im_func"):
self._update(None, None, oldmeth.im_func, newmeth.im_func)
- elif hasattr(oldmeth, '__func__') and hasattr(newmeth, '__func__'):
+ elif hasattr(oldmeth, "__func__") and hasattr(newmeth, "__func__"):
self._update(None, None, oldmeth.__func__, newmeth.__func__)
return oldmeth
@@ -396,7 +396,7 @@ def _update_class(self, oldclass, newclass):
for name in newnames - oldnames:
setattr(oldclass, name, newdict[name])
- notify_info0('Added:', name, 'to', oldclass)
+ notify_info0("Added:", name, "to", oldclass)
self.found_change = True
# Note: not removing old things...
@@ -404,13 +404,13 @@ def _update_class(self, oldclass, newclass):
# notify_info('Removed:', name, 'from', oldclass)
# delattr(oldclass, name)
- for name in (oldnames & newnames) - set(['__dict__', '__doc__']):
+ for name in (oldnames & newnames) - set(["__dict__", "__doc__"]):
self._update(oldclass, name, olddict[name], newdict[name], is_class_namespace=True)
- old_bases = getattr(oldclass, '__bases__', None)
- new_bases = getattr(newclass, '__bases__', None)
+ old_bases = getattr(oldclass, "__bases__", None)
+ new_bases = getattr(newclass, "__bases__", None)
if str(old_bases) != str(new_bases):
- notify_error('Changing the hierarchy of a class is not supported. %s may be inconsistent.' % (oldclass,))
+ notify_error("Changing the hierarchy of a class is not supported. %s may be inconsistent." % (oldclass,))
self._handle_namespace(oldclass, is_class_namespace=True)
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py
index 90e313fa6..20a7351a9 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py
@@ -5,18 +5,24 @@
from os.path import basename
from functools import partial
-from _pydevd_bundle.pydevd_constants import IS_PY36_OR_GREATER, \
- MethodWrapperType, RETURN_VALUES_DICT, DebugInfoHolder, IS_PYPY, GENERATED_LEN_ATTR_NAME
+from _pydevd_bundle.pydevd_constants import (
+ IS_PY36_OR_GREATER,
+ MethodWrapperType,
+ RETURN_VALUES_DICT,
+ DebugInfoHolder,
+ IS_PYPY,
+ GENERATED_LEN_ATTR_NAME,
+)
from _pydevd_bundle.pydevd_safe_repr import SafeRepr
from _pydevd_bundle import pydevd_constants
-TOO_LARGE_MSG = 'Maximum number of items (%s) reached. To show more items customize the value of the PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS environment variable.'
-TOO_LARGE_ATTR = 'Unable to handle:'
+TOO_LARGE_MSG = "Maximum number of items (%s) reached. To show more items customize the value of the PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS environment variable."
+TOO_LARGE_ATTR = "Unable to handle:"
-#=======================================================================================================================
+# =======================================================================================================================
# UnableToResolveVariableException
-#=======================================================================================================================
+# =======================================================================================================================
class UnableToResolveVariableException(Exception):
pass
@@ -31,20 +37,20 @@ class UnableToResolveVariableException(Exception):
except:
pass
-#=======================================================================================================================
+# =======================================================================================================================
# See: pydevd_extension_api module for resolver interface
-#=======================================================================================================================
+# =======================================================================================================================
def sorted_attributes_key(attr_name):
- if attr_name.startswith('__'):
- if attr_name.endswith('__'):
+ if attr_name.startswith("__"):
+ if attr_name.endswith("__"):
# __ double under before and after __
return (3, attr_name)
else:
# __ double under before
return (2, attr_name)
- elif attr_name.startswith('_'):
+ elif attr_name.startswith("_"):
# _ single under
return (1, attr_name)
else:
@@ -52,13 +58,13 @@ def sorted_attributes_key(attr_name):
return (0, attr_name)
-#=======================================================================================================================
+# =======================================================================================================================
# DefaultResolver
-#=======================================================================================================================
+# =======================================================================================================================
class DefaultResolver:
- '''
- DefaultResolver is the class that'll actually resolve how to show some variable.
- '''
+ """
+ DefaultResolver is the class that'll actually resolve how to show some variable.
+ """
def resolve(self, var, attribute):
return getattr(var, attribute)
@@ -71,9 +77,9 @@ def get_contents_debug_adapter_protocol(self, obj, fmt=None):
lst = sorted(dct.items(), key=lambda tup: sorted_attributes_key(tup[0]))
if used___dict__:
- eval_name = '.__dict__[%s]'
+ eval_name = ".__dict__[%s]"
else:
- eval_name = '.%s'
+ eval_name = ".%s"
ret = []
for attr_name, attr_value in lst:
@@ -93,8 +99,7 @@ def _get_jy_dictionary(self, obj):
found = java.util.HashMap()
original = obj
- if hasattr_checked(obj, '__class__') and obj.__class__ == java.lang.Class:
-
+ if hasattr_checked(obj, "__class__") and obj.__class__ == java.lang.Class:
# get info about superclasses
classes = []
classes.append(obj)
@@ -111,7 +116,6 @@ def _get_jy_dictionary(self, obj):
# now is the time when we actually get info on the declared methods and fields
for obj in classes:
-
declaredMethods = obj.getDeclaredMethods()
declaredFields = obj.getDeclaredFields()
for i in range(len(declaredMethods)):
@@ -151,16 +155,16 @@ def get_names(self, var):
except Exception:
names = []
if not names:
- if hasattr_checked(var, '__dict__'):
+ if hasattr_checked(var, "__dict__"):
names = list(var.__dict__)
used___dict__ = True
return names, used___dict__
def _get_py_dictionary(self, var, names=None, used___dict__=False):
- '''
+ """
:return tuple(names, used___dict__), where used___dict__ means we have to access
using obj.__dict__[name] instead of getattr(obj, name)
- '''
+ """
# On PyPy we never show functions. This is because of a corner case where PyPy becomes
# absurdly slow -- it takes almost half a second to introspect a single numpy function (so,
@@ -183,7 +187,7 @@ def _get_py_dictionary(self, var, names=None, used___dict__=False):
try:
name_as_str = name
if name_as_str.__class__ != str:
- name_as_str = '%r' % (name_as_str,)
+ name_as_str = "%r" % (name_as_str,)
if not used___dict__:
attr = getattr(var, name)
@@ -209,7 +213,6 @@ def _get_py_dictionary(self, var, names=None, used___dict__=False):
class DAPGrouperResolver:
-
def get_contents_debug_adapter_protocol(self, obj, fmt=None):
return obj.get_contents_debug_adapter_protocol()
@@ -218,10 +221,10 @@ def get_contents_debug_adapter_protocol(self, obj, fmt=None):
def _does_obj_repr_evaluate_to_obj(obj):
- '''
+ """
If obj is an object where evaluating its representation leads to
the same object, return True, otherwise, return False.
- '''
+ """
try:
if isinstance(obj, tuple):
for o in obj:
@@ -234,18 +237,17 @@ def _does_obj_repr_evaluate_to_obj(obj):
return False
-#=======================================================================================================================
+# =======================================================================================================================
# DictResolver
-#=======================================================================================================================
+# =======================================================================================================================
class DictResolver:
-
sort_keys = not IS_PY36_OR_GREATER
def resolve(self, dct, key):
if key in (GENERATED_LEN_ATTR_NAME, TOO_LARGE_ATTR):
return None
- if '(' not in key:
+ if "(" not in key:
# we have to treat that because the dict resolver is also used to directly resolve the global and local
# scopes (which already have the items directly)
try:
@@ -255,7 +257,7 @@ def resolve(self, dct, key):
# ok, we have to iterate over the items to find the one that matches the id, because that's the only way
# to actually find the reference from the string we have before.
- expected_id = int(key.split('(')[-1][:-1])
+ expected_id = int(key.split("(")[-1][:-1])
for key, val in dct.items():
if id(key) == expected_id:
return val
@@ -264,17 +266,17 @@ def resolve(self, dct, key):
def key_to_str(self, key, fmt=None):
if fmt is not None:
- if fmt.get('hex', False):
+ if fmt.get("hex", False):
safe_repr = SafeRepr()
safe_repr.convert_to_hex = True
return safe_repr(key)
- return '%r' % (key,)
+ return "%r" % (key,)
def init_dict(self):
return {}
def get_contents_debug_adapter_protocol(self, dct, fmt=None):
- '''
+ """
This method is to be used in the case where the variables are all saved by its id (and as
such don't need to have the `resolve` method called later on, so, keys don't need to
embed the reference in the key).
@@ -282,7 +284,7 @@ def get_contents_debug_adapter_protocol(self, dct, fmt=None):
Note that the return should be ordered.
:return list(tuple(name:str, value:object, evaluateName:str))
- '''
+ """
ret = []
i = 0
@@ -299,12 +301,12 @@ def get_contents_debug_adapter_protocol(self, dct, fmt=None):
# If the key would be a duplicate, add the key id (otherwise
# VSCode won't show all keys correctly).
# See: https://github.com/microsoft/debugpy/issues/148
- key_as_str = '%s (id: %s)' % (key_as_str, id(key))
+ key_as_str = "%s (id: %s)" % (key_as_str, id(key))
found_representations.add(key_as_str)
if _does_obj_repr_evaluate_to_obj(key):
s = self.key_to_str(key) # do not format the key
- eval_key_str = '[%s]' % (s,)
+ eval_key_str = "[%s]" % (s,)
else:
eval_key_str = None
ret.append((key_as_str, val, eval_key_str))
@@ -321,7 +323,7 @@ def get_contents_debug_adapter_protocol(self, dct, fmt=None):
if self.sort_keys:
ret = sorted(ret, key=lambda tup: sorted_attributes_key(tup[0]))
- ret.append((GENERATED_LEN_ATTR_NAME, len(dct), partial(_apply_evaluate_name, evaluate_name='len(%s)')))
+ ret.append((GENERATED_LEN_ATTR_NAME, len(dct), partial(_apply_evaluate_name, evaluate_name="len(%s)")))
return ret
def get_dictionary(self, dct):
@@ -331,7 +333,7 @@ def get_dictionary(self, dct):
for key, val in dct.items():
i += 1
# we need to add the id because otherwise we cannot find the real object to get its contents later on.
- key = '%s (%s)' % (self.key_to_str(key), id(key))
+ key = "%s (%s)" % (self.key_to_str(key), id(key))
ret[key] = val
if i >= pydevd_constants.PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS:
ret[TOO_LARGE_ATTR] = TOO_LARGE_MSG % (pydevd_constants.PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS,)
@@ -349,7 +351,6 @@ def _apply_evaluate_name(parent_name, evaluate_name):
class MoreItemsRange:
-
def __init__(self, value, from_i, to_i):
self.value = value
self.from_i = from_i
@@ -359,13 +360,13 @@ def get_contents_debug_adapter_protocol(self, _self, fmt=None):
l = len(self.value)
ret = []
- format_str = '%0' + str(int(len(str(l - 1)))) + 'd'
- if fmt is not None and fmt.get('hex', False):
- format_str = '0x%0' + str(int(len(hex(l).lstrip('0x')))) + 'x'
+ format_str = "%0" + str(int(len(str(l - 1)))) + "d"
+ if fmt is not None and fmt.get("hex", False):
+ format_str = "0x%0" + str(int(len(hex(l).lstrip("0x")))) + "x"
- for i, item in enumerate(self.value[self.from_i:self.to_i]):
+ for i, item in enumerate(self.value[self.from_i : self.to_i]):
i += self.from_i
- ret.append((format_str % i, item, '[%s]' % i))
+ ret.append((format_str % i, item, "[%s]" % i))
return ret
def get_dictionary(self, _self, fmt=None):
@@ -375,25 +376,23 @@ def get_dictionary(self, _self, fmt=None):
return dct
def resolve(self, attribute):
- '''
+ """
:param var: that's the original object we're dealing with.
:param attribute: that's the key to resolve
-- either the dict key in get_dictionary or the name in the dap protocol.
- '''
+ """
return self.value[int(attribute)]
def __eq__(self, o):
- return isinstance(o, MoreItemsRange) and self.value is o.value and \
- self.from_i == o.from_i and self.to_i == o.to_i
+ return isinstance(o, MoreItemsRange) and self.value is o.value and self.from_i == o.from_i and self.to_i == o.to_i
def __str__(self):
- return '[%s:%s]' % (self.from_i, self.to_i)
+ return "[%s:%s]" % (self.from_i, self.to_i)
__repr__ = __str__
class MoreItems:
-
def __init__(self, value, handled_items):
self.value = value
self.handled_items = handled_items
@@ -424,7 +423,7 @@ def get_dictionary(self, _self, fmt=None):
return dct
def resolve(self, attribute):
- from_i, to_i = attribute[1:-1].split(':')
+ from_i, to_i = attribute[1:-1].split(":")
from_i = int(from_i)
to_i = int(to_i)
return MoreItemsRange(self.value, from_i, to_i)
@@ -433,15 +432,15 @@ def __eq__(self, o):
return isinstance(o, MoreItems) and self.value is o.value
def __str__(self):
- return '...'
+ return "..."
__repr__ = __str__
class ForwardInternalResolverToObject:
- '''
+ """
To be used when we provide some internal object that'll actually do the resolution.
- '''
+ """
def get_contents_debug_adapter_protocol(self, obj, fmt=None):
return obj.get_contents_debug_adapter_protocol(fmt)
@@ -454,25 +453,24 @@ def resolve(self, var, attribute):
class TupleResolver: # to enumerate tuples and lists
-
def resolve(self, var, attribute):
- '''
+ """
:param var: that's the original object we're dealing with.
:param attribute: that's the key to resolve
-- either the dict key in get_dictionary or the name in the dap protocol.
- '''
+ """
if attribute in (GENERATED_LEN_ATTR_NAME, TOO_LARGE_ATTR):
return None
try:
return var[int(attribute)]
except:
- if attribute == 'more':
+ if attribute == "more":
return MoreItems(var, pydevd_constants.PYDEVD_CONTAINER_INITIAL_EXPANDED_ITEMS)
return getattr(var, attribute)
def get_contents_debug_adapter_protocol(self, lst, fmt=None):
- '''
+ """
This method is to be used in the case where the variables are all saved by its id (and as
such don't need to have the `resolve` method called later on, so, keys don't need to
embed the reference in the key).
@@ -480,17 +478,17 @@ def get_contents_debug_adapter_protocol(self, lst, fmt=None):
Note that the return should be ordered.
:return list(tuple(name:str, value:object, evaluateName:str))
- '''
+ """
lst_len = len(lst)
ret = []
- format_str = '%0' + str(int(len(str(lst_len - 1)))) + 'd'
- if fmt is not None and fmt.get('hex', False):
- format_str = '0x%0' + str(int(len(hex(lst_len).lstrip('0x')))) + 'x'
+ format_str = "%0" + str(int(len(str(lst_len - 1)))) + "d"
+ if fmt is not None and fmt.get("hex", False):
+ format_str = "0x%0" + str(int(len(hex(lst_len).lstrip("0x")))) + "x"
initial_expanded = pydevd_constants.PYDEVD_CONTAINER_INITIAL_EXPANDED_ITEMS
for i, item in enumerate(lst):
- ret.append((format_str % i, item, '[%s]' % i))
+ ret.append((format_str % i, item, "[%s]" % i))
if i >= initial_expanded - 1:
if (lst_len - initial_expanded) < pydevd_constants.PYDEVD_CONTAINER_BUCKET_SIZE:
@@ -500,7 +498,7 @@ def get_contents_debug_adapter_protocol(self, lst, fmt=None):
else:
# Multiple buckets
item = MoreItems(lst, initial_expanded)
- ret.append(('more', item, None))
+ ret.append(("more", item, None))
break
# Needed in case the class extends the built-in type and has some additional fields.
@@ -508,16 +506,16 @@ def get_contents_debug_adapter_protocol(self, lst, fmt=None):
if from_default_resolver:
ret = from_default_resolver + ret
- ret.append((GENERATED_LEN_ATTR_NAME, len(lst), partial(_apply_evaluate_name, evaluate_name='len(%s)')))
+ ret.append((GENERATED_LEN_ATTR_NAME, len(lst), partial(_apply_evaluate_name, evaluate_name="len(%s)")))
return ret
def get_dictionary(self, var, fmt={}):
l = len(var)
d = {}
- format_str = '%0' + str(int(len(str(l - 1)))) + 'd'
- if fmt is not None and fmt.get('hex', False):
- format_str = '0x%0' + str(int(len(hex(l).lstrip('0x')))) + 'x'
+ format_str = "%0" + str(int(len(str(l - 1)))) + "d"
+ if fmt is not None and fmt.get("hex", False):
+ format_str = "0x%0" + str(int(len(hex(l).lstrip("0x")))) + "x"
initial_expanded = pydevd_constants.PYDEVD_CONTAINER_INITIAL_EXPANDED_ITEMS
for i, item in enumerate(var):
@@ -525,7 +523,7 @@ def get_dictionary(self, var, fmt={}):
if i >= initial_expanded - 1:
item = MoreItems(var, initial_expanded)
- d['more'] = item
+ d["more"] = item
break
# in case if the class extends built-in type and has some additional fields
@@ -535,13 +533,13 @@ def get_dictionary(self, var, fmt={}):
return d
-#=======================================================================================================================
+# =======================================================================================================================
# SetResolver
-#=======================================================================================================================
+# =======================================================================================================================
class SetResolver:
- '''
- Resolves a set as dict id(object)->object
- '''
+ """
+ Resolves a set as dict id(object)->object
+ """
def get_contents_debug_adapter_protocol(self, obj, fmt=None):
ret = []
@@ -557,7 +555,7 @@ def get_contents_debug_adapter_protocol(self, obj, fmt=None):
from_default_resolver = defaultResolver.get_contents_debug_adapter_protocol(obj, fmt=fmt)
if from_default_resolver:
ret = from_default_resolver + ret
- ret.append((GENERATED_LEN_ATTR_NAME, len(obj), partial(_apply_evaluate_name, evaluate_name='len(%s)')))
+ ret.append((GENERATED_LEN_ATTR_NAME, len(obj), partial(_apply_evaluate_name, evaluate_name="len(%s)")))
return ret
def resolve(self, var, attribute):
@@ -573,7 +571,7 @@ def resolve(self, var, attribute):
if id(v) == attribute:
return v
- raise UnableToResolveVariableException('Unable to resolve %s in %s' % (attribute, var))
+ raise UnableToResolveVariableException("Unable to resolve %s in %s" % (attribute, var))
def get_dictionary(self, var):
d = {}
@@ -609,11 +607,10 @@ def change_var_from_name(self, container, name, new_value):
return None
-#=======================================================================================================================
+# =======================================================================================================================
# InstanceResolver
-#=======================================================================================================================
+# =======================================================================================================================
class InstanceResolver:
-
def resolve(self, var, attribute):
field = var.__class__.getDeclaredField(attribute)
field.setAccessible(True)
@@ -634,13 +631,13 @@ def get_dictionary(self, obj):
return ret
-#=======================================================================================================================
+# =======================================================================================================================
# JyArrayResolver
-#=======================================================================================================================
+# =======================================================================================================================
class JyArrayResolver:
- '''
- This resolves a regular Object[] array from java
- '''
+ """
+ This resolves a regular Object[] array from java
+ """
def resolve(self, var, attribute):
if attribute == GENERATED_LEN_ATTR_NAME:
@@ -651,24 +648,23 @@ def get_dictionary(self, obj):
ret = {}
for i in range(len(obj)):
- ret[ i ] = obj[i]
+ ret[i] = obj[i]
ret[GENERATED_LEN_ATTR_NAME] = len(obj)
return ret
-#=======================================================================================================================
+# =======================================================================================================================
# MultiValueDictResolver
-#=======================================================================================================================
+# =======================================================================================================================
class MultiValueDictResolver(DictResolver):
-
def resolve(self, dct, key):
if key in (GENERATED_LEN_ATTR_NAME, TOO_LARGE_ATTR):
return None
# ok, we have to iterate over the items to find the one that matches the id, because that's the only way
# to actually find the reference from the string we have before.
- expected_id = int(key.split('(')[-1][:-1])
+ expected_id = int(key.split("(")[-1][:-1])
for key in list(dct.keys()):
val = dct.getlist(key)
if id(key) == expected_id:
@@ -677,11 +673,10 @@ def resolve(self, dct, key):
raise UnableToResolveVariableException()
-#=======================================================================================================================
+# =======================================================================================================================
# DjangoFormResolver
-#=======================================================================================================================
+# =======================================================================================================================
class DjangoFormResolver(DefaultResolver):
-
def get_dictionary(self, var, names=None):
# Do not call self.errors because it is a property and has side effects.
names, used___dict__ = self.get_names(var)
@@ -701,53 +696,51 @@ def get_dictionary(self, var, names=None):
return d
-#=======================================================================================================================
+# =======================================================================================================================
# DequeResolver
-#=======================================================================================================================
+# =======================================================================================================================
class DequeResolver(TupleResolver):
-
def get_dictionary(self, var):
d = TupleResolver.get_dictionary(self, var)
- d['maxlen'] = getattr(var, 'maxlen', None)
+ d["maxlen"] = getattr(var, "maxlen", None)
return d
-#=======================================================================================================================
+# =======================================================================================================================
# OrderedDictResolver
-#=======================================================================================================================
+# =======================================================================================================================
class OrderedDictResolver(DictResolver):
-
sort_keys = False
def init_dict(self):
return OrderedDict()
-#=======================================================================================================================
+# =======================================================================================================================
# FrameResolver
-#=======================================================================================================================
+# =======================================================================================================================
class FrameResolver:
- '''
+ """
This resolves a frame.
- '''
+ """
def resolve(self, obj, attribute):
- if attribute == '__internals__':
+ if attribute == "__internals__":
return defaultResolver.get_dictionary(obj)
- if attribute == 'stack':
+ if attribute == "stack":
return self.get_frame_stack(obj)
- if attribute == 'f_locals':
+ if attribute == "f_locals":
return obj.f_locals
return None
def get_dictionary(self, obj):
ret = {}
- ret['__internals__'] = defaultResolver.get_dictionary(obj)
- ret['stack'] = self.get_frame_stack(obj)
- ret['f_locals'] = obj.f_locals
+ ret["__internals__"] = defaultResolver.get_dictionary(obj)
+ ret["stack"] = self.get_frame_stack(obj)
+ ret["f_locals"] = obj.f_locals
return ret
def get_frame_stack(self, frame):
@@ -763,12 +756,12 @@ def get_frame_stack(self, frame):
def get_frame_name(self, frame):
if frame is None:
- return 'None'
+ return "None"
try:
name = basename(frame.f_code.co_filename)
- return 'frame: %s [%s:%s] id:%s' % (frame.f_code.co_name, name, frame.f_lineno, id(frame))
+ return "frame: %s [%s:%s] id:%s" % (frame.f_code.co_name, name, frame.f_lineno, id(frame))
except:
- return 'frame object'
+ return "frame object"
defaultResolver = DefaultResolver()
@@ -787,7 +780,6 @@ def get_frame_name(self, frame):
class InspectStub:
-
def isbuiltin(self, _args):
return False
@@ -805,23 +797,23 @@ def get_var_scope(attr_name, attr_value, evaluate_name, handle_return_values):
if attr_name.startswith("'"):
if attr_name.endswith("'"):
# i.e.: strings denote that it is a regular value in some container.
- return ''
+ return ""
else:
i = attr_name.find("__' (")
if i >= 0:
# Handle attr_name such as: >>'__name__' (1732494379184)<<
- attr_name = attr_name[1: i + 2]
+ attr_name = attr_name[1 : i + 2]
if handle_return_values and attr_name == RETURN_VALUES_DICT:
- return ''
+ return ""
elif attr_name == GENERATED_LEN_ATTR_NAME:
- return ''
+ return ""
- if attr_name.startswith('__') and attr_name.endswith('__'):
+ if attr_name.startswith("__") and attr_name.endswith("__"):
return DAPGrouper.SCOPE_SPECIAL_VARS
- if attr_name.startswith('_') or attr_name.endswith('__'):
+ if attr_name.startswith("_") or attr_name.endswith("__"):
return DAPGrouper.SCOPE_PROTECTED_VARS
try:
@@ -835,4 +827,4 @@ def get_var_scope(attr_name, attr_value, evaluate_name, handle_return_values):
if DebugInfoHolder.DEBUG_TRACE_LEVEL > 0:
pydev_log.exception()
- return ''
+ return ""
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py
index 09b713f06..ba8f7afca 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py
@@ -23,7 +23,8 @@
import os
__all__ = [
- "run_module", "run_path",
+ "run_module",
+ "run_path",
]
@@ -81,7 +82,6 @@ def __exit__(self, *args):
class _ModifiedArgv0(object):
-
def __init__(self, value):
self.value = value
self._saved_value = self._sentinel = object()
@@ -98,9 +98,7 @@ def __exit__(self, *args):
# TODO: Replace these helpers with importlib._bootstrap_external functions.
-def _run_code(code, run_globals, init_globals=None,
- mod_name=None, mod_spec=None,
- pkg_name=None, script_name=None):
+def _run_code(code, run_globals, init_globals=None, mod_name=None, mod_spec=None, pkg_name=None, script_name=None):
"""Helper to run code in nominated namespace"""
if init_globals is not None:
run_globals.update(init_globals)
@@ -114,26 +112,19 @@ def _run_code(code, run_globals, init_globals=None,
cached = mod_spec.cached
if pkg_name is None:
pkg_name = mod_spec.parent
- run_globals.update(__name__=mod_name,
- __file__=fname,
- __cached__=cached,
- __doc__=None,
- __loader__=loader,
- __package__=pkg_name,
- __spec__=mod_spec)
+ run_globals.update(
+ __name__=mod_name, __file__=fname, __cached__=cached, __doc__=None, __loader__=loader, __package__=pkg_name, __spec__=mod_spec
+ )
exec(code, run_globals)
return run_globals
-def _run_module_code(code, init_globals=None,
- mod_name=None, mod_spec=None,
- pkg_name=None, script_name=None):
+def _run_module_code(code, init_globals=None, mod_name=None, mod_spec=None, pkg_name=None, script_name=None):
"""Helper to run code in new namespace with sys modified"""
fname = script_name if mod_spec is None else mod_spec.origin
with _TempModule(mod_name) as temp_module, _ModifiedArgv0(fname):
mod_globals = temp_module.module.__dict__
- _run_code(code, mod_globals, init_globals,
- mod_name, mod_spec, pkg_name, script_name)
+ _run_code(code, mod_globals, init_globals, mod_name, mod_spec, pkg_name, script_name)
# Copy the globals of the temporary module, as they
# may be cleared when the temporary module goes away
return mod_globals.copy()
@@ -152,17 +143,19 @@ def _get_module_details(mod_name, error=ImportError):
# If the parent or higher ancestor package is missing, let the
# error be raised by find_spec() below and then be caught. But do
# not allow other errors to be caught.
- if e.name is None or (e.name != pkg_name and
- not pkg_name.startswith(e.name + ".")):
+ if e.name is None or (e.name != pkg_name and not pkg_name.startswith(e.name + ".")):
raise
# Warn if the module has already been imported under its normal name
existing = sys.modules.get(mod_name)
if existing is not None and not hasattr(existing, "__path__"):
from warnings import warn
- msg = "{mod_name!r} found in sys.modules after import of " \
- "package {pkg_name!r}, but prior to execution of " \
- "{mod_name!r}; this may result in unpredictable " \
+
+ msg = (
+ "{mod_name!r} found in sys.modules after import of "
+ "package {pkg_name!r}, but prior to execution of "
+ "{mod_name!r}; this may result in unpredictable "
"behaviour".format(mod_name=mod_name, pkg_name=pkg_name)
+ )
warn(RuntimeWarning(msg))
try:
@@ -173,8 +166,7 @@ def _get_module_details(mod_name, error=ImportError):
# pkgutil previously raised ImportError
msg = "Error while finding module specification for {!r} ({}: {})"
if mod_name.endswith(".py"):
- msg += (f". Try using '{mod_name[:-3]}' instead of "
- f"'{mod_name}' as the module name.")
+ msg += f". Try using '{mod_name[:-3]}' instead of " f"'{mod_name}' as the module name."
raise error(msg.format(mod_name, type(ex).__name__, ex)) from ex
if spec is None:
raise error("No module named %s" % mod_name)
@@ -187,12 +179,10 @@ def _get_module_details(mod_name, error=ImportError):
except error as e:
if mod_name not in sys.modules:
raise # No module loaded; being a package is irrelevant
- raise error(("%s; %r is a package and cannot " +
- "be directly executed") % (e, mod_name))
+ raise error(("%s; %r is a package and cannot " + "be directly executed") % (e, mod_name))
loader = spec.loader
if loader is None:
- raise error("%r is a namespace package and cannot be executed"
- % mod_name)
+ raise error("%r is a namespace package and cannot be executed" % mod_name)
try:
code = loader.get_code(mod_name)
except ImportError as e:
@@ -213,16 +203,16 @@ class _Error(Exception):
def _run_module_as_main(mod_name, alter_argv=True):
"""Runs the designated module in the __main__ namespace
- Note that the executed module will have full access to the
- __main__ namespace. If this is not desirable, the run_module()
- function should be used to run the module code in a fresh namespace.
+ Note that the executed module will have full access to the
+ __main__ namespace. If this is not desirable, the run_module()
+ function should be used to run the module code in a fresh namespace.
- At the very least, these variables in __main__ will be overwritten:
- __name__
- __file__
- __cached__
- __loader__
- __package__
+ At the very least, these variables in __main__ will be overwritten:
+ __name__
+ __file__
+ __cached__
+ __loader__
+ __package__
"""
try:
if alter_argv or mod_name != "__main__": # i.e. -m switch
@@ -235,15 +225,13 @@ def _run_module_as_main(mod_name, alter_argv=True):
main_globals = sys.modules["__main__"].__dict__
if alter_argv:
sys.argv[0] = mod_spec.origin
- return _run_code(code, main_globals, None,
- "__main__", mod_spec)
+ return _run_code(code, main_globals, None, "__main__", mod_spec)
-def run_module(mod_name, init_globals=None,
- run_name=None, alter_sys=False):
+def run_module(mod_name, init_globals=None, run_name=None, alter_sys=False):
"""Execute a module's code without importing it
- Returns the resulting top level namespace dictionary
+ Returns the resulting top level namespace dictionary
"""
mod_name, mod_spec, code = _get_module_details(mod_name)
if run_name is None:
@@ -267,8 +255,7 @@ def _get_main_module_details(error=ImportError):
return _get_module_details(main_name)
except ImportError as exc:
if main_name in str(exc):
- raise error("can't find %r module in %r" %
- (main_name, sys.path[0])) from exc
+ raise error("can't find %r module in %r" % (main_name, sys.path[0])) from exc
raise
finally:
sys.modules[main_name] = saved_main
@@ -279,31 +266,33 @@ def _get_main_module_details(error=ImportError):
except AttributeError:
# Compatibility with Python 3.6/3.7
import tokenize
+
io_open_code = tokenize.open
def _get_code_from_file(run_name, fname):
# Check for a compiled file first
from pkgutil import read_code
+
decoded_path = os.path.abspath(os.fsdecode(fname))
with io_open_code(decoded_path) as f:
code = read_code(f)
if code is None:
# That didn't work, so try it as normal source code
with io_open_code(decoded_path) as f:
- code = compile(f.read(), fname, 'exec')
+ code = compile(f.read(), fname, "exec")
return code, fname
def run_path(path_name, init_globals=None, run_name=None):
"""Execute code located at the specified filesystem location
- Returns the resulting top level namespace dictionary
+ Returns the resulting top level namespace dictionary
- The file path may refer directly to a Python script (i.e.
- one that could be directly executed with execfile) or else
- it may refer to a zipfile or directory containing a top
- level __main__.py script.
+ The file path may refer directly to a Python script (i.e.
+ one that could be directly executed with execfile) or else
+ it may refer to a zipfile or directory containing a top
+ level __main__.py script.
"""
if run_name is None:
run_name = ""
@@ -311,15 +300,14 @@ def run_path(path_name, init_globals=None, run_name=None):
importer = pkgutil_get_importer(path_name)
# Trying to avoid importing imp so as to not consume the deprecation warning.
is_NullImporter = False
- if type(importer).__module__ == 'imp':
- if type(importer).__name__ == 'NullImporter':
+ if type(importer).__module__ == "imp":
+ if type(importer).__name__ == "NullImporter":
is_NullImporter = True
if isinstance(importer, type(None)) or is_NullImporter:
# Not a valid sys.path entry, so run the code directly
# execfile() doesn't help as we want to allow compiled files
code, fname = _get_code_from_file(run_name, path_name)
- return _run_module_code(code, init_globals, run_name,
- pkg_name=pkg_name, script_name=fname)
+ return _run_module_code(code, init_globals, run_name, pkg_name=pkg_name, script_name=fname)
else:
# Finder is defined for path, so add it to
# the start of sys.path
@@ -332,11 +320,9 @@ def run_path(path_name, init_globals=None, run_name=None):
# code. If we don't do this, a __loader__ attribute in the
# existing __main__ module may prevent location of the new module.
mod_name, mod_spec, code = _get_main_module_details()
- with _TempModule(run_name) as temp_module, \
- _ModifiedArgv0(path_name):
+ with _TempModule(run_name) as temp_module, _ModifiedArgv0(path_name):
mod_globals = temp_module.module.__dict__
- return _run_code(code, mod_globals, init_globals,
- run_name, mod_spec, pkg_name).copy()
+ return _run_code(code, mod_globals, init_globals, run_name, mod_spec, pkg_name).copy()
finally:
try:
sys.path.remove(path_name)
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py
index db14fc355..df5e8f4a0 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py
@@ -19,15 +19,14 @@ class SafeRepr(object):
# String types are truncated to maxstring_outer when at the outer-
# most level, and truncated to maxstring_inner characters inside
# collections.
- maxstring_outer = 2 ** 16
+ maxstring_outer = 2**16
maxstring_inner = 128
string_types = (str, bytes)
bytes = bytes
- set_info = (set, '{', '}', False)
- frozenset_info = (frozenset, 'frozenset({', '})', False)
+ set_info = (set, "{", "}", False)
+ frozenset_info = (frozenset, "frozenset({", "})", False)
int_types = (int,)
- long_iter_types = (list, tuple, bytearray, range,
- dict, set, frozenset)
+ long_iter_types = (list, tuple, bytearray, range, dict, set, frozenset)
# Collection types are recursively iterated for each limit in
# maxcollection.
@@ -37,52 +36,54 @@ class SafeRepr(object):
# comma if there is only one element. (Using a sequence rather than a
# mapping because we use isinstance() to determine the matching type.)
collection_types = [
- (tuple, '(', ')', True),
- (list, '[', ']', False),
+ (tuple, "(", ")", True),
+ (list, "[", "]", False),
frozenset_info,
set_info,
]
try:
from collections import deque
- collection_types.append((deque, 'deque([', '])', False))
+
+ collection_types.append((deque, "deque([", "])", False))
except Exception:
pass
# type, prefix string, suffix string, item prefix string,
# item key/value separator, item suffix string
- dict_types = [(dict, '{', '}', '', ': ', '')]
+ dict_types = [(dict, "{", "}", "", ": ", "")]
try:
from collections import OrderedDict
- dict_types.append((OrderedDict, 'OrderedDict([', '])', '(', ', ', ')'))
+
+ dict_types.append((OrderedDict, "OrderedDict([", "])", "(", ", ", ")"))
except Exception:
pass
# All other types are treated identically to strings, but using
# different limits.
- maxother_outer = 2 ** 16
+ maxother_outer = 2**16
maxother_inner = 128
convert_to_hex = False
raw_value = False
def __call__(self, obj):
- '''
+ """
:param object obj:
The object for which we want a representation.
:return str:
Returns bytes encoded as utf-8 on py2 and str on py3.
- '''
+ """
try:
- return ''.join(self._repr(obj, 0))
+ return "".join(self._repr(obj, 0))
except Exception:
try:
- return 'An exception was raised: %r' % sys.exc_info()[1]
+ return "An exception was raised: %r" % sys.exc_info()[1]
except Exception:
- return 'An exception was raised'
+ return "An exception was raised"
def _repr(self, obj, level):
- '''Returns an iterable of the parts in the final repr string.'''
+ """Returns an iterable of the parts in the final repr string."""
try:
obj_repr = type(obj).__repr__
@@ -102,8 +103,7 @@ def has_obj_repr(t):
for t, prefix, suffix, item_prefix, item_sep, item_suffix in self.dict_types: # noqa
if isinstance(obj, t) and has_obj_repr(t):
- return self._repr_dict(obj, level, prefix, suffix,
- item_prefix, item_sep, item_suffix)
+ return self._repr_dict(obj, level, prefix, suffix, item_prefix, item_sep, item_suffix)
for t in self.string_types:
if isinstance(obj, t) and has_obj_repr(t):
@@ -125,7 +125,7 @@ def _is_long_iter(self, obj, level=0):
return len(obj) > self.maxstring_inner
# If it's not an iterable (and not a string), it's fine.
- if not hasattr(obj, '__iter__'):
+ if not hasattr(obj, "__iter__"):
return False
# If it's not an instance of these collection types then it
@@ -148,8 +148,8 @@ def _is_long_iter(self, obj, level=0):
# numpy and scipy collections (ndarray etc) have
# self-truncating repr, so they're always safe.
try:
- module = type(obj).__module__.partition('.')[0]
- if module in ('numpy', 'scipy'):
+ module = type(obj).__module__.partition(".")[0]
+ if module in ("numpy", "scipy"):
return False
except Exception:
pass
@@ -160,7 +160,7 @@ def _is_long_iter(self, obj, level=0):
# It is too long if the length exceeds the limit, or any
# of its elements are long iterables.
- if hasattr(obj, '__len__'):
+ if hasattr(obj, "__len__"):
try:
size = len(obj)
except Exception:
@@ -174,23 +174,22 @@ def _is_long_iter(self, obj, level=0):
# If anything breaks, assume the worst case.
return True
- def _repr_iter(self, obj, level, prefix, suffix,
- comma_after_single_element=False):
+ def _repr_iter(self, obj, level, prefix, suffix, comma_after_single_element=False):
yield prefix
if level >= len(self.maxcollection):
- yield '...'
+ yield "..."
else:
count = self.maxcollection[level]
yield_comma = False
for item in obj:
if yield_comma:
- yield ', '
+ yield ", "
yield_comma = True
count -= 1
if count <= 0:
- yield '...'
+ yield "..."
break
for p in self._repr(item, 100 if item is obj else level + 1):
@@ -198,27 +197,26 @@ def _repr_iter(self, obj, level, prefix, suffix,
else:
if comma_after_single_element:
if count == self.maxcollection[level] - 1:
- yield ','
+ yield ","
yield suffix
def _repr_long_iter(self, obj):
try:
length = hex(len(obj)) if self.convert_to_hex else len(obj)
- obj_repr = '<%s, len() = %s>' % (type(obj).__name__, length)
+ obj_repr = "<%s, len() = %s>" % (type(obj).__name__, length)
except Exception:
try:
- obj_repr = '<' + type(obj).__name__ + '>'
+ obj_repr = "<" + type(obj).__name__ + ">"
except Exception:
- obj_repr = ''
+ obj_repr = ""
yield obj_repr
- def _repr_dict(self, obj, level, prefix, suffix,
- item_prefix, item_sep, item_suffix):
+ def _repr_dict(self, obj, level, prefix, suffix, item_prefix, item_sep, item_suffix):
if not obj:
yield prefix + suffix
return
if level >= len(self.maxcollection):
- yield prefix + '...' + suffix
+ yield prefix + "..." + suffix
return
yield prefix
@@ -238,12 +236,12 @@ def _repr_dict(self, obj, level, prefix, suffix,
for key in sorted_keys:
if yield_comma:
- yield ', '
+ yield ", "
yield_comma = True
count -= 1
if count <= 0:
- yield '...'
+ yield "..."
break
yield item_prefix
@@ -255,7 +253,7 @@ def _repr_dict(self, obj, level, prefix, suffix,
try:
item = obj[key]
except Exception:
- yield '>'
+ yield ">"
else:
for p in self._repr(item, 100 if item is obj else level + 1):
yield p
@@ -268,7 +266,7 @@ def _repr_str(self, obj, level):
if self.raw_value:
# For raw value retrieval, ignore all limits.
if isinstance(obj, bytes):
- yield obj.decode('latin-1')
+ yield obj.decode("latin-1")
else:
yield obj
return
@@ -304,32 +302,30 @@ def _repr_str(self, obj, level):
part1 = obj[:left_count]
part1 = repr(part1)
- part1 = part1[:part1.rindex("'")] # Remove the last '
+ part1 = part1[: part1.rindex("'")] # Remove the last '
part2 = obj[-right_count:]
part2 = repr(part2)
- part2 = part2[part2.index("'") + 1:] # Remove the first ' (and possibly u or b).
+ part2 = part2[part2.index("'") + 1 :] # Remove the first ' (and possibly u or b).
yield part1
- yield '...'
+ yield "..."
yield part2
except:
# This shouldn't really happen, but let's play it safe.
- pydev_log.exception('Error getting string representation to show.')
- for part in self._repr_obj(obj, level,
- self.maxother_inner, self.maxother_outer):
+ pydev_log.exception("Error getting string representation to show.")
+ for part in self._repr_obj(obj, level, self.maxother_inner, self.maxother_outer):
yield part
def _repr_other(self, obj, level):
- return self._repr_obj(obj, level,
- self.maxother_inner, self.maxother_outer)
+ return self._repr_obj(obj, level, self.maxother_inner, self.maxother_outer)
def _repr_obj(self, obj, level, limit_inner, limit_outer):
try:
if self.raw_value:
# For raw value retrieval, ignore all limits.
if isinstance(obj, bytes):
- yield obj.decode('latin-1')
+ yield obj.decode("latin-1")
return
try:
@@ -339,7 +335,7 @@ def _repr_obj(self, obj, level, limit_inner, limit_outer):
return
else:
# Map bytes to Unicode codepoints with same values.
- yield mv.tobytes().decode('latin-1')
+ yield mv.tobytes().decode("latin-1")
return
elif self.convert_to_hex and isinstance(obj, self.int_types):
obj_repr = hex(obj)
@@ -350,9 +346,9 @@ def _repr_obj(self, obj, level, limit_inner, limit_outer):
obj_repr = object.__repr__(obj)
except Exception:
try:
- obj_repr = '' # noqa
+ obj_repr = "" # noqa
except Exception:
- obj_repr = ''
+ obj_repr = ""
limit = limit_inner if level > 0 else limit_outer
@@ -366,7 +362,7 @@ def _repr_obj(self, obj, level, limit_inner, limit_outer):
left_count, right_count = max(1, int(2 * limit / 3)), max(1, int(limit / 3)) # noqa
yield obj_repr[:left_count]
- yield '...'
+ yield "..."
yield obj_repr[-right_count:]
def _convert_to_unicode_or_bytes_repr(self, obj_repr):
@@ -377,7 +373,7 @@ def _bytes_as_unicode_if_possible(self, obj_repr):
# locale.getpreferredencoding() and 'utf-8). If no encoding can decode
# the input, we return the original bytes.
try_encodings = []
- encoding = self.sys_stdout_encoding or getattr(sys.stdout, 'encoding', '')
+ encoding = self.sys_stdout_encoding or getattr(sys.stdout, "encoding", "")
if encoding:
try_encodings.append(encoding.lower())
@@ -387,8 +383,8 @@ def _bytes_as_unicode_if_possible(self, obj_repr):
if preferred_encoding not in try_encodings:
try_encodings.append(preferred_encoding)
- if 'utf-8' not in try_encodings:
- try_encodings.append('utf-8')
+ if "utf-8" not in try_encodings:
+ try_encodings.append("utf-8")
for encoding in try_encodings:
try:
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py
index c6bc37542..023370b69 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py
@@ -40,13 +40,14 @@ def make_save_locals_impl():
lock being taken in different order in different threads.
"""
try:
- if '__pypy__' in sys.builtin_module_names:
+ if "__pypy__" in sys.builtin_module_names:
import __pypy__ # @UnresolvedImport
+
save_locals = __pypy__.locals_to_fast
except:
pass
else:
- if '__pypy__' in sys.builtin_module_names:
+ if "__pypy__" in sys.builtin_module_names:
def save_locals_pypy_impl(frame):
save_locals(frame)
@@ -55,6 +56,7 @@ def save_locals_pypy_impl(frame):
try:
import ctypes
+
locals_to_fast = ctypes.pythonapi.PyFrame_LocalsToFast
except:
pass
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py
index 3877e6222..9664364f0 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py
@@ -14,7 +14,6 @@
class Signature(object):
-
def __init__(self, file, name):
self.file = file
self.name = name
@@ -42,37 +41,36 @@ def __str__(self):
return "%s %s(%s)" % (self.file, self.name, ", ".join(self.args_str))
-def get_type_of_value(value, ignore_module_name=('__main__', '__builtin__', 'builtins'), recursive=False):
+def get_type_of_value(value, ignore_module_name=("__main__", "__builtin__", "builtins"), recursive=False):
tp = type(value)
class_name = tp.__name__
- if class_name == 'instance': # old-style classes
+ if class_name == "instance": # old-style classes
tp = value.__class__
class_name = tp.__name__
- if hasattr(tp, '__module__') and tp.__module__ and tp.__module__ not in ignore_module_name:
+ if hasattr(tp, "__module__") and tp.__module__ and tp.__module__ not in ignore_module_name:
class_name = "%s.%s" % (tp.__module__, class_name)
- if class_name == 'list':
- class_name = 'List'
+ if class_name == "list":
+ class_name = "List"
if len(value) > 0 and recursive:
- class_name += '[%s]' % get_type_of_value(value[0], recursive=recursive)
+ class_name += "[%s]" % get_type_of_value(value[0], recursive=recursive)
return class_name
- if class_name == 'dict':
- class_name = 'Dict'
+ if class_name == "dict":
+ class_name = "Dict"
if len(value) > 0 and recursive:
- for (k, v) in value.items():
- class_name += '[%s, %s]' % (get_type_of_value(k, recursive=recursive),
- get_type_of_value(v, recursive=recursive))
+ for k, v in value.items():
+ class_name += "[%s, %s]" % (get_type_of_value(k, recursive=recursive), get_type_of_value(v, recursive=recursive))
break
return class_name
- if class_name == 'tuple':
- class_name = 'Tuple'
+ if class_name == "tuple":
+ class_name = "Tuple"
if len(value) > 0 and recursive:
- class_name += '['
- class_name += ', '.join(get_type_of_value(v, recursive=recursive) for v in value)
- class_name += ']'
+ class_name += "["
+ class_name += ", ".join(get_type_of_value(v, recursive=recursive) for v in value)
+ class_name += "]"
return class_name
@@ -85,7 +83,6 @@ def _modname(path):
class SignatureFactory(object):
-
def __init__(self):
self._caller_cache = {}
self.cache = CallSignatureCache()
@@ -130,7 +127,7 @@ def file_module_function_of(self, frame): # this code is take from trace module
def get_signature_info(signature):
- return signature.file, signature.name, ' '.join([arg[1] for arg in signature.args])
+ return signature.file, signature.name, " ".join([arg[1] for arg in signature.args])
def get_frame_info(frame):
@@ -139,7 +136,6 @@ def get_frame_info(frame):
class CallSignatureCache(object):
-
def __init__(self):
self.cache = {}
@@ -159,16 +155,21 @@ def is_in_cache(self, signature):
def create_signature_message(signature):
cmdTextList = [""]
- cmdTextList.append('' % (pydevd_xml.make_valid_xml_value(signature.file), pydevd_xml.make_valid_xml_value(signature.name)))
+ cmdTextList.append(
+ ''
+ % (pydevd_xml.make_valid_xml_value(signature.file), pydevd_xml.make_valid_xml_value(signature.name))
+ )
for arg in signature.args:
- cmdTextList.append('' % (pydevd_xml.make_valid_xml_value(arg[0]), pydevd_xml.make_valid_xml_value(arg[1])))
+ cmdTextList.append(
+ '' % (pydevd_xml.make_valid_xml_value(arg[0]), pydevd_xml.make_valid_xml_value(arg[1]))
+ )
if signature.return_type is not None:
cmdTextList.append('' % (pydevd_xml.make_valid_xml_value(signature.return_type)))
cmdTextList.append("")
- cmdText = ''.join(cmdTextList)
+ cmdText = "".join(cmdTextList)
return NetCommand(CMD_SIGNATURE_CALL_TRACE, 0, cmdText)
@@ -198,4 +199,3 @@ def send_signature_return_trace(dbg, frame, filename, return_value):
return True
return False
-
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py
index 545530718..7e75c8271 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py
@@ -4,8 +4,7 @@
class SourceMappingEntry(object):
-
- __slots__ = ['source_filename', 'line', 'end_line', 'runtime_line', 'runtime_source']
+ __slots__ = ["source_filename", "line", "end_line", "runtime_line", "runtime_source"]
def __init__(self, line, end_line, runtime_line, runtime_source):
assert isinstance(runtime_source, str)
@@ -28,14 +27,12 @@ def contains_runtime_line(self, i):
return self.runtime_line <= i <= runtime_end_line
def __str__(self):
- return 'SourceMappingEntry(%s)' % (
- ', '.join('%s=%r' % (attr, getattr(self, attr)) for attr in self.__slots__))
+ return "SourceMappingEntry(%s)" % (", ".join("%s=%r" % (attr, getattr(self, attr)) for attr in self.__slots__))
__repr__ = __str__
class SourceMapping(object):
-
def __init__(self, on_source_mapping_changed=NULL):
self._mappings_to_server = {} # dict(normalized(file.py) to [SourceMappingEntry])
self._mappings_to_client = {} # dict( to File.py)
@@ -43,7 +40,7 @@ def __init__(self, on_source_mapping_changed=NULL):
self._on_source_mapping_changed = on_source_mapping_changed
def set_source_mapping(self, absolute_filename, mapping):
- '''
+ """
:param str absolute_filename:
The filename for the source mapping (bytes on py2 and str on py3).
@@ -53,7 +50,7 @@ def set_source_mapping(self, absolute_filename, mapping):
:return str:
An error message if it was not possible to set the mapping or an empty string if
everything is ok.
- '''
+ """
# Let's first validate if it's ok to apply that mapping.
# File mappings must be 1:N, not M:N (i.e.: if there's a mapping from file1.py to ,
# there can be no other mapping from any other file to ).
@@ -63,8 +60,12 @@ def set_source_mapping(self, absolute_filename, mapping):
for map_entry in mapping:
existing_source_filename = self._mappings_to_client.get(map_entry.runtime_source)
if existing_source_filename and existing_source_filename != absolute_filename:
- return 'Cannot apply mapping from %s to %s (it conflicts with mapping: %s to %s)' % (
- absolute_filename, map_entry.runtime_source, existing_source_filename, map_entry.runtime_source)
+ return "Cannot apply mapping from %s to %s (it conflicts with mapping: %s to %s)" % (
+ absolute_filename,
+ map_entry.runtime_source,
+ existing_source_filename,
+ map_entry.runtime_source,
+ )
try:
absolute_normalized_filename = pydevd_file_utils.normcase(absolute_filename)
@@ -72,17 +73,17 @@ def set_source_mapping(self, absolute_filename, mapping):
for map_entry in current_mapping:
del self._mappings_to_client[map_entry.runtime_source]
- self._mappings_to_server[absolute_normalized_filename] = sorted(mapping, key=lambda entry:entry.line)
+ self._mappings_to_server[absolute_normalized_filename] = sorted(mapping, key=lambda entry: entry.line)
for map_entry in mapping:
self._mappings_to_client[map_entry.runtime_source] = absolute_filename
finally:
self._cache.clear()
self._on_source_mapping_changed()
- return ''
+ return ""
def map_to_client(self, runtime_source_filename, lineno):
- key = (lineno, 'client', runtime_source_filename)
+ key = (lineno, "client", runtime_source_filename)
try:
return self._cache[key]
except KeyError:
@@ -97,13 +98,13 @@ def map_to_client(self, runtime_source_filename, lineno):
return self._cache[key]
def has_mapping_entry(self, runtime_source_filename):
- '''
+ """
:param runtime_source_filename:
Something as
- '''
+ """
# Note that we're not interested in the line here, just on knowing if a given filename
# (from the server) has a mapping for it.
- key = ('has_entry', runtime_source_filename)
+ key = ("has_entry", runtime_source_filename)
try:
return self._cache[key]
except KeyError:
@@ -117,18 +118,17 @@ def has_mapping_entry(self, runtime_source_filename):
return self._cache[key]
def map_to_server(self, absolute_filename, lineno):
- '''
+ """
Convert something as 'file1.py' at line 10 to '' at line 2.
Note that the name should be already normalized at this point.
- '''
+ """
absolute_normalized_filename = pydevd_file_utils.normcase(absolute_filename)
changed = False
mappings = self._mappings_to_server.get(absolute_normalized_filename)
if mappings:
-
- i = bisect.bisect(KeyifyList(mappings, lambda entry:entry.line), lineno)
+ i = bisect.bisect(KeyifyList(mappings, lambda entry: entry.line), lineno)
if i >= len(mappings):
i -= 1
@@ -150,4 +150,3 @@ def map_to_server(self, absolute_filename, lineno):
changed = True
return absolute_filename, lineno, changed
-
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py
index 44bb768ac..ba574e944 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py
@@ -14,11 +14,11 @@
# Used so that we don't loose the id (because we'll remove when it's not alive and would generate a new id for the
# same tasklet).
class TaskletToLastId:
- '''
+ """
So, why not a WeakKeyDictionary?
The problem is that removals from the WeakKeyDictionary will create a new tasklet (as it adds a callback to
remove the key when it's garbage-collected), so, we can get into a recursion.
- '''
+ """
def __init__(self):
self.tasklet_ref_to_last_id = {}
@@ -39,11 +39,10 @@ def __setitem__(self, tasklet, last_id):
_tasklet_to_last_id = TaskletToLastId()
-#=======================================================================================================================
+# =======================================================================================================================
# _TaskletInfo
-#=======================================================================================================================
+# =======================================================================================================================
class _TaskletInfo:
-
_last_id = 0
def __init__(self, tasklet_weakref, tasklet):
@@ -64,21 +63,21 @@ def update_name(self):
tasklet = self.tasklet_weakref()
if tasklet:
if tasklet.blocked:
- state = 'blocked'
+ state = "blocked"
elif tasklet.paused:
- state = 'paused'
+ state = "paused"
elif tasklet.scheduled:
- state = 'scheduled'
+ state = "scheduled"
else:
- state = ''
+ state = ""
try:
name = tasklet.name
except AttributeError:
if tasklet.is_main:
- name = 'MainTasklet'
+ name = "MainTasklet"
else:
- name = 'Tasklet-%s' % (self._tasklet_id,)
+ name = "Tasklet-%s" % (self._tasklet_id,)
thread_id = tasklet.thread_id
if thread_id != -1:
@@ -100,14 +99,13 @@ def update_name(self):
tid = id(tasklet)
tasklet = None
else:
- state = 'dead'
- name = 'Tasklet-%s' % (self._tasklet_id,)
+ state = "dead"
+ name = "Tasklet-%s" % (self._tasklet_id,)
thread_name = ""
- tid = '-'
- self.tasklet_name = '%s %s %s (%s)' % (state, name, thread_name, tid)
+ tid = "-"
+ self.tasklet_name = "%s %s %s (%s)" % (state, name, thread_name, tid)
if not hasattr(stackless.tasklet, "trace_function"):
-
# bug https://bitbucket.org/stackless-dev/stackless/issue/42
# is not fixed. Stackless releases before 2014
def update_name(self):
@@ -117,9 +115,9 @@ def update_name(self):
name = tasklet.name
except AttributeError:
if tasklet.is_main:
- name = 'MainTasklet'
+ name = "MainTasklet"
else:
- name = 'Tasklet-%s' % (self._tasklet_id,)
+ name = "Tasklet-%s" % (self._tasklet_id,)
thread_id = tasklet.thread_id
for thread in threading.enumerate():
@@ -137,25 +135,25 @@ def update_name(self):
tid = id(tasklet)
tasklet = None
else:
- name = 'Tasklet-%s' % (self._tasklet_id,)
+ name = "Tasklet-%s" % (self._tasklet_id,)
thread_name = ""
- tid = '-'
- self.tasklet_name = '%s %s (%s)' % (name, thread_name, tid)
+ tid = "-"
+ self.tasklet_name = "%s %s (%s)" % (name, thread_name, tid)
_weak_tasklet_registered_to_info = {}
-#=======================================================================================================================
+# =======================================================================================================================
# get_tasklet_info
-#=======================================================================================================================
+# =======================================================================================================================
def get_tasklet_info(tasklet):
return register_tasklet_info(tasklet)
-#=======================================================================================================================
+# =======================================================================================================================
# register_tasklet_info
-#=======================================================================================================================
+# =======================================================================================================================
def register_tasklet_info(tasklet):
r = weakref.ref(tasklet)
info = _weak_tasklet_registered_to_info.get(r)
@@ -168,13 +166,13 @@ def register_tasklet_info(tasklet):
_application_set_schedule_callback = None
-#=======================================================================================================================
+# =======================================================================================================================
# _schedule_callback
-#=======================================================================================================================
+# =======================================================================================================================
def _schedule_callback(prev, next):
- '''
+ """
Called when a context is stopped or a new context is made runnable.
- '''
+ """
try:
if not prev and not next:
return
@@ -191,7 +189,7 @@ def _schedule_callback(prev, next):
frame = next.frame
if frame is current_frame:
frame = frame.f_back
- if hasattr(frame, 'f_trace'): # Note: can be None (but hasattr should cover for that too).
+ if hasattr(frame, "f_trace"): # Note: can be None (but hasattr should cover for that too).
frame.f_trace = debugger.get_thread_local_trace_func()
debugger = None
@@ -249,14 +247,13 @@ def _schedule_callback(prev, next):
if not hasattr(stackless.tasklet, "trace_function"):
-
# Older versions of Stackless, released before 2014
# This code does not work reliable! It is affected by several
# stackless bugs: Stackless issues #44, #42, #40
def _schedule_callback(prev, next):
- '''
+ """
Called when a context is stopped or a new context is made runnable.
- '''
+ """
try:
if not prev and not next:
return
@@ -267,7 +264,7 @@ def _schedule_callback(prev, next):
# Ok, making next runnable: set the tracing facility in it.
debugger = get_global_debugger()
if debugger is not None and next.frame:
- if hasattr(next.frame, 'f_trace'):
+ if hasattr(next.frame, "f_trace"):
next.frame.f_trace = debugger.get_thread_local_trace_func()
debugger = None
@@ -316,18 +313,17 @@ def _schedule_callback(prev, next):
_original_setup = stackless.tasklet.setup
- #=======================================================================================================================
+ # =======================================================================================================================
# setup
- #=======================================================================================================================
+ # =======================================================================================================================
def setup(self, *args, **kwargs):
- '''
+ """
Called to run a new tasklet: rebind the creation so that we can trace it.
- '''
+ """
f = self.tempval
def new_f(old_f, args, kwargs):
-
debugger = get_global_debugger()
if debugger is not None:
debugger.enable_tracing()
@@ -350,21 +346,21 @@ def new_f(old_f, args, kwargs):
return _original_setup(self, f, args, kwargs)
- #=======================================================================================================================
+ # =======================================================================================================================
# __call__
- #=======================================================================================================================
+ # =======================================================================================================================
def __call__(self, *args, **kwargs):
- '''
+ """
Called to run a new tasklet: rebind the creation so that we can trace it.
- '''
+ """
return setup(self, *args, **kwargs)
_original_run = stackless.run
- #=======================================================================================================================
+ # =======================================================================================================================
# run
- #=======================================================================================================================
+ # =======================================================================================================================
def run(*args, **kwargs):
debugger = get_global_debugger()
if debugger is not None:
@@ -374,14 +370,14 @@ def run(*args, **kwargs):
return _original_run(*args, **kwargs)
-#=======================================================================================================================
+# =======================================================================================================================
# patch_stackless
-#=======================================================================================================================
+# =======================================================================================================================
def patch_stackless():
- '''
+ """
This function should be called to patch the stackless module so that new tasklets are properly tracked in the
debugger.
- '''
+ """
global _application_set_schedule_callback
_application_set_schedule_callback = stackless.set_schedule_callback(_schedule_callback)
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py
index 34c404d0e..b82823229 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py
@@ -1,8 +1,7 @@
from contextlib import contextmanager
import sys
-from _pydevd_bundle.pydevd_constants import get_frame, RETURN_VALUES_DICT, \
- ForkSafeLock, GENERATED_LEN_ATTR_NAME, silence_warnings_decorator
+from _pydevd_bundle.pydevd_constants import get_frame, RETURN_VALUES_DICT, ForkSafeLock, GENERATED_LEN_ATTR_NAME, silence_warnings_decorator
from _pydevd_bundle.pydevd_xml import get_variable_details, get_type
from _pydev_bundle.pydev_override import overrides
from _pydevd_bundle.pydevd_resolver import sorted_attributes_key, TOO_LARGE_ATTR, get_var_scope
@@ -16,7 +15,6 @@
class _AbstractVariable(object):
-
# Default attributes in class, set in instance.
name = None
@@ -36,8 +34,8 @@ def get_value(self):
def get_variable_reference(self):
return id(self.value)
- def get_var_data(self, fmt: Optional[dict]=None, context: Optional[str]=None, **safe_repr_custom_attrs):
- '''
+ def get_var_data(self, fmt: Optional[dict] = None, context: Optional[str] = None, **safe_repr_custom_attrs):
+ """
:param dict fmt:
Format expected by the DAP (keys: 'hex': bool, 'rawString': bool)
@@ -47,58 +45,59 @@ def get_var_data(self, fmt: Optional[dict]=None, context: Optional[str]=None, **
"repl",
"hover",
"clipboard"
- '''
+ """
timer = Timer()
safe_repr = SafeRepr()
if fmt is not None:
- safe_repr.convert_to_hex = fmt.get('hex', False)
- safe_repr.raw_value = fmt.get('rawString', False)
+ safe_repr.convert_to_hex = fmt.get("hex", False)
+ safe_repr.raw_value = fmt.get("rawString", False)
for key, val in safe_repr_custom_attrs.items():
setattr(safe_repr, key, val)
type_name, _type_qualifier, _is_exception_on_eval, resolver, value = get_variable_details(
- self.value, to_string=safe_repr, context=context)
+ self.value, to_string=safe_repr, context=context
+ )
- is_raw_string = type_name in ('str', 'bytes', 'bytearray')
+ is_raw_string = type_name in ("str", "bytes", "bytearray")
attributes = []
if is_raw_string:
- attributes.append('rawString')
+ attributes.append("rawString")
name = self.name
if self._is_return_value:
- attributes.append('readOnly')
- name = '(return) %s' % (name,)
+ attributes.append("readOnly")
+ name = "(return) %s" % (name,)
elif name in (TOO_LARGE_ATTR, GENERATED_LEN_ATTR_NAME):
- attributes.append('readOnly')
+ attributes.append("readOnly")
try:
if self.value.__class__ == DAPGrouper:
- type_name = ''
+ type_name = ""
except:
pass # Ignore errors accessing __class__.
var_data = {
- 'name': name,
- 'value': value,
- 'type': type_name,
+ "name": name,
+ "value": value,
+ "type": type_name,
}
if self.evaluate_name is not None:
- var_data['evaluateName'] = self.evaluate_name
+ var_data["evaluateName"] = self.evaluate_name
if resolver is not None: # I.e.: it's a container
- var_data['variablesReference'] = self.get_variable_reference()
+ var_data["variablesReference"] = self.get_variable_reference()
else:
- var_data['variablesReference'] = 0 # It's mandatory (although if == 0 it doesn't have children).
+ var_data["variablesReference"] = 0 # It's mandatory (although if == 0 it doesn't have children).
if len(attributes) > 0:
- var_data['presentationHint'] = {'attributes': attributes}
+ var_data["presentationHint"] = {"attributes": attributes}
- timer.report_if_compute_repr_attr_slow('', name, type_name)
+ timer.report_if_compute_repr_attr_slow("", name, type_name)
return var_data
def get_children_variables(self, fmt=None, scope=None):
@@ -126,10 +125,10 @@ def _group_entries(self, lst, handle_return_values):
entry = (attr_name, attr_value, evaluate_name)
if scope:
presentation = get_presentation(scope)
- if presentation == 'hide':
+ if presentation == "hide":
continue
- elif presentation == 'inline':
+ elif presentation == "inline":
new_lst.append(entry)
else: # group
@@ -153,7 +152,6 @@ def _group_entries(self, lst, handle_return_values):
class _ObjectVariable(_AbstractVariable):
-
def __init__(self, py_db, name, value, register_variable, is_return_value=False, evaluate_name=None, frame=None):
_AbstractVariable.__init__(self, py_db)
self.frame = frame
@@ -171,7 +169,7 @@ def get_children_variables(self, fmt=None, scope=None):
children_variables = []
if resolver is not None: # i.e.: it's a container.
- if hasattr(resolver, 'get_contents_debug_adapter_protocol'):
+ if hasattr(resolver, "get_contents_debug_adapter_protocol"):
# The get_contents_debug_adapter_protocol needs to return sorted.
lst = resolver.get_contents_debug_adapter_protocol(self.value, fmt=fmt)
else:
@@ -192,8 +190,7 @@ def get_children_variables(self, fmt=None, scope=None):
evaluate_name = evaluate_name(parent_evaluate_name)
else:
evaluate_name = parent_evaluate_name + evaluate_name
- variable = _ObjectVariable(
- self.py_db, key, val, self._register_variable, evaluate_name=evaluate_name, frame=self.frame)
+ variable = _ObjectVariable(self.py_db, key, val, self._register_variable, evaluate_name=evaluate_name, frame=self.frame)
children_variables.append(variable)
else:
for key, val, evaluate_name in lst:
@@ -204,13 +201,12 @@ def get_children_variables(self, fmt=None, scope=None):
return children_variables
def change_variable(self, name, value, py_db, fmt=None):
-
children_variable = self.get_child_variable_named(name)
if children_variable is None:
return None
var_data = children_variable.get_var_data()
- evaluate_name = var_data.get('evaluateName')
+ evaluate_name = var_data.get("evaluateName")
if not evaluate_name:
# Note: right now we only pass control to the resolver in the cases where
@@ -218,15 +214,14 @@ def change_variable(self, name, value, py_db, fmt=None):
# we can use that evaluation to set the value too -- if in the future
# a case where this isn't true is found this logic may need to be changed).
_type, _type_name, container_resolver = get_type(self.value)
- if hasattr(container_resolver, 'change_var_from_name'):
+ if hasattr(container_resolver, "change_var_from_name"):
try:
new_value = eval(value)
except:
return None
new_key = container_resolver.change_var_from_name(self.value, name, new_value)
if new_key is not None:
- return _ObjectVariable(
- self.py_db, new_key, new_value, self._register_variable, evaluate_name=None, frame=self.frame)
+ return _ObjectVariable(self.py_db, new_key, new_value, self._register_variable, evaluate_name=None, frame=self.frame)
return None
else:
@@ -238,7 +233,7 @@ def change_variable(self, name, value, py_db, fmt=None):
try:
# This handles the simple cases (such as dict, list, object)
- Exec('%s=%s' % (evaluate_name, value), frame.f_globals, frame.f_locals)
+ Exec("%s=%s" % (evaluate_name, value), frame.f_globals, frame.f_locals)
except:
return None
@@ -250,7 +245,6 @@ def sorted_variables_key(obj):
class _FrameVariable(_AbstractVariable):
-
def __init__(self, py_db, frame, register_variable):
_AbstractVariable.__init__(self, py_db)
self.frame = frame
@@ -276,19 +270,21 @@ def get_children_variables(self, fmt=None, scope=None):
assert isinstance(scope, ScopeRequest)
scope = scope.scope
- if scope in ('locals', None):
+ if scope in ("locals", None):
dct = self.frame.f_locals
- elif scope == 'globals':
+ elif scope == "globals":
dct = self.frame.f_globals
else:
- raise AssertionError('Unexpected scope: %s' % (scope,))
+ raise AssertionError("Unexpected scope: %s" % (scope,))
- lst, group_entries = self._group_entries([(x[0], x[1], None) for x in list(dct.items()) if x[0] != '_pydev_stop_at_break'], handle_return_values=True)
+ lst, group_entries = self._group_entries(
+ [(x[0], x[1], None) for x in list(dct.items()) if x[0] != "_pydev_stop_at_break"], handle_return_values=True
+ )
group_variables = []
for key, val, _ in group_entries:
# Make sure that the contents in the group are also sorted.
- val.contents_debug_adapter_protocol.sort(key=lambda v:sorted_attributes_key(v[0]))
+ val.contents_debug_adapter_protocol.sort(key=lambda v: sorted_attributes_key(v[0]))
variable = _ObjectVariable(self.py_db, key, val, self._register_variable, False, key, frame=self.frame)
group_variables.append(variable)
@@ -297,7 +293,14 @@ def get_children_variables(self, fmt=None, scope=None):
if is_return_value:
for return_key, return_value in val.items():
variable = _ObjectVariable(
- self.py_db, return_key, return_value, self._register_variable, is_return_value, '%s[%r]' % (key, return_key), frame=self.frame)
+ self.py_db,
+ return_key,
+ return_value,
+ self._register_variable,
+ is_return_value,
+ "%s[%r]" % (key, return_key),
+ frame=self.frame,
+ )
children_variables.append(variable)
else:
variable = _ObjectVariable(self.py_db, key, val, self._register_variable, is_return_value, key, frame=self.frame)
@@ -313,9 +316,9 @@ def get_children_variables(self, fmt=None, scope=None):
class _FramesTracker(object):
- '''
+ """
This is a helper class to be used to track frames when a thread becomes suspended.
- '''
+ """
def __init__(self, suspended_frames_manager, py_db):
self._suspended_frames_manager = suspended_frames_manager
@@ -342,7 +345,7 @@ def __init__(self, suspended_frames_manager, py_db):
self._untracked = False
# We need to be thread-safe!
- self._lock = ForkSafeLock()
+ self._lock = ForkSafeLock(rlock=True)
self._variable_reference_to_variable = {}
@@ -361,7 +364,8 @@ def obtain_as_variable(self, name, value, evaluate_name=None, frame=None):
# Still not created, let's do it now.
return _ObjectVariable(
- self.py_db, name, value, self._register_variable, is_return_value=False, evaluate_name=evaluate_name, frame=frame)
+ self.py_db, name, value, self._register_variable, is_return_value=False, evaluate_name=evaluate_name, frame=frame
+ )
def get_main_thread_id(self):
return self._main_thread_id
@@ -370,7 +374,7 @@ def get_variable(self, variable_reference):
return self._variable_reference_to_variable[variable_reference]
def track(self, thread_id, frames_list, frame_custom_thread_id=None):
- '''
+ """
:param thread_id:
The thread id to be used for this frame.
@@ -379,19 +383,18 @@ def track(self, thread_id, frames_list, frame_custom_thread_id=None):
:param frame_custom_thread_id:
If None this this is the id of the thread id for the custom frame (i.e.: coroutine).
- '''
+ """
assert frames_list.__class__ == FramesList
with self._lock:
coroutine_or_main_thread_id = frame_custom_thread_id or thread_id
if coroutine_or_main_thread_id in self._suspended_frames_manager._thread_id_to_tracker:
- sys.stderr.write('pydevd: Something is wrong. Tracker being added twice to the same thread id.\n')
+ sys.stderr.write("pydevd: Something is wrong. Tracker being added twice to the same thread id.\n")
self._suspended_frames_manager._thread_id_to_tracker[coroutine_or_main_thread_id] = self
self._main_thread_id = thread_id
- frame_ids_from_thread = self._thread_id_to_frame_ids.setdefault(
- coroutine_or_main_thread_id, [])
+ frame_ids_from_thread = self._thread_id_to_frame_ids.setdefault(coroutine_or_main_thread_id, [])
self._thread_id_to_frames_list[coroutine_or_main_thread_id] = frames_list
for frame in frames_list:
@@ -433,20 +436,20 @@ def find_frame(self, thread_id, frame_id):
with self._lock:
return self._frame_id_to_frame.get(frame_id)
- def create_thread_suspend_command(self, thread_id, stop_reason, message, suspend_type):
+ def create_thread_suspend_command(self, thread_id, stop_reason, message, trace_suspend_type, thread, additional_info):
with self._lock:
# First one is topmost frame suspended.
frames_list = self._thread_id_to_frames_list[thread_id]
cmd = self.py_db.cmd_factory.make_thread_suspend_message(
- self.py_db, thread_id, frames_list, stop_reason, message, suspend_type)
+ self.py_db, thread_id, frames_list, stop_reason, message, trace_suspend_type, thread, additional_info
+ )
frames_list = None
return cmd
class SuspendedFramesManager(object):
-
def __init__(self):
self._thread_id_to_fake_frames = {}
self._thread_id_to_tracker = {}
@@ -470,7 +473,7 @@ def _get_tracker_for_variable_reference(self, variable_reference):
return None
def get_thread_id_for_variable_reference(self, variable_reference):
- '''
+ """
We can't evaluate variable references values on any thread, only in the suspended
thread (the main reason for this is that in UI frameworks inspecting a UI object
from a different thread can potentially crash the application).
@@ -482,7 +485,7 @@ def get_thread_id_for_variable_reference(self, variable_reference):
:return str:
The thread id for the thread to be used to inspect the given variable reference or
None if the thread was already resumed.
- '''
+ """
frames_tracker = self._get_tracker_for_variable_reference(variable_reference)
if frames_tracker is not None:
return frames_tracker.get_main_thread_id()
@@ -492,9 +495,9 @@ def get_frame_tracker(self, thread_id):
return self._thread_id_to_tracker.get(thread_id)
def get_variable(self, variable_reference):
- '''
+ """
:raises KeyError
- '''
+ """
frames_tracker = self._get_tracker_for_variable_reference(variable_reference)
if frames_tracker is None:
raise KeyError()
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py
index 069b6b6a9..2d205c176 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py
@@ -1,9 +1,11 @@
from _pydevd_bundle import pydevd_utils
from _pydevd_bundle.pydevd_additional_thread_info import set_additional_thread_info
from _pydevd_bundle.pydevd_comm_constants import CMD_STEP_INTO, CMD_THREAD_SUSPEND
-from _pydevd_bundle.pydevd_constants import PYTHON_SUSPEND, STATE_SUSPEND, get_thread_id, STATE_RUN
+from _pydevd_bundle.pydevd_constants import PYTHON_SUSPEND, STATE_SUSPEND, get_thread_id, STATE_RUN, PYDEVD_USE_SYS_MONITORING
from _pydev_bundle._pydev_saved_modules import threading
from _pydev_bundle import pydev_log
+import sys
+from _pydevd_sys_monitoring import pydevd_sys_monitoring
def pydevd_find_thread_by_id(thread_id):
@@ -11,7 +13,7 @@ def pydevd_find_thread_by_id(thread_id):
threads = threading.enumerate()
for i in threads:
tid = get_thread_id(i)
- if thread_id == tid or thread_id.endswith('|' + tid):
+ if thread_id == tid or thread_id.endswith("|" + tid):
return i
# This can happen when a request comes for a thread which was previously removed.
@@ -23,7 +25,7 @@ def pydevd_find_thread_by_id(thread_id):
return None
-def mark_thread_suspended(thread, stop_reason, original_step_cmd=-1):
+def mark_thread_suspended(thread, stop_reason: int, original_step_cmd: int = -1):
info = set_additional_thread_info(thread)
info.suspend_type = PYTHON_SUSPEND
if original_step_cmd != -1:
@@ -40,7 +42,7 @@ def mark_thread_suspended(thread, stop_reason, original_step_cmd=-1):
# Mark as suspended as the last thing.
info.pydev_state = STATE_SUSPEND
-
+ info.update_stepping_info()
return info
@@ -50,15 +52,16 @@ def internal_run_thread(thread, set_additional_thread_info):
info.pydev_step_cmd = -1
info.pydev_step_stop = None
info.pydev_state = STATE_RUN
+ info.update_stepping_info()
def resume_threads(thread_id, except_thread=None):
- pydev_log.info('Resuming threads: %s (except thread: %s)', thread_id, except_thread)
+ pydev_log.info("Resuming threads: %s (except thread: %s)", thread_id, except_thread)
threads = []
- if thread_id == '*':
+ if thread_id == "*":
threads = pydevd_utils.get_non_pydevd_threads()
- elif thread_id.startswith('__frame__:'):
+ elif thread_id.startswith("__frame__:"):
pydev_log.critical("Can't make tasklet run: %s", thread_id)
else:
@@ -66,21 +69,24 @@ def resume_threads(thread_id, except_thread=None):
for t in threads:
if t is None or t is except_thread:
- pydev_log.info('Skipped resuming thread: %s', t)
+ pydev_log.info("Skipped resuming thread: %s", t)
continue
internal_run_thread(t, set_additional_thread_info=set_additional_thread_info)
def suspend_all_threads(py_db, except_thread):
- '''
+ """
Suspend all except the one passed as a parameter.
:param except_thread:
- '''
- pydev_log.info('Suspending all threads except: %s', except_thread)
+ """
+ if PYDEVD_USE_SYS_MONITORING:
+ pydevd_sys_monitoring.update_monitor_events(suspend_requested=True)
+
+ pydev_log.info("Suspending all threads except: %s", except_thread)
all_threads = pydevd_utils.get_non_pydevd_threads()
for t in all_threads:
- if getattr(t, 'pydev_do_not_trace', None):
+ if getattr(t, "pydev_do_not_trace", None):
pass # skip some other threads, i.e. ipython history saving thread from debug console
else:
if t is except_thread:
@@ -91,6 +97,10 @@ def suspend_all_threads(py_db, except_thread):
# Reset the tracing as in this case as it could've set scopes to be untraced.
if frame is not None:
try:
- py_db.set_trace_for_frame_and_parents(frame)
+ py_db.set_trace_for_frame_and_parents(t.ident, frame)
finally:
frame = None
+
+ if PYDEVD_USE_SYS_MONITORING:
+ # After suspending the frames we need the monitoring to be reset.
+ pydevd_sys_monitoring.restart_events()
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py
index 4a18cafc2..e9c30bcc8 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py
@@ -1,4 +1,4 @@
-from _pydev_bundle._pydev_saved_modules import threading
+from _pydev_bundle._pydev_saved_modules import ThreadingEvent, ThreadingLock, threading_current_thread
from _pydevd_bundle.pydevd_daemon_thread import PyDBDaemonThread
from _pydevd_bundle.pydevd_constants import thread_get_ident, IS_CPYTHON, NULL
import ctypes
@@ -12,7 +12,7 @@
class _TimeoutThread(PyDBDaemonThread):
- '''
+ """
The idea in this class is that it should be usually stopped waiting
for the next event to be called (paused in a threading.Event.wait).
@@ -20,26 +20,26 @@ class _TimeoutThread(PyDBDaemonThread):
then keeps on waiting as needed again.
This is done so that it's a bit more optimized than creating many Timer threads.
- '''
+ """
def __init__(self, py_db):
PyDBDaemonThread.__init__(self, py_db)
- self._event = threading.Event()
+ self._event = ThreadingEvent()
self._handles = []
# We could probably do things valid without this lock so that it's possible to add
# handles while processing, but the implementation would also be harder to follow,
# so, for now, we're either processing or adding handles, not both at the same time.
- self._lock = threading.Lock()
+ self._lock = ThreadingLock()
def _on_run(self):
wait_time = None
while not self._kill_received:
if _DEBUG:
if wait_time is None:
- pydev_log.critical('pydevd_timeout: Wait until a new handle is added.')
+ pydev_log.critical("pydevd_timeout: Wait until a new handle is added.")
else:
- pydev_log.critical('pydevd_timeout: Next wait time: %s.', wait_time)
+ pydev_log.critical("pydevd_timeout: Next wait time: %s.", wait_time)
self._event.wait(wait_time)
if self._kill_received:
@@ -49,13 +49,13 @@ def _on_run(self):
wait_time = self.process_handles()
def process_handles(self):
- '''
+ """
:return int:
Returns the time we should be waiting for to process the next event properly.
- '''
+ """
with self._lock:
if _DEBUG:
- pydev_log.critical('pydevd_timeout: Processing handles')
+ pydev_log.critical("pydevd_timeout: Processing handles")
self._event.clear()
handles = self._handles
new_handles = self._handles = []
@@ -71,7 +71,7 @@ def process_handles(self):
if curtime < handle.abs_timeout and not handle.disposed:
# It still didn't time out.
if _DEBUG:
- pydev_log.critical('pydevd_timeout: Handle NOT processed: %s', handle)
+ pydev_log.critical("pydevd_timeout: Handle NOT processed: %s", handle)
new_handles.append(handle)
if min_handle_timeout is None:
min_handle_timeout = handle.abs_timeout
@@ -81,7 +81,7 @@ def process_handles(self):
else:
if _DEBUG:
- pydev_log.critical('pydevd_timeout: Handle processed: %s', handle)
+ pydev_log.critical("pydevd_timeout: Handle processed: %s", handle)
# Timed out (or disposed), so, let's execute it (should be no-op if disposed).
handle.exec_on_timeout()
@@ -90,7 +90,7 @@ def process_handles(self):
else:
timeout = min_handle_timeout - curtime
if timeout <= 0:
- pydev_log.critical('pydevd_timeout: Expected timeout to be > 0. Found: %s', timeout)
+ pydev_log.critical("pydevd_timeout: Expected timeout to be > 0. Found: %s", timeout)
return timeout
@@ -106,9 +106,8 @@ def add_on_timeout_handle(self, handle):
class _OnTimeoutHandle(object):
-
def __init__(self, tracker, abs_timeout, on_timeout, kwargs):
- self._str = '_OnTimeoutHandle(%s)' % (on_timeout,)
+ self._str = "_OnTimeoutHandle(%s)" % (on_timeout,)
self._tracker = weakref.ref(tracker)
self.abs_timeout = abs_timeout
@@ -130,11 +129,11 @@ def exec_on_timeout(self):
try:
if _DEBUG:
- pydev_log.critical('pydevd_timeout: Calling on timeout: %s with kwargs: %s', on_timeout, kwargs)
+ pydev_log.critical("pydevd_timeout: Calling on timeout: %s with kwargs: %s", on_timeout, kwargs)
on_timeout(**kwargs)
except Exception:
- pydev_log.exception('pydevd_timeout: Exception on callback timeout.')
+ pydev_log.exception("pydevd_timeout: Exception on callback timeout.")
def __enter__(self):
pass
@@ -159,17 +158,17 @@ def __str__(self):
class TimeoutTracker(object):
- '''
+ """
This is a helper class to track the timeout of something.
- '''
+ """
def __init__(self, py_db):
self._thread = None
- self._lock = threading.Lock()
+ self._lock = ThreadingLock()
self._py_db = weakref.ref(py_db)
def call_on_timeout(self, timeout, on_timeout, kwargs=None):
- '''
+ """
This can be called regularly to always execute the given function after a given timeout:
call_on_timeout(py_db, 10, on_timeout)
@@ -182,11 +181,11 @@ def call_on_timeout(self, timeout, on_timeout, kwargs=None):
...
Note: the callback will be called from a PyDBDaemonThread.
- '''
+ """
with self._lock:
if self._thread is None:
if _DEBUG:
- pydev_log.critical('pydevd_timeout: Created _TimeoutThread.')
+ pydev_log.critical("pydevd_timeout: Created _TimeoutThread.")
self._thread = _TimeoutThread(self._py_db())
self._thread.start()
@@ -194,13 +193,13 @@ def call_on_timeout(self, timeout, on_timeout, kwargs=None):
curtime = time.time()
handle = _OnTimeoutHandle(self, curtime + timeout, on_timeout, kwargs)
if _DEBUG:
- pydev_log.critical('pydevd_timeout: Added handle: %s.', handle)
+ pydev_log.critical("pydevd_timeout: Added handle: %s.", handle)
self._thread.add_on_timeout_handle(handle)
return handle
def create_interrupt_this_thread_callback():
- '''
+ """
The idea here is returning a callback that when called will generate a KeyboardInterrupt
in the thread that called this function.
@@ -214,26 +213,25 @@ def create_interrupt_this_thread_callback():
:return callable:
Returns a callback that will interrupt the current thread (this may be called
from an auxiliary thread).
- '''
+ """
tid = thread_get_ident()
if is_current_thread_main_thread():
- main_thread = threading.current_thread()
+ main_thread = threading_current_thread()
def raise_on_this_thread():
- pydev_log.debug('Callback to interrupt main thread.')
+ pydev_log.debug("Callback to interrupt main thread.")
pydevd_utils.interrupt_main_thread(main_thread)
else:
-
# Note: this works in the sense that it can stop some cpu-intensive slow operation,
# but we can't really interrupt the thread out of some sleep or I/O operation
# (this will only be raised when Python is about to execute the next instruction).
def raise_on_this_thread():
if IS_CPYTHON:
- pydev_log.debug('Interrupt thread: %s', tid)
+ pydev_log.debug("Interrupt thread: %s", tid)
ctypes.pythonapi.PyThreadState_SetAsyncExc(ctypes.c_long(tid), ctypes.py_object(KeyboardInterrupt))
else:
- pydev_log.debug('It is only possible to interrupt non-main threads in CPython.')
+ pydev_log.debug("It is only possible to interrupt non-main threads in CPython.")
return raise_on_this_thread
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_api.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_api.py
deleted file mode 100644
index 77e8b3fad..000000000
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_api.py
+++ /dev/null
@@ -1,62 +0,0 @@
-def add_line_breakpoint(plugin, pydb, type, canonical_normalized_filename, breakpoint_id, line, condition, expression, func_name, hit_condition=None, is_logpoint=False, add_breakpoint_result=None, on_changed_breakpoint_state=None):
- return None
-
-
-def after_breakpoints_consolidated(py_db, canonical_normalized_filename, id_to_pybreakpoint, file_to_line_to_breakpoints):
- return None
-
-
-def add_exception_breakpoint(plugin, pydb, type, exception):
- return False
-
-
-def remove_exception_breakpoint(plugin, pydb, type, exception):
- return False
-
-
-def remove_all_exception_breakpoints(plugin, pydb):
- return False
-
-
-def get_breakpoints(plugin, pydb):
- return None
-
-
-def can_skip(plugin, pydb, frame):
- return True
-
-
-def has_exception_breaks(plugin):
- return False
-
-
-def has_line_breaks(plugin):
- return False
-
-
-def cmd_step_into(plugin, pydb, frame, event, args, stop_info, stop):
- return False
-
-
-def cmd_step_over(plugin, pydb, frame, event, args, stop_info, stop):
- return False
-
-
-def stop(plugin, pydb, frame, event, args, stop_info, arg, step_cmd):
- return False
-
-
-def get_breakpoint(plugin, pydb, pydb_frame, frame, event, args):
- return None
-
-
-def suspend(plugin, pydb, thread, frame):
- return None
-
-
-def exception_break(plugin, pydb, pydb_frame, frame, args, arg):
- return None
-
-
-def change_variable(plugin, frame, attr, expression):
- return False
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py
index 40a683770..19b83e328 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py
@@ -2,8 +2,7 @@
# Should give warning only here if cython is not available but supported.
import os
-from _pydevd_bundle.pydevd_constants import USE_CYTHON_FLAG, ENV_TRUE_LOWER_VALUES, \
- ENV_FALSE_LOWER_VALUES
+from _pydevd_bundle.pydevd_constants import USE_CYTHON_FLAG, ENV_TRUE_LOWER_VALUES, ENV_FALSE_LOWER_VALUES
from _pydev_bundle import pydev_log
dirname = os.path.dirname(os.path.dirname(__file__))
@@ -12,11 +11,13 @@
def delete_old_compiled_extensions():
import _pydevd_bundle
+
cython_extensions_dir = os.path.dirname(os.path.dirname(_pydevd_bundle.__file__))
_pydevd_bundle_ext_dir = os.path.dirname(_pydevd_bundle.__file__)
- _pydevd_frame_eval_ext_dir = os.path.join(cython_extensions_dir, '_pydevd_frame_eval_ext')
+ _pydevd_frame_eval_ext_dir = os.path.join(cython_extensions_dir, "_pydevd_frame_eval_ext")
try:
import shutil
+
for file in os.listdir(_pydevd_bundle_ext_dir):
if file.startswith("pydevd") and file.endswith(".so"):
os.remove(os.path.join(_pydevd_bundle_ext_dir, file))
@@ -27,36 +28,65 @@ def delete_old_compiled_extensions():
if os.path.exists(build_dir):
shutil.rmtree(os.path.join(cython_extensions_dir, "build"))
except OSError:
- pydev_log.error_once("warning: failed to delete old cython speedups. Please delete all *.so files from the directories "
- "\"%s\" and \"%s\"" % (_pydevd_bundle_ext_dir, _pydevd_frame_eval_ext_dir))
+ pydev_log.error_once(
+ "warning: failed to delete old cython speedups. Please delete all *.so files from the directories "
+ '"%s" and "%s"' % (_pydevd_bundle_ext_dir, _pydevd_frame_eval_ext_dir)
+ )
if USE_CYTHON_FLAG in ENV_TRUE_LOWER_VALUES:
# We must import the cython version if forcing cython
- from _pydevd_bundle.pydevd_cython_wrapper import trace_dispatch, global_cache_skips, global_cache_frame_skips, fix_top_level_trace_and_get_trace_func
+ from _pydevd_bundle.pydevd_cython_wrapper import (
+ trace_dispatch,
+ global_cache_skips,
+ global_cache_frame_skips,
+ fix_top_level_trace_and_get_trace_func,
+ )
+ from _pydevd_bundle.pydevd_cython_wrapper import should_stop_on_exception, handle_exception, is_unhandled_exception
+
USING_CYTHON = True
elif USE_CYTHON_FLAG in ENV_FALSE_LOWER_VALUES:
# Use the regular version if not forcing cython
- from _pydevd_bundle.pydevd_trace_dispatch_regular import trace_dispatch, global_cache_skips, global_cache_frame_skips, fix_top_level_trace_and_get_trace_func # @UnusedImport
+ from _pydevd_bundle.pydevd_trace_dispatch_regular import (
+ trace_dispatch,
+ global_cache_skips,
+ global_cache_frame_skips,
+ fix_top_level_trace_and_get_trace_func,
+ ) # @UnusedImport
+ from .pydevd_frame import should_stop_on_exception, handle_exception, is_unhandled_exception
else:
# Regular: use fallback if not found and give message to user
try:
- from _pydevd_bundle.pydevd_cython_wrapper import trace_dispatch, global_cache_skips, global_cache_frame_skips, fix_top_level_trace_and_get_trace_func
+ from _pydevd_bundle.pydevd_cython_wrapper import (
+ trace_dispatch,
+ global_cache_skips,
+ global_cache_frame_skips,
+ fix_top_level_trace_and_get_trace_func,
+ )
+ from _pydevd_bundle.pydevd_cython_wrapper import should_stop_on_exception, handle_exception, is_unhandled_exception
# This version number is always available
from _pydevd_bundle.pydevd_additional_thread_info_regular import version as regular_version
+
# This version number from the already compiled cython extension
from _pydevd_bundle.pydevd_cython_wrapper import version as cython_version
+
if cython_version != regular_version:
# delete_old_compiled_extensions() -- would be ok in dev mode but we don't want to erase
# files from other python versions on release, so, just raise import error here.
- raise ImportError('Cython version of speedups does not match.')
+ raise ImportError("Cython version of speedups does not match.")
else:
USING_CYTHON = True
except ImportError:
- from _pydevd_bundle.pydevd_trace_dispatch_regular import trace_dispatch, global_cache_skips, global_cache_frame_skips, fix_top_level_trace_and_get_trace_func # @UnusedImport
- pydev_log.show_compile_cython_command_line()
+ from _pydevd_bundle.pydevd_trace_dispatch_regular import (
+ trace_dispatch,
+ global_cache_skips,
+ global_cache_frame_skips,
+ fix_top_level_trace_and_get_trace_func,
+ ) # @UnusedImport
+ from .pydevd_frame import should_stop_on_exception, handle_exception, is_unhandled_exception
+ pydev_log.show_compile_cython_command_line()
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py
index 88a3f0832..2382867a4 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py
@@ -1,17 +1,25 @@
from _pydev_bundle.pydev_is_thread_alive import is_thread_alive
from _pydev_bundle.pydev_log import exception as pydev_log_exception
from _pydev_bundle._pydev_saved_modules import threading
-from _pydevd_bundle.pydevd_constants import (get_current_thread_id, NO_FTRACE,
- USE_CUSTOM_SYS_CURRENT_FRAMES_MAP, ForkSafeLock)
+from _pydevd_bundle.pydevd_constants import (
+ get_current_thread_id,
+ NO_FTRACE,
+ USE_CUSTOM_SYS_CURRENT_FRAMES_MAP,
+ ForkSafeLock,
+ PYDEVD_USE_SYS_MONITORING,
+)
from pydevd_file_utils import get_abs_path_real_path_and_base_from_frame, NORM_PATHS_AND_BASE_CONTAINER
+# fmt: off
# IFDEF CYTHON
# from cpython.object cimport PyObject
# from cpython.ref cimport Py_INCREF, Py_XDECREF
# ELSE
from _pydevd_bundle.pydevd_frame import PyDBFrame, is_unhandled_exception
# ENDIF
+# fmt: on
+# fmt: off
# IFDEF CYTHON
# cdef dict _global_notify_skipped_step_in
# cython_inline_constant: CMD_STEP_INTO = 107
@@ -25,6 +33,7 @@
CMD_STEP_RETURN = 109
CMD_STEP_RETURN_MY_CODE = 160
# ENDIF
+# fmt: on
# Cache where we should keep that we completely skipped entering some context.
# It needs to be invalidated when:
@@ -48,6 +57,8 @@ def notify_skipped_step_in_because_of_filters(py_db, frame):
_global_notify_skipped_step_in = True
py_db.notify_skipped_step_in_because_of_filters(frame)
+
+# fmt: off
# IFDEF CYTHON
# cdef class SafeCallWrapper:
# cdef method_object
@@ -65,14 +76,17 @@ def notify_skipped_step_in_because_of_filters(py_db, frame):
# return self.method_object
# ELSE
# ENDIF
+# fmt: on
def fix_top_level_trace_and_get_trace_func(py_db, frame):
+ # fmt: off
# IFDEF CYTHON
# cdef str filename;
# cdef str name;
# cdef tuple args;
# ENDIF
+ # fmt: on
# Note: this is always the first entry-point in the tracing for any thread.
# After entering here we'll set a new tracing function for this thread
@@ -90,45 +104,45 @@ def fix_top_level_trace_and_get_trace_func(py_db, frame):
name = f_unhandled.f_code.co_filename
# basename
- i = name.rfind('/')
- j = name.rfind('\\')
+ i = name.rfind("/")
+ j = name.rfind("\\")
if j > i:
i = j
if i >= 0:
- name = name[i + 1:]
+ name = name[i + 1 :]
# remove ext
- i = name.rfind('.')
+ i = name.rfind(".")
if i >= 0:
name = name[:i]
- if name == 'threading':
- if f_unhandled.f_code.co_name in ('__bootstrap', '_bootstrap'):
+ if name == "threading":
+ if f_unhandled.f_code.co_name in ("__bootstrap", "_bootstrap"):
# We need __bootstrap_inner, not __bootstrap.
return None, False
- elif f_unhandled.f_code.co_name in ('__bootstrap_inner', '_bootstrap_inner'):
+ elif f_unhandled.f_code.co_name in ("__bootstrap_inner", "_bootstrap_inner"):
# Note: be careful not to use threading.currentThread to avoid creating a dummy thread.
- t = f_unhandled.f_locals.get('self')
+ t = f_unhandled.f_locals.get("self")
force_only_unhandled_tracer = True
if t is not None and isinstance(t, threading.Thread):
thread = t
break
- elif name == 'pydev_monkey':
- if f_unhandled.f_code.co_name == '__call__':
+ elif name == "pydev_monkey":
+ if f_unhandled.f_code.co_name == "__call__":
force_only_unhandled_tracer = True
break
- elif name == 'pydevd':
- if f_unhandled.f_code.co_name in ('run', 'main'):
+ elif name == "pydevd":
+ if f_unhandled.f_code.co_name in ("run", "main"):
# We need to get to _exec
return None, False
- if f_unhandled.f_code.co_name == '_exec':
+ if f_unhandled.f_code.co_name == "_exec":
force_only_unhandled_tracer = True
break
- elif name == 'pydevd_tracing':
+ elif name == "pydevd_tracing":
return None, False
elif f_unhandled.f_back is None:
@@ -147,7 +161,7 @@ def fix_top_level_trace_and_get_trace_func(py_db, frame):
# Jython does not have threading.get_ident().
thread = py_db.threading_current_thread()
- if getattr(thread, 'pydev_do_not_trace', None):
+ if getattr(thread, "pydev_do_not_trace", None):
py_db.disable_tracing()
return None, False
@@ -165,19 +179,25 @@ def fix_top_level_trace_and_get_trace_func(py_db, frame):
if f_unhandled.f_back is None and not force_only_unhandled_tracer:
# Happens when we attach to a running program (cannot reuse instance because it's mutable).
top_level_thread_tracer = TopLevelThreadTracerNoBackFrame(ThreadTracer(args), args)
- additional_info.top_level_thread_tracer_no_back_frames.append(top_level_thread_tracer) # Hack for cython to keep it alive while the thread is alive (just the method in the SetTrace is not enough).
+ additional_info.top_level_thread_tracer_no_back_frames.append(
+ top_level_thread_tracer
+ ) # Hack for cython to keep it alive while the thread is alive (just the method in the SetTrace is not enough).
else:
top_level_thread_tracer = additional_info.top_level_thread_tracer_unhandled
if top_level_thread_tracer is None:
# Stop in some internal place to report about unhandled exceptions
top_level_thread_tracer = TopLevelThreadTracerOnlyUnhandledExceptions(args)
- additional_info.top_level_thread_tracer_unhandled = top_level_thread_tracer # Hack for cython to keep it alive while the thread is alive (just the method in the SetTrace is not enough).
+ additional_info.top_level_thread_tracer_unhandled = (
+ top_level_thread_tracer
+ ) # Hack for cython to keep it alive while the thread is alive (just the method in the SetTrace is not enough).
# print(' --> found to trace unhandled', f_unhandled.f_code.co_name, f_unhandled.f_code.co_filename, f_unhandled.f_code.co_firstlineno)
f_trace = top_level_thread_tracer.get_trace_dispatch_func()
+ # fmt: off
# IFDEF CYTHON
# f_trace = SafeCallWrapper(f_trace)
# ENDIF
+ # fmt: on
f_unhandled.f_trace = f_trace
if frame is f_unhandled:
@@ -188,22 +208,25 @@ def fix_top_level_trace_and_get_trace_func(py_db, frame):
thread_tracer = ThreadTracer(args)
additional_info.thread_tracer = thread_tracer
-# IFDEF CYTHON
-# return SafeCallWrapper(thread_tracer), True
-# ELSE
+ # fmt: off
+ # IFDEF CYTHON
+ # return SafeCallWrapper(thread_tracer), True
+ # ELSE
return thread_tracer, True
-# ENDIF
+ # ENDIF
+ # fmt: on
def trace_dispatch(py_db, frame, event, arg):
thread_trace_func, apply_to_settrace = py_db.fix_top_level_trace_and_get_trace_func(py_db, frame)
if thread_trace_func is None:
- return None if event == 'call' else NO_FTRACE
+ return None if event == "call" else NO_FTRACE
if apply_to_settrace:
py_db.enable_tracing(thread_trace_func)
return thread_trace_func(frame, event, arg)
+# fmt: off
# IFDEF CYTHON
# cdef class TopLevelThreadTracerOnlyUnhandledExceptions:
# cdef public tuple _args;
@@ -211,15 +234,16 @@ def trace_dispatch(py_db, frame, event, arg):
# self._args = args
# ELSE
class TopLevelThreadTracerOnlyUnhandledExceptions(object):
-
def __init__(self, args):
self._args = args
+
# ENDIF
+# fmt: on
def trace_unhandled_exceptions(self, frame, event, arg):
# Note that we ignore the frame as this tracing method should only be put in topmost frames already.
# print('trace_unhandled_exceptions', event, frame.f_code.co_name, frame.f_code.co_filename, frame.f_code.co_firstlineno)
- if event == 'exception' and arg is not None:
+ if event == "exception" and arg is not None:
py_db, t, additional_info = self._args[0:3]
if arg is not None:
if not additional_info.suspended_at_unhandled:
@@ -233,7 +257,7 @@ def trace_unhandled_exceptions(self, frame, event, arg):
def get_trace_dispatch_func(self):
return self.trace_unhandled_exceptions
-
+# fmt: off
# IFDEF CYTHON
# cdef class TopLevelThreadTracerNoBackFrame:
#
@@ -253,7 +277,7 @@ def get_trace_dispatch_func(self):
# self._last_raise_line = -1
# ELSE
class TopLevelThreadTracerNoBackFrame(object):
- '''
+ """
This tracer is pretty special in that it's dealing with a frame without f_back (i.e.: top frame
on remote attach or QThread).
@@ -263,7 +287,7 @@ class TopLevelThreadTracerNoBackFrame(object):
work with in the tracing -- see: https://bugs.python.org/issue34099, so, we inspect bytecode to
determine if some exception will be traced or not... note that if this is not available -- such
as on Jython -- we consider any top-level exception to be unnhandled).
- '''
+ """
def __init__(self, frame_trace_dispatch, args):
self._frame_trace_dispatch = frame_trace_dispatch
@@ -272,7 +296,9 @@ def __init__(self, frame_trace_dispatch, args):
self._last_exc_arg = None
self._raise_lines = set()
self._last_raise_line = -1
+
# ENDIF
+# fmt: on
def trace_dispatch_and_unhandled_exceptions(self, frame, event, arg):
# DEBUG = 'code_to_debug' in frame.f_code.co_filename
@@ -281,12 +307,12 @@ def trace_dispatch_and_unhandled_exceptions(self, frame, event, arg):
if frame_trace_dispatch is not None:
self._frame_trace_dispatch = frame_trace_dispatch(frame, event, arg)
- if event == 'exception':
+ if event == "exception":
self._last_exc_arg = arg
self._raise_lines.add(frame.f_lineno)
self._last_raise_line = frame.f_lineno
- elif event == 'return' and self._last_exc_arg is not None:
+ elif event == "return" and self._last_exc_arg is not None:
# For unhandled exceptions we actually track the return when at the topmost level.
try:
py_db, t, additional_info = self._args[0:3]
@@ -300,17 +326,20 @@ def trace_dispatch_and_unhandled_exceptions(self, frame, event, arg):
ret = self.trace_dispatch_and_unhandled_exceptions
# Need to reset (the call to _frame_trace_dispatch may have changed it).
+ # fmt: off
# IFDEF CYTHON
# frame.f_trace = SafeCallWrapper(ret)
# ELSE
frame.f_trace = ret
# ENDIF
+ # fmt: on
return ret
def get_trace_dispatch_func(self):
return self.trace_dispatch_and_unhandled_exceptions
+# fmt: off
# IFDEF CYTHON
# cdef class ThreadTracer:
# cdef public tuple _args;
@@ -318,13 +347,14 @@ def get_trace_dispatch_func(self):
# self._args = args
# ELSE
class ThreadTracer(object):
-
def __init__(self, args):
self._args = args
+
# ENDIF
+# fmt: on
def __call__(self, frame, event, arg):
- ''' This is the callback used when we enter some context in the debugger.
+ """This is the callback used when we enter some context in the debugger.
We also decorate the thread we are in with info about the debugging.
The attributes added are:
@@ -335,7 +365,8 @@ def __call__(self, frame, event, arg):
:param PyDB py_db:
This is the global debugger (this method should actually be added as a method to it).
- '''
+ """
+ # fmt: off
# IFDEF CYTHON
# cdef str filename;
# cdef str base;
@@ -346,24 +377,25 @@ def __call__(self, frame, event, arg):
# cdef tuple abs_path_canonical_path_and_base;
# cdef PyDBAdditionalThreadInfo additional_info;
# ENDIF
+ # fmt: on
# DEBUG = 'code_to_debug' in frame.f_code.co_filename
# if DEBUG: print('ENTER: trace_dispatch: %s %s %s %s' % (frame.f_code.co_filename, frame.f_lineno, event, frame.f_code.co_name))
py_db, t, additional_info, cache_skips, frame_skips_cache = self._args
if additional_info.is_tracing:
- return None if event == 'call' else NO_FTRACE # we don't wan't to trace code invoked from pydevd_frame.trace_dispatch
+ return None if event == "call" else NO_FTRACE # we don't wan't to trace code invoked from pydevd_frame.trace_dispatch
additional_info.is_tracing += 1
try:
pydev_step_cmd = additional_info.pydev_step_cmd
is_stepping = pydev_step_cmd != -1
if py_db.pydb_disposed:
- return None if event == 'call' else NO_FTRACE
+ return None if event == "call" else NO_FTRACE
# if thread is not alive, cancel trace_dispatch processing
if not is_thread_alive(t):
py_db.notify_thread_not_alive(get_current_thread_id(t))
- return None if event == 'call' else NO_FTRACE
+ return None if event == "call" else NO_FTRACE
# Note: it's important that the context name is also given because we may hit something once
# in the global context and another in the local context.
@@ -371,23 +403,30 @@ def __call__(self, frame, event, arg):
if frame_cache_key in cache_skips:
if not is_stepping:
# if DEBUG: print('skipped: trace_dispatch (cache hit)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name)
- return None if event == 'call' else NO_FTRACE
+ return None if event == "call" else NO_FTRACE
else:
# When stepping we can't take into account caching based on the breakpoints (only global filtering).
if cache_skips.get(frame_cache_key) == 1:
-
- if additional_info.pydev_original_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE) and not _global_notify_skipped_step_in:
+ if (
+ additional_info.pydev_original_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE)
+ and not _global_notify_skipped_step_in
+ ):
notify_skipped_step_in_because_of_filters(py_db, frame)
back_frame = frame.f_back
- if back_frame is not None and pydev_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_RETURN, CMD_STEP_RETURN_MY_CODE):
+ if back_frame is not None and pydev_step_cmd in (
+ CMD_STEP_INTO,
+ CMD_STEP_INTO_MY_CODE,
+ CMD_STEP_RETURN,
+ CMD_STEP_RETURN_MY_CODE,
+ ):
back_frame_cache_key = back_frame.f_code
if cache_skips.get(back_frame_cache_key) == 1:
# if DEBUG: print('skipped: trace_dispatch (cache hit: 1)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name)
- return None if event == 'call' else NO_FTRACE
+ return None if event == "call" else NO_FTRACE
else:
# if DEBUG: print('skipped: trace_dispatch (cache hit: 2)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name)
- return None if event == 'call' else NO_FTRACE
+ return None if event == "call" else NO_FTRACE
try:
# Make fast path faster!
@@ -395,39 +434,50 @@ def __call__(self, frame, event, arg):
except:
abs_path_canonical_path_and_base = get_abs_path_real_path_and_base_from_frame(frame)
- file_type = py_db.get_file_type(frame, abs_path_canonical_path_and_base) # we don't want to debug threading or anything related to pydevd
+ file_type = py_db.get_file_type(
+ frame, abs_path_canonical_path_and_base
+ ) # we don't want to debug threading or anything related to pydevd
if file_type is not None:
if file_type == 1: # inlining LIB_FILE = 1
if not py_db.in_project_scope(frame, abs_path_canonical_path_and_base[0]):
# if DEBUG: print('skipped: trace_dispatch (not in scope)', abs_path_canonical_path_and_base[2], frame.f_lineno, event, frame.f_code.co_name, file_type)
cache_skips[frame_cache_key] = 1
- return None if event == 'call' else NO_FTRACE
+ return None if event == "call" else NO_FTRACE
else:
# if DEBUG: print('skipped: trace_dispatch', abs_path_canonical_path_and_base[2], frame.f_lineno, event, frame.f_code.co_name, file_type)
cache_skips[frame_cache_key] = 1
- return None if event == 'call' else NO_FTRACE
+ return None if event == "call" else NO_FTRACE
if py_db.is_files_filter_enabled:
if py_db.apply_files_filter(frame, abs_path_canonical_path_and_base[0], False):
cache_skips[frame_cache_key] = 1
- if is_stepping and additional_info.pydev_original_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE) and not _global_notify_skipped_step_in:
+ if (
+ is_stepping
+ and additional_info.pydev_original_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE)
+ and not _global_notify_skipped_step_in
+ ):
notify_skipped_step_in_because_of_filters(py_db, frame)
# A little gotcha, sometimes when we're stepping in we have to stop in a
# return event showing the back frame as the current frame, so, we need
# to check not only the current frame but the back frame too.
back_frame = frame.f_back
- if back_frame is not None and pydev_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_RETURN, CMD_STEP_RETURN_MY_CODE):
+ if back_frame is not None and pydev_step_cmd in (
+ CMD_STEP_INTO,
+ CMD_STEP_INTO_MY_CODE,
+ CMD_STEP_RETURN,
+ CMD_STEP_RETURN_MY_CODE,
+ ):
if py_db.apply_files_filter(back_frame, back_frame.f_code.co_filename, False):
back_frame_cache_key = back_frame.f_code
cache_skips[back_frame_cache_key] = 1
# if DEBUG: print('skipped: trace_dispatch (filtered out: 1)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name)
- return None if event == 'call' else NO_FTRACE
+ return None if event == "call" else NO_FTRACE
else:
# if DEBUG: print('skipped: trace_dispatch (filtered out: 2)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name)
- return None if event == 'call' else NO_FTRACE
+ return None if event == "call" else NO_FTRACE
# if DEBUG: print('trace_dispatch', filename, frame.f_lineno, event, frame.f_code.co_name, file_type)
@@ -435,28 +485,35 @@ def __call__(self, frame, event, arg):
# reference to the frame).
ret = PyDBFrame(
(
- py_db, abs_path_canonical_path_and_base, additional_info, t, frame_skips_cache, frame_cache_key,
+ py_db,
+ abs_path_canonical_path_and_base,
+ additional_info,
+ t,
+ frame_skips_cache,
+ frame_cache_key,
)
).trace_dispatch(frame, event, arg)
if ret is None:
# 1 means skipped because of filters.
# 2 means skipped because no breakpoints were hit.
cache_skips[frame_cache_key] = 2
- return None if event == 'call' else NO_FTRACE
+ return None if event == "call" else NO_FTRACE
+ # fmt: off
# IFDEF CYTHON
# frame.f_trace = SafeCallWrapper(ret) # Make sure we keep the returned tracer.
# ELSE
frame.f_trace = ret # Make sure we keep the returned tracer.
# ENDIF
+ # fmt: on
return ret
except SystemExit:
- return None if event == 'call' else NO_FTRACE
+ return None if event == "call" else NO_FTRACE
except Exception:
if py_db.pydb_disposed:
- return None if event == 'call' else NO_FTRACE # Don't log errors when we're shutting down.
+ return None if event == "call" else NO_FTRACE # Don't log errors when we're shutting down.
# Log it
try:
if pydev_log_exception is not None:
@@ -466,7 +523,7 @@ def __call__(self, frame, event, arg):
# Error logging? We're really in the interpreter shutdown...
# (https://github.com/fabioz/PyDev.Debugger/issues/8)
pass
- return None if event == 'call' else NO_FTRACE
+ return None if event == "call" else NO_FTRACE
finally:
additional_info.is_tracing -= 1
@@ -488,3 +545,8 @@ def __call__(self, frame, event, arg):
return _original_call(self, frame, event, arg)
ThreadTracer.__call__ = __call__
+
+if PYDEVD_USE_SYS_MONITORING:
+
+ def fix_top_level_trace_and_get_trace_func(*args, **kwargs):
+ raise RuntimeError("Not used in sys.monitoring mode.")
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py
index 2f38e4be8..c07e9534a 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py
@@ -1,27 +1,28 @@
-'''For debug purpose we are replacing actual builtin property by the debug property
-'''
+"""For debug purpose we are replacing actual builtin property by the debug property
+"""
from _pydevd_bundle.pydevd_comm import get_global_debugger
from _pydev_bundle import pydev_log
-#=======================================================================================================================
+# =======================================================================================================================
# replace_builtin_property
-#=======================================================================================================================
+# =======================================================================================================================
def replace_builtin_property(new_property=None):
if new_property is None:
new_property = DebugProperty
original = property
try:
import builtins
- builtins.__dict__['property'] = new_property
+
+ builtins.__dict__["property"] = new_property
except:
pydev_log.exception() # @Reimport
return original
-#=======================================================================================================================
+# =======================================================================================================================
# DebugProperty
-#=======================================================================================================================
+# =======================================================================================================================
class DebugProperty(object):
"""A custom property which allows python property to get
controlled by the debugger and selectively disable/re-enable
@@ -73,20 +74,16 @@ def __delete__(self, obj):
global_debugger.enable_tracing()
def getter(self, fget):
- """Overriding getter decorator for the property
- """
+ """Overriding getter decorator for the property"""
self.fget = fget
return self
def setter(self, fset):
- """Overriding setter decorator for the property
- """
+ """Overriding setter decorator for the property"""
self.fset = fset
return self
def deleter(self, fdel):
- """Overriding deleter decorator for the property
- """
+ """Overriding deleter decorator for the property"""
self.fdel = fdel
return self
-
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py
index b83e9b1aa..4ac447d37 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py
@@ -13,9 +13,15 @@
import time
import inspect
import sys
-from _pydevd_bundle.pydevd_constants import USE_CUSTOM_SYS_CURRENT_FRAMES, IS_PYPY, SUPPORT_GEVENT, \
- GEVENT_SUPPORT_NOT_SET_MSG, GENERATED_LEN_ATTR_NAME, PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT, \
- get_global_debugger
+from _pydevd_bundle.pydevd_constants import (
+ USE_CUSTOM_SYS_CURRENT_FRAMES,
+ IS_PYPY,
+ SUPPORT_GEVENT,
+ GEVENT_SUPPORT_NOT_SET_MSG,
+ GENERATED_LEN_ATTR_NAME,
+ PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT,
+ get_global_debugger,
+)
def save_main_module(file, module_name):
@@ -24,24 +30,24 @@ def save_main_module(file, module_name):
# This will prevent the pydevd script from contaminating the namespace for the script to be debugged
# pretend pydevd is not the main module, and
# convince the file to be debugged that it was loaded as main
- m = sys.modules[module_name] = sys.modules['__main__']
+ m = sys.modules[module_name] = sys.modules["__main__"]
m.__name__ = module_name
- loader = m.__loader__ if hasattr(m, '__loader__') else None
- spec = spec_from_file_location('__main__', file, loader=loader)
+ loader = m.__loader__ if hasattr(m, "__loader__") else None
+ spec = spec_from_file_location("__main__", file, loader=loader)
m = module_from_spec(spec)
- sys.modules['__main__'] = m
+ sys.modules["__main__"] = m
return m
def is_current_thread_main_thread():
- if hasattr(threading, 'main_thread'):
+ if hasattr(threading, "main_thread"):
return threading.current_thread() is threading.main_thread()
else:
return isinstance(threading.current_thread(), threading._MainThread)
def get_main_thread():
- if hasattr(threading, 'main_thread'):
+ if hasattr(threading, "main_thread"):
return threading.main_thread()
else:
for t in threading.enumerate():
@@ -58,9 +64,9 @@ def to_number(x):
except ValueError:
pass
- l = x.find('(')
+ l = x.find("(")
if l != -1:
- y = x[0:l - 1]
+ y = x[0 : l - 1]
# print y
try:
n = float(y)
@@ -97,7 +103,7 @@ def print_exc():
traceback.print_exc()
-def quote_smart(s, safe='/'):
+def quote_smart(s, safe="/"):
return quote(s, safe)
@@ -120,9 +126,9 @@ def get_clsname_for_code(code, frame):
if hasattr(first_arg_class, func_name):
method = getattr(first_arg_class, func_name)
func_code = None
- if hasattr(method, 'func_code'): # Python2
+ if hasattr(method, "func_code"): # Python2
func_code = method.func_code
- elif hasattr(method, '__code__'): # Python3
+ elif hasattr(method, "__code__"): # Python3
func_code = method.__code__
if func_code and func_code == code:
clsname = first_arg_class.__name__
@@ -132,7 +138,7 @@ def get_clsname_for_code(code, frame):
def get_non_pydevd_threads():
threads = threading.enumerate()
- return [t for t in threads if t and not getattr(t, 'is_pydev_daemon_thread', False)]
+ return [t for t in threads if t and not getattr(t, "is_pydev_daemon_thread", False)]
if USE_CUSTOM_SYS_CURRENT_FRAMES and IS_PYPY:
@@ -144,9 +150,9 @@ def get_non_pydevd_threads():
def dump_threads(stream=None, show_pydevd_threads=True):
- '''
+ """
Helper to dump thread info.
- '''
+ """
if stream is None:
stream = sys.stderr
thread_id_to_name_and_is_pydevd_thread = {}
@@ -156,17 +162,17 @@ def dump_threads(stream=None, show_pydevd_threads=True):
threading_enumerate = threading.enumerate
for t in threading_enumerate():
- is_pydevd_thread = getattr(t, 'is_pydev_daemon_thread', False)
+ is_pydevd_thread = getattr(t, "is_pydev_daemon_thread", False)
thread_id_to_name_and_is_pydevd_thread[t.ident] = (
- '%s (daemon: %s, pydevd thread: %s)' % (t.name, t.daemon, is_pydevd_thread),
- is_pydevd_thread
+ "%s (daemon: %s, pydevd thread: %s)" % (t.name, t.daemon, is_pydevd_thread),
+ is_pydevd_thread,
)
except:
pass
- stream.write('===============================================================================\n')
- stream.write('Threads running\n')
- stream.write('================================= Thread Dump =================================\n')
+ stream.write("===============================================================================\n")
+ stream.write("Threads running\n")
+ stream.write("================================= Thread Dump =================================\n")
stream.flush()
for thread_id, frame in _tid_to_frame_for_dump_threads().items():
@@ -174,26 +180,25 @@ def dump_threads(stream=None, show_pydevd_threads=True):
if not show_pydevd_threads and is_pydevd_thread:
continue
- stream.write('\n-------------------------------------------------------------------------------\n')
+ stream.write("\n-------------------------------------------------------------------------------\n")
stream.write(" Thread %s" % (name,))
- stream.write('\n\n')
+ stream.write("\n\n")
for i, (filename, lineno, name, line) in enumerate(traceback.extract_stack(frame)):
-
stream.write(' File "%s", line %d, in %s\n' % (filename, lineno, name))
if line:
stream.write(" %s\n" % (line.strip()))
- if i == 0 and 'self' in frame.f_locals:
- stream.write(' self: ')
+ if i == 0 and "self" in frame.f_locals:
+ stream.write(" self: ")
try:
- stream.write(str(frame.f_locals['self']))
+ stream.write(str(frame.f_locals["self"]))
except:
- stream.write('Unable to get str of: %s' % (type(frame.f_locals['self']),))
- stream.write('\n')
+ stream.write("Unable to get str of: %s" % (type(frame.f_locals["self"]),))
+ stream.write("\n")
stream.flush()
- stream.write('\n=============================== END Thread Dump ===============================')
+ stream.write("\n=============================== END Thread Dump ===============================")
stream.flush()
@@ -201,14 +206,14 @@ def _extract_variable_nested_braces(char_iter):
expression = []
level = 0
for c in char_iter:
- if c == '{':
+ if c == "{":
level += 1
- if c == '}':
+ if c == "}":
level -= 1
if level == -1:
- return ''.join(expression).strip()
+ return "".join(expression).strip()
expression.append(c)
- raise SyntaxError('Unbalanced braces in expression.')
+ raise SyntaxError("Unbalanced braces in expression.")
def _extract_expression_list(log_message):
@@ -217,15 +222,15 @@ def _extract_expression_list(log_message):
expression_vars = []
char_iter = iter(log_message)
for c in char_iter:
- if c == '{':
+ if c == "{":
expression_var = _extract_variable_nested_braces(char_iter)
if expression_var:
- expression.append('%s')
+ expression.append("%s")
expression_vars.append(expression_var)
else:
expression.append(c)
- expression = ''.join(expression)
+ expression = "".join(expression)
return expression, expression_vars
@@ -233,34 +238,34 @@ def convert_dap_log_message_to_expression(log_message):
try:
expression, expression_vars = _extract_expression_list(log_message)
except SyntaxError:
- return repr('Unbalanced braces in: %s' % (log_message))
+ return repr("Unbalanced braces in: %s" % (log_message))
if not expression_vars:
return repr(expression)
# Note: use '%' to be compatible with Python 2.6.
- return repr(expression) + ' % (' + ', '.join(str(x) for x in expression_vars) + ',)'
+ return repr(expression) + " % (" + ", ".join(str(x) for x in expression_vars) + ",)"
def notify_about_gevent_if_needed(stream=None):
- '''
+ """
When debugging with gevent check that the gevent flag is used if the user uses the gevent
monkey-patching.
:return bool:
Returns True if a message had to be shown to the user and False otherwise.
- '''
+ """
stream = stream if stream is not None else sys.stderr
if not SUPPORT_GEVENT:
- gevent_monkey = sys.modules.get('gevent.monkey')
+ gevent_monkey = sys.modules.get("gevent.monkey")
if gevent_monkey is not None:
try:
saved = gevent_monkey.saved
except AttributeError:
- pydev_log.exception_once('Error checking for gevent monkey-patching.')
+ pydev_log.exception_once("Error checking for gevent monkey-patching.")
return False
if saved:
# Note: print to stderr as it may deadlock the debugger.
- sys.stderr.write('%s\n' % (GEVENT_SUPPORT_NOT_SET_MSG,))
+ sys.stderr.write("%s\n" % (GEVENT_SUPPORT_NOT_SET_MSG,))
return True
return False
@@ -299,11 +304,10 @@ def isinstance_checked(obj, cls):
class ScopeRequest(object):
-
- __slots__ = ['variable_reference', 'scope']
+ __slots__ = ["variable_reference", "scope"]
def __init__(self, variable_reference, scope):
- assert scope in ('globals', 'locals')
+ assert scope in ("globals", "locals")
self.variable_reference = variable_reference
self.scope = scope
@@ -321,15 +325,15 @@ def __hash__(self):
class DAPGrouper(object):
- '''
+ """
Note: this is a helper class to group variables on the debug adapter protocol (DAP). For
the xml protocol the type is just added to each variable and the UI can group/hide it as needed.
- '''
+ """
- SCOPE_SPECIAL_VARS = 'special variables'
- SCOPE_PROTECTED_VARS = 'protected variables'
- SCOPE_FUNCTION_VARS = 'function variables'
- SCOPE_CLASS_VARS = 'class variables'
+ SCOPE_SPECIAL_VARS = "special variables"
+ SCOPE_PROTECTED_VARS = "protected variables"
+ SCOPE_FUNCTION_VARS = "function variables"
+ SCOPE_CLASS_VARS = "class variables"
SCOPES_SORTED = [
SCOPE_SPECIAL_VARS,
@@ -338,7 +342,7 @@ class DAPGrouper(object):
SCOPE_CLASS_VARS,
]
- __slots__ = ['variable_reference', 'scope', 'contents_debug_adapter_protocol']
+ __slots__ = ["variable_reference", "scope", "contents_debug_adapter_protocol"]
def __init__(self, scope):
self.variable_reference = id(self)
@@ -361,14 +365,14 @@ def __hash__(self):
return hash((self.variable_reference, self.scope))
def __repr__(self):
- return ''
+ return ""
def __str__(self):
- return ''
+ return ""
def interrupt_main_thread(main_thread=None):
- '''
+ """
Generates a KeyboardInterrupt in the main thread by sending a Ctrl+C
or by calling thread.interrupt_main().
@@ -378,21 +382,21 @@ def interrupt_main_thread(main_thread=None):
Note: if unable to send a Ctrl+C, the KeyboardInterrupt will only be raised
when the next Python instruction is about to be executed (so, it won't interrupt
a sleep(1000)).
- '''
+ """
if main_thread is None:
main_thread = threading.main_thread()
- pydev_log.debug('Interrupt main thread.')
+ pydev_log.debug("Interrupt main thread.")
called = False
try:
- if os.name == 'posix':
+ if os.name == "posix":
# On Linux we can't interrupt 0 as in Windows because it's
# actually owned by a process -- on the good side, signals
# work much better on Linux!
os.kill(os.getpid(), signal.SIGINT)
called = True
- elif os.name == 'nt':
+ elif os.name == "nt":
# This generates a Ctrl+C only for the current process and not
# to the process group!
# Note: there doesn't seem to be any public documentation for this
@@ -417,33 +421,32 @@ def interrupt_main_thread(main_thread=None):
except:
# If something went wrong, fallback to interrupting when the next
# Python instruction is being called.
- pydev_log.exception('Error interrupting main thread (using fallback).')
+ pydev_log.exception("Error interrupting main thread (using fallback).")
if not called:
try:
# In this case, we don't really interrupt a sleep() nor IO operations
# (this makes the KeyboardInterrupt be sent only when the next Python
# instruction is about to be executed).
- if hasattr(thread, 'interrupt_main'):
+ if hasattr(thread, "interrupt_main"):
thread.interrupt_main()
else:
main_thread._thread.interrupt() # Jython
except:
- pydev_log.exception('Error on interrupt main thread fallback.')
+ pydev_log.exception("Error on interrupt main thread fallback.")
class Timer(object):
-
def __init__(self, min_diff=PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT):
self.min_diff = min_diff
self._curr_time = time.time()
- def print_time(self, msg='Elapsed:'):
+ def print_time(self, msg="Elapsed:"):
old = self._curr_time
new = self._curr_time = time.time()
diff = new - old
if diff >= self.min_diff:
- print('%s: %.2fs' % (msg, diff))
+ print("%s: %.2fs" % (msg, diff))
def _report_slow(self, compute_msg, *args):
old = self._curr_time
@@ -465,16 +468,14 @@ def _compute_repr_slow(self, diff, attrs_tab_separated, attr_name, attr_type):
pass
if attrs_tab_separated:
return (
- 'pydevd warning: Computing repr of %s.%s (%s) was slow (took %.2fs).\n'
- 'Customize report timeout by setting the `PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT` environment variable to a higher timeout (default is: %ss)\n'
- ) % (
- attrs_tab_separated.replace('\t', '.'), attr_name, attr_type, diff, PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT)
+ "pydevd warning: Computing repr of %s.%s (%s) was slow (took %.2fs).\n"
+ "Customize report timeout by setting the `PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT` environment variable to a higher timeout (default is: %ss)\n"
+ ) % (attrs_tab_separated.replace("\t", "."), attr_name, attr_type, diff, PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT)
else:
return (
- 'pydevd warning: Computing repr of %s (%s) was slow (took %.2fs)\n'
- 'Customize report timeout by setting the `PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT` environment variable to a higher timeout (default is: %ss)\n'
- ) % (
- attr_name, attr_type, diff, PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT)
+ "pydevd warning: Computing repr of %s (%s) was slow (took %.2fs)\n"
+ "Customize report timeout by setting the `PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT` environment variable to a higher timeout (default is: %ss)\n"
+ ) % (attr_name, attr_type, diff, PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT)
def report_if_getting_attr_slow(self, cls, attr_name):
self._report_slow(self._compute_get_attr_slow, cls, attr_name)
@@ -485,32 +486,32 @@ def _compute_get_attr_slow(self, diff, cls, attr_name):
except:
pass
return (
- 'pydevd warning: Getting attribute %s.%s was slow (took %.2fs)\n'
- 'Customize report timeout by setting the `PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT` environment variable to a higher timeout (default is: %ss)\n'
- ) % (cls, attr_name, diff, PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT)
+ "pydevd warning: Getting attribute %s.%s was slow (took %.2fs)\n"
+ "Customize report timeout by setting the `PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT` environment variable to a higher timeout (default is: %ss)\n"
+ ) % (cls, attr_name, diff, PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT)
def import_attr_from_module(import_with_attr_access):
- if '.' not in import_with_attr_access:
+ if "." not in import_with_attr_access:
# We need at least one '.' (we don't support just the module import, we need the attribute access too).
- raise ImportError('Unable to import module with attr access: %s' % (import_with_attr_access,))
+ raise ImportError("Unable to import module with attr access: %s" % (import_with_attr_access,))
- module_name, attr_name = import_with_attr_access.rsplit('.', 1)
+ module_name, attr_name = import_with_attr_access.rsplit(".", 1)
while True:
try:
mod = import_module(module_name)
except ImportError:
- if '.' not in module_name:
- raise ImportError('Unable to import module with attr access: %s' % (import_with_attr_access,))
+ if "." not in module_name:
+ raise ImportError("Unable to import module with attr access: %s" % (import_with_attr_access,))
- module_name, new_attr_part = module_name.rsplit('.', 1)
- attr_name = new_attr_part + '.' + attr_name
+ module_name, new_attr_part = module_name.rsplit(".", 1)
+ attr_name = new_attr_part + "." + attr_name
else:
# Ok, we got the base module, now, get the attribute we need.
try:
- for attr in attr_name.split('.'):
+ for attr in attr_name.split("."):
mod = getattr(mod, attr)
return mod
except:
- raise ImportError('Unable to import module with attr access: %s' % (import_with_attr_access,))
+ raise ImportError("Unable to import module with attr access: %s" % (import_with_attr_access,))
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py
index cdbe3085f..8ec4dec4a 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py
@@ -2,8 +2,7 @@
resolution/conversion to XML.
"""
import pickle
-from _pydevd_bundle.pydevd_constants import get_frame, get_current_thread_id, \
- iter_chars, silence_warnings_decorator, get_global_debugger
+from _pydevd_bundle.pydevd_constants import get_frame, get_current_thread_id, iter_chars, silence_warnings_decorator, get_global_debugger
from _pydevd_bundle.pydevd_xml import ExceptionOnEvaluate, get_type, var_to_xml
from _pydev_bundle import pydev_log
@@ -37,13 +36,13 @@ def iter_frames(frame):
def dump_frames(thread_id):
- sys.stdout.write('dumping frames\n')
+ sys.stdout.write("dumping frames\n")
if thread_id != get_current_thread_id(threading.current_thread()):
raise VariableError("find_frame: must execute on same thread")
frame = get_frame()
for frame in iter_frames(frame):
- sys.stdout.write('%s\n' % pickle.dumps(frame))
+ sys.stdout.write("%s\n" % pickle.dumps(frame))
@silence_warnings_decorator
@@ -61,12 +60,13 @@ def getVariable(dbg, thread_id, frame_id, scope, locator):
:note: when BY_ID is used, the frame_id is considered the id of the object to find and
not the frame (as we don't care about the frame in this case).
"""
- if scope == 'BY_ID':
+ if scope == "BY_ID":
if thread_id != get_current_thread_id(threading.current_thread()):
raise VariableError("getVariable: must execute on same thread")
try:
import gc
+
objects = gc.get_objects()
except:
pass # Not all python variants have it.
@@ -75,7 +75,7 @@ def getVariable(dbg, thread_id, frame_id, scope, locator):
for var in objects:
if id(var) == frame_id:
if locator is not None:
- locator_parts = locator.split('\t')
+ locator_parts = locator.split("\t")
for k in locator_parts:
_type, _type_name, resolver = get_type(var)
var = resolver.resolve(var, k)
@@ -83,7 +83,7 @@ def getVariable(dbg, thread_id, frame_id, scope, locator):
return var
# If it didn't return previously, we coudn't find it by id (i.e.: already garbage collected).
- sys.stderr.write('Unable to find object with id: %s\n' % (frame_id,))
+ sys.stderr.write("Unable to find object with id: %s\n" % (frame_id,))
return None
frame = dbg.find_frame(thread_id, frame_id)
@@ -91,14 +91,14 @@ def getVariable(dbg, thread_id, frame_id, scope, locator):
return {}
if locator is not None:
- locator_parts = locator.split('\t')
+ locator_parts = locator.split("\t")
else:
locator_parts = []
for attr in locator_parts:
- attr.replace("@_@TAB_CHAR@_@", '\t')
+ attr.replace("@_@TAB_CHAR@_@", "\t")
- if scope == 'EXPRESSION':
+ if scope == "EXPRESSION":
for count in range(len(locator_parts)):
if count == 0:
# An Expression can be in any scope (globals/locals), therefore it needs to evaluated as an expression
@@ -141,8 +141,7 @@ def resolve_compound_variable_fields(dbg, thread_id, frame_id, scope, attrs):
_type, type_name, resolver = get_type(var)
return type_name, resolver.get_dictionary(var)
except:
- pydev_log.exception('Error evaluating: thread_id: %s\nframe_id: %s\nscope: %s\nattrs: %s.',
- thread_id, frame_id, scope, attrs)
+ pydev_log.exception("Error evaluating: thread_id: %s\nframe_id: %s\nscope: %s\nattrs: %s.", thread_id, frame_id, scope, attrs)
def resolve_var_object(var, attrs):
@@ -154,7 +153,7 @@ def resolve_var_object(var, attrs):
:return: a value of resolved variable's attribute
"""
if attrs is not None:
- attr_list = attrs.split('\t')
+ attr_list = attrs.split("\t")
else:
attr_list = []
for k in attr_list:
@@ -171,7 +170,7 @@ def resolve_compound_var_object_fields(var, attrs):
:param attrs: a sequence of variable's attributes separated by \t (i.e.: obj\tattr1\tattr2)
:return: a dictionary of variables's fields
"""
- attr_list = attrs.split('\t')
+ attr_list = attrs.split("\t")
for k in attr_list:
type, _type_name, resolver = get_type(var)
@@ -194,12 +193,12 @@ def custom_operation(dbg, thread_id, frame_id, scope, attrs, style, code_or_file
expressionValue = getVariable(dbg, thread_id, frame_id, scope, attrs)
try:
- namespace = {'__name__': ''}
+ namespace = {"__name__": ""}
if style == "EXECFILE":
- namespace['__file__'] = code_or_file
+ namespace["__file__"] = code_or_file
execfile(code_or_file, namespace, namespace)
else: # style == EXEC
- namespace['__file__'] = ''
+ namespace["__file__"] = ""
Exec(code_or_file, namespace, namespace)
return str(namespace[operation_fn_name](expressionValue))
@@ -238,9 +237,9 @@ def _expression_to_evaluate(expression):
if proceed:
if isinstance(expression, bytes):
- expression = b''.join(new_lines)
+ expression = b"".join(new_lines)
else:
- expression = u''.join(new_lines)
+ expression = "".join(new_lines)
return expression
@@ -255,7 +254,7 @@ def eval_in_context(expression, global_vars, local_vars, py_db=None):
if py_db is None:
py_db = get_global_debugger()
if py_db is None:
- raise RuntimeError('Cannot evaluate async without py_db.')
+ raise RuntimeError("Cannot evaluate async without py_db.")
t = _EvalAwaitInNewEventLoop(py_db, compiled, global_vars, local_vars)
t.start()
t.join()
@@ -272,17 +271,17 @@ def eval_in_context(expression, global_vars, local_vars, py_db=None):
# Ok, we have the initial error message, but let's see if we're dealing with a name mangling error...
try:
- if '.__' in expression:
+ if ".__" in expression:
# Try to handle '__' name mangling (for simple cases such as self.__variable.__another_var).
- split = expression.split('.')
+ split = expression.split(".")
entry = split[0]
if local_vars is None:
local_vars = global_vars
curr = local_vars[entry] # Note: we want the KeyError if it's not there.
for entry in split[1:]:
- if entry.startswith('__') and not hasattr(curr, entry):
- entry = '_%s%s' % (curr.__class__.__name__, entry)
+ if entry.startswith("__") and not hasattr(curr, entry):
+ entry = "_%s%s" % (curr.__class__.__name__, entry)
curr = getattr(curr, entry)
result = curr
@@ -299,7 +298,7 @@ def _run_with_interrupt_thread(original_func, py_db, curr_thread, frame, express
if interrupt_thread_timeout > 0:
on_interrupt_threads = pydevd_timeout.create_interrupt_this_thread_callback()
- pydev_log.info('Doing evaluate with interrupt threads timeout: %s.', interrupt_thread_timeout)
+ pydev_log.info("Doing evaluate with interrupt threads timeout: %s.", interrupt_thread_timeout)
if on_interrupt_threads is None:
return original_func(py_db, frame, expression, is_exec)
@@ -318,13 +317,13 @@ def _run_with_unblock_threads(original_func, py_db, curr_thread, frame, expressi
unblock_threads_timeout = -1 # Don't use this if threads are managed individually.
if unblock_threads_timeout >= 0:
- pydev_log.info('Doing evaluate with unblock threads timeout: %s.', unblock_threads_timeout)
+ pydev_log.info("Doing evaluate with unblock threads timeout: %s.", unblock_threads_timeout)
tid = get_current_thread_id(curr_thread)
def on_timeout_unblock_threads():
on_timeout_unblock_threads.called = True
- pydev_log.info('Resuming threads after evaluate timeout.')
- resume_threads('*', except_thread=curr_thread)
+ pydev_log.info("Resuming threads after evaluate timeout.")
+ resume_threads("*", except_thread=curr_thread)
py_db.threads_suspended_single_notification.on_thread_resume(tid, curr_thread)
on_timeout_unblock_threads.called = False
@@ -345,25 +344,24 @@ def on_timeout_unblock_threads():
def _evaluate_with_timeouts(original_func):
- '''
+ """
Provides a decorator that wraps the original evaluate to deal with slow evaluates.
If some evaluation is too slow, we may show a message, resume threads or interrupt them
as needed (based on the related configurations).
- '''
+ """
@functools.wraps(original_func)
def new_func(py_db, frame, expression, is_exec):
if py_db is None:
# Only for testing...
- pydev_log.critical('_evaluate_with_timeouts called without py_db!')
+ pydev_log.critical("_evaluate_with_timeouts called without py_db!")
return original_func(py_db, frame, expression, is_exec)
warn_evaluation_timeout = pydevd_constants.PYDEVD_WARN_EVALUATION_TIMEOUT
curr_thread = threading.current_thread()
def on_warn_evaluation_timeout():
- py_db.writer.add_command(py_db.cmd_factory.make_evaluation_timeout_msg(
- py_db, expression, curr_thread))
+ py_db.writer.add_command(py_db.cmd_factory.make_evaluation_timeout_msg(py_db, expression, curr_thread))
timeout_tracker = py_db.timeout_tracker # : :type timeout_tracker: TimeoutTracker
with timeout_tracker.call_on_timeout(warn_evaluation_timeout, on_warn_evaluation_timeout):
@@ -375,13 +373,14 @@ def on_warn_evaluation_timeout():
_ASYNC_COMPILE_FLAGS = None
try:
from ast import PyCF_ALLOW_TOP_LEVEL_AWAIT
+
_ASYNC_COMPILE_FLAGS = PyCF_ALLOW_TOP_LEVEL_AWAIT
except:
pass
def compile_as_eval(expression):
- '''
+ """
:param expression:
The expression to be _compiled.
@@ -389,16 +388,16 @@ def compile_as_eval(expression):
:return: code object
:raises Exception if the expression cannot be evaluated.
- '''
+ """
expression_to_evaluate = _expression_to_evaluate(expression)
if _ASYNC_COMPILE_FLAGS is not None:
- return compile(expression_to_evaluate, '', 'eval', _ASYNC_COMPILE_FLAGS)
+ return compile(expression_to_evaluate, "", "eval", _ASYNC_COMPILE_FLAGS)
else:
- return compile(expression_to_evaluate, '', 'eval')
+ return compile(expression_to_evaluate, "", "eval")
def _compile_as_exec(expression):
- '''
+ """
:param expression:
The expression to be _compiled.
@@ -406,16 +405,15 @@ def _compile_as_exec(expression):
:return: code object
:raises Exception if the expression cannot be evaluated.
- '''
+ """
expression_to_evaluate = _expression_to_evaluate(expression)
if _ASYNC_COMPILE_FLAGS is not None:
- return compile(expression_to_evaluate, '', 'exec', _ASYNC_COMPILE_FLAGS)
+ return compile(expression_to_evaluate, "", "exec", _ASYNC_COMPILE_FLAGS)
else:
- return compile(expression_to_evaluate, '', 'exec')
+ return compile(expression_to_evaluate, "", "exec")
class _EvalAwaitInNewEventLoop(PyDBDaemonThread):
-
def __init__(self, py_db, compiled, updated_globals, updated_locals):
PyDBDaemonThread.__init__(self, py_db)
self._compiled = compiled
@@ -432,6 +430,7 @@ async def _async_func(self):
def _on_run(self):
try:
import asyncio
+
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
self.evaluated_value = asyncio.run(self._async_func())
@@ -441,7 +440,7 @@ def _on_run(self):
@_evaluate_with_timeouts
def evaluate_expression(py_db, frame, expression, is_exec):
- '''
+ """
:param str expression:
The expression to be evaluated.
@@ -483,7 +482,7 @@ def method():
:param py_db:
The debugger. Only needed if some top-level await is detected (for creating a
PyDBDaemonThread).
- '''
+ """
if frame is None:
return
@@ -523,17 +522,17 @@ def method():
updated_globals = {}
updated_globals.update(frame.f_globals)
updated_globals.update(frame.f_locals)
- if 'globals' not in updated_globals:
+ if "globals" not in updated_globals:
# If the user explicitly uses 'globals()' then we provide the
# frame globals (unless he has shadowed it already).
- updated_globals['globals'] = lambda: frame.f_globals
+ updated_globals["globals"] = lambda: frame.f_globals
initial_globals = updated_globals.copy()
updated_locals = None
try:
- expression = expression.replace('@LINE@', '\n')
+ expression = expression.replace("@LINE@", "\n")
if is_exec:
try:
@@ -573,7 +572,7 @@ def method():
else:
result = eval(compiled, updated_globals, updated_locals)
if result is not None: # Only print if it's not None (as python does)
- sys.stdout.write('%s\n' % (result,))
+ sys.stdout.write("%s\n" % (result,))
return
else:
@@ -597,17 +596,16 @@ def method():
def change_attr_expression(frame, attr, expression, dbg, value=SENTINEL_VALUE):
- '''Changes some attribute in a given frame.
- '''
+ """Changes some attribute in a given frame."""
if frame is None:
return
try:
- expression = expression.replace('@LINE@', '\n')
+ expression = expression.replace("@LINE@", "\n")
if dbg.plugin and value is SENTINEL_VALUE:
result = dbg.plugin.change_variable(frame, attr, expression)
- if result:
+ if result is not dbg.plugin.EMPTY_SENTINEL:
return result
if attr[:7] == "Globals":
@@ -618,7 +616,7 @@ def change_attr_expression(frame, attr, expression, dbg, value=SENTINEL_VALUE):
frame.f_globals[attr] = value
return frame.f_globals[attr]
else:
- if '.' not in attr: # i.e.: if we have a '.', we're changing some attribute of a local var.
+ if "." not in attr: # i.e.: if we have a '.', we're changing some attribute of a local var.
if pydevd_save_locals.is_save_locals_available():
if value is SENTINEL_VALUE:
value = eval(expression, frame.f_globals, frame.f_locals)
@@ -630,7 +628,7 @@ def change_attr_expression(frame, attr, expression, dbg, value=SENTINEL_VALUE):
if value is SENTINEL_VALUE:
value = eval(expression, frame.f_globals, frame.f_locals)
result = value
- Exec('%s=%s' % (attr, expression), frame.f_globals, frame.f_locals)
+ Exec("%s=%s" % (attr, expression), frame.f_globals, frame.f_locals)
return result
except Exception:
@@ -643,15 +641,15 @@ def change_attr_expression(frame, attr, expression, dbg, value=SENTINEL_VALUE):
def table_like_struct_to_xml(array, name, roffset, coffset, rows, cols, format):
_, type_name, _ = get_type(array)
- if type_name == 'ndarray':
+ if type_name == "ndarray":
array, metaxml, r, c, f = array_to_meta_xml(array, name, format)
xml = metaxml
- format = '%' + f
+ format = "%" + f
if rows == -1 and cols == -1:
rows = r
cols = c
xml += array_to_xml(array, roffset, coffset, rows, cols, format)
- elif type_name == 'DataFrame':
+ elif type_name == "DataFrame":
xml = dataframe_to_xml(array, name, roffset, coffset, rows, cols, format)
else:
raise VariableError("Do not know how to convert type %s to table" % (type_name))
@@ -681,9 +679,9 @@ def array_to_xml(array, roffset, coffset, rows, cols, format):
array = array[roffset:]
rows = min(rows, len(array))
- xml += "" % (rows, cols)
+ xml += '' % (rows, cols)
for row in range(rows):
- xml += "" % to_string(row)
+ xml += ' ' % to_string(row)
for col in range(cols):
value = array
if rows == 1 or cols == 1:
@@ -700,7 +698,7 @@ def array_to_xml(array, roffset, coffset, rows, cols, format):
else:
value = array[row][col]
value = format % value
- xml += var_to_xml(value, '')
+ xml += var_to_xml(value, "")
return xml
@@ -710,19 +708,19 @@ def array_to_meta_xml(array, name, format):
l = len(array.shape)
# initial load, compute slice
- if format == '%':
+ if format == "%":
if l > 2:
- slice += '[0]' * (l - 2)
+ slice += "[0]" * (l - 2)
for r in range(l - 2):
array = array[0]
- if type == 'f':
- format = '.5f'
- elif type == 'i' or type == 'u':
- format = 'd'
+ if type == "f":
+ format = ".5f"
+ elif type == "i" or type == "u":
+ format = "d"
else:
- format = 's'
+ format = "s"
else:
- format = format.replace('%', '')
+ format = format.replace("%", "")
l = len(array.shape)
reslice = ""
@@ -733,25 +731,25 @@ def array_to_meta_xml(array, name, format):
# http://stackoverflow.com/questions/16837946/numpy-a-2-rows-1-column-file-loadtxt-returns-1row-2-columns
# explanation: http://stackoverflow.com/questions/15165170/how-do-i-maintain-row-column-orientation-of-vectors-in-numpy?rq=1
# we use kind of a hack - get information about memory from C_CONTIGUOUS
- is_row = array.flags['C_CONTIGUOUS']
+ is_row = array.flags["C_CONTIGUOUS"]
if is_row:
rows = 1
cols = min(len(array), MAX_SLICE_SIZE)
if cols < len(array):
- reslice = '[0:%s]' % (cols)
+ reslice = "[0:%s]" % (cols)
array = array[0:cols]
else:
cols = 1
rows = min(len(array), MAX_SLICE_SIZE)
if rows < len(array):
- reslice = '[0:%s]' % (rows)
+ reslice = "[0:%s]" % (rows)
array = array[0:rows]
elif l == 2:
rows = min(array.shape[-2], MAX_SLICE_SIZE)
cols = min(array.shape[-1], MAX_SLICE_SIZE)
if cols < array.shape[-1] or rows < array.shape[-2]:
- reslice = '[0:%s, 0:%s]' % (rows, cols)
+ reslice = "[0:%s, 0:%s]" % (rows, cols)
array = array[0:rows, 0:cols]
# avoid slice duplication
@@ -761,8 +759,15 @@ def array_to_meta_xml(array, name, format):
bounds = (0, 0)
if type in "biufc":
bounds = (array.min(), array.max())
- xml = '' % \
- (slice, rows, cols, format, type, bounds[1], bounds[0])
+ xml = '' % (
+ slice,
+ rows,
+ cols,
+ format,
+ type,
+ bounds[1],
+ bounds[0],
+ )
return array, xml, rows, cols, format
@@ -781,13 +786,12 @@ def dataframe_to_xml(df, name, roffset, coffset, rows, cols, format):
num_rows = min(df.shape[0], MAX_SLICE_SIZE)
num_cols = min(df.shape[1], MAX_SLICE_SIZE)
if (num_rows, num_cols) != df.shape:
- df = df.iloc[0:num_rows, 0: num_cols]
- slice = '.iloc[0:%s, 0:%s]' % (num_rows, num_cols)
+ df = df.iloc[0:num_rows, 0:num_cols]
+ slice = ".iloc[0:%s, 0:%s]" % (num_rows, num_cols)
else:
- slice = ''
+ slice = ""
slice = name + slice
- xml = '\n' % \
- (slice, num_rows, num_cols)
+ xml = '\n' % (slice, num_rows, num_cols)
if (rows, cols) == (-1, -1):
rows, cols = num_rows, num_cols
@@ -805,39 +809,44 @@ def dataframe_to_xml(df, name, roffset, coffset, rows, cols, format):
bounds = (0, 0)
col_bounds[col] = bounds
- df = df.iloc[roffset: roffset + rows, coffset: coffset + cols]
+ df = df.iloc[roffset : roffset + rows, coffset : coffset + cols]
rows, cols = df.shape
- xml += "\n" % (rows, cols)
- format = format.replace('%', '')
+ xml += '\n' % (rows, cols)
+ format = format.replace("%", "")
col_formats = []
- get_label = lambda label: str(label) if not isinstance(label, tuple) else '/'.join(map(str, label))
+ get_label = lambda label: str(label) if not isinstance(label, tuple) else "/".join(map(str, label))
for col in range(cols):
dtype = df.dtypes.iloc[col].kind
- if dtype == 'f' and format:
+ if dtype == "f" and format:
fmt = format
- elif dtype == 'f':
- fmt = '.5f'
- elif dtype == 'i' or dtype == 'u':
- fmt = 'd'
+ elif dtype == "f":
+ fmt = ".5f"
+ elif dtype == "i" or dtype == "u":
+ fmt = "d"
else:
- fmt = 's'
- col_formats.append('%' + fmt)
+ fmt = "s"
+ col_formats.append("%" + fmt)
bounds = col_bounds[col]
- xml += '\n' % \
- (str(col), get_label(df.axes[1].values[col]), dtype, fmt, bounds[1], bounds[0])
+ xml += '\n' % (
+ str(col),
+ get_label(df.axes[1].values[col]),
+ dtype,
+ fmt,
+ bounds[1],
+ bounds[0],
+ )
for row, label in enumerate(iter(df.axes[0])):
- xml += "\n" % \
- (str(row), get_label(label))
+ xml += '\n' % (str(row), get_label(label))
xml += "\n"
- xml += "\n" % (rows, cols)
+ xml += '\n' % (rows, cols)
for row in range(rows):
- xml += "\n" % str(row)
+ xml += ' \n' % str(row)
for col in range(cols):
value = df.iat[row, col]
value = col_formats[col] % value
- xml += var_to_xml(value, '')
+ xml += var_to_xml(value, "")
return xml
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py
index d2cf5b67b..aaca38e41 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py
@@ -1,41 +1,40 @@
import sys
-#=======================================================================================================================
+
+# =======================================================================================================================
# PydevdVmType
-#=======================================================================================================================
+# =======================================================================================================================
class PydevdVmType:
-
- PYTHON = 'python'
- JYTHON = 'jython'
+ PYTHON = "python"
+ JYTHON = "jython"
vm_type = None
-
-#=======================================================================================================================
+
+# =======================================================================================================================
# set_vm_type
-#=======================================================================================================================
+# =======================================================================================================================
def set_vm_type(vm_type):
PydevdVmType.vm_type = vm_type
-
-
-#=======================================================================================================================
+
+
+# =======================================================================================================================
# get_vm_type
-#=======================================================================================================================
+# =======================================================================================================================
def get_vm_type():
if PydevdVmType.vm_type is None:
setup_type()
return PydevdVmType.vm_type
-#=======================================================================================================================
+# =======================================================================================================================
# setup_type
-#=======================================================================================================================
+# =======================================================================================================================
def setup_type(str=None):
if str is not None:
PydevdVmType.vm_type = str
return
-
+
if sys.platform.startswith("java"):
PydevdVmType.vm_type = PydevdVmType.JYTHON
else:
PydevdVmType.vm_type = PydevdVmType.PYTHON
-
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py
index 5d1ed0fd7..af8ad0faa 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py
@@ -2,8 +2,13 @@
from _pydevd_bundle import pydevd_extension_utils
from _pydevd_bundle import pydevd_resolver
import sys
-from _pydevd_bundle.pydevd_constants import BUILTINS_MODULE_NAME, MAXIMUM_VARIABLE_REPRESENTATION_SIZE, \
- RETURN_VALUES_DICT, LOAD_VALUES_ASYNC, DEFAULT_VALUE
+from _pydevd_bundle.pydevd_constants import (
+ BUILTINS_MODULE_NAME,
+ MAXIMUM_VARIABLE_REPRESENTATION_SIZE,
+ RETURN_VALUES_DICT,
+ LOAD_VALUES_ASYNC,
+ DEFAULT_VALUE,
+)
from _pydev_bundle.pydev_imports import quote
from _pydevd_bundle.pydevd_extension_api import TypeResolveProvider, StrPresentationProvider
from _pydevd_bundle.pydevd_utils import isinstance_checked, hasattr_checked, DAPGrouper
@@ -20,11 +25,10 @@
def make_valid_xml_value(s):
# Same thing as xml.sax.saxutils.escape but also escaping double quotes.
- return s.replace("&", "&").replace('<', '<').replace('>', '>').replace('"', '"')
+ return s.replace("&", "&").replace("<", "<").replace(">", ">").replace('"', """)
class ExceptionOnEvaluate:
-
def __init__(self, result, etype, tb):
self.result = result
self.etype = etype
@@ -37,9 +41,11 @@ def __init__(self, result, etype, tb):
def _create_default_type_map():
default_type_map = [
# None means that it should not be treated as a compound variable
-
# isintance does not accept a tuple on some versions of python, so, we must declare it expanded
- (type(None), None,),
+ (
+ type(None),
+ None,
+ ),
(int, None),
(float, None),
(complex, None),
@@ -50,6 +56,7 @@ def _create_default_type_map():
]
try:
from collections import OrderedDict
+
default_type_map.insert(0, (OrderedDict, pydevd_resolver.orderedDictResolver))
# we should put it before dict
except:
@@ -76,6 +83,7 @@ def _create_default_type_map():
try:
from django.utils.datastructures import MultiValueDict
+
default_type_map.insert(0, (MultiValueDict, pydevd_resolver.multiValueDictResolver))
# we should put it before dict
except:
@@ -83,6 +91,7 @@ def _create_default_type_map():
try:
from django.forms import BaseForm
+
default_type_map.insert(0, (BaseForm, pydevd_resolver.djangoFormResolver))
# we should put it before instance resolver
except:
@@ -90,12 +99,14 @@ def _create_default_type_map():
try:
from collections import deque
+
default_type_map.append((deque, pydevd_resolver.dequeResolver))
except:
pass
try:
from ctypes import Array
+
default_type_map.append((Array, pydevd_resolver.tupleResolver))
except:
pass
@@ -105,6 +116,7 @@ def _create_default_type_map():
if _IS_JYTHON:
from org.python import core # @UnresolvedImport
+
default_type_map.append((core.PyNone, None))
default_type_map.append((core.PyInteger, None))
default_type_map.append((core.PyLong, None))
@@ -116,7 +128,7 @@ def _create_default_type_map():
default_type_map.append((core.PyDictionary, pydevd_resolver.dictResolver))
default_type_map.append((core.PyStringMap, pydevd_resolver.dictResolver))
- if hasattr(core, 'PyJavaInstance'):
+ if hasattr(core, "PyJavaInstance"):
# Jython 2.5b3 removed it.
default_type_map.append((core.PyJavaInstance, pydevd_resolver.instanceResolver))
@@ -159,10 +171,10 @@ def get_type(self, o):
# fallback to saying that it wasn't possible to get any info on it.
return type_object, str(type_name), pydevd_resolver.defaultResolver
- return 'Unable to get Type', 'Unable to get Type', None
+ return "Unable to get Type", "Unable to get Type", None
except:
# This happens for org.python.core.InitModule
- return 'Unable to get Type', 'Unable to get Type', None
+ return "Unable to get Type", "Unable to get Type", None
def _get_type(self, o, type_object, type_name):
# Note: we could have an exception here if the type_object is not hashable...
@@ -198,23 +210,23 @@ def _get_type(self, o, type_object, type_name):
_base_get_type = _get_type
def _get_type(self, o, type_object, type_name):
- if type_name == 'org.python.core.PyJavaInstance':
+ if type_name == "org.python.core.PyJavaInstance":
return type_object, type_name, pydevd_resolver.instanceResolver
- if type_name == 'org.python.core.PyArray':
+ if type_name == "org.python.core.PyArray":
return type_object, type_name, pydevd_resolver.jyArrayResolver
return self._base_get_type(o, type_object, type_name)
- def _get_str_from_provider(self, provider, o, context: Optional[str]=None):
+ def _get_str_from_provider(self, provider, o, context: Optional[str] = None):
if context is not None:
- get_str_in_context = getattr(provider, 'get_str_in_context', None)
+ get_str_in_context = getattr(provider, "get_str_in_context", None)
if get_str_in_context is not None:
return get_str_in_context(o, context)
return provider.get_str(o)
- def str_from_providers(self, o, type_object, type_name, context: Optional[str]=None):
+ def str_from_providers(self, o, type_object, type_name, context: Optional[str] = None):
provider = self._type_to_str_provider_cache.get(type_object)
if provider is self.NO_PROVIDER:
@@ -256,7 +268,7 @@ def get_type(o):
def is_builtin(x):
- return getattr(x, '__module__', None) == BUILTINS_MODULE_NAME
+ return getattr(x, "__module__", None) == BUILTINS_MODULE_NAME
def should_evaluate_full_value(val):
@@ -267,11 +279,11 @@ def return_values_from_dict_to_xml(return_dict):
res = []
for name, val in return_dict.items():
res.append(var_to_xml(val, name, additional_in_xml=' isRetVal="True"'))
- return ''.join(res)
+ return "".join(res)
def frame_vars_to_xml(frame_f_locals, hidden_ns=None):
- """ dumps frame variables to XML
+ """dumps frame variables to XML
"""
xml = []
@@ -285,7 +297,7 @@ def frame_vars_to_xml(frame_f_locals, hidden_ns=None):
v = frame_f_locals[k]
eval_full_val = should_evaluate_full_value(v)
- if k == '_pydev_stop_at_break':
+ if k == "_pydev_stop_at_break":
continue
if k == RETURN_VALUES_DICT:
@@ -294,8 +306,7 @@ def frame_vars_to_xml(frame_f_locals, hidden_ns=None):
else:
if hidden_ns is not None and k in hidden_ns:
- xml.append(var_to_xml(v, str(k), additional_in_xml=' isIPythonHidden="True"',
- evaluate_full_value=eval_full_val))
+ xml.append(var_to_xml(v, str(k), additional_in_xml=' isIPythonHidden="True"', evaluate_full_value=eval_full_val))
else:
xml.append(var_to_xml(v, str(k), evaluate_full_value=eval_full_val))
except Exception:
@@ -303,18 +314,18 @@ def frame_vars_to_xml(frame_f_locals, hidden_ns=None):
# Show return values as the first entry.
return_values_xml.extend(xml)
- return ''.join(return_values_xml)
+ return "".join(return_values_xml)
-def get_variable_details(val, evaluate_full_value=True, to_string=None, context: Optional[str]=None):
- '''
+def get_variable_details(val, evaluate_full_value=True, to_string=None, context: Optional[str] = None):
+ """
:param context:
This is the context in which the variable is being requested. Valid values:
"watch",
"repl",
"hover",
"clipboard"
- '''
+ """
try:
# This should be faster than isinstance (but we have to protect against not having a '__class__' attribute).
is_exception_on_eval = val.__class__ == ExceptionOnEvaluate
@@ -339,57 +350,56 @@ def get_variable_details(val, evaluate_full_value=True, to_string=None, context:
elif to_string is not None:
value = to_string(v)
- elif hasattr_checked(v, '__class__'):
+ elif hasattr_checked(v, "__class__"):
if v.__class__ == frame_type:
value = pydevd_resolver.frameResolver.get_frame_name(v)
elif v.__class__ in (list, tuple):
if len(v) > 300:
- value = '%s: %s' % (str(v.__class__), '' % (len(v),))
+ value = "%s: %s" % (str(v.__class__), "" % (len(v),))
else:
- value = '%s: %s' % (str(v.__class__), v)
+ value = "%s: %s" % (str(v.__class__), v)
else:
try:
cName = str(v.__class__)
- if cName.find('.') != -1:
- cName = cName.split('.')[-1]
+ if cName.find(".") != -1:
+ cName = cName.split(".")[-1]
elif cName.find("'") != -1: # does not have '.' (could be something like )
- cName = cName[cName.index("'") + 1:]
+ cName = cName[cName.index("'") + 1 :]
if cName.endswith("'>"):
cName = cName[:-2]
except:
cName = str(v.__class__)
- value = '%s: %s' % (cName, v)
+ value = "%s: %s" % (cName, v)
else:
value = str(v)
except:
try:
value = repr(v)
except:
- value = 'Unable to get repr for %s' % v.__class__
+ value = "Unable to get repr for %s" % v.__class__
# fix to work with unicode values
try:
if value.__class__ == bytes:
- value = value.decode('utf-8', 'replace')
+ value = value.decode("utf-8", "replace")
except TypeError:
pass
return type_name, type_qualifier, is_exception_on_eval, resolver, value
-def var_to_xml(val, name, trim_if_too_big=True, additional_in_xml='', evaluate_full_value=True):
- """ single variable or dictionary to xml representation """
+def var_to_xml(val, name, trim_if_too_big=True, additional_in_xml="", evaluate_full_value=True):
+ """single variable or dictionary to xml representation"""
- type_name, type_qualifier, is_exception_on_eval, resolver, value = get_variable_details(
- val, evaluate_full_value)
+ type_name, type_qualifier, is_exception_on_eval, resolver, value = get_variable_details(val, evaluate_full_value)
- scope = get_var_scope(name, val, '', True)
+ scope = get_var_scope(name, val, "", True)
try:
- name = quote(name, '/>_= ') # TODO: Fix PY-5834 without using quote
+ name = quote(name, "/>_= ") # TODO: Fix PY-5834 without using quote
except:
pass
@@ -398,17 +408,17 @@ def var_to_xml(val, name, trim_if_too_big=True, additional_in_xml='', evaluate_f
if type_qualifier:
xml_qualifier = 'qualifier="%s"' % make_valid_xml_value(type_qualifier)
else:
- xml_qualifier = ''
+ xml_qualifier = ""
if value:
# cannot be too big... communication may not handle it.
if len(value) > MAXIMUM_VARIABLE_REPRESENTATION_SIZE and trim_if_too_big:
value = value[0:MAXIMUM_VARIABLE_REPRESENTATION_SIZE]
- value += '...'
+ value += "..."
- xml_value = ' value="%s"' % (make_valid_xml_value(quote(value, '/>_= ')))
+ xml_value = ' value="%s"' % (make_valid_xml_value(quote(value, "/>_= ")))
else:
- xml_value = ''
+ xml_value = ""
if is_exception_on_eval:
xml_container = ' isErrorOnEval="True"'
@@ -416,9 +426,9 @@ def var_to_xml(val, name, trim_if_too_big=True, additional_in_xml='', evaluate_f
if resolver is not None:
xml_container = ' isContainer="True"'
else:
- xml_container = ''
+ xml_container = ""
if scope:
- return ''.join((xml, xml_qualifier, xml_value, xml_container, additional_in_xml, ' scope="', scope, '"', ' />\n'))
+ return "".join((xml, xml_qualifier, xml_value, xml_container, additional_in_xml, ' scope="', scope, '"', " />\n"))
else:
- return ''.join((xml, xml_qualifier, xml_value, xml_container, additional_in_xml, ' />\n'))
+ return "".join((xml, xml_qualifier, xml_value, xml_container, additional_in_xml, " />\n"))
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py
index 0864a4e38..7b7effcfb 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py
@@ -9,13 +9,13 @@
import sys
try:
- is_64bits = sys.maxsize > 2 ** 32
+ is_64bits = sys.maxsize > 2**32
except:
# In Jython this call fails, but this is Ok, we don't support Jython for speedups anyways.
raise ImportError
- plat = '32'
+ plat = "32"
if is_64bits:
- plat = '64'
+ plat = "64"
# We also accept things as:
#
@@ -25,8 +25,8 @@
# to have multiple pre-compiled pyds distributed along the IDE
# (generated by build_tools/build_binaries_windows.py).
- mod_name = 'pydevd_frame_evaluator_%s_%s%s_%s' % (sys.platform, sys.version_info[0], sys.version_info[1], plat)
- check_name = '_pydevd_frame_eval.%s' % (mod_name,)
+ mod_name = "pydevd_frame_evaluator_%s_%s%s_%s" % (sys.platform, sys.version_info[0], sys.version_info[1], plat)
+ check_name = "_pydevd_frame_eval.%s" % (mod_name,)
mod = __import__(check_name)
mod = getattr(mod, mod_name)
except ImportError:
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py
index bfebea28f..1049be0dd 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py
@@ -2,9 +2,18 @@
from _pydev_bundle import pydev_log
from _pydevd_bundle.pydevd_trace_dispatch import USING_CYTHON
-from _pydevd_bundle.pydevd_constants import USE_CYTHON_FLAG, ENV_FALSE_LOWER_VALUES, \
- ENV_TRUE_LOWER_VALUES, IS_PY36_OR_GREATER, IS_PY38_OR_GREATER, SUPPORT_GEVENT, IS_PYTHON_STACKLESS, \
- PYDEVD_USE_FRAME_EVAL, PYDEVD_IPYTHON_COMPATIBLE_DEBUGGING
+from _pydevd_bundle.pydevd_constants import (
+ USE_CYTHON_FLAG,
+ ENV_FALSE_LOWER_VALUES,
+ ENV_TRUE_LOWER_VALUES,
+ IS_PY36_OR_GREATER,
+ IS_PY38_OR_GREATER,
+ SUPPORT_GEVENT,
+ IS_PYTHON_STACKLESS,
+ PYDEVD_USE_FRAME_EVAL,
+ PYDEVD_IPYTHON_COMPATIBLE_DEBUGGING,
+ IS_PY311_OR_GREATER,
+)
frame_eval_func = None
stop_frame_eval = None
@@ -13,16 +22,16 @@
# "NO" means we should not use frame evaluation, 'YES' we should use it (and fail if not there) and unspecified uses if possible.
if (
- PYDEVD_USE_FRAME_EVAL in ENV_FALSE_LOWER_VALUES or
- USE_CYTHON_FLAG in ENV_FALSE_LOWER_VALUES or
- not USING_CYTHON or
-
- # Frame eval mode does not work with ipython compatible debugging (this happens because the
- # way that frame eval works is run untraced and set tracing only for the frames with
- # breakpoints, but ipython compatible debugging creates separate frames for what's logically
- # the same frame).
- PYDEVD_IPYTHON_COMPATIBLE_DEBUGGING
- ):
+ PYDEVD_USE_FRAME_EVAL in ENV_FALSE_LOWER_VALUES
+ or USE_CYTHON_FLAG in ENV_FALSE_LOWER_VALUES
+ or not USING_CYTHON
+ or
+ # Frame eval mode does not work with ipython compatible debugging (this happens because the
+ # way that frame eval works is run untraced and set tracing only for the frames with
+ # breakpoints, but ipython compatible debugging creates separate frames for what's logically
+ # the same frame).
+ PYDEVD_IPYTHON_COMPATIBLE_DEBUGGING
+):
USING_FRAME_EVAL = False
elif SUPPORT_GEVENT or (IS_PYTHON_STACKLESS and not IS_PY38_OR_GREATER):
@@ -32,17 +41,31 @@
# Same problem with Stackless.
# https://github.com/stackless-dev/stackless/issues/240
-elif PYDEVD_USE_FRAME_EVAL in ENV_TRUE_LOWER_VALUES:
+elif PYDEVD_USE_FRAME_EVAL in ENV_TRUE_LOWER_VALUES and not IS_PY311_OR_GREATER:
+ # Python 3.11 onwards doesn't have frame eval mode implemented
# Fail if unable to use
- from _pydevd_frame_eval.pydevd_frame_eval_cython_wrapper import frame_eval_func, stop_frame_eval, dummy_trace_dispatch, clear_thread_local_info
+ from _pydevd_frame_eval.pydevd_frame_eval_cython_wrapper import (
+ frame_eval_func,
+ stop_frame_eval,
+ dummy_trace_dispatch,
+ clear_thread_local_info,
+ )
+
USING_FRAME_EVAL = True
else:
USING_FRAME_EVAL = False
# Try to use if possible
- if IS_PY36_OR_GREATER:
+ if IS_PY36_OR_GREATER and not IS_PY311_OR_GREATER:
+ # Python 3.11 onwards doesn't have frame eval mode implemented
try:
- from _pydevd_frame_eval.pydevd_frame_eval_cython_wrapper import frame_eval_func, stop_frame_eval, dummy_trace_dispatch, clear_thread_local_info
+ from _pydevd_frame_eval.pydevd_frame_eval_cython_wrapper import (
+ frame_eval_func,
+ stop_frame_eval,
+ dummy_trace_dispatch,
+ clear_thread_local_info,
+ )
+
USING_FRAME_EVAL = True
except ImportError:
pydev_log.show_compile_cython_command_line()
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c
index 245e02719..862b37a90 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.29.32 */
+/* Generated by Cython 3.0.10 */
/* BEGIN: Cython Metadata
{
@@ -21,6 +21,16 @@ END: Cython Metadata */
#ifndef PY_SSIZE_T_CLEAN
#define PY_SSIZE_T_CLEAN
#endif /* PY_SSIZE_T_CLEAN */
+#if defined(CYTHON_LIMITED_API) && 0
+ #ifndef Py_LIMITED_API
+ #if CYTHON_LIMITED_API+0 > 0x03030000
+ #define Py_LIMITED_API CYTHON_LIMITED_API
+ #else
+ #define Py_LIMITED_API 0x03030000
+ #endif
+ #endif
+#endif
+
#include "Python.h"
#if PY_VERSION_HEX >= 0x03090000
#include "internal/pycore_gc.h"
@@ -29,17 +39,24 @@ END: Cython Metadata */
#ifndef Py_PYTHON_H
#error Python headers needed to compile C extensions, please install development version of Python.
-#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
- #error Cython requires Python 2.6+ or Python 3.3+.
+#elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+ #error Cython requires Python 2.7+ or Python 3.3+.
+#else
+#if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API
+#define __PYX_EXTRA_ABI_MODULE_NAME "limited"
#else
-#define CYTHON_ABI "0_29_32"
-#define CYTHON_HEX_VERSION 0x001D20F0
-#define CYTHON_FUTURE_DIVISION 0
+#define __PYX_EXTRA_ABI_MODULE_NAME ""
+#endif
+#define CYTHON_ABI "3_0_10" __PYX_EXTRA_ABI_MODULE_NAME
+#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI
+#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "."
+#define CYTHON_HEX_VERSION 0x03000AF0
+#define CYTHON_FUTURE_DIVISION 1
#include
#ifndef offsetof
#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
#endif
-#if !defined(WIN32) && !defined(MS_WINDOWS)
+#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS)
#ifndef __stdcall
#define __stdcall
#endif
@@ -58,9 +75,7 @@ END: Cython Metadata */
#endif
#define __PYX_COMMA ,
#ifndef HAVE_LONG_LONG
- #if PY_VERSION_HEX >= 0x02070000
- #define HAVE_LONG_LONG
- #endif
+ #define HAVE_LONG_LONG
#endif
#ifndef PY_LONG_LONG
#define PY_LONG_LONG LONG_LONG
@@ -68,13 +83,19 @@ END: Cython Metadata */
#ifndef Py_HUGE_VAL
#define Py_HUGE_VAL HUGE_VAL
#endif
-#ifdef PYPY_VERSION
- #define CYTHON_COMPILING_IN_PYPY 1
- #define CYTHON_COMPILING_IN_PYSTON 0
+#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX
+#if defined(GRAALVM_PYTHON)
+ /* For very preliminary testing purposes. Most variables are set the same as PyPy.
+ The existence of this section does not imply that anything works or is even tested */
+ #define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_CPYTHON 0
+ #define CYTHON_COMPILING_IN_LIMITED_API 0
+ #define CYTHON_COMPILING_IN_GRAAL 1
#define CYTHON_COMPILING_IN_NOGIL 0
#undef CYTHON_USE_TYPE_SLOTS
#define CYTHON_USE_TYPE_SLOTS 0
+ #undef CYTHON_USE_TYPE_SPECS
+ #define CYTHON_USE_TYPE_SPECS 0
#undef CYTHON_USE_PYTYPE_LOOKUP
#define CYTHON_USE_PYTYPE_LOOKUP 0
#if PY_VERSION_HEX < 0x03050000
@@ -99,10 +120,19 @@ END: Cython Metadata */
#define CYTHON_UNPACK_METHODS 0
#undef CYTHON_FAST_THREAD_STATE
#define CYTHON_FAST_THREAD_STATE 0
+ #undef CYTHON_FAST_GIL
+ #define CYTHON_FAST_GIL 0
+ #undef CYTHON_METH_FASTCALL
+ #define CYTHON_METH_FASTCALL 0
#undef CYTHON_FAST_PYCALL
#define CYTHON_FAST_PYCALL 0
+ #ifndef CYTHON_PEP487_INIT_SUBCLASS
+ #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3)
+ #endif
#undef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT 0
+ #define CYTHON_PEP489_MULTI_PHASE_INIT 1
+ #undef CYTHON_USE_MODULE_STATE
+ #define CYTHON_USE_MODULE_STATE 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
#undef CYTHON_USE_DICT_VERSIONS
@@ -110,46 +140,127 @@ END: Cython Metadata */
#undef CYTHON_USE_EXC_INFO_STACK
#define CYTHON_USE_EXC_INFO_STACK 0
#ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
- #define CYTHON_UPDATE_DESCRIPTOR_DOC (PYPY_VERSION_HEX >= 0x07030900)
+ #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
#endif
-#elif defined(PYSTON_VERSION)
- #define CYTHON_COMPILING_IN_PYPY 0
- #define CYTHON_COMPILING_IN_PYSTON 1
+ #undef CYTHON_USE_FREELISTS
+ #define CYTHON_USE_FREELISTS 0
+#elif defined(PYPY_VERSION)
+ #define CYTHON_COMPILING_IN_PYPY 1
#define CYTHON_COMPILING_IN_CPYTHON 0
+ #define CYTHON_COMPILING_IN_LIMITED_API 0
+ #define CYTHON_COMPILING_IN_GRAAL 0
#define CYTHON_COMPILING_IN_NOGIL 0
- #ifndef CYTHON_USE_TYPE_SLOTS
- #define CYTHON_USE_TYPE_SLOTS 1
+ #undef CYTHON_USE_TYPE_SLOTS
+ #define CYTHON_USE_TYPE_SLOTS 0
+ #ifndef CYTHON_USE_TYPE_SPECS
+ #define CYTHON_USE_TYPE_SPECS 0
+ #endif
+ #undef CYTHON_USE_PYTYPE_LOOKUP
+ #define CYTHON_USE_PYTYPE_LOOKUP 0
+ #if PY_VERSION_HEX < 0x03050000
+ #undef CYTHON_USE_ASYNC_SLOTS
+ #define CYTHON_USE_ASYNC_SLOTS 0
+ #elif !defined(CYTHON_USE_ASYNC_SLOTS)
+ #define CYTHON_USE_ASYNC_SLOTS 1
+ #endif
+ #undef CYTHON_USE_PYLIST_INTERNALS
+ #define CYTHON_USE_PYLIST_INTERNALS 0
+ #undef CYTHON_USE_UNICODE_INTERNALS
+ #define CYTHON_USE_UNICODE_INTERNALS 0
+ #undef CYTHON_USE_UNICODE_WRITER
+ #define CYTHON_USE_UNICODE_WRITER 0
+ #undef CYTHON_USE_PYLONG_INTERNALS
+ #define CYTHON_USE_PYLONG_INTERNALS 0
+ #undef CYTHON_AVOID_BORROWED_REFS
+ #define CYTHON_AVOID_BORROWED_REFS 1
+ #undef CYTHON_ASSUME_SAFE_MACROS
+ #define CYTHON_ASSUME_SAFE_MACROS 0
+ #undef CYTHON_UNPACK_METHODS
+ #define CYTHON_UNPACK_METHODS 0
+ #undef CYTHON_FAST_THREAD_STATE
+ #define CYTHON_FAST_THREAD_STATE 0
+ #undef CYTHON_FAST_GIL
+ #define CYTHON_FAST_GIL 0
+ #undef CYTHON_METH_FASTCALL
+ #define CYTHON_METH_FASTCALL 0
+ #undef CYTHON_FAST_PYCALL
+ #define CYTHON_FAST_PYCALL 0
+ #ifndef CYTHON_PEP487_INIT_SUBCLASS
+ #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3)
+ #endif
+ #if PY_VERSION_HEX < 0x03090000
+ #undef CYTHON_PEP489_MULTI_PHASE_INIT
+ #define CYTHON_PEP489_MULTI_PHASE_INIT 0
+ #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT)
+ #define CYTHON_PEP489_MULTI_PHASE_INIT 1
#endif
+ #undef CYTHON_USE_MODULE_STATE
+ #define CYTHON_USE_MODULE_STATE 0
+ #undef CYTHON_USE_TP_FINALIZE
+ #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00)
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
+ #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
+ #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
+ #endif
+ #undef CYTHON_USE_FREELISTS
+ #define CYTHON_USE_FREELISTS 0
+#elif defined(CYTHON_LIMITED_API)
+ #ifdef Py_LIMITED_API
+ #undef __PYX_LIMITED_VERSION_HEX
+ #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API
+ #endif
+ #define CYTHON_COMPILING_IN_PYPY 0
+ #define CYTHON_COMPILING_IN_CPYTHON 0
+ #define CYTHON_COMPILING_IN_LIMITED_API 1
+ #define CYTHON_COMPILING_IN_GRAAL 0
+ #define CYTHON_COMPILING_IN_NOGIL 0
+ #undef CYTHON_CLINE_IN_TRACEBACK
+ #define CYTHON_CLINE_IN_TRACEBACK 0
+ #undef CYTHON_USE_TYPE_SLOTS
+ #define CYTHON_USE_TYPE_SLOTS 0
+ #undef CYTHON_USE_TYPE_SPECS
+ #define CYTHON_USE_TYPE_SPECS 1
#undef CYTHON_USE_PYTYPE_LOOKUP
#define CYTHON_USE_PYTYPE_LOOKUP 0
#undef CYTHON_USE_ASYNC_SLOTS
#define CYTHON_USE_ASYNC_SLOTS 0
#undef CYTHON_USE_PYLIST_INTERNALS
#define CYTHON_USE_PYLIST_INTERNALS 0
- #ifndef CYTHON_USE_UNICODE_INTERNALS
- #define CYTHON_USE_UNICODE_INTERNALS 1
+ #undef CYTHON_USE_UNICODE_INTERNALS
+ #define CYTHON_USE_UNICODE_INTERNALS 0
+ #ifndef CYTHON_USE_UNICODE_WRITER
+ #define CYTHON_USE_UNICODE_WRITER 0
#endif
- #undef CYTHON_USE_UNICODE_WRITER
- #define CYTHON_USE_UNICODE_WRITER 0
#undef CYTHON_USE_PYLONG_INTERNALS
#define CYTHON_USE_PYLONG_INTERNALS 0
#ifndef CYTHON_AVOID_BORROWED_REFS
#define CYTHON_AVOID_BORROWED_REFS 0
#endif
- #ifndef CYTHON_ASSUME_SAFE_MACROS
- #define CYTHON_ASSUME_SAFE_MACROS 1
- #endif
- #ifndef CYTHON_UNPACK_METHODS
- #define CYTHON_UNPACK_METHODS 1
- #endif
+ #undef CYTHON_ASSUME_SAFE_MACROS
+ #define CYTHON_ASSUME_SAFE_MACROS 0
+ #undef CYTHON_UNPACK_METHODS
+ #define CYTHON_UNPACK_METHODS 0
#undef CYTHON_FAST_THREAD_STATE
#define CYTHON_FAST_THREAD_STATE 0
+ #undef CYTHON_FAST_GIL
+ #define CYTHON_FAST_GIL 0
+ #undef CYTHON_METH_FASTCALL
+ #define CYTHON_METH_FASTCALL 0
#undef CYTHON_FAST_PYCALL
#define CYTHON_FAST_PYCALL 0
+ #ifndef CYTHON_PEP487_INIT_SUBCLASS
+ #define CYTHON_PEP487_INIT_SUBCLASS 1
+ #endif
#undef CYTHON_PEP489_MULTI_PHASE_INIT
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
- #undef CYTHON_USE_TP_FINALIZE
- #define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_MODULE_STATE
+ #define CYTHON_USE_MODULE_STATE 1
+ #ifndef CYTHON_USE_TP_FINALIZE
+ #define CYTHON_USE_TP_FINALIZE 0
+ #endif
#undef CYTHON_USE_DICT_VERSIONS
#define CYTHON_USE_DICT_VERSIONS 0
#undef CYTHON_USE_EXC_INFO_STACK
@@ -157,19 +268,28 @@ END: Cython Metadata */
#ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
#define CYTHON_UPDATE_DESCRIPTOR_DOC 0
#endif
-#elif defined(PY_NOGIL)
+ #undef CYTHON_USE_FREELISTS
+ #define CYTHON_USE_FREELISTS 0
+#elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL)
#define CYTHON_COMPILING_IN_PYPY 0
- #define CYTHON_COMPILING_IN_PYSTON 0
#define CYTHON_COMPILING_IN_CPYTHON 0
+ #define CYTHON_COMPILING_IN_LIMITED_API 0
+ #define CYTHON_COMPILING_IN_GRAAL 0
#define CYTHON_COMPILING_IN_NOGIL 1
#ifndef CYTHON_USE_TYPE_SLOTS
#define CYTHON_USE_TYPE_SLOTS 1
#endif
+ #ifndef CYTHON_USE_TYPE_SPECS
+ #define CYTHON_USE_TYPE_SPECS 0
+ #endif
#undef CYTHON_USE_PYTYPE_LOOKUP
#define CYTHON_USE_PYTYPE_LOOKUP 0
#ifndef CYTHON_USE_ASYNC_SLOTS
#define CYTHON_USE_ASYNC_SLOTS 1
#endif
+ #ifndef CYTHON_USE_PYLONG_INTERNALS
+ #define CYTHON_USE_PYLONG_INTERNALS 0
+ #endif
#undef CYTHON_USE_PYLIST_INTERNALS
#define CYTHON_USE_PYLIST_INTERNALS 0
#ifndef CYTHON_USE_UNICODE_INTERNALS
@@ -177,8 +297,6 @@ END: Cython Metadata */
#endif
#undef CYTHON_USE_UNICODE_WRITER
#define CYTHON_USE_UNICODE_WRITER 0
- #undef CYTHON_USE_PYLONG_INTERNALS
- #define CYTHON_USE_PYLONG_INTERNALS 0
#ifndef CYTHON_AVOID_BORROWED_REFS
#define CYTHON_AVOID_BORROWED_REFS 0
#endif
@@ -190,11 +308,22 @@ END: Cython Metadata */
#endif
#undef CYTHON_FAST_THREAD_STATE
#define CYTHON_FAST_THREAD_STATE 0
+ #undef CYTHON_FAST_GIL
+ #define CYTHON_FAST_GIL 0
+ #ifndef CYTHON_METH_FASTCALL
+ #define CYTHON_METH_FASTCALL 1
+ #endif
#undef CYTHON_FAST_PYCALL
#define CYTHON_FAST_PYCALL 0
+ #ifndef CYTHON_PEP487_INIT_SUBCLASS
+ #define CYTHON_PEP487_INIT_SUBCLASS 1
+ #endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT
#define CYTHON_PEP489_MULTI_PHASE_INIT 1
#endif
+ #ifndef CYTHON_USE_MODULE_STATE
+ #define CYTHON_USE_MODULE_STATE 0
+ #endif
#ifndef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 1
#endif
@@ -202,18 +331,25 @@ END: Cython Metadata */
#define CYTHON_USE_DICT_VERSIONS 0
#undef CYTHON_USE_EXC_INFO_STACK
#define CYTHON_USE_EXC_INFO_STACK 0
+ #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
+ #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
+ #endif
+ #ifndef CYTHON_USE_FREELISTS
+ #define CYTHON_USE_FREELISTS 0
+ #endif
#else
#define CYTHON_COMPILING_IN_PYPY 0
- #define CYTHON_COMPILING_IN_PYSTON 0
#define CYTHON_COMPILING_IN_CPYTHON 1
+ #define CYTHON_COMPILING_IN_LIMITED_API 0
+ #define CYTHON_COMPILING_IN_GRAAL 0
#define CYTHON_COMPILING_IN_NOGIL 0
#ifndef CYTHON_USE_TYPE_SLOTS
#define CYTHON_USE_TYPE_SLOTS 1
#endif
- #if PY_VERSION_HEX < 0x02070000
- #undef CYTHON_USE_PYTYPE_LOOKUP
- #define CYTHON_USE_PYTYPE_LOOKUP 0
- #elif !defined(CYTHON_USE_PYTYPE_LOOKUP)
+ #ifndef CYTHON_USE_TYPE_SPECS
+ #define CYTHON_USE_TYPE_SPECS 0
+ #endif
+ #ifndef CYTHON_USE_PYTYPE_LOOKUP
#define CYTHON_USE_PYTYPE_LOOKUP 1
#endif
#if PY_MAJOR_VERSION < 3
@@ -222,10 +358,7 @@ END: Cython Metadata */
#elif !defined(CYTHON_USE_ASYNC_SLOTS)
#define CYTHON_USE_ASYNC_SLOTS 1
#endif
- #if PY_VERSION_HEX < 0x02070000
- #undef CYTHON_USE_PYLONG_INTERNALS
- #define CYTHON_USE_PYLONG_INTERNALS 0
- #elif !defined(CYTHON_USE_PYLONG_INTERNALS)
+ #ifndef CYTHON_USE_PYLONG_INTERNALS
#define CYTHON_USE_PYLONG_INTERNALS 1
#endif
#ifndef CYTHON_USE_PYLIST_INTERNALS
@@ -249,37 +382,62 @@ END: Cython Metadata */
#ifndef CYTHON_UNPACK_METHODS
#define CYTHON_UNPACK_METHODS 1
#endif
- #if PY_VERSION_HEX >= 0x030B00A4
- #undef CYTHON_FAST_THREAD_STATE
- #define CYTHON_FAST_THREAD_STATE 0
- #elif !defined(CYTHON_FAST_THREAD_STATE)
+ #ifndef CYTHON_FAST_THREAD_STATE
#define CYTHON_FAST_THREAD_STATE 1
#endif
+ #ifndef CYTHON_FAST_GIL
+ #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6)
+ #endif
+ #ifndef CYTHON_METH_FASTCALL
+ #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1)
+ #endif
#ifndef CYTHON_FAST_PYCALL
- #define CYTHON_FAST_PYCALL (PY_VERSION_HEX < 0x030A0000)
+ #define CYTHON_FAST_PYCALL 1
#endif
- #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
+ #ifndef CYTHON_PEP487_INIT_SUBCLASS
+ #define CYTHON_PEP487_INIT_SUBCLASS 1
#endif
- #ifndef CYTHON_USE_TP_FINALIZE
- #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
+ #if PY_VERSION_HEX < 0x03050000
+ #undef CYTHON_PEP489_MULTI_PHASE_INIT
+ #define CYTHON_PEP489_MULTI_PHASE_INIT 0
+ #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT)
+ #define CYTHON_PEP489_MULTI_PHASE_INIT 1
#endif
- #ifndef CYTHON_USE_DICT_VERSIONS
- #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
+ #ifndef CYTHON_USE_MODULE_STATE
+ #define CYTHON_USE_MODULE_STATE 0
#endif
- #if PY_VERSION_HEX >= 0x030B00A4
+ #if PY_VERSION_HEX < 0x030400a1
+ #undef CYTHON_USE_TP_FINALIZE
+ #define CYTHON_USE_TP_FINALIZE 0
+ #elif !defined(CYTHON_USE_TP_FINALIZE)
+ #define CYTHON_USE_TP_FINALIZE 1
+ #endif
+ #if PY_VERSION_HEX < 0x030600B1
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #elif !defined(CYTHON_USE_DICT_VERSIONS)
+ #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5)
+ #endif
+ #if PY_VERSION_HEX < 0x030700A3
#undef CYTHON_USE_EXC_INFO_STACK
#define CYTHON_USE_EXC_INFO_STACK 0
#elif !defined(CYTHON_USE_EXC_INFO_STACK)
- #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
+ #define CYTHON_USE_EXC_INFO_STACK 1
#endif
#ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
#define CYTHON_UPDATE_DESCRIPTOR_DOC 1
#endif
+ #ifndef CYTHON_USE_FREELISTS
+ #define CYTHON_USE_FREELISTS 1
+ #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
#endif
+#if !defined(CYTHON_VECTORCALL)
+#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1)
+#endif
+#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1)
#if CYTHON_USE_PYLONG_INTERNALS
#if PY_MAJOR_VERSION < 3
#include "longintrepr.h"
@@ -308,6 +466,17 @@ END: Cython Metadata */
#define CYTHON_RESTRICT
#endif
#endif
+#ifndef CYTHON_UNUSED
+ #if defined(__cplusplus)
+ /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17
+ * but leads to warnings with -pedantic, since it is a C++17 feature */
+ #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
+ #if __has_cpp_attribute(maybe_unused)
+ #define CYTHON_UNUSED [[maybe_unused]]
+ #endif
+ #endif
+ #endif
+#endif
#ifndef CYTHON_UNUSED
# if defined(__GNUC__)
# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
@@ -321,13 +490,16 @@ END: Cython Metadata */
# define CYTHON_UNUSED
# endif
#endif
-#ifndef CYTHON_MAYBE_UNUSED_VAR
+#ifndef CYTHON_UNUSED_VAR
# if defined(__cplusplus)
- template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { }
+ template void CYTHON_UNUSED_VAR( const T& ) { }
# else
-# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x)
+# define CYTHON_UNUSED_VAR(x) (void)(x)
# endif
#endif
+#ifndef CYTHON_MAYBE_UNUSED_VAR
+ #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x)
+#endif
#ifndef CYTHON_NCP_UNUSED
# if CYTHON_COMPILING_IN_CPYTHON
# define CYTHON_NCP_UNUSED
@@ -335,28 +507,59 @@ END: Cython Metadata */
# define CYTHON_NCP_UNUSED CYTHON_UNUSED
# endif
#endif
+#ifndef CYTHON_USE_CPP_STD_MOVE
+ #if defined(__cplusplus) && (\
+ __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600))
+ #define CYTHON_USE_CPP_STD_MOVE 1
+ #else
+ #define CYTHON_USE_CPP_STD_MOVE 0
+ #endif
+#endif
#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
#ifdef _MSC_VER
#ifndef _MSC_STDINT_H_
#if _MSC_VER < 1300
- typedef unsigned char uint8_t;
- typedef unsigned int uint32_t;
+ typedef unsigned char uint8_t;
+ typedef unsigned short uint16_t;
+ typedef unsigned int uint32_t;
#else
- typedef unsigned __int8 uint8_t;
- typedef unsigned __int32 uint32_t;
+ typedef unsigned __int8 uint8_t;
+ typedef unsigned __int16 uint16_t;
+ typedef unsigned __int32 uint32_t;
+ #endif
+ #endif
+ #if _MSC_VER < 1300
+ #ifdef _WIN64
+ typedef unsigned long long __pyx_uintptr_t;
+ #else
+ typedef unsigned int __pyx_uintptr_t;
+ #endif
+ #else
+ #ifdef _WIN64
+ typedef unsigned __int64 __pyx_uintptr_t;
+ #else
+ typedef unsigned __int32 __pyx_uintptr_t;
#endif
#endif
#else
- #include
+ #include
+ typedef uintptr_t __pyx_uintptr_t;
#endif
#ifndef CYTHON_FALLTHROUGH
- #if defined(__cplusplus) && __cplusplus >= 201103L
- #if __has_cpp_attribute(fallthrough)
- #define CYTHON_FALLTHROUGH [[fallthrough]]
- #elif __has_cpp_attribute(clang::fallthrough)
- #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
- #elif __has_cpp_attribute(gnu::fallthrough)
- #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
+ #if defined(__cplusplus)
+ /* for clang __has_cpp_attribute(fallthrough) is true even before C++17
+ * but leads to warnings with -pedantic, since it is a C++17 feature */
+ #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
+ #if __has_cpp_attribute(fallthrough)
+ #define CYTHON_FALLTHROUGH [[fallthrough]]
+ #endif
+ #endif
+ #ifndef CYTHON_FALLTHROUGH
+ #if __has_cpp_attribute(clang::fallthrough)
+ #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
+ #elif __has_cpp_attribute(gnu::fallthrough)
+ #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
+ #endif
#endif
#endif
#ifndef CYTHON_FALLTHROUGH
@@ -366,13 +569,26 @@ END: Cython Metadata */
#define CYTHON_FALLTHROUGH
#endif
#endif
- #if defined(__clang__ ) && defined(__apple_build_version__)
+ #if defined(__clang__) && defined(__apple_build_version__)
#if __apple_build_version__ < 7000000
#undef CYTHON_FALLTHROUGH
#define CYTHON_FALLTHROUGH
#endif
#endif
#endif
+#ifdef __cplusplus
+ template
+ struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);};
+ #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value)
+#else
+ #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0)
+#endif
+#if CYTHON_COMPILING_IN_PYPY == 1
+ #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000)
+#else
+ #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000)
+#endif
+#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer))
#ifndef CYTHON_INLINE
#if defined(__clang__)
@@ -388,85 +604,145 @@ END: Cython Metadata */
#endif
#endif
-#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
- #define Py_OptimizeFlag 0
-#endif
#define __PYX_BUILD_PY_SSIZE_T "n"
#define CYTHON_FORMAT_SSIZE_T "z"
#if PY_MAJOR_VERSION < 3
#define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
- PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#define __Pyx_DefaultClassType PyClass_Type
+ #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
+ PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#else
#define __Pyx_BUILTIN_MODULE_NAME "builtins"
#define __Pyx_DefaultClassType PyType_Type
-#if PY_VERSION_HEX >= 0x030B00A1
- static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int k, int l, int s, int f,
+#if CYTHON_COMPILING_IN_LIMITED_API
+ static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f,
PyObject *code, PyObject *c, PyObject* n, PyObject *v,
PyObject *fv, PyObject *cell, PyObject* fn,
PyObject *name, int fline, PyObject *lnos) {
- PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL;
- PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *call_result=NULL, *empty=NULL;
- const char *fn_cstr=NULL;
- const char *name_cstr=NULL;
- PyCodeObject* co=NULL;
+ PyObject *exception_table = NULL;
+ PyObject *types_module=NULL, *code_type=NULL, *result=NULL;
+ #if __PYX_LIMITED_VERSION_HEX < 0x030B0000
+ PyObject *version_info;
+ PyObject *py_minor_version = NULL;
+ #endif
+ long minor_version = 0;
PyObject *type, *value, *traceback;
PyErr_Fetch(&type, &value, &traceback);
- if (!(kwds=PyDict_New())) goto end;
- if (!(argcount=PyLong_FromLong(a))) goto end;
- if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end;
- if (!(posonlyargcount=PyLong_FromLong(0))) goto end;
- if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end;
- if (!(kwonlyargcount=PyLong_FromLong(k))) goto end;
- if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end;
- if (!(nlocals=PyLong_FromLong(l))) goto end;
- if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end;
- if (!(stacksize=PyLong_FromLong(s))) goto end;
- if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end;
- if (!(flags=PyLong_FromLong(f))) goto end;
- if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end;
- if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end;
- if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end;
- if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end;
- if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end;
- if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end;
- if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end;
- if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end;
- if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end;
- if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end;
- if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end;
- if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto cleanup_code_too;
- if (!(empty = PyTuple_New(0))) goto cleanup_code_too; // unfortunately __pyx_empty_tuple isn't available here
- if (!(call_result = PyObject_Call(replace, empty, kwds))) goto cleanup_code_too;
- Py_XDECREF((PyObject*)co);
- co = (PyCodeObject*)call_result;
- call_result = NULL;
- if (0) {
- cleanup_code_too:
- Py_XDECREF((PyObject*)co);
- co = NULL;
+ #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000
+ minor_version = 11;
+ #else
+ if (!(version_info = PySys_GetObject("version_info"))) goto end;
+ if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end;
+ minor_version = PyLong_AsLong(py_minor_version);
+ Py_DECREF(py_minor_version);
+ if (minor_version == -1 && PyErr_Occurred()) goto end;
+ #endif
+ if (!(types_module = PyImport_ImportModule("types"))) goto end;
+ if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end;
+ if (minor_version <= 7) {
+ (void)p;
+ result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code,
+ c, n, v, fn, name, fline, lnos, fv, cell);
+ } else if (minor_version <= 10) {
+ result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code,
+ c, n, v, fn, name, fline, lnos, fv, cell);
+ } else {
+ if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end;
+ result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code,
+ c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell);
}
- end:
- Py_XDECREF(kwds);
- Py_XDECREF(argcount);
- Py_XDECREF(posonlyargcount);
- Py_XDECREF(kwonlyargcount);
- Py_XDECREF(nlocals);
- Py_XDECREF(stacksize);
- Py_XDECREF(replace);
- Py_XDECREF(call_result);
- Py_XDECREF(empty);
+ end:
+ Py_XDECREF(code_type);
+ Py_XDECREF(exception_table);
+ Py_XDECREF(types_module);
if (type) {
PyErr_Restore(type, value, traceback);
}
- return co;
+ return result;
}
+ #ifndef CO_OPTIMIZED
+ #define CO_OPTIMIZED 0x0001
+ #endif
+ #ifndef CO_NEWLOCALS
+ #define CO_NEWLOCALS 0x0002
+ #endif
+ #ifndef CO_VARARGS
+ #define CO_VARARGS 0x0004
+ #endif
+ #ifndef CO_VARKEYWORDS
+ #define CO_VARKEYWORDS 0x0008
+ #endif
+ #ifndef CO_ASYNC_GENERATOR
+ #define CO_ASYNC_GENERATOR 0x0200
+ #endif
+ #ifndef CO_GENERATOR
+ #define CO_GENERATOR 0x0020
+ #endif
+ #ifndef CO_COROUTINE
+ #define CO_COROUTINE 0x0080
+ #endif
+#elif PY_VERSION_HEX >= 0x030B0000
+ static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f,
+ PyObject *code, PyObject *c, PyObject* n, PyObject *v,
+ PyObject *fv, PyObject *cell, PyObject* fn,
+ PyObject *name, int fline, PyObject *lnos) {
+ PyCodeObject *result;
+ PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0);
+ if (!empty_bytes) return NULL;
+ result =
+ #if PY_VERSION_HEX >= 0x030C0000
+ PyUnstable_Code_NewWithPosOnlyArgs
+ #else
+ PyCode_NewWithPosOnlyArgs
+ #endif
+ (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes);
+ Py_DECREF(empty_bytes);
+ return result;
+ }
+#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY
+ #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
+ PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#else
- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
+ #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#endif
- #define __Pyx_DefaultClassType PyType_Type
+#endif
+#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE)
+ #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type)
+#else
+ #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type))
+#endif
+#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is)
+ #define __Pyx_Py_Is(x, y) Py_Is(x, y)
+#else
+ #define __Pyx_Py_Is(x, y) ((x) == (y))
+#endif
+#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone)
+ #define __Pyx_Py_IsNone(ob) Py_IsNone(ob)
+#else
+ #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None)
+#endif
+#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue)
+ #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob)
+#else
+ #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True)
+#endif
+#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse)
+ #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob)
+#else
+ #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False)
+#endif
+#define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj))
+#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY
+ #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o)
+#else
+ #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o)
+#endif
+#ifndef CO_COROUTINE
+ #define CO_COROUTINE 0x80
+#endif
+#ifndef CO_ASYNC_GENERATOR
+ #define CO_ASYNC_GENERATOR 0x200
#endif
#ifndef Py_TPFLAGS_CHECKTYPES
#define Py_TPFLAGS_CHECKTYPES 0
@@ -480,6 +756,12 @@ END: Cython Metadata */
#ifndef Py_TPFLAGS_HAVE_FINALIZE
#define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
+#ifndef Py_TPFLAGS_SEQUENCE
+ #define Py_TPFLAGS_SEQUENCE 0
+#endif
+#ifndef Py_TPFLAGS_MAPPING
+ #define Py_TPFLAGS_MAPPING 0
+#endif
#ifndef METH_STACKLESS
#define METH_STACKLESS 0
#endif
@@ -491,34 +773,89 @@ END: Cython Metadata */
typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
Py_ssize_t nargs, PyObject *kwnames);
#else
- #define __Pyx_PyCFunctionFast _PyCFunctionFast
- #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
+ #if PY_VERSION_HEX >= 0x030d00A4
+ # define __Pyx_PyCFunctionFast PyCFunctionFast
+ # define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords
+ #else
+ # define __Pyx_PyCFunctionFast _PyCFunctionFast
+ # define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
+ #endif
+#endif
+#if CYTHON_METH_FASTCALL
+ #define __Pyx_METH_FASTCALL METH_FASTCALL
+ #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast
+ #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords
+#else
+ #define __Pyx_METH_FASTCALL METH_VARARGS
+ #define __Pyx_PyCFunction_FastCall PyCFunction
+ #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords
+#endif
+#if CYTHON_VECTORCALL
+ #define __pyx_vectorcallfunc vectorcallfunc
+ #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET
+ #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n))
+#elif CYTHON_BACKPORT_VECTORCALL
+ typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args,
+ size_t nargsf, PyObject *kwnames);
+ #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1))
+ #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET))
+#else
+ #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0
+ #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n))
+#endif
+#if PY_MAJOR_VERSION >= 0x030900B1
+#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func)
+#else
+#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func)
+#endif
+#define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func)
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth)
+#elif !CYTHON_COMPILING_IN_LIMITED_API
+#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func)
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags)
+static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) {
+ return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self;
+}
+#endif
+static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) {
+#if CYTHON_COMPILING_IN_LIMITED_API
+ return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
+#else
+ return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
#endif
-#if CYTHON_FAST_PYCCALL
-#define __Pyx_PyFastCFunction_Check(func)\
- ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
+}
+#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc)
+#if __PYX_LIMITED_VERSION_HEX < 0x030900B1
+ #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b))
+ typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *);
#else
-#define __Pyx_PyFastCFunction_Check(func) 0
+ #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b)
+ #define __Pyx_PyCMethod PyCMethod
+#endif
+#ifndef METH_METHOD
+ #define METH_METHOD 0x200
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
#define PyObject_Malloc(s) PyMem_Malloc(s)
#define PyObject_Free(p) PyMem_Free(p)
#define PyObject_Realloc(p) PyMem_Realloc(p)
#endif
-#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
- #define PyMem_RawMalloc(n) PyMem_Malloc(n)
- #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
- #define PyMem_RawFree(p) PyMem_Free(p)
-#endif
-#if CYTHON_COMPILING_IN_PYSTON
- #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
- #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
+#if CYTHON_COMPILING_IN_LIMITED_API
+ #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0)
+ #define __Pyx_PyFrame_SetLineNumber(frame, lineno)
#else
#define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0)
#define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno)
#endif
-#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000
+#if CYTHON_COMPILING_IN_LIMITED_API
+ #define __Pyx_PyThreadState_Current PyThreadState_Get()
+#elif !CYTHON_FAST_THREAD_STATE
#define __Pyx_PyThreadState_Current PyThreadState_GET()
+#elif PY_VERSION_HEX >= 0x030d00A1
+ #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked()
#elif PY_VERSION_HEX >= 0x03060000
#define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
#elif PY_VERSION_HEX >= 0x03000000
@@ -526,6 +863,22 @@ END: Cython Metadata */
#else
#define __Pyx_PyThreadState_Current _PyThreadState_Current
#endif
+#if CYTHON_COMPILING_IN_LIMITED_API
+static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op)
+{
+ void *result;
+ result = PyModule_GetState(op);
+ if (!result)
+ Py_FatalError("Couldn't find the module state");
+ return result;
+}
+#endif
+#define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype)
+#if CYTHON_COMPILING_IN_LIMITED_API
+ #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name))
+#else
+ #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name)
+#endif
#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)
#include "pythread.h"
#define Py_tss_NEEDS_INIT 0
@@ -556,7 +909,29 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
return PyThread_get_key_value(*key);
}
#endif
-#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
+#if PY_MAJOR_VERSION < 3
+ #if CYTHON_COMPILING_IN_PYPY
+ #if PYPY_VERSION_NUM < 0x07030600
+ #if defined(__cplusplus) && __cplusplus >= 201402L
+ [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]]
+ #elif defined(__GNUC__) || defined(__clang__)
+ __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")))
+ #elif defined(_MSC_VER)
+ __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))
+ #endif
+ static CYTHON_INLINE int PyGILState_Check(void) {
+ return 0;
+ }
+ #else // PYPY_VERSION_NUM < 0x07030600
+ #endif // PYPY_VERSION_NUM < 0x07030600
+ #else
+ static CYTHON_INLINE int PyGILState_Check(void) {
+ PyThreadState * tstate = _PyThreadState_Current;
+ return tstate && (tstate == PyGILState_GetThisThreadState());
+ }
+ #endif
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized)
#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
#else
#define __Pyx_PyDict_NewPresized(n) PyDict_New()
@@ -568,34 +943,91 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y)
#define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y)
#endif
-#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS
-#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS
+#define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
+static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) {
+ PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name);
+ if (res == NULL) PyErr_Clear();
+ return res;
+}
+#elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000)
+#define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError
+#define __Pyx_PyDict_GetItemStr PyDict_GetItem
+#else
+static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) {
+#if CYTHON_COMPILING_IN_PYPY
+ return PyDict_GetItem(dict, name);
+#else
+ PyDictEntry *ep;
+ PyDictObject *mp = (PyDictObject*) dict;
+ long hash = ((PyStringObject *) name)->ob_shash;
+ assert(hash != -1);
+ ep = (mp->ma_lookup)(mp, name, hash);
+ if (ep == NULL) {
+ return NULL;
+ }
+ return ep->me_value;
+#endif
+}
+#define __Pyx_PyDict_GetItemStr PyDict_GetItem
+#endif
+#if CYTHON_USE_TYPE_SLOTS
+ #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags)
+ #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0)
+ #define __Pyx_PyObject_GetIterNextFunc(obj) (Py_TYPE(obj)->tp_iternext)
+#else
+ #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp))
+ #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature)
+ #define __Pyx_PyObject_GetIterNextFunc(obj) PyIter_Next
+#endif
+#if CYTHON_COMPILING_IN_LIMITED_API
+ #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v)
+#else
+ #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v)
+#endif
+#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000
+#define __Pyx_PyHeapTypeObject_GC_Del(obj) {\
+ PyTypeObject *type = Py_TYPE((PyObject*)obj);\
+ assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\
+ PyObject_GC_Del(obj);\
+ Py_DECREF(type);\
+}
#else
-#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name)
+#define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj)
#endif
-#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+#if CYTHON_COMPILING_IN_LIMITED_API
#define CYTHON_PEP393_ENABLED 1
- #if defined(PyUnicode_IS_READY)
- #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
- 0 : _PyUnicode_Ready((PyObject *)(op)))
- #else
#define __Pyx_PyUnicode_READY(op) (0)
+ #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GetLength(u)
+ #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i)
+ #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U)
+ #define __Pyx_PyUnicode_KIND(u) ((void)u, (0))
+ #define __Pyx_PyUnicode_DATA(u) ((void*)u)
+ #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i))
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u))
+#elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+ #define CYTHON_PEP393_ENABLED 1
+ #if PY_VERSION_HEX >= 0x030C0000
+ #define __Pyx_PyUnicode_READY(op) (0)
+ #else
+ #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
+ 0 : _PyUnicode_Ready((PyObject *)(op)))
#endif
#define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
#define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
#define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
- #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u)
+ #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u))
#define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u)
#define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
- #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch)
- #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
- #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
- #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
- #else
- #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
- #endif
+ #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch)
+ #if PY_VERSION_HEX >= 0x030C0000
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
#else
- #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
+ #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
+ #else
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
+ #endif
#endif
#else
#define CYTHON_PEP393_ENABLED 0
@@ -605,11 +1037,11 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#define __Pyx_PyUnicode_READY(op) (0)
#define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u)
#define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
- #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111)
- #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE))
+ #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U)
+ #define __Pyx_PyUnicode_KIND(u) ((int)sizeof(Py_UNICODE))
#define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u))
#define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
- #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch)
+ #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch)
#define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u))
#endif
#if CYTHON_COMPILING_IN_PYPY
@@ -620,14 +1052,20 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
#endif
-#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
- #define PyUnicode_Contains(u, s) PySequence_Contains(u, s)
-#endif
-#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check)
- #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type)
-#endif
-#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
- #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
+#if CYTHON_COMPILING_IN_PYPY
+ #if !defined(PyUnicode_DecodeUnicodeEscape)
+ #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors)
+ #endif
+ #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500)
+ #undef PyUnicode_Contains
+ #define PyUnicode_Contains(u, s) PySequence_Contains(u, s)
+ #endif
+ #if !defined(PyByteArray_Check)
+ #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type)
+ #endif
+ #if !defined(PyObject_Format)
+ #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
+ #endif
#endif
#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
@@ -656,8 +1094,14 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
#define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+ #define __Pyx_PySequence_ListKeepNew(obj)\
+ (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj))
+#else
+ #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj)
+#endif
#ifndef PySet_CheckExact
- #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type)
+ #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type)
#endif
#if PY_VERSION_HEX >= 0x030900A4
#define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt)
@@ -667,15 +1111,42 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size)
#endif
#if CYTHON_ASSUME_SAFE_MACROS
+ #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i)
#define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq)
+ #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0))
+ #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0))
+ #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o)
+ #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o)
+ #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o)
+ #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o)
+ #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o)
#else
+ #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i)
#define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq)
+ #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v)
+ #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v)
+ #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o)
+ #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o)
+ #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o)
+ #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o)
+ #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o)
+#endif
+#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
+ #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name)
+#else
+ static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) {
+ PyObject *module = PyImport_AddModule(name);
+ Py_XINCREF(module);
+ return module;
+ }
#endif
#if PY_MAJOR_VERSION >= 3
#define PyIntObject PyLongObject
#define PyInt_Type PyLong_Type
#define PyInt_Check(op) PyLong_Check(op)
#define PyInt_CheckExact(op) PyLong_CheckExact(op)
+ #define __Pyx_Py3Int_Check(op) PyLong_Check(op)
+ #define __Pyx_Py3Int_CheckExact(op) PyLong_CheckExact(op)
#define PyInt_FromString PyLong_FromString
#define PyInt_FromUnicode PyLong_FromUnicode
#define PyInt_FromLong PyLong_FromLong
@@ -687,6 +1158,9 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
#define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
#define PyNumber_Int PyNumber_Long
+#else
+ #define __Pyx_Py3Int_Check(op) (PyLong_Check(op) || PyInt_Check(op))
+ #define __Pyx_Py3Int_CheckExact(op) (PyLong_CheckExact(op) || PyInt_CheckExact(op))
#endif
#if PY_MAJOR_VERSION >= 3
#define PyBoolObject PyLongObject
@@ -704,11 +1178,6 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
#define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t
#endif
-#if PY_MAJOR_VERSION >= 3
- #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func))
-#else
- #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
-#endif
#if CYTHON_USE_ASYNC_SLOTS
#if PY_VERSION_HEX >= 0x030500B1
#define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
@@ -749,11 +1218,20 @@ static CYTHON_INLINE float __PYX_NAN() {
#endif
#define __PYX_MARK_ERR_POS(f_index, lineno) \
- { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; }
+ { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; }
#define __PYX_ERR(f_index, lineno, Ln_error) \
{ __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }
-#ifndef __PYX_EXTERN_C
+#ifdef CYTHON_EXTERN_C
+ #undef __PYX_EXTERN_C
+ #define __PYX_EXTERN_C CYTHON_EXTERN_C
+#elif defined(__PYX_EXTERN_C)
+ #ifdef _MSC_VER
+ #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.")
+ #else
+ #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.
+ #endif
+#else
#ifdef __cplusplus
#define __PYX_EXTERN_C extern "C"
#else
@@ -836,9 +1314,10 @@ static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
#else
#define __Pyx_sst_abs(value) ((value<0) ? -value : value)
#endif
+static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s);
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
-#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
+static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*);
#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
#define __Pyx_PyBytes_FromString PyBytes_FromString
#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
@@ -856,9 +1335,9 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s))
-#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s))
+#define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
+#define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
+#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s)
@@ -866,13 +1345,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s)
#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s)
#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
-static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
- const Py_UNICODE *u_end = u;
- while (*u_end++) ;
- return (size_t)(u_end - u - 1);
-}
-#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
-#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
+#define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o)
#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode
#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
@@ -896,11 +1369,57 @@ static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
#else
#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
#endif
-#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))
-#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
-static int __Pyx_sys_getdefaultencoding_not_ascii;
-static int __Pyx_init_sys_getdefaultencoding_params(void) {
- PyObject* sys;
+#if CYTHON_USE_PYLONG_INTERNALS
+ #if PY_VERSION_HEX >= 0x030C00A7
+ #ifndef _PyLong_SIGN_MASK
+ #define _PyLong_SIGN_MASK 3
+ #endif
+ #ifndef _PyLong_NON_SIZE_BITS
+ #define _PyLong_NON_SIZE_BITS 3
+ #endif
+ #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK)
+ #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0)
+ #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x))
+ #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1)
+ #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0)
+ #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0])
+ #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS))
+ #define __Pyx_PyLong_SignedDigitCount(x)\
+ ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x))
+ #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue)
+ #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x)
+ #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x)
+ #else
+ #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS))
+ #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0])
+ #endif
+ typedef Py_ssize_t __Pyx_compact_pylong;
+ typedef size_t __Pyx_compact_upylong;
+ #else
+ #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0)
+ #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0)
+ #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0)
+ #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0)
+ #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0])
+ #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x))
+ #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x)
+ #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1)
+ #define __Pyx_PyLong_CompactValue(x)\
+ ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0]))
+ typedef sdigit __Pyx_compact_pylong;
+ typedef digit __Pyx_compact_upylong;
+ #endif
+ #if PY_VERSION_HEX >= 0x030C00A5
+ #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit)
+ #else
+ #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit)
+ #endif
+#endif
+#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
+#include
+static int __Pyx_sys_getdefaultencoding_not_ascii;
+static int __Pyx_init_sys_getdefaultencoding_params(void) {
+ PyObject* sys;
PyObject* default_encoding = NULL;
PyObject* ascii_chars_u = NULL;
PyObject* ascii_chars_b = NULL;
@@ -918,7 +1437,7 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) {
char ascii_chars[128];
int c;
for (c = 0; c < 128; c++) {
- ascii_chars[c] = c;
+ ascii_chars[c] = (char) c;
}
__Pyx_sys_getdefaultencoding_not_ascii = 1;
ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
@@ -948,6 +1467,7 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) {
#else
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
+#include
static char* __PYX_DEFAULT_STRING_ENCODING;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
PyObject* sys;
@@ -983,24 +1503,30 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) {
#endif /* __GNUC__ */
static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
+#if !CYTHON_USE_MODULE_STATE
static PyObject *__pyx_m = NULL;
-static PyObject *__pyx_d;
-static PyObject *__pyx_b;
-static PyObject *__pyx_cython_runtime = NULL;
-static PyObject *__pyx_empty_tuple;
-static PyObject *__pyx_empty_bytes;
-static PyObject *__pyx_empty_unicode;
+#endif
static int __pyx_lineno;
static int __pyx_clineno = 0;
-static const char * __pyx_cfilenm= __FILE__;
+static const char * __pyx_cfilenm = __FILE__;
static const char *__pyx_filename;
+/* #### Code section: filename_table ### */
static const char *__pyx_f[] = {
- "_pydevd_frame_eval/pydevd_frame_evaluator.pyx",
- "stringsource",
- "_pydevd_bundle/pydevd_cython.pxd",
+ "_pydevd_frame_eval\\\\pydevd_frame_evaluator.pyx",
+ "",
+ "_pydevd_bundle\\\\pydevd_cython.pxd",
};
+/* #### Code section: utility_code_proto_before_types ### */
+/* ForceInitThreads.proto */
+#ifndef __PYX_FORCE_INIT_THREADS
+ #define __PYX_FORCE_INIT_THREADS 0
+#endif
+
+/* #### Code section: numeric_typedefs ### */
+/* #### Code section: complex_type_declarations ### */
+/* #### Code section: type_declarations ### */
/*--- Type declarations ---*/
struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo;
@@ -1016,6 +1542,7 @@ struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue;
*/
struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo {
PyObject_HEAD
+ struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_vtab;
int pydev_state;
PyObject *pydev_step_stop;
int pydev_original_step_cmd;
@@ -1042,6 +1569,8 @@ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo {
PyObject *pydev_smart_step_into_variants;
PyObject *target_id_to_smart_step_into_variant;
int pydev_use_scoped_step_frame;
+ PyObject *weak_thread;
+ int is_in_wait_loop;
};
@@ -1117,6 +1646,21 @@ struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue {
+/* "_pydevd_bundle/pydevd_cython.pxd":1
+ * cdef class PyDBAdditionalThreadInfo: # <<<<<<<<<<<<<<
+ * cdef public int pydev_state
+ * cdef public object pydev_step_stop # Actually, it's a frame or None
+ */
+
+struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo {
+ PyObject *(*get_topmost_frame)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, PyObject *, int __pyx_skip_dispatch);
+ PyObject *(*update_stepping_info)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch);
+ PyObject *(*_get_related_thread)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch);
+ int (*_is_stepping)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch);
+};
+static struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_vtabptr_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo;
+
+
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":24
*
*
@@ -1144,6 +1688,7 @@ struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValu
PyObject *(*compute_force_stay_in_untraced_mode)(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_vtabptr_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue;
+/* #### Code section: utility_code_proto ### */
/* --- Runtime support code (head) --- */
/* Refnanny.proto */
@@ -1152,11 +1697,11 @@ static struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator__Ca
#endif
#if CYTHON_REFNANNY
typedef struct {
- void (*INCREF)(void*, PyObject*, int);
- void (*DECREF)(void*, PyObject*, int);
- void (*GOTREF)(void*, PyObject*, int);
- void (*GIVEREF)(void*, PyObject*, int);
- void* (*SetupContext)(const char*, int, const char*);
+ void (*INCREF)(void*, PyObject*, Py_ssize_t);
+ void (*DECREF)(void*, PyObject*, Py_ssize_t);
+ void (*GOTREF)(void*, PyObject*, Py_ssize_t);
+ void (*GIVEREF)(void*, PyObject*, Py_ssize_t);
+ void* (*SetupContext)(const char*, Py_ssize_t, const char*);
void (*FinishContext)(void**);
} __Pyx_RefNannyAPIStruct;
static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
@@ -1166,28 +1711,40 @@ static struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator__Ca
#define __Pyx_RefNannySetupContext(name, acquire_gil)\
if (acquire_gil) {\
PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
- __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
+ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\
PyGILState_Release(__pyx_gilstate_save);\
} else {\
- __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
+ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\
+ }
+ #define __Pyx_RefNannyFinishContextNogil() {\
+ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
+ __Pyx_RefNannyFinishContext();\
+ PyGILState_Release(__pyx_gilstate_save);\
}
#else
#define __Pyx_RefNannySetupContext(name, acquire_gil)\
- __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__))
+ #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext()
#endif
+ #define __Pyx_RefNannyFinishContextNogil() {\
+ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
+ __Pyx_RefNannyFinishContext();\
+ PyGILState_Release(__pyx_gilstate_save);\
+ }
#define __Pyx_RefNannyFinishContext()\
__Pyx_RefNanny->FinishContext(&__pyx_refnanny)
- #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
- #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
- #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
- #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+ #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
+ #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
+ #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
+ #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
+ #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0)
+ #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0)
+ #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0)
+ #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0)
#else
#define __Pyx_RefNannyDeclarations
#define __Pyx_RefNannySetupContext(name, acquire_gil)
+ #define __Pyx_RefNannyFinishContextNogil()
#define __Pyx_RefNannyFinishContext()
#define __Pyx_INCREF(r) Py_INCREF(r)
#define __Pyx_DECREF(r) Py_DECREF(r)
@@ -1198,6 +1755,10 @@ static struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator__Ca
#define __Pyx_XGOTREF(r)
#define __Pyx_XGIVEREF(r)
#endif
+#define __Pyx_Py_XDECREF_SET(r, v) do {\
+ PyObject *tmp = (PyObject *) r;\
+ r = v; Py_XDECREF(tmp);\
+ } while (0)
#define __Pyx_XDECREF_SET(r, v) do {\
PyObject *tmp = (PyObject *) r;\
r = v; __Pyx_XDECREF(tmp);\
@@ -1209,6 +1770,57 @@ static struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator__Ca
#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+/* PyErrExceptionMatches.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
+static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
+#else
+#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err)
+#endif
+
+/* PyThreadStateGet.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate;
+#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current;
+#if PY_VERSION_HEX >= 0x030C00A6
+#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL)
+#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL)
+#else
+#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL)
+#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type)
+#endif
+#else
+#define __Pyx_PyThreadState_declare
+#define __Pyx_PyThreadState_assign
+#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL)
+#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred()
+#endif
+
+/* PyErrFetchRestore.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
+#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6
+#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
+#else
+#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
+#endif
+#else
+#define __Pyx_PyErr_Clear() PyErr_Clear()
+#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
+#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb)
+#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb)
+#endif
+
/* PyObjectGetAttrStr.proto */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
@@ -1216,9 +1828,76 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject
#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
#endif
+/* PyObjectGetAttrStrNoError.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name);
+
/* GetBuiltinName.proto */
static PyObject *__Pyx_GetBuiltinName(PyObject *name);
+/* TupleAndListFromArray.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n);
+static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n);
+#endif
+
+/* IncludeStringH.proto */
+#include
+
+/* BytesEquals.proto */
+static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);
+
+/* UnicodeEquals.proto */
+static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);
+
+/* fastcall.proto */
+#if CYTHON_AVOID_BORROWED_REFS
+ #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i)
+#elif CYTHON_ASSUME_SAFE_MACROS
+ #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i)
+#else
+ #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i)
+#endif
+#if CYTHON_AVOID_BORROWED_REFS
+ #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg)
+ #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg)
+#else
+ #define __Pyx_Arg_NewRef_VARARGS(arg) arg
+ #define __Pyx_Arg_XDECREF_VARARGS(arg)
+#endif
+#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds)
+#define __Pyx_KwValues_VARARGS(args, nargs) NULL
+#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s)
+#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw)
+#if CYTHON_METH_FASTCALL
+ #define __Pyx_Arg_FASTCALL(args, i) args[i]
+ #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds)
+ #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs))
+ static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s);
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
+ CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues);
+ #else
+ #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw)
+ #endif
+ #define __Pyx_Arg_NewRef_FASTCALL(arg) arg /* no-op, __Pyx_Arg_FASTCALL is direct and this needs
+ to have the same reference counting */
+ #define __Pyx_Arg_XDECREF_FASTCALL(arg)
+#else
+ #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS
+ #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS
+ #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS
+ #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS
+ #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS
+ #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg)
+ #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg)
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+#define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start)
+#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start)
+#else
+#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop)
+#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop)
+#endif
+
/* PyDictVersioning.proto */
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1)
@@ -1247,18 +1926,18 @@ static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UIN
/* GetModuleGlobalName.proto */
#if CYTHON_USE_DICT_VERSIONS
-#define __Pyx_GetModuleGlobalName(var, name) {\
+#define __Pyx_GetModuleGlobalName(var, name) do {\
static PY_UINT64_T __pyx_dict_version = 0;\
static PyObject *__pyx_dict_cached_value = NULL;\
(var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
(likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
__Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
-}
-#define __Pyx_GetModuleGlobalNameUncached(var, name) {\
+} while(0)
+#define __Pyx_GetModuleGlobalNameUncached(var, name) do {\
PY_UINT64_T __pyx_dict_version;\
PyObject *__pyx_dict_cached_value;\
(var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
-}
+} while(0)
static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
#else
#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
@@ -1268,33 +1947,37 @@ static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
/* PyFunctionFastCall.proto */
#if CYTHON_FAST_PYCALL
+#if !CYTHON_VECTORCALL
#define __Pyx_PyFunction_FastCall(func, args, nargs)\
__Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
-#if 1 || PY_VERSION_HEX < 0x030600B1
static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs);
-#else
-#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
#endif
#define __Pyx_BUILD_ASSERT_EXPR(cond)\
(sizeof(char [1 - 2*!(cond)]) - 1)
#ifndef Py_MEMBER_SIZE
#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
#endif
-#if CYTHON_FAST_PYCALL
- static size_t __pyx_pyframe_localsplus_offset = 0;
+#if !CYTHON_VECTORCALL
+#if PY_VERSION_HEX >= 0x03080000
#include "frameobject.h"
-#if PY_VERSION_HEX >= 0x030b00a6
+#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API
#ifndef Py_BUILD_CORE
#define Py_BUILD_CORE 1
#endif
#include "internal/pycore_frame.h"
#endif
+ #define __Pxy_PyFrame_Initialize_Offsets()
+ #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus)
+#else
+ static size_t __pyx_pyframe_localsplus_offset = 0;
+ #include "frameobject.h"
#define __Pxy_PyFrame_Initialize_Offsets()\
((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
(void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
#define __Pyx_PyFrame_GetLocalsplus(frame)\
(assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
-#endif // CYTHON_FAST_PYCALL
+#endif
+#endif
#endif
/* PyObjectCall.proto */
@@ -1309,25 +1992,43 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
#endif
-/* PyObjectCallNoArg.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
-#else
-#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
-#endif
+/* PyObjectFastCall.proto */
+#define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL)
+static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs);
-/* PyCFunctionFastCall.proto */
-#if CYTHON_FAST_PYCCALL
-static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);
+/* AssertionsEnabled.proto */
+#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
+ #define __Pyx_init_assertions_enabled() (0)
+ #define __pyx_assertions_enabled() (1)
+#elif CYTHON_COMPILING_IN_LIMITED_API || (CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030C0000)
+ static int __pyx_assertions_enabled_flag;
+ #define __pyx_assertions_enabled() (__pyx_assertions_enabled_flag)
+ static int __Pyx_init_assertions_enabled(void) {
+ PyObject *builtins, *debug, *debug_str;
+ int flag;
+ builtins = PyEval_GetBuiltins();
+ if (!builtins) goto bad;
+ debug_str = PyUnicode_FromStringAndSize("__debug__", 9);
+ if (!debug_str) goto bad;
+ debug = PyObject_GetItem(builtins, debug_str);
+ Py_DECREF(debug_str);
+ if (!debug) goto bad;
+ flag = PyObject_IsTrue(debug);
+ Py_DECREF(debug);
+ if (flag == -1) goto bad;
+ __pyx_assertions_enabled_flag = flag;
+ return 0;
+ bad:
+ __pyx_assertions_enabled_flag = 1;
+ return -1;
+ }
#else
-#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL)
+ #define __Pyx_init_assertions_enabled() (0)
+ #define __pyx_assertions_enabled() (!Py_OptimizeFlag)
#endif
-/* PyObjectCallOneArg.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
-
-/* PyObjectCall2Args.proto */
-static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
+/* RaiseException.proto */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
/* PyIntBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
@@ -1343,15 +2044,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
int has_cstart, int has_cstop, int wraparound);
-/* IncludeStringH.proto */
-#include
-
-/* BytesEquals.proto */
-static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);
-
-/* UnicodeEquals.proto */
-static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);
-
/* StrEquals.proto */
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
@@ -1359,61 +2051,14 @@ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int
#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
#endif
-/* PyErrExceptionMatches.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
-static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
-#else
-#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err)
-#endif
-
-/* PyThreadStateGet.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate;
-#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current;
-#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type
-#else
-#define __Pyx_PyThreadState_declare
-#define __Pyx_PyThreadState_assign
-#define __Pyx_PyErr_Occurred() PyErr_Occurred()
-#endif
-
-/* PyErrFetchRestore.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
-#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
-#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
-#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
-#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
-static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
-static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
-#if CYTHON_COMPILING_IN_CPYTHON
-#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
-#else
-#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
-#endif
-#else
-#define __Pyx_PyErr_Clear() PyErr_Clear()
-#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
-#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb)
-#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb)
-#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb)
-#endif
-
-/* GetAttr.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);
-
/* GetAttr3.proto */
static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *);
-/* RaiseException.proto */
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
+/* PyObjectCallNoArg.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
/* GetTopmostException.proto */
-#if CYTHON_USE_EXC_INFO_STACK
+#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE
static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
#endif
@@ -1438,27 +2083,11 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
/* PyObjectLookupSpecial.proto */
#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-static CYTHON_INLINE PyObject* __Pyx_PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name) {
- PyObject *res;
- PyTypeObject *tp = Py_TYPE(obj);
-#if PY_MAJOR_VERSION < 3
- if (unlikely(PyInstance_Check(obj)))
- return __Pyx_PyObject_GetAttrStr(obj, attr_name);
-#endif
- res = _PyType_Lookup(tp, attr_name);
- if (likely(res)) {
- descrgetfunc f = Py_TYPE(res)->tp_descr_get;
- if (!f) {
- Py_INCREF(res);
- } else {
- res = f(res, obj, (PyObject *)tp);
- }
- } else {
- PyErr_SetObject(PyExc_AttributeError, attr_name);
- }
- return res;
-}
+#define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 0)
+#define __Pyx_PyObject_LookupSpecial(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 1)
+static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error);
#else
+#define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n)
#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n)
#endif
@@ -1471,7 +2100,7 @@ static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr
#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
#endif
-/* None.proto */
+/* RaiseUnboundLocalError.proto */
static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);
/* ExtTypeTest.proto */
@@ -1490,19 +2119,23 @@ static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
/* KeywordStringCheck.proto */
-static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed);
+static int __Pyx_CheckKeywordStrings(PyObject *kw, const char* function_name, int kw_allowed);
/* RaiseDoubleKeywords.proto */
static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
/* ParseKeywords.proto */
-static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
- PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues,
+ PyObject **argnames[],
+ PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,
const char* function_name);
+/* RaiseUnexpectedTypeError.proto */
+static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj);
+
/* ArgTypeTest.proto */
#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\
- ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\
+ ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\
__Pyx__ArgTypeTest(obj, type, name, exact))
static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact);
@@ -1551,6 +2184,9 @@ static CYTHON_INLINE int __Pyx_IterFinish(void);
/* UnpackItemEndCheck.proto */
static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);
+/* PyObjectCallOneArg.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
+
/* PySequenceContains.proto */
static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
int result = PySequence_Contains(seq, item);
@@ -1593,19 +2229,37 @@ static CYTHON_INLINE int __Pyx_PyDict_ContainsTF(PyObject* item, PyObject* dict,
return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
}
-/* WriteUnraisableException.proto */
-static void __Pyx_WriteUnraisable(const char *name, int clineno,
- int lineno, const char *filename,
- int full_traceback, int nogil);
-
/* Import.proto */
static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
/* ImportFrom.proto */
static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);
+/* GetAttr.proto */
+static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);
+
/* HasAttr.proto */
+#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
+#define __Pyx_HasAttr(o, n) PyObject_HasAttrWithError(o, n)
+#else
static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);
+#endif
+
+/* IncludeStructmemberH.proto */
+#include
+
+/* FixUpExtensionType.proto */
+#if CYTHON_USE_TYPE_SPECS
+static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type);
+#endif
+
+/* ValidateBasesTuple.proto */
+#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS
+static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases);
+#endif
+
+/* PyType_Ready.proto */
+CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t);
/* PyObject_GenericGetAttrNoDict.proto */
#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
@@ -1622,54 +2276,217 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam
#endif
/* SetVTable.proto */
-static int __Pyx_SetVtable(PyObject *dict, void *vtable);
+static int __Pyx_SetVtable(PyTypeObject* typeptr , void* vtable);
-/* PyObjectGetAttrStrNoError.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name);
+/* GetVTable.proto */
+static void* __Pyx_GetVtable(PyTypeObject *type);
+
+/* MergeVTables.proto */
+#if !CYTHON_COMPILING_IN_LIMITED_API
+static int __Pyx_MergeVtables(PyTypeObject *type);
+#endif
/* SetupReduce.proto */
+#if !CYTHON_COMPILING_IN_LIMITED_API
static int __Pyx_setup_reduce(PyObject* type_obj);
+#endif
/* TypeImport.proto */
-#ifndef __PYX_HAVE_RT_ImportType_proto
-#define __PYX_HAVE_RT_ImportType_proto
-enum __Pyx_ImportType_CheckSize {
- __Pyx_ImportType_CheckSize_Error = 0,
- __Pyx_ImportType_CheckSize_Warn = 1,
- __Pyx_ImportType_CheckSize_Ignore = 2
-};
-static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size);
+#ifndef __PYX_HAVE_RT_ImportType_proto_3_0_10
+#define __PYX_HAVE_RT_ImportType_proto_3_0_10
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
+#include
#endif
-
-/* CLineInTraceback.proto */
-#ifdef CYTHON_CLINE_IN_TRACEBACK
-#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
+#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L
+#define __PYX_GET_STRUCT_ALIGNMENT_3_0_10(s) alignof(s)
#else
-static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
+#define __PYX_GET_STRUCT_ALIGNMENT_3_0_10(s) sizeof(void*)
#endif
-
-/* CodeObjectCache.proto */
-typedef struct {
- PyCodeObject* code_object;
- int code_line;
-} __Pyx_CodeObjectCacheEntry;
-struct __Pyx_CodeObjectCache {
- int count;
- int max_count;
- __Pyx_CodeObjectCacheEntry* entries;
+enum __Pyx_ImportType_CheckSize_3_0_10 {
+ __Pyx_ImportType_CheckSize_Error_3_0_10 = 0,
+ __Pyx_ImportType_CheckSize_Warn_3_0_10 = 1,
+ __Pyx_ImportType_CheckSize_Ignore_3_0_10 = 2
};
-static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
-static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
-static PyCodeObject *__pyx_find_code_object(int code_line);
-static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
-
-/* AddTraceback.proto */
-static void __Pyx_AddTraceback(const char *funcname, int c_line,
- int py_line, const char *filename);
+static PyTypeObject *__Pyx_ImportType_3_0_10(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_10 check_size);
+#endif
-/* GCCDiagnostics.proto */
-#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
-#define __Pyx_HAS_GCC_DIAGNOSTIC
+/* ImportDottedModule.proto */
+static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple);
+#if PY_MAJOR_VERSION >= 3
+static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple);
+#endif
+
+/* FetchSharedCythonModule.proto */
+static PyObject *__Pyx_FetchSharedCythonABIModule(void);
+
+/* FetchCommonType.proto */
+#if !CYTHON_USE_TYPE_SPECS
+static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);
+#else
+static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases);
+#endif
+
+/* PyMethodNew.proto */
+#if CYTHON_COMPILING_IN_LIMITED_API
+static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
+ PyObject *typesModule=NULL, *methodType=NULL, *result=NULL;
+ CYTHON_UNUSED_VAR(typ);
+ if (!self)
+ return __Pyx_NewRef(func);
+ typesModule = PyImport_ImportModule("types");
+ if (!typesModule) return NULL;
+ methodType = PyObject_GetAttrString(typesModule, "MethodType");
+ Py_DECREF(typesModule);
+ if (!methodType) return NULL;
+ result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL);
+ Py_DECREF(methodType);
+ return result;
+}
+#elif PY_MAJOR_VERSION >= 3
+static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
+ CYTHON_UNUSED_VAR(typ);
+ if (!self)
+ return __Pyx_NewRef(func);
+ return PyMethod_New(func, self);
+}
+#else
+ #define __Pyx_PyMethod_New PyMethod_New
+#endif
+
+/* PyVectorcallFastCallDict.proto */
+#if CYTHON_METH_FASTCALL
+static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw);
+#endif
+
+/* CythonFunctionShared.proto */
+#define __Pyx_CyFunction_USED
+#define __Pyx_CYFUNCTION_STATICMETHOD 0x01
+#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02
+#define __Pyx_CYFUNCTION_CCLASS 0x04
+#define __Pyx_CYFUNCTION_COROUTINE 0x08
+#define __Pyx_CyFunction_GetClosure(f)\
+ (((__pyx_CyFunctionObject *) (f))->func_closure)
+#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
+ #define __Pyx_CyFunction_GetClassObj(f)\
+ (((__pyx_CyFunctionObject *) (f))->func_classobj)
+#else
+ #define __Pyx_CyFunction_GetClassObj(f)\
+ ((PyObject*) ((PyCMethodObject *) (f))->mm_class)
+#endif
+#define __Pyx_CyFunction_SetClassObj(f, classobj)\
+ __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj))
+#define __Pyx_CyFunction_Defaults(type, f)\
+ ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
+#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
+ ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
+typedef struct {
+#if CYTHON_COMPILING_IN_LIMITED_API
+ PyObject_HEAD
+ PyObject *func;
+#elif PY_VERSION_HEX < 0x030900B1
+ PyCFunctionObject func;
+#else
+ PyCMethodObject func;
+#endif
+#if CYTHON_BACKPORT_VECTORCALL
+ __pyx_vectorcallfunc func_vectorcall;
+#endif
+#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
+ PyObject *func_weakreflist;
+#endif
+ PyObject *func_dict;
+ PyObject *func_name;
+ PyObject *func_qualname;
+ PyObject *func_doc;
+ PyObject *func_globals;
+ PyObject *func_code;
+ PyObject *func_closure;
+#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
+ PyObject *func_classobj;
+#endif
+ void *defaults;
+ int defaults_pyobjects;
+ size_t defaults_size;
+ int flags;
+ PyObject *defaults_tuple;
+ PyObject *defaults_kwdict;
+ PyObject *(*defaults_getter)(PyObject *);
+ PyObject *func_annotations;
+ PyObject *func_is_coroutine;
+} __pyx_CyFunctionObject;
+#undef __Pyx_CyOrPyCFunction_Check
+#define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_CyFunctionType)
+#define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type)
+#define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CyFunctionType)
+static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc);
+#undef __Pyx_IsSameCFunction
+#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc)
+static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml,
+ int flags, PyObject* qualname,
+ PyObject *closure,
+ PyObject *module, PyObject *globals,
+ PyObject* code);
+static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj);
+static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,
+ size_t size,
+ int pyobjects);
+static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
+ PyObject *tuple);
+static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
+ PyObject *dict);
+static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
+ PyObject *dict);
+static int __pyx_CyFunction_init(PyObject *module);
+#if CYTHON_METH_FASTCALL
+static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
+static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
+static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
+static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
+#if CYTHON_BACKPORT_VECTORCALL
+#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall)
+#else
+#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall)
+#endif
+#endif
+
+/* CythonFunction.proto */
+static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml,
+ int flags, PyObject* qualname,
+ PyObject *closure,
+ PyObject *module, PyObject *globals,
+ PyObject* code);
+
+/* CLineInTraceback.proto */
+#ifdef CYTHON_CLINE_IN_TRACEBACK
+#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
+#else
+static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
+#endif
+
+/* CodeObjectCache.proto */
+#if !CYTHON_COMPILING_IN_LIMITED_API
+typedef struct {
+ PyCodeObject* code_object;
+ int code_line;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+ int count;
+ int max_count;
+ __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+#endif
+
+/* AddTraceback.proto */
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+ int py_line, const char *filename);
+
+/* GCCDiagnostics.proto */
+#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
+#define __Pyx_HAS_GCC_DIAGNOSTIC
#endif
/* CIntToPy.proto */
@@ -1684,39 +2501,53 @@ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
+/* FormatTypeName.proto */
+#if CYTHON_COMPILING_IN_LIMITED_API
+typedef PyObject *__Pyx_TypeName;
+#define __Pyx_FMT_TYPENAME "%U"
+static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp);
+#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj)
+#else
+typedef const char *__Pyx_TypeName;
+#define __Pyx_FMT_TYPENAME "%.200s"
+#define __Pyx_PyType_GetName(tp) ((tp)->tp_name)
+#define __Pyx_DECREF_TypeName(obj)
+#endif
+
/* FastTypeChecks.proto */
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
+#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2)
static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
+static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
#else
#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2))
#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
#endif
+#define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2)
#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)
/* CheckBinaryVersion.proto */
-static int __Pyx_check_binary_version(void);
+static unsigned long __Pyx_get_runtime_version(void);
+static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer);
/* InitStrings.proto */
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
+/* #### Code section: module_declarations ### */
static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_initialize(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyFrameObject *__pyx_v_frame_obj); /* proto*/
static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_initialize_if_possible(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_compute_force_stay_in_untraced_mode(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self, PyObject *__pyx_v_breakpoints, int __pyx_skip_dispatch); /* proto*/
-/* Module declarations from 'cpython.mem' */
+/* Module declarations from "cpython.mem" */
-/* Module declarations from '_pydevd_bundle.pydevd_cython' */
-static PyTypeObject *__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo = 0;
+/* Module declarations from "_pydevd_bundle.pydevd_cython" */
-/* Module declarations from '_pydevd_frame_eval.pydevd_frame_evaluator' */
-static PyTypeObject *__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo = 0;
-static PyTypeObject *__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo = 0;
-static PyTypeObject *__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo = 0;
-static PyTypeObject *__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue = 0;
+/* Module declarations from "_pydevd_frame_eval.pydevd_frame_evaluator" */
static int __pyx_v_18_pydevd_frame_eval_22pydevd_frame_evaluator__code_extra_index;
static int __pyx_v_18_pydevd_frame_eval_22pydevd_frame_evaluator_IS_PY_39_OWNARDS;
static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_thread_info(PyFrameObject *); /*proto*/
@@ -1728,18 +2559,26 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle_FuncCodeInfo__set_state(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *, PyObject *); /*proto*/
static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle__CodeLineInfo__set_state(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *, PyObject *); /*proto*/
static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle__CacheValue__set_state(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *, PyObject *); /*proto*/
+/* #### Code section: typeinfo ### */
+/* #### Code section: before_global_var ### */
#define __Pyx_MODULE_NAME "_pydevd_frame_eval.pydevd_frame_evaluator"
extern int __pyx_module_is_main__pydevd_frame_eval__pydevd_frame_evaluator;
int __pyx_module_is_main__pydevd_frame_eval__pydevd_frame_evaluator = 0;
-/* Implementation of '_pydevd_frame_eval.pydevd_frame_evaluator' */
+/* Implementation of "_pydevd_frame_eval.pydevd_frame_evaluator" */
+/* #### Code section: global_var ### */
+static PyObject *__pyx_builtin_AssertionError;
static PyObject *__pyx_builtin_AttributeError;
static PyObject *__pyx_builtin_min;
static PyObject *__pyx_builtin_max;
+/* #### Code section: string_decls ### */
static const char __pyx_k_[] = "/";
static const char __pyx_k__2[] = "\\";
static const char __pyx_k__3[] = ".";
static const char __pyx_k__5[] = "";
+static const char __pyx_k_gc[] = "gc";
+static const char __pyx_k__10[] = "*";
+static const char __pyx_k__47[] = "?";
static const char __pyx_k_arg[] = "arg";
static const char __pyx_k_dis[] = "dis";
static const char __pyx_k_get[] = "get";
@@ -1756,6 +2595,8 @@ static const char __pyx_k_exit[] = "__exit__";
static const char __pyx_k_line[] = "line";
static const char __pyx_k_main[] = "main";
static const char __pyx_k_name[] = "__name__";
+static const char __pyx_k_self[] = "self";
+static const char __pyx_k_spec[] = "__spec__";
static const char __pyx_k_test[] = "__test__";
static const char __pyx_k_cache[] = "_cache";
static const char __pyx_k_enter[] = "__enter__";
@@ -1767,6 +2608,8 @@ static const char __pyx_k_rfind[] = "rfind";
static const char __pyx_k_state[] = "state";
static const char __pyx_k_active[] = "_active";
static const char __pyx_k_call_2[] = "call";
+static const char __pyx_k_dict_2[] = "_dict";
+static const char __pyx_k_enable[] = "enable";
static const char __pyx_k_f_back[] = "f_back";
static const char __pyx_k_import[] = "__import__";
static const char __pyx_k_main_2[] = "__main__";
@@ -1775,8 +2618,10 @@ static const char __pyx_k_pickle[] = "pickle";
static const char __pyx_k_plugin[] = "plugin";
static const char __pyx_k_pydevd[] = "pydevd";
static const char __pyx_k_reduce[] = "__reduce__";
+static const char __pyx_k_return[] = "return";
static const char __pyx_k_thread[] = "thread";
static const char __pyx_k_update[] = "update";
+static const char __pyx_k_disable[] = "disable";
static const char __pyx_k_f_trace[] = "f_trace";
static const char __pyx_k_SetTrace[] = "SetTrace";
static const char __pyx_k_can_skip[] = "can_skip";
@@ -1787,6 +2632,7 @@ static const char __pyx_k_setstate[] = "__setstate__";
static const char __pyx_k_bootstrap[] = "__bootstrap";
static const char __pyx_k_decref_py[] = "decref_py";
static const char __pyx_k_get_ident[] = "_get_ident";
+static const char __pyx_k_isenabled[] = "isenabled";
static const char __pyx_k_last_line[] = "last_line";
static const char __pyx_k_pyx_state[] = "__pyx_state";
static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
@@ -1807,14 +2653,18 @@ static const char __pyx_k_get_ident_2[] = "get_ident";
static const char __pyx_k_thread_info[] = "thread_info";
static const char __pyx_k_CodeLineInfo[] = "_CodeLineInfo";
static const char __pyx_k_FuncCodeInfo[] = "FuncCodeInfo";
+static const char __pyx_k_initializing[] = "_initializing";
static const char __pyx_k_intersection[] = "intersection";
+static const char __pyx_k_is_coroutine[] = "_is_coroutine";
static const char __pyx_k_pydev_monkey[] = "pydev_monkey";
static const char __pyx_k_pyx_checksum[] = "__pyx_checksum";
-static const char __pyx_k_stringsource[] = "stringsource";
+static const char __pyx_k_stringsource[] = "";
+static const char __pyx_k_use_setstate[] = "use_setstate";
static const char __pyx_k_version_info[] = "version_info";
static const char __pyx_k_get_file_type[] = "get_file_type";
static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
static const char __pyx_k_thread_active[] = "_thread_active";
+static const char __pyx_k_AssertionError[] = "AssertionError";
static const char __pyx_k_AttributeError[] = "AttributeError";
static const char __pyx_k_code_line_info[] = "code_line_info";
static const char __pyx_k_current_thread[] = "current_thread";
@@ -1833,6 +2683,7 @@ static const char __pyx_k_bootstrap_inner_2[] = "_bootstrap_inner";
static const char __pyx_k_pydevd_file_utils[] = "pydevd_file_utils";
static const char __pyx_k_signature_factory[] = "signature_factory";
static const char __pyx_k_thread_local_info[] = "_thread_local_info";
+static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines";
static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
static const char __pyx_k_get_code_line_info[] = "_get_code_line_info";
static const char __pyx_k_get_thread_info_py[] = "get_thread_info_py";
@@ -1851,13 +2702,22 @@ static const char __pyx_k_pyx_unpickle_ThreadInfo[] = "__pyx_unpickle_ThreadInfo
static const char __pyx_k_breakpoints_hit_at_lines[] = "breakpoints_hit_at_lines";
static const char __pyx_k_pyx_unpickle__CacheValue[] = "__pyx_unpickle__CacheValue";
static const char __pyx_k_pyx_unpickle_FuncCodeInfo[] = "__pyx_unpickle_FuncCodeInfo";
+static const char __pyx_k_CacheValue___reduce_cython[] = "_CacheValue.__reduce_cython__";
+static const char __pyx_k_ThreadInfo___reduce_cython[] = "ThreadInfo.__reduce_cython__";
static const char __pyx_k_break_on_caught_exceptions[] = "break_on_caught_exceptions";
static const char __pyx_k_pyx_unpickle__CodeLineInfo[] = "__pyx_unpickle__CodeLineInfo";
static const char __pyx_k_get_cached_code_obj_info_py[] = "get_cached_code_obj_info_py";
static const char __pyx_k_has_plugin_exception_breaks[] = "has_plugin_exception_breaks";
+static const char __pyx_k_CacheValue___setstate_cython[] = "_CacheValue.__setstate_cython__";
+static const char __pyx_k_CodeLineInfo___reduce_cython[] = "_CodeLineInfo.__reduce_cython__";
+static const char __pyx_k_FuncCodeInfo___reduce_cython[] = "FuncCodeInfo.__reduce_cython__";
+static const char __pyx_k_ThreadInfo___setstate_cython[] = "ThreadInfo.__setstate_cython__";
static const char __pyx_k_NORM_PATHS_AND_BASE_CONTAINER[] = "NORM_PATHS_AND_BASE_CONTAINER";
+static const char __pyx_k_CodeLineInfo___setstate_cython[] = "_CodeLineInfo.__setstate_cython__";
+static const char __pyx_k_FuncCodeInfo___setstate_cython[] = "FuncCodeInfo.__setstate_cython__";
static const char __pyx_k_pydevd_bundle_pydevd_constants[] = "_pydevd_bundle.pydevd_constants";
static const char __pyx_k_pydevd_frame_eval_pydevd_frame[] = "_pydevd_frame_eval.pydevd_frame_tracing";
+static const char __pyx_k_CacheValue_compute_force_stay_i[] = "_CacheValue.compute_force_stay_in_untraced_mode";
static const char __pyx_k_If_a_code_object_is_cached_that[] = "If a code object is cached, that same code object must be reused.";
static const char __pyx_k_get_abs_path_real_path_and_base[] = "get_abs_path_real_path_and_base_from_frame";
static const char __pyx_k_pydev_bundle__pydev_saved_modul[] = "_pydev_bundle._pydev_saved_modules";
@@ -1865,7 +2725,7 @@ static const char __pyx_k_pydevd_bundle_pydevd_additional[] = "_pydevd_bundle.py
static const char __pyx_k_pydevd_bundle_pydevd_trace_disp[] = "_pydevd_bundle.pydevd_trace_dispatch";
static const char __pyx_k_pydevd_frame_eval_pydevd_modify[] = "_pydevd_frame_eval.pydevd_modify_bytecode";
static const char __pyx_k_set_additional_thread_info_lock[] = "_set_additional_thread_info_lock";
-static const char __pyx_k_Incompatible_checksums_0x_x_vs_0[] = "Incompatible checksums (0x%x vs (0x0af4089, 0xe535b68, 0xb8148ba) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))";
+static const char __pyx_k_Incompatible_checksums_0x_x_vs_0[] = "Incompatible checksums (0x%x vs (0xe535b68, 0xb8148ba, 0x0af4089) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))";
static const char __pyx_k_break_on_user_uncaught_exception[] = "break_on_user_uncaught_exceptions";
static const char __pyx_k_compute_force_stay_in_untraced_m[] = "compute_force_stay_in_untraced_mode";
static const char __pyx_k_fix_top_level_trace_and_get_trac[] = "fix_top_level_trace_and_get_trace_func";
@@ -1873,149 +2733,10 @@ static const char __pyx_k_function_breakpoint_name_to_brea[] = "function_breakpo
static const char __pyx_k_generate_code_with_breakpoints_p[] = "generate_code_with_breakpoints_py";
static const char __pyx_k_pydevd_frame_eval_pydevd_frame_2[] = "_pydevd_frame_eval/pydevd_frame_evaluator.pyx";
static const char __pyx_k_pydevd_frame_eval_pydevd_frame_3[] = "_pydevd_frame_eval.pydevd_frame_evaluator";
-static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_2[] = "Incompatible checksums (0x%x vs (0xb3ee05d, 0x450d2d6, 0x956dcaa) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))";
-static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_3[] = "Incompatible checksums (0x%x vs (0x3fbbd02, 0x5a9bcd5, 0x0267473) = (first_line, last_line, line_to_offset))";
-static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_4[] = "Incompatible checksums (0x%x vs (0x3d481b9, 0xac42a46, 0xedff7c3) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))";
-static PyObject *__pyx_kp_s_;
-static PyObject *__pyx_n_s_AttributeError;
-static PyObject *__pyx_n_s_CacheValue;
-static PyObject *__pyx_n_s_CodeLineInfo;
-static PyObject *__pyx_n_s_DebugHelper;
-static PyObject *__pyx_n_s_FuncCodeInfo;
-static PyObject *__pyx_n_s_GlobalDebuggerHolder;
-static PyObject *__pyx_kp_s_If_a_code_object_is_cached_that;
-static PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0;
-static PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2;
-static PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3;
-static PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4;
-static PyObject *__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER;
-static PyObject *__pyx_n_s_PickleError;
-static PyObject *__pyx_n_s_SetTrace;
-static PyObject *__pyx_n_s_ThreadInfo;
-static PyObject *__pyx_kp_s__2;
-static PyObject *__pyx_kp_s__3;
-static PyObject *__pyx_kp_s__5;
-static PyObject *__pyx_n_s_active;
-static PyObject *__pyx_n_s_additional_info;
-static PyObject *__pyx_n_s_arg;
-static PyObject *__pyx_n_s_bootstrap;
-static PyObject *__pyx_n_s_bootstrap_2;
-static PyObject *__pyx_n_s_bootstrap_inner;
-static PyObject *__pyx_n_s_bootstrap_inner_2;
-static PyObject *__pyx_n_s_break_on_caught_exceptions;
-static PyObject *__pyx_n_s_break_on_user_uncaught_exception;
-static PyObject *__pyx_n_s_breakpoints;
-static PyObject *__pyx_n_s_breakpoints_hit_at_lines;
-static PyObject *__pyx_n_s_cache;
-static PyObject *__pyx_n_s_call;
-static PyObject *__pyx_n_s_call_2;
-static PyObject *__pyx_n_s_can_skip;
-static PyObject *__pyx_n_s_clear_thread_local_info;
-static PyObject *__pyx_n_s_cline_in_traceback;
-static PyObject *__pyx_n_s_code_line_info;
-static PyObject *__pyx_n_s_code_obj;
-static PyObject *__pyx_n_s_code_obj_py;
-static PyObject *__pyx_n_s_compute_force_stay_in_untraced_m;
-static PyObject *__pyx_n_s_current_thread;
-static PyObject *__pyx_n_s_decref_py;
-static PyObject *__pyx_n_s_dict;
-static PyObject *__pyx_n_s_dis;
-static PyObject *__pyx_n_s_dummy_trace_dispatch;
-static PyObject *__pyx_n_s_dummy_tracing_holder;
-static PyObject *__pyx_n_s_enter;
-static PyObject *__pyx_n_s_event;
-static PyObject *__pyx_n_s_exec;
-static PyObject *__pyx_n_s_exit;
-static PyObject *__pyx_n_s_f_back;
-static PyObject *__pyx_n_s_f_trace;
-static PyObject *__pyx_n_s_findlinestarts;
-static PyObject *__pyx_n_s_first_line;
-static PyObject *__pyx_n_s_fix_top_level_trace_and_get_trac;
-static PyObject *__pyx_n_s_frame;
-static PyObject *__pyx_n_s_frame_eval_func;
-static PyObject *__pyx_n_s_function_breakpoint_name_to_brea;
-static PyObject *__pyx_n_s_generate_code_with_breakpoints_p;
-static PyObject *__pyx_n_s_get;
-static PyObject *__pyx_n_s_get_abs_path_real_path_and_base;
-static PyObject *__pyx_n_s_get_cache_file_type;
-static PyObject *__pyx_n_s_get_cached_code_obj_info_py;
-static PyObject *__pyx_n_s_get_code_line_info;
-static PyObject *__pyx_n_s_get_file_type;
-static PyObject *__pyx_n_s_get_func_code_info_py;
-static PyObject *__pyx_n_s_get_ident;
-static PyObject *__pyx_n_s_get_ident_2;
-static PyObject *__pyx_n_s_get_thread_info_py;
-static PyObject *__pyx_n_s_getstate;
-static PyObject *__pyx_n_s_global_dbg;
-static PyObject *__pyx_n_s_has_plugin_exception_breaks;
-static PyObject *__pyx_n_s_has_plugin_line_breaks;
-static PyObject *__pyx_n_s_import;
-static PyObject *__pyx_n_s_insert_pydevd_breaks;
-static PyObject *__pyx_n_s_intersection;
-static PyObject *__pyx_n_s_is_pydev_daemon_thread;
-static PyObject *__pyx_n_s_issuperset;
-static PyObject *__pyx_n_s_last_line;
-static PyObject *__pyx_n_s_line;
-static PyObject *__pyx_n_s_line_to_offset;
-static PyObject *__pyx_n_s_local;
-static PyObject *__pyx_n_s_main;
-static PyObject *__pyx_n_s_main_2;
-static PyObject *__pyx_n_s_max;
-static PyObject *__pyx_n_s_min;
-static PyObject *__pyx_n_s_mtime;
-static PyObject *__pyx_n_s_name;
-static PyObject *__pyx_n_s_new;
-static PyObject *__pyx_n_s_obj;
-static PyObject *__pyx_n_s_offset;
-static PyObject *__pyx_n_s_pickle;
-static PyObject *__pyx_n_s_plugin;
-static PyObject *__pyx_n_s_pydev_bundle__pydev_saved_modul;
-static PyObject *__pyx_n_s_pydev_monkey;
-static PyObject *__pyx_n_s_pydevd;
-static PyObject *__pyx_n_s_pydevd_bundle_pydevd_additional;
-static PyObject *__pyx_n_s_pydevd_bundle_pydevd_constants;
-static PyObject *__pyx_n_s_pydevd_bundle_pydevd_trace_disp;
-static PyObject *__pyx_n_s_pydevd_file_utils;
-static PyObject *__pyx_n_s_pydevd_frame_eval_pydevd_frame;
-static PyObject *__pyx_kp_s_pydevd_frame_eval_pydevd_frame_2;
-static PyObject *__pyx_n_s_pydevd_frame_eval_pydevd_frame_3;
-static PyObject *__pyx_n_s_pydevd_frame_eval_pydevd_modify;
-static PyObject *__pyx_n_s_pydevd_tracing;
-static PyObject *__pyx_n_s_pyx_PickleError;
-static PyObject *__pyx_n_s_pyx_checksum;
-static PyObject *__pyx_n_s_pyx_result;
-static PyObject *__pyx_n_s_pyx_state;
-static PyObject *__pyx_n_s_pyx_type;
-static PyObject *__pyx_n_s_pyx_unpickle_FuncCodeInfo;
-static PyObject *__pyx_n_s_pyx_unpickle_ThreadInfo;
-static PyObject *__pyx_n_s_pyx_unpickle__CacheValue;
-static PyObject *__pyx_n_s_pyx_unpickle__CodeLineInfo;
-static PyObject *__pyx_n_s_pyx_vtable;
-static PyObject *__pyx_n_s_reduce;
-static PyObject *__pyx_n_s_reduce_cython;
-static PyObject *__pyx_n_s_reduce_ex;
-static PyObject *__pyx_n_s_rfind;
-static PyObject *__pyx_n_s_run;
-static PyObject *__pyx_n_s_set_additional_thread_info_lock;
-static PyObject *__pyx_n_s_set_trace_func;
-static PyObject *__pyx_n_s_setstate;
-static PyObject *__pyx_n_s_setstate_cython;
-static PyObject *__pyx_n_s_show_return_values;
-static PyObject *__pyx_n_s_signature_factory;
-static PyObject *__pyx_n_s_state;
-static PyObject *__pyx_n_s_stop_frame_eval;
-static PyObject *__pyx_kp_s_stringsource;
-static PyObject *__pyx_n_s_sys;
-static PyObject *__pyx_n_s_test;
-static PyObject *__pyx_n_s_thread;
-static PyObject *__pyx_n_s_thread_active;
-static PyObject *__pyx_n_s_thread_info;
-static PyObject *__pyx_n_s_thread_local_info;
-static PyObject *__pyx_n_s_threading;
-static PyObject *__pyx_n_s_trace_dispatch;
-static PyObject *__pyx_n_s_update;
-static PyObject *__pyx_n_s_update_globals_dict;
-static PyObject *__pyx_n_s_version_info;
+static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_2[] = "Incompatible checksums (0x%x vs (0x450d2d6, 0x956dcaa, 0xb3ee05d) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))";
+static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_3[] = "Incompatible checksums (0x%x vs (0x5a9bcd5, 0x0267473, 0x3fbbd02) = (first_line, last_line, line_to_offset))";
+static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_4[] = "Incompatible checksums (0x%x vs (0xac42a46, 0xedff7c3, 0x3d481b9) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))";
+/* #### Code section: decls ### */
static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_clear_thread_local_info(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self); /* proto */
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
@@ -2095,57 +2816,1064 @@ static PyObject *__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator_Thre
static PyObject *__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_int_0;
-static PyObject *__pyx_int_1;
-static PyObject *__pyx_int_2;
-static PyObject *__pyx_int_3;
-static PyObject *__pyx_int_9;
-static PyObject *__pyx_int_2520179;
-static PyObject *__pyx_int_11485321;
-static PyObject *__pyx_int_64258489;
-static PyObject *__pyx_int_66829570;
-static PyObject *__pyx_int_72405718;
-static PyObject *__pyx_int_95010005;
-static PyObject *__pyx_int_156687530;
-static PyObject *__pyx_int_180628038;
-static PyObject *__pyx_int_188670045;
-static PyObject *__pyx_int_193022138;
-static PyObject *__pyx_int_240343912;
-static PyObject *__pyx_int_249558979;
-static PyObject *__pyx_tuple__4;
-static PyObject *__pyx_tuple__6;
-static PyObject *__pyx_tuple__7;
-static PyObject *__pyx_tuple__8;
-static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_slice__24;
-static PyObject *__pyx_tuple__11;
-static PyObject *__pyx_tuple__14;
-static PyObject *__pyx_tuple__16;
-static PyObject *__pyx_tuple__18;
-static PyObject *__pyx_tuple__20;
-static PyObject *__pyx_tuple__22;
-static PyObject *__pyx_tuple__25;
-static PyObject *__pyx_tuple__26;
-static PyObject *__pyx_tuple__28;
-static PyObject *__pyx_tuple__30;
-static PyObject *__pyx_tuple__32;
-static PyObject *__pyx_tuple__34;
-static PyObject *__pyx_tuple__36;
-static PyObject *__pyx_codeobj__10;
-static PyObject *__pyx_codeobj__12;
-static PyObject *__pyx_codeobj__13;
-static PyObject *__pyx_codeobj__15;
-static PyObject *__pyx_codeobj__17;
-static PyObject *__pyx_codeobj__19;
-static PyObject *__pyx_codeobj__21;
-static PyObject *__pyx_codeobj__23;
-static PyObject *__pyx_codeobj__27;
-static PyObject *__pyx_codeobj__29;
-static PyObject *__pyx_codeobj__31;
-static PyObject *__pyx_codeobj__33;
-static PyObject *__pyx_codeobj__35;
-static PyObject *__pyx_codeobj__37;
-/* Late includes */
+/* #### Code section: late_includes ### */
+/* #### Code section: module_state ### */
+typedef struct {
+ PyObject *__pyx_d;
+ PyObject *__pyx_b;
+ PyObject *__pyx_cython_runtime;
+ PyObject *__pyx_empty_tuple;
+ PyObject *__pyx_empty_bytes;
+ PyObject *__pyx_empty_unicode;
+ #ifdef __Pyx_CyFunction_USED
+ PyTypeObject *__pyx_CyFunctionType;
+ #endif
+ #ifdef __Pyx_FusedFunction_USED
+ PyTypeObject *__pyx_FusedFunctionType;
+ #endif
+ #ifdef __Pyx_Generator_USED
+ PyTypeObject *__pyx_GeneratorType;
+ #endif
+ #ifdef __Pyx_IterableCoroutine_USED
+ PyTypeObject *__pyx_IterableCoroutineType;
+ #endif
+ #ifdef __Pyx_Coroutine_USED
+ PyTypeObject *__pyx_CoroutineAwaitType;
+ #endif
+ #ifdef __Pyx_Coroutine_USED
+ PyTypeObject *__pyx_CoroutineType;
+ #endif
+ #if CYTHON_USE_MODULE_STATE
+ #endif
+ #if CYTHON_USE_MODULE_STATE
+ #endif
+ PyTypeObject *__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo;
+ #if CYTHON_USE_MODULE_STATE
+ PyObject *__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo;
+ PyObject *__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo;
+ PyObject *__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo;
+ PyObject *__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue;
+ #endif
+ PyTypeObject *__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo;
+ PyTypeObject *__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo;
+ PyTypeObject *__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo;
+ PyTypeObject *__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue;
+ PyObject *__pyx_kp_s_;
+ PyObject *__pyx_n_s_AssertionError;
+ PyObject *__pyx_n_s_AttributeError;
+ PyObject *__pyx_n_s_CacheValue;
+ PyObject *__pyx_n_s_CacheValue___reduce_cython;
+ PyObject *__pyx_n_s_CacheValue___setstate_cython;
+ PyObject *__pyx_n_s_CacheValue_compute_force_stay_i;
+ PyObject *__pyx_n_s_CodeLineInfo;
+ PyObject *__pyx_n_s_CodeLineInfo___reduce_cython;
+ PyObject *__pyx_n_s_CodeLineInfo___setstate_cython;
+ PyObject *__pyx_n_s_DebugHelper;
+ PyObject *__pyx_n_s_FuncCodeInfo;
+ PyObject *__pyx_n_s_FuncCodeInfo___reduce_cython;
+ PyObject *__pyx_n_s_FuncCodeInfo___setstate_cython;
+ PyObject *__pyx_n_s_GlobalDebuggerHolder;
+ PyObject *__pyx_kp_s_If_a_code_object_is_cached_that;
+ PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0;
+ PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2;
+ PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3;
+ PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4;
+ PyObject *__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER;
+ PyObject *__pyx_n_s_PickleError;
+ PyObject *__pyx_n_s_SetTrace;
+ PyObject *__pyx_n_s_ThreadInfo;
+ PyObject *__pyx_n_s_ThreadInfo___reduce_cython;
+ PyObject *__pyx_n_s_ThreadInfo___setstate_cython;
+ PyObject *__pyx_n_s__10;
+ PyObject *__pyx_kp_s__2;
+ PyObject *__pyx_kp_s__3;
+ PyObject *__pyx_kp_u__3;
+ PyObject *__pyx_n_s__47;
+ PyObject *__pyx_kp_s__5;
+ PyObject *__pyx_n_s_active;
+ PyObject *__pyx_n_s_additional_info;
+ PyObject *__pyx_n_s_arg;
+ PyObject *__pyx_n_s_asyncio_coroutines;
+ PyObject *__pyx_n_s_bootstrap;
+ PyObject *__pyx_n_s_bootstrap_2;
+ PyObject *__pyx_n_s_bootstrap_inner;
+ PyObject *__pyx_n_s_bootstrap_inner_2;
+ PyObject *__pyx_n_s_break_on_caught_exceptions;
+ PyObject *__pyx_n_s_break_on_user_uncaught_exception;
+ PyObject *__pyx_n_s_breakpoints;
+ PyObject *__pyx_n_s_breakpoints_hit_at_lines;
+ PyObject *__pyx_n_s_cache;
+ PyObject *__pyx_n_s_call;
+ PyObject *__pyx_n_s_call_2;
+ PyObject *__pyx_n_s_can_skip;
+ PyObject *__pyx_n_s_clear_thread_local_info;
+ PyObject *__pyx_n_s_cline_in_traceback;
+ PyObject *__pyx_n_s_code_line_info;
+ PyObject *__pyx_n_s_code_obj;
+ PyObject *__pyx_n_s_code_obj_py;
+ PyObject *__pyx_n_s_compute_force_stay_in_untraced_m;
+ PyObject *__pyx_n_s_current_thread;
+ PyObject *__pyx_n_s_decref_py;
+ PyObject *__pyx_n_s_dict;
+ PyObject *__pyx_n_s_dict_2;
+ PyObject *__pyx_n_s_dis;
+ PyObject *__pyx_kp_u_disable;
+ PyObject *__pyx_n_s_dummy_trace_dispatch;
+ PyObject *__pyx_n_s_dummy_tracing_holder;
+ PyObject *__pyx_kp_u_enable;
+ PyObject *__pyx_n_s_enter;
+ PyObject *__pyx_n_s_event;
+ PyObject *__pyx_n_s_exec;
+ PyObject *__pyx_n_s_exit;
+ PyObject *__pyx_n_s_f_back;
+ PyObject *__pyx_n_s_f_trace;
+ PyObject *__pyx_n_s_findlinestarts;
+ PyObject *__pyx_n_s_first_line;
+ PyObject *__pyx_n_s_fix_top_level_trace_and_get_trac;
+ PyObject *__pyx_n_s_frame;
+ PyObject *__pyx_n_s_frame_eval_func;
+ PyObject *__pyx_n_s_function_breakpoint_name_to_brea;
+ PyObject *__pyx_kp_u_gc;
+ PyObject *__pyx_n_s_generate_code_with_breakpoints_p;
+ PyObject *__pyx_n_s_get;
+ PyObject *__pyx_n_s_get_abs_path_real_path_and_base;
+ PyObject *__pyx_n_s_get_cache_file_type;
+ PyObject *__pyx_n_s_get_cached_code_obj_info_py;
+ PyObject *__pyx_n_s_get_code_line_info;
+ PyObject *__pyx_n_s_get_file_type;
+ PyObject *__pyx_n_s_get_func_code_info_py;
+ PyObject *__pyx_n_s_get_ident;
+ PyObject *__pyx_n_s_get_ident_2;
+ PyObject *__pyx_n_s_get_thread_info_py;
+ PyObject *__pyx_n_s_getstate;
+ PyObject *__pyx_n_s_global_dbg;
+ PyObject *__pyx_n_s_has_plugin_exception_breaks;
+ PyObject *__pyx_n_s_has_plugin_line_breaks;
+ PyObject *__pyx_n_s_import;
+ PyObject *__pyx_n_s_initializing;
+ PyObject *__pyx_n_s_insert_pydevd_breaks;
+ PyObject *__pyx_n_s_intersection;
+ PyObject *__pyx_n_s_is_coroutine;
+ PyObject *__pyx_n_s_is_pydev_daemon_thread;
+ PyObject *__pyx_kp_u_isenabled;
+ PyObject *__pyx_n_s_issuperset;
+ PyObject *__pyx_n_s_last_line;
+ PyObject *__pyx_n_s_line;
+ PyObject *__pyx_n_s_line_to_offset;
+ PyObject *__pyx_n_s_local;
+ PyObject *__pyx_n_s_main;
+ PyObject *__pyx_n_s_main_2;
+ PyObject *__pyx_n_s_max;
+ PyObject *__pyx_n_s_min;
+ PyObject *__pyx_n_s_mtime;
+ PyObject *__pyx_n_s_name;
+ PyObject *__pyx_n_s_new;
+ PyObject *__pyx_n_s_obj;
+ PyObject *__pyx_n_s_offset;
+ PyObject *__pyx_n_s_pickle;
+ PyObject *__pyx_n_s_plugin;
+ PyObject *__pyx_n_s_pydev_bundle__pydev_saved_modul;
+ PyObject *__pyx_n_s_pydev_monkey;
+ PyObject *__pyx_n_s_pydevd;
+ PyObject *__pyx_n_s_pydevd_bundle_pydevd_additional;
+ PyObject *__pyx_n_s_pydevd_bundle_pydevd_constants;
+ PyObject *__pyx_n_s_pydevd_bundle_pydevd_trace_disp;
+ PyObject *__pyx_n_s_pydevd_file_utils;
+ PyObject *__pyx_n_s_pydevd_frame_eval_pydevd_frame;
+ PyObject *__pyx_kp_s_pydevd_frame_eval_pydevd_frame_2;
+ PyObject *__pyx_n_s_pydevd_frame_eval_pydevd_frame_3;
+ PyObject *__pyx_n_s_pydevd_frame_eval_pydevd_modify;
+ PyObject *__pyx_n_s_pydevd_tracing;
+ PyObject *__pyx_n_s_pyx_PickleError;
+ PyObject *__pyx_n_s_pyx_checksum;
+ PyObject *__pyx_n_s_pyx_result;
+ PyObject *__pyx_n_s_pyx_state;
+ PyObject *__pyx_n_s_pyx_type;
+ PyObject *__pyx_n_s_pyx_unpickle_FuncCodeInfo;
+ PyObject *__pyx_n_s_pyx_unpickle_ThreadInfo;
+ PyObject *__pyx_n_s_pyx_unpickle__CacheValue;
+ PyObject *__pyx_n_s_pyx_unpickle__CodeLineInfo;
+ PyObject *__pyx_n_s_pyx_vtable;
+ PyObject *__pyx_n_s_reduce;
+ PyObject *__pyx_n_s_reduce_cython;
+ PyObject *__pyx_n_s_reduce_ex;
+ PyObject *__pyx_n_s_return;
+ PyObject *__pyx_n_s_rfind;
+ PyObject *__pyx_n_s_run;
+ PyObject *__pyx_n_s_self;
+ PyObject *__pyx_n_s_set_additional_thread_info_lock;
+ PyObject *__pyx_n_s_set_trace_func;
+ PyObject *__pyx_n_s_setstate;
+ PyObject *__pyx_n_s_setstate_cython;
+ PyObject *__pyx_n_s_show_return_values;
+ PyObject *__pyx_n_s_signature_factory;
+ PyObject *__pyx_n_s_spec;
+ PyObject *__pyx_n_s_state;
+ PyObject *__pyx_n_s_stop_frame_eval;
+ PyObject *__pyx_kp_s_stringsource;
+ PyObject *__pyx_n_s_sys;
+ PyObject *__pyx_n_s_test;
+ PyObject *__pyx_n_s_thread;
+ PyObject *__pyx_n_s_thread_active;
+ PyObject *__pyx_n_s_thread_info;
+ PyObject *__pyx_n_s_thread_local_info;
+ PyObject *__pyx_n_s_threading;
+ PyObject *__pyx_n_s_trace_dispatch;
+ PyObject *__pyx_n_s_update;
+ PyObject *__pyx_n_s_update_globals_dict;
+ PyObject *__pyx_n_s_use_setstate;
+ PyObject *__pyx_n_s_version_info;
+ PyObject *__pyx_int_0;
+ PyObject *__pyx_int_1;
+ PyObject *__pyx_int_2;
+ PyObject *__pyx_int_3;
+ PyObject *__pyx_int_9;
+ PyObject *__pyx_int_2520179;
+ PyObject *__pyx_int_11485321;
+ PyObject *__pyx_int_64258489;
+ PyObject *__pyx_int_66829570;
+ PyObject *__pyx_int_72405718;
+ PyObject *__pyx_int_95010005;
+ PyObject *__pyx_int_156687530;
+ PyObject *__pyx_int_180628038;
+ PyObject *__pyx_int_188670045;
+ PyObject *__pyx_int_193022138;
+ PyObject *__pyx_int_240343912;
+ PyObject *__pyx_int_249558979;
+ PyObject *__pyx_tuple__4;
+ PyObject *__pyx_tuple__6;
+ PyObject *__pyx_tuple__7;
+ PyObject *__pyx_tuple__8;
+ PyObject *__pyx_tuple__9;
+ PyObject *__pyx_slice__37;
+ PyObject *__pyx_tuple__12;
+ PyObject *__pyx_tuple__14;
+ PyObject *__pyx_tuple__18;
+ PyObject *__pyx_tuple__21;
+ PyObject *__pyx_tuple__23;
+ PyObject *__pyx_tuple__27;
+ PyObject *__pyx_tuple__29;
+ PyObject *__pyx_tuple__31;
+ PyObject *__pyx_tuple__35;
+ PyObject *__pyx_tuple__38;
+ PyObject *__pyx_tuple__39;
+ PyObject *__pyx_tuple__42;
+ PyObject *__pyx_codeobj__11;
+ PyObject *__pyx_codeobj__13;
+ PyObject *__pyx_codeobj__15;
+ PyObject *__pyx_codeobj__16;
+ PyObject *__pyx_codeobj__17;
+ PyObject *__pyx_codeobj__19;
+ PyObject *__pyx_codeobj__20;
+ PyObject *__pyx_codeobj__22;
+ PyObject *__pyx_codeobj__24;
+ PyObject *__pyx_codeobj__25;
+ PyObject *__pyx_codeobj__26;
+ PyObject *__pyx_codeobj__28;
+ PyObject *__pyx_codeobj__30;
+ PyObject *__pyx_codeobj__32;
+ PyObject *__pyx_codeobj__33;
+ PyObject *__pyx_codeobj__34;
+ PyObject *__pyx_codeobj__36;
+ PyObject *__pyx_codeobj__40;
+ PyObject *__pyx_codeobj__41;
+ PyObject *__pyx_codeobj__43;
+ PyObject *__pyx_codeobj__44;
+ PyObject *__pyx_codeobj__45;
+ PyObject *__pyx_codeobj__46;
+} __pyx_mstate;
+
+#if CYTHON_USE_MODULE_STATE
+#ifdef __cplusplus
+namespace {
+ extern struct PyModuleDef __pyx_moduledef;
+} /* anonymous namespace */
+#else
+static struct PyModuleDef __pyx_moduledef;
+#endif
+
+#define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o))
+
+#define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef)))
+
+#define __pyx_m (PyState_FindModule(&__pyx_moduledef))
+#else
+static __pyx_mstate __pyx_mstate_global_static =
+#ifdef __cplusplus
+ {};
+#else
+ {0};
+#endif
+static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static;
+#endif
+/* #### Code section: module_state_clear ### */
+#if CYTHON_USE_MODULE_STATE
+static int __pyx_m_clear(PyObject *m) {
+ __pyx_mstate *clear_module_state = __pyx_mstate(m);
+ if (!clear_module_state) return 0;
+ Py_CLEAR(clear_module_state->__pyx_d);
+ Py_CLEAR(clear_module_state->__pyx_b);
+ Py_CLEAR(clear_module_state->__pyx_cython_runtime);
+ Py_CLEAR(clear_module_state->__pyx_empty_tuple);
+ Py_CLEAR(clear_module_state->__pyx_empty_bytes);
+ Py_CLEAR(clear_module_state->__pyx_empty_unicode);
+ #ifdef __Pyx_CyFunction_USED
+ Py_CLEAR(clear_module_state->__pyx_CyFunctionType);
+ #endif
+ #ifdef __Pyx_FusedFunction_USED
+ Py_CLEAR(clear_module_state->__pyx_FusedFunctionType);
+ #endif
+ Py_CLEAR(clear_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo);
+ Py_CLEAR(clear_module_state->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo);
+ Py_CLEAR(clear_module_state->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo);
+ Py_CLEAR(clear_module_state->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo);
+ Py_CLEAR(clear_module_state->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo);
+ Py_CLEAR(clear_module_state->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo);
+ Py_CLEAR(clear_module_state->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo);
+ Py_CLEAR(clear_module_state->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue);
+ Py_CLEAR(clear_module_state->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_);
+ Py_CLEAR(clear_module_state->__pyx_n_s_AssertionError);
+ Py_CLEAR(clear_module_state->__pyx_n_s_AttributeError);
+ Py_CLEAR(clear_module_state->__pyx_n_s_CacheValue);
+ Py_CLEAR(clear_module_state->__pyx_n_s_CacheValue___reduce_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_CacheValue___setstate_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_CacheValue_compute_force_stay_i);
+ Py_CLEAR(clear_module_state->__pyx_n_s_CodeLineInfo);
+ Py_CLEAR(clear_module_state->__pyx_n_s_CodeLineInfo___reduce_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_CodeLineInfo___setstate_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_DebugHelper);
+ Py_CLEAR(clear_module_state->__pyx_n_s_FuncCodeInfo);
+ Py_CLEAR(clear_module_state->__pyx_n_s_FuncCodeInfo___reduce_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_FuncCodeInfo___setstate_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_GlobalDebuggerHolder);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_If_a_code_object_is_cached_that);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4);
+ Py_CLEAR(clear_module_state->__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PickleError);
+ Py_CLEAR(clear_module_state->__pyx_n_s_SetTrace);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ThreadInfo);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ThreadInfo___reduce_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ThreadInfo___setstate_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s__10);
+ Py_CLEAR(clear_module_state->__pyx_kp_s__2);
+ Py_CLEAR(clear_module_state->__pyx_kp_s__3);
+ Py_CLEAR(clear_module_state->__pyx_kp_u__3);
+ Py_CLEAR(clear_module_state->__pyx_n_s__47);
+ Py_CLEAR(clear_module_state->__pyx_kp_s__5);
+ Py_CLEAR(clear_module_state->__pyx_n_s_active);
+ Py_CLEAR(clear_module_state->__pyx_n_s_additional_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_arg);
+ Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines);
+ Py_CLEAR(clear_module_state->__pyx_n_s_bootstrap);
+ Py_CLEAR(clear_module_state->__pyx_n_s_bootstrap_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_bootstrap_inner);
+ Py_CLEAR(clear_module_state->__pyx_n_s_bootstrap_inner_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_break_on_caught_exceptions);
+ Py_CLEAR(clear_module_state->__pyx_n_s_break_on_user_uncaught_exception);
+ Py_CLEAR(clear_module_state->__pyx_n_s_breakpoints);
+ Py_CLEAR(clear_module_state->__pyx_n_s_breakpoints_hit_at_lines);
+ Py_CLEAR(clear_module_state->__pyx_n_s_cache);
+ Py_CLEAR(clear_module_state->__pyx_n_s_call);
+ Py_CLEAR(clear_module_state->__pyx_n_s_call_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_can_skip);
+ Py_CLEAR(clear_module_state->__pyx_n_s_clear_thread_local_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback);
+ Py_CLEAR(clear_module_state->__pyx_n_s_code_line_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_code_obj);
+ Py_CLEAR(clear_module_state->__pyx_n_s_code_obj_py);
+ Py_CLEAR(clear_module_state->__pyx_n_s_compute_force_stay_in_untraced_m);
+ Py_CLEAR(clear_module_state->__pyx_n_s_current_thread);
+ Py_CLEAR(clear_module_state->__pyx_n_s_decref_py);
+ Py_CLEAR(clear_module_state->__pyx_n_s_dict);
+ Py_CLEAR(clear_module_state->__pyx_n_s_dict_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_dis);
+ Py_CLEAR(clear_module_state->__pyx_kp_u_disable);
+ Py_CLEAR(clear_module_state->__pyx_n_s_dummy_trace_dispatch);
+ Py_CLEAR(clear_module_state->__pyx_n_s_dummy_tracing_holder);
+ Py_CLEAR(clear_module_state->__pyx_kp_u_enable);
+ Py_CLEAR(clear_module_state->__pyx_n_s_enter);
+ Py_CLEAR(clear_module_state->__pyx_n_s_event);
+ Py_CLEAR(clear_module_state->__pyx_n_s_exec);
+ Py_CLEAR(clear_module_state->__pyx_n_s_exit);
+ Py_CLEAR(clear_module_state->__pyx_n_s_f_back);
+ Py_CLEAR(clear_module_state->__pyx_n_s_f_trace);
+ Py_CLEAR(clear_module_state->__pyx_n_s_findlinestarts);
+ Py_CLEAR(clear_module_state->__pyx_n_s_first_line);
+ Py_CLEAR(clear_module_state->__pyx_n_s_fix_top_level_trace_and_get_trac);
+ Py_CLEAR(clear_module_state->__pyx_n_s_frame);
+ Py_CLEAR(clear_module_state->__pyx_n_s_frame_eval_func);
+ Py_CLEAR(clear_module_state->__pyx_n_s_function_breakpoint_name_to_brea);
+ Py_CLEAR(clear_module_state->__pyx_kp_u_gc);
+ Py_CLEAR(clear_module_state->__pyx_n_s_generate_code_with_breakpoints_p);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_abs_path_real_path_and_base);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_cache_file_type);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_cached_code_obj_info_py);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_code_line_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_file_type);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_func_code_info_py);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_ident);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_ident_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_thread_info_py);
+ Py_CLEAR(clear_module_state->__pyx_n_s_getstate);
+ Py_CLEAR(clear_module_state->__pyx_n_s_global_dbg);
+ Py_CLEAR(clear_module_state->__pyx_n_s_has_plugin_exception_breaks);
+ Py_CLEAR(clear_module_state->__pyx_n_s_has_plugin_line_breaks);
+ Py_CLEAR(clear_module_state->__pyx_n_s_import);
+ Py_CLEAR(clear_module_state->__pyx_n_s_initializing);
+ Py_CLEAR(clear_module_state->__pyx_n_s_insert_pydevd_breaks);
+ Py_CLEAR(clear_module_state->__pyx_n_s_intersection);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_pydev_daemon_thread);
+ Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled);
+ Py_CLEAR(clear_module_state->__pyx_n_s_issuperset);
+ Py_CLEAR(clear_module_state->__pyx_n_s_last_line);
+ Py_CLEAR(clear_module_state->__pyx_n_s_line);
+ Py_CLEAR(clear_module_state->__pyx_n_s_line_to_offset);
+ Py_CLEAR(clear_module_state->__pyx_n_s_local);
+ Py_CLEAR(clear_module_state->__pyx_n_s_main);
+ Py_CLEAR(clear_module_state->__pyx_n_s_main_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_max);
+ Py_CLEAR(clear_module_state->__pyx_n_s_min);
+ Py_CLEAR(clear_module_state->__pyx_n_s_mtime);
+ Py_CLEAR(clear_module_state->__pyx_n_s_name);
+ Py_CLEAR(clear_module_state->__pyx_n_s_new);
+ Py_CLEAR(clear_module_state->__pyx_n_s_obj);
+ Py_CLEAR(clear_module_state->__pyx_n_s_offset);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pickle);
+ Py_CLEAR(clear_module_state->__pyx_n_s_plugin);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydev_bundle__pydev_saved_modul);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydev_monkey);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_additional);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_constants);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_trace_disp);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_file_utils);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_frame_eval_pydevd_frame);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_pydevd_frame_eval_pydevd_frame_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_frame_eval_pydevd_frame_3);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_frame_eval_pydevd_modify);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_tracing);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_PickleError);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_checksum);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_result);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_state);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_type);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_FuncCodeInfo);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_ThreadInfo);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle__CacheValue);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle__CodeLineInfo);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_vtable);
+ Py_CLEAR(clear_module_state->__pyx_n_s_reduce);
+ Py_CLEAR(clear_module_state->__pyx_n_s_reduce_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_reduce_ex);
+ Py_CLEAR(clear_module_state->__pyx_n_s_return);
+ Py_CLEAR(clear_module_state->__pyx_n_s_rfind);
+ Py_CLEAR(clear_module_state->__pyx_n_s_run);
+ Py_CLEAR(clear_module_state->__pyx_n_s_self);
+ Py_CLEAR(clear_module_state->__pyx_n_s_set_additional_thread_info_lock);
+ Py_CLEAR(clear_module_state->__pyx_n_s_set_trace_func);
+ Py_CLEAR(clear_module_state->__pyx_n_s_setstate);
+ Py_CLEAR(clear_module_state->__pyx_n_s_setstate_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_show_return_values);
+ Py_CLEAR(clear_module_state->__pyx_n_s_signature_factory);
+ Py_CLEAR(clear_module_state->__pyx_n_s_spec);
+ Py_CLEAR(clear_module_state->__pyx_n_s_state);
+ Py_CLEAR(clear_module_state->__pyx_n_s_stop_frame_eval);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_stringsource);
+ Py_CLEAR(clear_module_state->__pyx_n_s_sys);
+ Py_CLEAR(clear_module_state->__pyx_n_s_test);
+ Py_CLEAR(clear_module_state->__pyx_n_s_thread);
+ Py_CLEAR(clear_module_state->__pyx_n_s_thread_active);
+ Py_CLEAR(clear_module_state->__pyx_n_s_thread_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_thread_local_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_threading);
+ Py_CLEAR(clear_module_state->__pyx_n_s_trace_dispatch);
+ Py_CLEAR(clear_module_state->__pyx_n_s_update);
+ Py_CLEAR(clear_module_state->__pyx_n_s_update_globals_dict);
+ Py_CLEAR(clear_module_state->__pyx_n_s_use_setstate);
+ Py_CLEAR(clear_module_state->__pyx_n_s_version_info);
+ Py_CLEAR(clear_module_state->__pyx_int_0);
+ Py_CLEAR(clear_module_state->__pyx_int_1);
+ Py_CLEAR(clear_module_state->__pyx_int_2);
+ Py_CLEAR(clear_module_state->__pyx_int_3);
+ Py_CLEAR(clear_module_state->__pyx_int_9);
+ Py_CLEAR(clear_module_state->__pyx_int_2520179);
+ Py_CLEAR(clear_module_state->__pyx_int_11485321);
+ Py_CLEAR(clear_module_state->__pyx_int_64258489);
+ Py_CLEAR(clear_module_state->__pyx_int_66829570);
+ Py_CLEAR(clear_module_state->__pyx_int_72405718);
+ Py_CLEAR(clear_module_state->__pyx_int_95010005);
+ Py_CLEAR(clear_module_state->__pyx_int_156687530);
+ Py_CLEAR(clear_module_state->__pyx_int_180628038);
+ Py_CLEAR(clear_module_state->__pyx_int_188670045);
+ Py_CLEAR(clear_module_state->__pyx_int_193022138);
+ Py_CLEAR(clear_module_state->__pyx_int_240343912);
+ Py_CLEAR(clear_module_state->__pyx_int_249558979);
+ Py_CLEAR(clear_module_state->__pyx_tuple__4);
+ Py_CLEAR(clear_module_state->__pyx_tuple__6);
+ Py_CLEAR(clear_module_state->__pyx_tuple__7);
+ Py_CLEAR(clear_module_state->__pyx_tuple__8);
+ Py_CLEAR(clear_module_state->__pyx_tuple__9);
+ Py_CLEAR(clear_module_state->__pyx_slice__37);
+ Py_CLEAR(clear_module_state->__pyx_tuple__12);
+ Py_CLEAR(clear_module_state->__pyx_tuple__14);
+ Py_CLEAR(clear_module_state->__pyx_tuple__18);
+ Py_CLEAR(clear_module_state->__pyx_tuple__21);
+ Py_CLEAR(clear_module_state->__pyx_tuple__23);
+ Py_CLEAR(clear_module_state->__pyx_tuple__27);
+ Py_CLEAR(clear_module_state->__pyx_tuple__29);
+ Py_CLEAR(clear_module_state->__pyx_tuple__31);
+ Py_CLEAR(clear_module_state->__pyx_tuple__35);
+ Py_CLEAR(clear_module_state->__pyx_tuple__38);
+ Py_CLEAR(clear_module_state->__pyx_tuple__39);
+ Py_CLEAR(clear_module_state->__pyx_tuple__42);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__11);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__13);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__15);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__16);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__17);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__19);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__20);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__22);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__24);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__25);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__26);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__28);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__30);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__32);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__33);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__34);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__36);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__40);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__41);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__43);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__44);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__45);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__46);
+ return 0;
+}
+#endif
+/* #### Code section: module_state_traverse ### */
+#if CYTHON_USE_MODULE_STATE
+static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
+ __pyx_mstate *traverse_module_state = __pyx_mstate(m);
+ if (!traverse_module_state) return 0;
+ Py_VISIT(traverse_module_state->__pyx_d);
+ Py_VISIT(traverse_module_state->__pyx_b);
+ Py_VISIT(traverse_module_state->__pyx_cython_runtime);
+ Py_VISIT(traverse_module_state->__pyx_empty_tuple);
+ Py_VISIT(traverse_module_state->__pyx_empty_bytes);
+ Py_VISIT(traverse_module_state->__pyx_empty_unicode);
+ #ifdef __Pyx_CyFunction_USED
+ Py_VISIT(traverse_module_state->__pyx_CyFunctionType);
+ #endif
+ #ifdef __Pyx_FusedFunction_USED
+ Py_VISIT(traverse_module_state->__pyx_FusedFunctionType);
+ #endif
+ Py_VISIT(traverse_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo);
+ Py_VISIT(traverse_module_state->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo);
+ Py_VISIT(traverse_module_state->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo);
+ Py_VISIT(traverse_module_state->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo);
+ Py_VISIT(traverse_module_state->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo);
+ Py_VISIT(traverse_module_state->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo);
+ Py_VISIT(traverse_module_state->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo);
+ Py_VISIT(traverse_module_state->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue);
+ Py_VISIT(traverse_module_state->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_);
+ Py_VISIT(traverse_module_state->__pyx_n_s_AssertionError);
+ Py_VISIT(traverse_module_state->__pyx_n_s_AttributeError);
+ Py_VISIT(traverse_module_state->__pyx_n_s_CacheValue);
+ Py_VISIT(traverse_module_state->__pyx_n_s_CacheValue___reduce_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_CacheValue___setstate_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_CacheValue_compute_force_stay_i);
+ Py_VISIT(traverse_module_state->__pyx_n_s_CodeLineInfo);
+ Py_VISIT(traverse_module_state->__pyx_n_s_CodeLineInfo___reduce_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_CodeLineInfo___setstate_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_DebugHelper);
+ Py_VISIT(traverse_module_state->__pyx_n_s_FuncCodeInfo);
+ Py_VISIT(traverse_module_state->__pyx_n_s_FuncCodeInfo___reduce_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_FuncCodeInfo___setstate_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_GlobalDebuggerHolder);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_If_a_code_object_is_cached_that);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4);
+ Py_VISIT(traverse_module_state->__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PickleError);
+ Py_VISIT(traverse_module_state->__pyx_n_s_SetTrace);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ThreadInfo);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ThreadInfo___reduce_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ThreadInfo___setstate_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s__10);
+ Py_VISIT(traverse_module_state->__pyx_kp_s__2);
+ Py_VISIT(traverse_module_state->__pyx_kp_s__3);
+ Py_VISIT(traverse_module_state->__pyx_kp_u__3);
+ Py_VISIT(traverse_module_state->__pyx_n_s__47);
+ Py_VISIT(traverse_module_state->__pyx_kp_s__5);
+ Py_VISIT(traverse_module_state->__pyx_n_s_active);
+ Py_VISIT(traverse_module_state->__pyx_n_s_additional_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_arg);
+ Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines);
+ Py_VISIT(traverse_module_state->__pyx_n_s_bootstrap);
+ Py_VISIT(traverse_module_state->__pyx_n_s_bootstrap_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_bootstrap_inner);
+ Py_VISIT(traverse_module_state->__pyx_n_s_bootstrap_inner_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_break_on_caught_exceptions);
+ Py_VISIT(traverse_module_state->__pyx_n_s_break_on_user_uncaught_exception);
+ Py_VISIT(traverse_module_state->__pyx_n_s_breakpoints);
+ Py_VISIT(traverse_module_state->__pyx_n_s_breakpoints_hit_at_lines);
+ Py_VISIT(traverse_module_state->__pyx_n_s_cache);
+ Py_VISIT(traverse_module_state->__pyx_n_s_call);
+ Py_VISIT(traverse_module_state->__pyx_n_s_call_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_can_skip);
+ Py_VISIT(traverse_module_state->__pyx_n_s_clear_thread_local_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback);
+ Py_VISIT(traverse_module_state->__pyx_n_s_code_line_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_code_obj);
+ Py_VISIT(traverse_module_state->__pyx_n_s_code_obj_py);
+ Py_VISIT(traverse_module_state->__pyx_n_s_compute_force_stay_in_untraced_m);
+ Py_VISIT(traverse_module_state->__pyx_n_s_current_thread);
+ Py_VISIT(traverse_module_state->__pyx_n_s_decref_py);
+ Py_VISIT(traverse_module_state->__pyx_n_s_dict);
+ Py_VISIT(traverse_module_state->__pyx_n_s_dict_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_dis);
+ Py_VISIT(traverse_module_state->__pyx_kp_u_disable);
+ Py_VISIT(traverse_module_state->__pyx_n_s_dummy_trace_dispatch);
+ Py_VISIT(traverse_module_state->__pyx_n_s_dummy_tracing_holder);
+ Py_VISIT(traverse_module_state->__pyx_kp_u_enable);
+ Py_VISIT(traverse_module_state->__pyx_n_s_enter);
+ Py_VISIT(traverse_module_state->__pyx_n_s_event);
+ Py_VISIT(traverse_module_state->__pyx_n_s_exec);
+ Py_VISIT(traverse_module_state->__pyx_n_s_exit);
+ Py_VISIT(traverse_module_state->__pyx_n_s_f_back);
+ Py_VISIT(traverse_module_state->__pyx_n_s_f_trace);
+ Py_VISIT(traverse_module_state->__pyx_n_s_findlinestarts);
+ Py_VISIT(traverse_module_state->__pyx_n_s_first_line);
+ Py_VISIT(traverse_module_state->__pyx_n_s_fix_top_level_trace_and_get_trac);
+ Py_VISIT(traverse_module_state->__pyx_n_s_frame);
+ Py_VISIT(traverse_module_state->__pyx_n_s_frame_eval_func);
+ Py_VISIT(traverse_module_state->__pyx_n_s_function_breakpoint_name_to_brea);
+ Py_VISIT(traverse_module_state->__pyx_kp_u_gc);
+ Py_VISIT(traverse_module_state->__pyx_n_s_generate_code_with_breakpoints_p);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_abs_path_real_path_and_base);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_cache_file_type);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_cached_code_obj_info_py);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_code_line_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_file_type);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_func_code_info_py);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_ident);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_ident_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_thread_info_py);
+ Py_VISIT(traverse_module_state->__pyx_n_s_getstate);
+ Py_VISIT(traverse_module_state->__pyx_n_s_global_dbg);
+ Py_VISIT(traverse_module_state->__pyx_n_s_has_plugin_exception_breaks);
+ Py_VISIT(traverse_module_state->__pyx_n_s_has_plugin_line_breaks);
+ Py_VISIT(traverse_module_state->__pyx_n_s_import);
+ Py_VISIT(traverse_module_state->__pyx_n_s_initializing);
+ Py_VISIT(traverse_module_state->__pyx_n_s_insert_pydevd_breaks);
+ Py_VISIT(traverse_module_state->__pyx_n_s_intersection);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_pydev_daemon_thread);
+ Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled);
+ Py_VISIT(traverse_module_state->__pyx_n_s_issuperset);
+ Py_VISIT(traverse_module_state->__pyx_n_s_last_line);
+ Py_VISIT(traverse_module_state->__pyx_n_s_line);
+ Py_VISIT(traverse_module_state->__pyx_n_s_line_to_offset);
+ Py_VISIT(traverse_module_state->__pyx_n_s_local);
+ Py_VISIT(traverse_module_state->__pyx_n_s_main);
+ Py_VISIT(traverse_module_state->__pyx_n_s_main_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_max);
+ Py_VISIT(traverse_module_state->__pyx_n_s_min);
+ Py_VISIT(traverse_module_state->__pyx_n_s_mtime);
+ Py_VISIT(traverse_module_state->__pyx_n_s_name);
+ Py_VISIT(traverse_module_state->__pyx_n_s_new);
+ Py_VISIT(traverse_module_state->__pyx_n_s_obj);
+ Py_VISIT(traverse_module_state->__pyx_n_s_offset);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pickle);
+ Py_VISIT(traverse_module_state->__pyx_n_s_plugin);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydev_bundle__pydev_saved_modul);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydev_monkey);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_additional);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_constants);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_trace_disp);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_file_utils);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_frame_eval_pydevd_frame);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_pydevd_frame_eval_pydevd_frame_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_frame_eval_pydevd_frame_3);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_frame_eval_pydevd_modify);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_tracing);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_PickleError);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_checksum);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_result);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_state);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_type);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_FuncCodeInfo);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_ThreadInfo);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle__CacheValue);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle__CodeLineInfo);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_vtable);
+ Py_VISIT(traverse_module_state->__pyx_n_s_reduce);
+ Py_VISIT(traverse_module_state->__pyx_n_s_reduce_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_reduce_ex);
+ Py_VISIT(traverse_module_state->__pyx_n_s_return);
+ Py_VISIT(traverse_module_state->__pyx_n_s_rfind);
+ Py_VISIT(traverse_module_state->__pyx_n_s_run);
+ Py_VISIT(traverse_module_state->__pyx_n_s_self);
+ Py_VISIT(traverse_module_state->__pyx_n_s_set_additional_thread_info_lock);
+ Py_VISIT(traverse_module_state->__pyx_n_s_set_trace_func);
+ Py_VISIT(traverse_module_state->__pyx_n_s_setstate);
+ Py_VISIT(traverse_module_state->__pyx_n_s_setstate_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_show_return_values);
+ Py_VISIT(traverse_module_state->__pyx_n_s_signature_factory);
+ Py_VISIT(traverse_module_state->__pyx_n_s_spec);
+ Py_VISIT(traverse_module_state->__pyx_n_s_state);
+ Py_VISIT(traverse_module_state->__pyx_n_s_stop_frame_eval);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_stringsource);
+ Py_VISIT(traverse_module_state->__pyx_n_s_sys);
+ Py_VISIT(traverse_module_state->__pyx_n_s_test);
+ Py_VISIT(traverse_module_state->__pyx_n_s_thread);
+ Py_VISIT(traverse_module_state->__pyx_n_s_thread_active);
+ Py_VISIT(traverse_module_state->__pyx_n_s_thread_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_thread_local_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_threading);
+ Py_VISIT(traverse_module_state->__pyx_n_s_trace_dispatch);
+ Py_VISIT(traverse_module_state->__pyx_n_s_update);
+ Py_VISIT(traverse_module_state->__pyx_n_s_update_globals_dict);
+ Py_VISIT(traverse_module_state->__pyx_n_s_use_setstate);
+ Py_VISIT(traverse_module_state->__pyx_n_s_version_info);
+ Py_VISIT(traverse_module_state->__pyx_int_0);
+ Py_VISIT(traverse_module_state->__pyx_int_1);
+ Py_VISIT(traverse_module_state->__pyx_int_2);
+ Py_VISIT(traverse_module_state->__pyx_int_3);
+ Py_VISIT(traverse_module_state->__pyx_int_9);
+ Py_VISIT(traverse_module_state->__pyx_int_2520179);
+ Py_VISIT(traverse_module_state->__pyx_int_11485321);
+ Py_VISIT(traverse_module_state->__pyx_int_64258489);
+ Py_VISIT(traverse_module_state->__pyx_int_66829570);
+ Py_VISIT(traverse_module_state->__pyx_int_72405718);
+ Py_VISIT(traverse_module_state->__pyx_int_95010005);
+ Py_VISIT(traverse_module_state->__pyx_int_156687530);
+ Py_VISIT(traverse_module_state->__pyx_int_180628038);
+ Py_VISIT(traverse_module_state->__pyx_int_188670045);
+ Py_VISIT(traverse_module_state->__pyx_int_193022138);
+ Py_VISIT(traverse_module_state->__pyx_int_240343912);
+ Py_VISIT(traverse_module_state->__pyx_int_249558979);
+ Py_VISIT(traverse_module_state->__pyx_tuple__4);
+ Py_VISIT(traverse_module_state->__pyx_tuple__6);
+ Py_VISIT(traverse_module_state->__pyx_tuple__7);
+ Py_VISIT(traverse_module_state->__pyx_tuple__8);
+ Py_VISIT(traverse_module_state->__pyx_tuple__9);
+ Py_VISIT(traverse_module_state->__pyx_slice__37);
+ Py_VISIT(traverse_module_state->__pyx_tuple__12);
+ Py_VISIT(traverse_module_state->__pyx_tuple__14);
+ Py_VISIT(traverse_module_state->__pyx_tuple__18);
+ Py_VISIT(traverse_module_state->__pyx_tuple__21);
+ Py_VISIT(traverse_module_state->__pyx_tuple__23);
+ Py_VISIT(traverse_module_state->__pyx_tuple__27);
+ Py_VISIT(traverse_module_state->__pyx_tuple__29);
+ Py_VISIT(traverse_module_state->__pyx_tuple__31);
+ Py_VISIT(traverse_module_state->__pyx_tuple__35);
+ Py_VISIT(traverse_module_state->__pyx_tuple__38);
+ Py_VISIT(traverse_module_state->__pyx_tuple__39);
+ Py_VISIT(traverse_module_state->__pyx_tuple__42);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__11);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__13);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__15);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__16);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__17);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__19);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__20);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__22);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__24);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__25);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__26);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__28);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__30);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__32);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__33);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__34);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__36);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__40);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__41);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__43);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__44);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__45);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__46);
+ return 0;
+}
+#endif
+/* #### Code section: module_state_defines ### */
+#define __pyx_d __pyx_mstate_global->__pyx_d
+#define __pyx_b __pyx_mstate_global->__pyx_b
+#define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime
+#define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple
+#define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes
+#define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode
+#ifdef __Pyx_CyFunction_USED
+#define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType
+#endif
+#ifdef __Pyx_FusedFunction_USED
+#define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType
+#endif
+#ifdef __Pyx_Generator_USED
+#define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType
+#endif
+#ifdef __Pyx_IterableCoroutine_USED
+#define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType
+#endif
+#ifdef __Pyx_Coroutine_USED
+#define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType
+#endif
+#ifdef __Pyx_Coroutine_USED
+#define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType
+#endif
+#if CYTHON_USE_MODULE_STATE
+#endif
+#if CYTHON_USE_MODULE_STATE
+#endif
+#define __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo __pyx_mstate_global->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo
+#if CYTHON_USE_MODULE_STATE
+#define __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo __pyx_mstate_global->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo
+#define __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo __pyx_mstate_global->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo
+#define __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo __pyx_mstate_global->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo
+#define __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue __pyx_mstate_global->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue
+#endif
+#define __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo __pyx_mstate_global->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo
+#define __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo __pyx_mstate_global->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo
+#define __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo __pyx_mstate_global->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo
+#define __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue __pyx_mstate_global->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue
+#define __pyx_kp_s_ __pyx_mstate_global->__pyx_kp_s_
+#define __pyx_n_s_AssertionError __pyx_mstate_global->__pyx_n_s_AssertionError
+#define __pyx_n_s_AttributeError __pyx_mstate_global->__pyx_n_s_AttributeError
+#define __pyx_n_s_CacheValue __pyx_mstate_global->__pyx_n_s_CacheValue
+#define __pyx_n_s_CacheValue___reduce_cython __pyx_mstate_global->__pyx_n_s_CacheValue___reduce_cython
+#define __pyx_n_s_CacheValue___setstate_cython __pyx_mstate_global->__pyx_n_s_CacheValue___setstate_cython
+#define __pyx_n_s_CacheValue_compute_force_stay_i __pyx_mstate_global->__pyx_n_s_CacheValue_compute_force_stay_i
+#define __pyx_n_s_CodeLineInfo __pyx_mstate_global->__pyx_n_s_CodeLineInfo
+#define __pyx_n_s_CodeLineInfo___reduce_cython __pyx_mstate_global->__pyx_n_s_CodeLineInfo___reduce_cython
+#define __pyx_n_s_CodeLineInfo___setstate_cython __pyx_mstate_global->__pyx_n_s_CodeLineInfo___setstate_cython
+#define __pyx_n_s_DebugHelper __pyx_mstate_global->__pyx_n_s_DebugHelper
+#define __pyx_n_s_FuncCodeInfo __pyx_mstate_global->__pyx_n_s_FuncCodeInfo
+#define __pyx_n_s_FuncCodeInfo___reduce_cython __pyx_mstate_global->__pyx_n_s_FuncCodeInfo___reduce_cython
+#define __pyx_n_s_FuncCodeInfo___setstate_cython __pyx_mstate_global->__pyx_n_s_FuncCodeInfo___setstate_cython
+#define __pyx_n_s_GlobalDebuggerHolder __pyx_mstate_global->__pyx_n_s_GlobalDebuggerHolder
+#define __pyx_kp_s_If_a_code_object_is_cached_that __pyx_mstate_global->__pyx_kp_s_If_a_code_object_is_cached_that
+#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0
+#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2
+#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3
+#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4
+#define __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER __pyx_mstate_global->__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER
+#define __pyx_n_s_PickleError __pyx_mstate_global->__pyx_n_s_PickleError
+#define __pyx_n_s_SetTrace __pyx_mstate_global->__pyx_n_s_SetTrace
+#define __pyx_n_s_ThreadInfo __pyx_mstate_global->__pyx_n_s_ThreadInfo
+#define __pyx_n_s_ThreadInfo___reduce_cython __pyx_mstate_global->__pyx_n_s_ThreadInfo___reduce_cython
+#define __pyx_n_s_ThreadInfo___setstate_cython __pyx_mstate_global->__pyx_n_s_ThreadInfo___setstate_cython
+#define __pyx_n_s__10 __pyx_mstate_global->__pyx_n_s__10
+#define __pyx_kp_s__2 __pyx_mstate_global->__pyx_kp_s__2
+#define __pyx_kp_s__3 __pyx_mstate_global->__pyx_kp_s__3
+#define __pyx_kp_u__3 __pyx_mstate_global->__pyx_kp_u__3
+#define __pyx_n_s__47 __pyx_mstate_global->__pyx_n_s__47
+#define __pyx_kp_s__5 __pyx_mstate_global->__pyx_kp_s__5
+#define __pyx_n_s_active __pyx_mstate_global->__pyx_n_s_active
+#define __pyx_n_s_additional_info __pyx_mstate_global->__pyx_n_s_additional_info
+#define __pyx_n_s_arg __pyx_mstate_global->__pyx_n_s_arg
+#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines
+#define __pyx_n_s_bootstrap __pyx_mstate_global->__pyx_n_s_bootstrap
+#define __pyx_n_s_bootstrap_2 __pyx_mstate_global->__pyx_n_s_bootstrap_2
+#define __pyx_n_s_bootstrap_inner __pyx_mstate_global->__pyx_n_s_bootstrap_inner
+#define __pyx_n_s_bootstrap_inner_2 __pyx_mstate_global->__pyx_n_s_bootstrap_inner_2
+#define __pyx_n_s_break_on_caught_exceptions __pyx_mstate_global->__pyx_n_s_break_on_caught_exceptions
+#define __pyx_n_s_break_on_user_uncaught_exception __pyx_mstate_global->__pyx_n_s_break_on_user_uncaught_exception
+#define __pyx_n_s_breakpoints __pyx_mstate_global->__pyx_n_s_breakpoints
+#define __pyx_n_s_breakpoints_hit_at_lines __pyx_mstate_global->__pyx_n_s_breakpoints_hit_at_lines
+#define __pyx_n_s_cache __pyx_mstate_global->__pyx_n_s_cache
+#define __pyx_n_s_call __pyx_mstate_global->__pyx_n_s_call
+#define __pyx_n_s_call_2 __pyx_mstate_global->__pyx_n_s_call_2
+#define __pyx_n_s_can_skip __pyx_mstate_global->__pyx_n_s_can_skip
+#define __pyx_n_s_clear_thread_local_info __pyx_mstate_global->__pyx_n_s_clear_thread_local_info
+#define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback
+#define __pyx_n_s_code_line_info __pyx_mstate_global->__pyx_n_s_code_line_info
+#define __pyx_n_s_code_obj __pyx_mstate_global->__pyx_n_s_code_obj
+#define __pyx_n_s_code_obj_py __pyx_mstate_global->__pyx_n_s_code_obj_py
+#define __pyx_n_s_compute_force_stay_in_untraced_m __pyx_mstate_global->__pyx_n_s_compute_force_stay_in_untraced_m
+#define __pyx_n_s_current_thread __pyx_mstate_global->__pyx_n_s_current_thread
+#define __pyx_n_s_decref_py __pyx_mstate_global->__pyx_n_s_decref_py
+#define __pyx_n_s_dict __pyx_mstate_global->__pyx_n_s_dict
+#define __pyx_n_s_dict_2 __pyx_mstate_global->__pyx_n_s_dict_2
+#define __pyx_n_s_dis __pyx_mstate_global->__pyx_n_s_dis
+#define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable
+#define __pyx_n_s_dummy_trace_dispatch __pyx_mstate_global->__pyx_n_s_dummy_trace_dispatch
+#define __pyx_n_s_dummy_tracing_holder __pyx_mstate_global->__pyx_n_s_dummy_tracing_holder
+#define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable
+#define __pyx_n_s_enter __pyx_mstate_global->__pyx_n_s_enter
+#define __pyx_n_s_event __pyx_mstate_global->__pyx_n_s_event
+#define __pyx_n_s_exec __pyx_mstate_global->__pyx_n_s_exec
+#define __pyx_n_s_exit __pyx_mstate_global->__pyx_n_s_exit
+#define __pyx_n_s_f_back __pyx_mstate_global->__pyx_n_s_f_back
+#define __pyx_n_s_f_trace __pyx_mstate_global->__pyx_n_s_f_trace
+#define __pyx_n_s_findlinestarts __pyx_mstate_global->__pyx_n_s_findlinestarts
+#define __pyx_n_s_first_line __pyx_mstate_global->__pyx_n_s_first_line
+#define __pyx_n_s_fix_top_level_trace_and_get_trac __pyx_mstate_global->__pyx_n_s_fix_top_level_trace_and_get_trac
+#define __pyx_n_s_frame __pyx_mstate_global->__pyx_n_s_frame
+#define __pyx_n_s_frame_eval_func __pyx_mstate_global->__pyx_n_s_frame_eval_func
+#define __pyx_n_s_function_breakpoint_name_to_brea __pyx_mstate_global->__pyx_n_s_function_breakpoint_name_to_brea
+#define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc
+#define __pyx_n_s_generate_code_with_breakpoints_p __pyx_mstate_global->__pyx_n_s_generate_code_with_breakpoints_p
+#define __pyx_n_s_get __pyx_mstate_global->__pyx_n_s_get
+#define __pyx_n_s_get_abs_path_real_path_and_base __pyx_mstate_global->__pyx_n_s_get_abs_path_real_path_and_base
+#define __pyx_n_s_get_cache_file_type __pyx_mstate_global->__pyx_n_s_get_cache_file_type
+#define __pyx_n_s_get_cached_code_obj_info_py __pyx_mstate_global->__pyx_n_s_get_cached_code_obj_info_py
+#define __pyx_n_s_get_code_line_info __pyx_mstate_global->__pyx_n_s_get_code_line_info
+#define __pyx_n_s_get_file_type __pyx_mstate_global->__pyx_n_s_get_file_type
+#define __pyx_n_s_get_func_code_info_py __pyx_mstate_global->__pyx_n_s_get_func_code_info_py
+#define __pyx_n_s_get_ident __pyx_mstate_global->__pyx_n_s_get_ident
+#define __pyx_n_s_get_ident_2 __pyx_mstate_global->__pyx_n_s_get_ident_2
+#define __pyx_n_s_get_thread_info_py __pyx_mstate_global->__pyx_n_s_get_thread_info_py
+#define __pyx_n_s_getstate __pyx_mstate_global->__pyx_n_s_getstate
+#define __pyx_n_s_global_dbg __pyx_mstate_global->__pyx_n_s_global_dbg
+#define __pyx_n_s_has_plugin_exception_breaks __pyx_mstate_global->__pyx_n_s_has_plugin_exception_breaks
+#define __pyx_n_s_has_plugin_line_breaks __pyx_mstate_global->__pyx_n_s_has_plugin_line_breaks
+#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import
+#define __pyx_n_s_initializing __pyx_mstate_global->__pyx_n_s_initializing
+#define __pyx_n_s_insert_pydevd_breaks __pyx_mstate_global->__pyx_n_s_insert_pydevd_breaks
+#define __pyx_n_s_intersection __pyx_mstate_global->__pyx_n_s_intersection
+#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine
+#define __pyx_n_s_is_pydev_daemon_thread __pyx_mstate_global->__pyx_n_s_is_pydev_daemon_thread
+#define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled
+#define __pyx_n_s_issuperset __pyx_mstate_global->__pyx_n_s_issuperset
+#define __pyx_n_s_last_line __pyx_mstate_global->__pyx_n_s_last_line
+#define __pyx_n_s_line __pyx_mstate_global->__pyx_n_s_line
+#define __pyx_n_s_line_to_offset __pyx_mstate_global->__pyx_n_s_line_to_offset
+#define __pyx_n_s_local __pyx_mstate_global->__pyx_n_s_local
+#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main
+#define __pyx_n_s_main_2 __pyx_mstate_global->__pyx_n_s_main_2
+#define __pyx_n_s_max __pyx_mstate_global->__pyx_n_s_max
+#define __pyx_n_s_min __pyx_mstate_global->__pyx_n_s_min
+#define __pyx_n_s_mtime __pyx_mstate_global->__pyx_n_s_mtime
+#define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name
+#define __pyx_n_s_new __pyx_mstate_global->__pyx_n_s_new
+#define __pyx_n_s_obj __pyx_mstate_global->__pyx_n_s_obj
+#define __pyx_n_s_offset __pyx_mstate_global->__pyx_n_s_offset
+#define __pyx_n_s_pickle __pyx_mstate_global->__pyx_n_s_pickle
+#define __pyx_n_s_plugin __pyx_mstate_global->__pyx_n_s_plugin
+#define __pyx_n_s_pydev_bundle__pydev_saved_modul __pyx_mstate_global->__pyx_n_s_pydev_bundle__pydev_saved_modul
+#define __pyx_n_s_pydev_monkey __pyx_mstate_global->__pyx_n_s_pydev_monkey
+#define __pyx_n_s_pydevd __pyx_mstate_global->__pyx_n_s_pydevd
+#define __pyx_n_s_pydevd_bundle_pydevd_additional __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_additional
+#define __pyx_n_s_pydevd_bundle_pydevd_constants __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_constants
+#define __pyx_n_s_pydevd_bundle_pydevd_trace_disp __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_trace_disp
+#define __pyx_n_s_pydevd_file_utils __pyx_mstate_global->__pyx_n_s_pydevd_file_utils
+#define __pyx_n_s_pydevd_frame_eval_pydevd_frame __pyx_mstate_global->__pyx_n_s_pydevd_frame_eval_pydevd_frame
+#define __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2 __pyx_mstate_global->__pyx_kp_s_pydevd_frame_eval_pydevd_frame_2
+#define __pyx_n_s_pydevd_frame_eval_pydevd_frame_3 __pyx_mstate_global->__pyx_n_s_pydevd_frame_eval_pydevd_frame_3
+#define __pyx_n_s_pydevd_frame_eval_pydevd_modify __pyx_mstate_global->__pyx_n_s_pydevd_frame_eval_pydevd_modify
+#define __pyx_n_s_pydevd_tracing __pyx_mstate_global->__pyx_n_s_pydevd_tracing
+#define __pyx_n_s_pyx_PickleError __pyx_mstate_global->__pyx_n_s_pyx_PickleError
+#define __pyx_n_s_pyx_checksum __pyx_mstate_global->__pyx_n_s_pyx_checksum
+#define __pyx_n_s_pyx_result __pyx_mstate_global->__pyx_n_s_pyx_result
+#define __pyx_n_s_pyx_state __pyx_mstate_global->__pyx_n_s_pyx_state
+#define __pyx_n_s_pyx_type __pyx_mstate_global->__pyx_n_s_pyx_type
+#define __pyx_n_s_pyx_unpickle_FuncCodeInfo __pyx_mstate_global->__pyx_n_s_pyx_unpickle_FuncCodeInfo
+#define __pyx_n_s_pyx_unpickle_ThreadInfo __pyx_mstate_global->__pyx_n_s_pyx_unpickle_ThreadInfo
+#define __pyx_n_s_pyx_unpickle__CacheValue __pyx_mstate_global->__pyx_n_s_pyx_unpickle__CacheValue
+#define __pyx_n_s_pyx_unpickle__CodeLineInfo __pyx_mstate_global->__pyx_n_s_pyx_unpickle__CodeLineInfo
+#define __pyx_n_s_pyx_vtable __pyx_mstate_global->__pyx_n_s_pyx_vtable
+#define __pyx_n_s_reduce __pyx_mstate_global->__pyx_n_s_reduce
+#define __pyx_n_s_reduce_cython __pyx_mstate_global->__pyx_n_s_reduce_cython
+#define __pyx_n_s_reduce_ex __pyx_mstate_global->__pyx_n_s_reduce_ex
+#define __pyx_n_s_return __pyx_mstate_global->__pyx_n_s_return
+#define __pyx_n_s_rfind __pyx_mstate_global->__pyx_n_s_rfind
+#define __pyx_n_s_run __pyx_mstate_global->__pyx_n_s_run
+#define __pyx_n_s_self __pyx_mstate_global->__pyx_n_s_self
+#define __pyx_n_s_set_additional_thread_info_lock __pyx_mstate_global->__pyx_n_s_set_additional_thread_info_lock
+#define __pyx_n_s_set_trace_func __pyx_mstate_global->__pyx_n_s_set_trace_func
+#define __pyx_n_s_setstate __pyx_mstate_global->__pyx_n_s_setstate
+#define __pyx_n_s_setstate_cython __pyx_mstate_global->__pyx_n_s_setstate_cython
+#define __pyx_n_s_show_return_values __pyx_mstate_global->__pyx_n_s_show_return_values
+#define __pyx_n_s_signature_factory __pyx_mstate_global->__pyx_n_s_signature_factory
+#define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec
+#define __pyx_n_s_state __pyx_mstate_global->__pyx_n_s_state
+#define __pyx_n_s_stop_frame_eval __pyx_mstate_global->__pyx_n_s_stop_frame_eval
+#define __pyx_kp_s_stringsource __pyx_mstate_global->__pyx_kp_s_stringsource
+#define __pyx_n_s_sys __pyx_mstate_global->__pyx_n_s_sys
+#define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test
+#define __pyx_n_s_thread __pyx_mstate_global->__pyx_n_s_thread
+#define __pyx_n_s_thread_active __pyx_mstate_global->__pyx_n_s_thread_active
+#define __pyx_n_s_thread_info __pyx_mstate_global->__pyx_n_s_thread_info
+#define __pyx_n_s_thread_local_info __pyx_mstate_global->__pyx_n_s_thread_local_info
+#define __pyx_n_s_threading __pyx_mstate_global->__pyx_n_s_threading
+#define __pyx_n_s_trace_dispatch __pyx_mstate_global->__pyx_n_s_trace_dispatch
+#define __pyx_n_s_update __pyx_mstate_global->__pyx_n_s_update
+#define __pyx_n_s_update_globals_dict __pyx_mstate_global->__pyx_n_s_update_globals_dict
+#define __pyx_n_s_use_setstate __pyx_mstate_global->__pyx_n_s_use_setstate
+#define __pyx_n_s_version_info __pyx_mstate_global->__pyx_n_s_version_info
+#define __pyx_int_0 __pyx_mstate_global->__pyx_int_0
+#define __pyx_int_1 __pyx_mstate_global->__pyx_int_1
+#define __pyx_int_2 __pyx_mstate_global->__pyx_int_2
+#define __pyx_int_3 __pyx_mstate_global->__pyx_int_3
+#define __pyx_int_9 __pyx_mstate_global->__pyx_int_9
+#define __pyx_int_2520179 __pyx_mstate_global->__pyx_int_2520179
+#define __pyx_int_11485321 __pyx_mstate_global->__pyx_int_11485321
+#define __pyx_int_64258489 __pyx_mstate_global->__pyx_int_64258489
+#define __pyx_int_66829570 __pyx_mstate_global->__pyx_int_66829570
+#define __pyx_int_72405718 __pyx_mstate_global->__pyx_int_72405718
+#define __pyx_int_95010005 __pyx_mstate_global->__pyx_int_95010005
+#define __pyx_int_156687530 __pyx_mstate_global->__pyx_int_156687530
+#define __pyx_int_180628038 __pyx_mstate_global->__pyx_int_180628038
+#define __pyx_int_188670045 __pyx_mstate_global->__pyx_int_188670045
+#define __pyx_int_193022138 __pyx_mstate_global->__pyx_int_193022138
+#define __pyx_int_240343912 __pyx_mstate_global->__pyx_int_240343912
+#define __pyx_int_249558979 __pyx_mstate_global->__pyx_int_249558979
+#define __pyx_tuple__4 __pyx_mstate_global->__pyx_tuple__4
+#define __pyx_tuple__6 __pyx_mstate_global->__pyx_tuple__6
+#define __pyx_tuple__7 __pyx_mstate_global->__pyx_tuple__7
+#define __pyx_tuple__8 __pyx_mstate_global->__pyx_tuple__8
+#define __pyx_tuple__9 __pyx_mstate_global->__pyx_tuple__9
+#define __pyx_slice__37 __pyx_mstate_global->__pyx_slice__37
+#define __pyx_tuple__12 __pyx_mstate_global->__pyx_tuple__12
+#define __pyx_tuple__14 __pyx_mstate_global->__pyx_tuple__14
+#define __pyx_tuple__18 __pyx_mstate_global->__pyx_tuple__18
+#define __pyx_tuple__21 __pyx_mstate_global->__pyx_tuple__21
+#define __pyx_tuple__23 __pyx_mstate_global->__pyx_tuple__23
+#define __pyx_tuple__27 __pyx_mstate_global->__pyx_tuple__27
+#define __pyx_tuple__29 __pyx_mstate_global->__pyx_tuple__29
+#define __pyx_tuple__31 __pyx_mstate_global->__pyx_tuple__31
+#define __pyx_tuple__35 __pyx_mstate_global->__pyx_tuple__35
+#define __pyx_tuple__38 __pyx_mstate_global->__pyx_tuple__38
+#define __pyx_tuple__39 __pyx_mstate_global->__pyx_tuple__39
+#define __pyx_tuple__42 __pyx_mstate_global->__pyx_tuple__42
+#define __pyx_codeobj__11 __pyx_mstate_global->__pyx_codeobj__11
+#define __pyx_codeobj__13 __pyx_mstate_global->__pyx_codeobj__13
+#define __pyx_codeobj__15 __pyx_mstate_global->__pyx_codeobj__15
+#define __pyx_codeobj__16 __pyx_mstate_global->__pyx_codeobj__16
+#define __pyx_codeobj__17 __pyx_mstate_global->__pyx_codeobj__17
+#define __pyx_codeobj__19 __pyx_mstate_global->__pyx_codeobj__19
+#define __pyx_codeobj__20 __pyx_mstate_global->__pyx_codeobj__20
+#define __pyx_codeobj__22 __pyx_mstate_global->__pyx_codeobj__22
+#define __pyx_codeobj__24 __pyx_mstate_global->__pyx_codeobj__24
+#define __pyx_codeobj__25 __pyx_mstate_global->__pyx_codeobj__25
+#define __pyx_codeobj__26 __pyx_mstate_global->__pyx_codeobj__26
+#define __pyx_codeobj__28 __pyx_mstate_global->__pyx_codeobj__28
+#define __pyx_codeobj__30 __pyx_mstate_global->__pyx_codeobj__30
+#define __pyx_codeobj__32 __pyx_mstate_global->__pyx_codeobj__32
+#define __pyx_codeobj__33 __pyx_mstate_global->__pyx_codeobj__33
+#define __pyx_codeobj__34 __pyx_mstate_global->__pyx_codeobj__34
+#define __pyx_codeobj__36 __pyx_mstate_global->__pyx_codeobj__36
+#define __pyx_codeobj__40 __pyx_mstate_global->__pyx_codeobj__40
+#define __pyx_codeobj__41 __pyx_mstate_global->__pyx_codeobj__41
+#define __pyx_codeobj__43 __pyx_mstate_global->__pyx_codeobj__43
+#define __pyx_codeobj__44 __pyx_mstate_global->__pyx_codeobj__44
+#define __pyx_codeobj__45 __pyx_mstate_global->__pyx_codeobj__45
+#define __pyx_codeobj__46 __pyx_mstate_global->__pyx_codeobj__46
+/* #### Code section: module_code ### */
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":19
* _thread_active = threading._active
@@ -2159,9 +3887,11 @@ static PyObject *__pyx_codeobj__37;
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_1clear_thread_local_info(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_1clear_thread_local_info = {"clear_thread_local_info", (PyCFunction)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_1clear_thread_local_info, METH_NOARGS, 0};
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_1clear_thread_local_info(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("clear_thread_local_info (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_clear_thread_local_info(__pyx_self);
/* function exit code */
@@ -2175,10 +3905,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_clear_th
PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
+ int __pyx_t_4;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("clear_thread_local_info", 0);
+ __Pyx_RefNannySetupContext("clear_thread_local_info", 1);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":21
* def clear_thread_local_info():
@@ -2193,20 +3924,27 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_clear_th
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_4 = 1;
}
}
- __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
if (PyDict_SetItem(__pyx_d, __pyx_n_s_thread_local_info, __pyx_t_1) < 0) __PYX_ERR(0, 21, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -2255,10 +3993,11 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
PyObject *__pyx_t_5 = NULL;
int __pyx_t_6;
int __pyx_t_7;
+ int __pyx_t_8;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("initialize", 0);
+ __Pyx_RefNannySetupContext("initialize", 1);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":42
* # Places that create a ThreadInfo should verify that
@@ -2268,12 +4007,15 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
* self.additional_info = None
*/
#ifndef CYTHON_WITHOUT_ASSERTIONS
- if (unlikely(!Py_OptimizeFlag)) {
- if (unlikely(!((__pyx_v_frame_obj != NULL) != 0))) {
- PyErr_SetNone(PyExc_AssertionError);
+ if (unlikely(__pyx_assertions_enabled())) {
+ __pyx_t_1 = (__pyx_v_frame_obj != NULL);
+ if (unlikely(!__pyx_t_1)) {
+ __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
__PYX_ERR(0, 42, __pyx_L1_error)
}
}
+ #else
+ if ((1)); else __PYX_ERR(0, 42, __pyx_L1_error)
#endif
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":44
@@ -2285,8 +4027,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
*/
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->additional_info);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->additional_info));
+ __Pyx_GOTREF((PyObject *)__pyx_v_self->additional_info);
+ __Pyx_DECREF((PyObject *)__pyx_v_self->additional_info);
__pyx_v_self->additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)Py_None);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":45
@@ -2337,7 +4079,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
*
*/
while (1) {
- __pyx_t_1 = ((__pyx_v_frame_obj->f_back != NULL) != 0);
+ __pyx_t_1 = (__pyx_v_frame_obj->f_back != NULL);
if (!__pyx_t_1) break;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":55
@@ -2373,20 +4115,27 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_basename, __pyx_n_s_rfind); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 58, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
if (likely(__pyx_t_5)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_6 = 1;
}
}
- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_);
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_kp_s_};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
__pyx_v_i = __pyx_t_3;
__pyx_t_3 = 0;
@@ -2400,20 +4149,27 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_basename, __pyx_n_s_rfind); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 59, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
if (likely(__pyx_t_5)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_6 = 1;
}
}
- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s__2) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s__2);
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 59, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_kp_s__2};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 59, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
__pyx_v_j = __pyx_t_3;
__pyx_t_3 = 0;
@@ -2425,7 +4181,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
* if i >= 0:
*/
__pyx_t_3 = PyObject_RichCompare(__pyx_v_j, __pyx_v_i, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 60, __pyx_L1_error)
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 60, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 60, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_1) {
@@ -2456,7 +4212,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
* # remove ext
*/
__pyx_t_3 = PyObject_RichCompare(__pyx_v_i, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 62, __pyx_L1_error)
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 62, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 62, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_1) {
@@ -2494,20 +4250,27 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_basename, __pyx_n_s_rfind); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 65, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
if (likely(__pyx_t_5)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_6 = 1;
}
}
- __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_kp_s__3) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s__3);
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 65, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_kp_s__3};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 65, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
__Pyx_DECREF_SET(__pyx_v_i, __pyx_t_4);
__pyx_t_4 = 0;
@@ -2519,7 +4282,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
*
*/
__pyx_t_4 = PyObject_RichCompare(__pyx_v_i, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 66, __pyx_L1_error)
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 66, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 66, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_1) {
@@ -2563,38 +4326,38 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
* self._can_create_dummy_thread = False
* elif basename == 'pydev_monkey' and co_name == '__call__':
*/
- __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_basename, __pyx_n_s_threading, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 73, __pyx_L1_error)
- if (__pyx_t_6) {
+ __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_basename, __pyx_n_s_threading, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 73, __pyx_L1_error)
+ if (__pyx_t_7) {
} else {
- __pyx_t_1 = __pyx_t_6;
+ __pyx_t_1 = __pyx_t_7;
goto __pyx_L9_bool_binop_done;
}
__Pyx_INCREF(__pyx_v_co_name);
__pyx_t_4 = __pyx_v_co_name;
- __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_bootstrap, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 73, __pyx_L1_error)
- if (!__pyx_t_7) {
+ __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_bootstrap, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 73, __pyx_L1_error)
+ if (!__pyx_t_8) {
} else {
- __pyx_t_6 = __pyx_t_7;
+ __pyx_t_7 = __pyx_t_8;
goto __pyx_L11_bool_binop_done;
}
- __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_bootstrap_2, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 73, __pyx_L1_error)
- if (!__pyx_t_7) {
+ __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_bootstrap_2, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 73, __pyx_L1_error)
+ if (!__pyx_t_8) {
} else {
- __pyx_t_6 = __pyx_t_7;
+ __pyx_t_7 = __pyx_t_8;
goto __pyx_L11_bool_binop_done;
}
- __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_bootstrap_inner, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 73, __pyx_L1_error)
- if (!__pyx_t_7) {
+ __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_bootstrap_inner, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 73, __pyx_L1_error)
+ if (!__pyx_t_8) {
} else {
- __pyx_t_6 = __pyx_t_7;
+ __pyx_t_7 = __pyx_t_8;
goto __pyx_L11_bool_binop_done;
}
- __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_bootstrap_inner_2, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 73, __pyx_L1_error)
- __pyx_t_6 = __pyx_t_7;
+ __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_bootstrap_inner_2, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 73, __pyx_L1_error)
+ __pyx_t_7 = __pyx_t_8;
__pyx_L11_bool_binop_done:;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_7 = (__pyx_t_6 != 0);
- __pyx_t_1 = __pyx_t_7;
+ __pyx_t_8 = __pyx_t_7;
+ __pyx_t_1 = __pyx_t_8;
__pyx_L9_bool_binop_done:;
if (__pyx_t_1) {
@@ -2624,14 +4387,14 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
* self._can_create_dummy_thread = False
* elif basename == 'pydevd' and co_name in ('run', 'main', '_exec'):
*/
- __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_basename, __pyx_n_s_pydev_monkey, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 75, __pyx_L1_error)
- if (__pyx_t_7) {
+ __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_v_basename, __pyx_n_s_pydev_monkey, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 75, __pyx_L1_error)
+ if (__pyx_t_8) {
} else {
- __pyx_t_1 = __pyx_t_7;
+ __pyx_t_1 = __pyx_t_8;
goto __pyx_L15_bool_binop_done;
}
- __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_co_name, __pyx_n_s_call, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 75, __pyx_L1_error)
- __pyx_t_1 = __pyx_t_7;
+ __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_v_co_name, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 75, __pyx_L1_error)
+ __pyx_t_1 = __pyx_t_8;
__pyx_L15_bool_binop_done:;
if (__pyx_t_1) {
@@ -2661,32 +4424,32 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
* self._can_create_dummy_thread = False
* elif basename == 'pydevd_tracing':
*/
- __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_basename, __pyx_n_s_pydevd, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 77, __pyx_L1_error)
- if (__pyx_t_7) {
+ __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_v_basename, __pyx_n_s_pydevd, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 77, __pyx_L1_error)
+ if (__pyx_t_8) {
} else {
- __pyx_t_1 = __pyx_t_7;
+ __pyx_t_1 = __pyx_t_8;
goto __pyx_L17_bool_binop_done;
}
__Pyx_INCREF(__pyx_v_co_name);
__pyx_t_4 = __pyx_v_co_name;
- __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_run, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 77, __pyx_L1_error)
- if (!__pyx_t_6) {
+ __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_run, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 77, __pyx_L1_error)
+ if (!__pyx_t_7) {
} else {
- __pyx_t_7 = __pyx_t_6;
+ __pyx_t_8 = __pyx_t_7;
goto __pyx_L19_bool_binop_done;
}
- __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_main, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 77, __pyx_L1_error)
- if (!__pyx_t_6) {
+ __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_main, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 77, __pyx_L1_error)
+ if (!__pyx_t_7) {
} else {
- __pyx_t_7 = __pyx_t_6;
+ __pyx_t_8 = __pyx_t_7;
goto __pyx_L19_bool_binop_done;
}
- __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_exec, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 77, __pyx_L1_error)
- __pyx_t_7 = __pyx_t_6;
+ __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_exec, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 77, __pyx_L1_error)
+ __pyx_t_8 = __pyx_t_7;
__pyx_L19_bool_binop_done:;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = (__pyx_t_7 != 0);
- __pyx_t_1 = __pyx_t_6;
+ __pyx_t_7 = __pyx_t_8;
+ __pyx_t_1 = __pyx_t_7;
__pyx_L17_bool_binop_done:;
if (__pyx_t_1) {
@@ -2716,7 +4479,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
* self._can_create_dummy_thread = False
* else:
*/
- __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_basename, __pyx_n_s_pydevd_tracing, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 79, __pyx_L1_error)
+ __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_basename, __pyx_n_s_pydevd_tracing, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 79, __pyx_L1_error)
if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":80
@@ -2814,7 +4577,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("initialize_if_possible", 0);
+ __Pyx_RefNannySetupContext("initialize_if_possible", 1);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":89
* # Don't call threading.currentThread because if we're too early in the process
@@ -2844,20 +4607,27 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_get_ident); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 92, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_4 = 1;
}
}
- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 92, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 92, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
__pyx_v_thread_ident = __pyx_t_1;
__pyx_t_1 = 0;
@@ -2874,20 +4644,27 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_4 = 1;
}
}
- __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_thread_ident) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_thread_ident);
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 93, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_thread_ident};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 93, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
__pyx_v_t = __pyx_t_1;
__pyx_t_1 = 0;
@@ -2898,8 +4675,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
* if self._can_create_dummy_thread:
* # Initialize the dummy thread and set the tracing (both are needed to
*/
- __pyx_t_4 = (__pyx_v_t == Py_None);
- __pyx_t_5 = (__pyx_t_4 != 0);
+ __pyx_t_5 = (__pyx_v_t == Py_None);
if (__pyx_t_5) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":95
@@ -2909,8 +4685,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
* # Initialize the dummy thread and set the tracing (both are needed to
* # actually stop on breakpoints).
*/
- __pyx_t_5 = (__pyx_v_self->_can_create_dummy_thread != 0);
- if (__pyx_t_5) {
+ if (__pyx_v_self->_can_create_dummy_thread) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":98
* # Initialize the dummy thread and set the tracing (both are needed to
@@ -2925,20 +4700,27 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_4 = 1;
}
}
- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 98, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 98, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
__Pyx_DECREF_SET(__pyx_v_t, __pyx_t_1);
__pyx_t_1 = 0;
@@ -2954,21 +4736,28 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_dummy_trace_dispatch); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 99, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_6 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_6)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_4 = 1;
}
}
- __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_3};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":95
@@ -3013,7 +4802,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
*/
__pyx_t_1 = __Pyx_GetAttr3(__pyx_v_t, __pyx_n_s_is_pydev_daemon_thread, Py_False); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 103, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 103, __pyx_L4_error)
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 103, __pyx_L4_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (__pyx_t_5) {
@@ -3082,8 +4871,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
* except:
*/
__pyx_t_5 = (__pyx_v_additional_info == Py_None);
- __pyx_t_4 = (__pyx_t_5 != 0);
- if (unlikely(__pyx_t_4)) {
+ if (unlikely(__pyx_t_5)) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":110
* additional_info = t.additional_info
@@ -3135,9 +4923,9 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
/*except:*/ {
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.initialize_if_possible", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 111, __pyx_L11_except_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":112
* raise AttributeError()
@@ -3154,20 +4942,27 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
__pyx_t_12 = __Pyx_PyObject_LookupSpecial(__pyx_t_6, __pyx_n_s_enter); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 112, __pyx_L18_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_13 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_12))) {
__pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
if (likely(__pyx_t_13)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
__Pyx_INCREF(__pyx_t_13);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_12, function);
+ __pyx_t_4 = 1;
}
}
- __pyx_t_11 = (__pyx_t_13) ? __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_13) : __Pyx_PyObject_CallNoArg(__pyx_t_12);
- __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 112, __pyx_L18_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_13, NULL};
+ __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+ if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 112, __pyx_L18_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ }
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/*try:*/ {
@@ -3202,8 +4997,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
* additional_info = PyDBAdditionalThreadInfo()
* t.additional_info = additional_info
*/
- __pyx_t_4 = (__pyx_v_additional_info == Py_None);
- __pyx_t_5 = (__pyx_t_4 != 0);
+ __pyx_t_5 = (__pyx_v_additional_info == Py_None);
if (__pyx_t_5) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":117
@@ -3256,9 +5050,9 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
/*except:*/ {
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.initialize_if_possible", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_6, &__pyx_t_12) < 0) __PYX_ERR(0, 112, __pyx_L26_except_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_XGOTREF(__pyx_t_11);
+ __Pyx_XGOTREF(__pyx_t_6);
+ __Pyx_XGOTREF(__pyx_t_12);
__pyx_t_13 = PyTuple_Pack(3, __pyx_t_11, __pyx_t_6, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 112, __pyx_L26_except_error)
__Pyx_GOTREF(__pyx_t_13);
__pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_13, NULL);
@@ -3269,8 +5063,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
__pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_17);
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
if (__pyx_t_5 < 0) __PYX_ERR(0, 112, __pyx_L26_except_error)
- __pyx_t_4 = ((!(__pyx_t_5 != 0)) != 0);
- if (__pyx_t_4) {
+ __pyx_t_18 = (!__pyx_t_5);
+ if (unlikely(__pyx_t_18)) {
__Pyx_GIVEREF(__pyx_t_11);
__Pyx_GIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_12);
@@ -3321,7 +5115,6 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L10_exception_handled;
}
- __pyx_L11_except_error:;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":107
* self.fully_initialized = True
@@ -3330,6 +5123,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
* additional_info = t.additional_info
* if additional_info is None:
*/
+ __pyx_L11_except_error:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
@@ -3355,8 +5149,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
__pyx_t_3 = __pyx_v_additional_info;
__Pyx_INCREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_3);
- __Pyx_GOTREF(__pyx_v_self->additional_info);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->additional_info));
+ __Pyx_GOTREF((PyObject *)__pyx_v_self->additional_info);
+ __Pyx_DECREF((PyObject *)__pyx_v_self->additional_info);
__pyx_v_self->additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_3);
__pyx_t_3 = 0;
@@ -3404,7 +5198,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
__Pyx_XGOTREF(__pyx_t_10);
__Pyx_XGOTREF(__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_15);
- __pyx_t_18 = __pyx_lineno; __pyx_t_19 = __pyx_clineno; __pyx_t_20 = __pyx_filename;
+ __pyx_t_4 = __pyx_lineno; __pyx_t_19 = __pyx_clineno; __pyx_t_20 = __pyx_filename;
{
__pyx_v_self->inside_frame_eval = (__pyx_v_self->inside_frame_eval - 1);
}
@@ -3419,7 +5213,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ErrRestore(__pyx_t_9, __pyx_t_8, __pyx_t_7);
__pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_t_10 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0;
- __pyx_lineno = __pyx_t_18; __pyx_clineno = __pyx_t_19; __pyx_filename = __pyx_t_20;
+ __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_19; __pyx_filename = __pyx_t_20;
goto __pyx_L1_error;
}
__pyx_L3_return: {
@@ -3474,9 +5268,11 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
/* Python wrapper */
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -3487,9 +5283,9 @@ static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_self->additional_info));
+ __Pyx_INCREF((PyObject *)__pyx_v_self->additional_info);
__pyx_r = ((PyObject *)__pyx_v_self->additional_info);
goto __pyx_L0;
@@ -3503,9 +5299,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -3520,13 +5318,13 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
+ __Pyx_RefNannySetupContext("__set__", 1);
if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(0, 26, __pyx_L1_error)
__pyx_t_1 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->additional_info);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->additional_info));
+ __Pyx_GOTREF((PyObject *)__pyx_v_self->additional_info);
+ __Pyx_DECREF((PyObject *)__pyx_v_self->additional_info);
__pyx_v_self->additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_1);
__pyx_t_1 = 0;
@@ -3545,9 +5343,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -3558,11 +5358,11 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->additional_info);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->additional_info));
+ __Pyx_GOTREF((PyObject *)__pyx_v_self->additional_info);
+ __Pyx_DECREF((PyObject *)__pyx_v_self->additional_info);
__pyx_v_self->additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)Py_None);
/* function exit code */
@@ -3582,9 +5382,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1
/* Python wrapper */
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_16is_pydevd_thread_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_16is_pydevd_thread_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_16is_pydevd_thread___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -3599,7 +5401,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_pydevd_thread); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 27, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -3621,9 +5423,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_16is_pydevd_thread_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_16is_pydevd_thread_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_16is_pydevd_thread_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -3633,12 +5437,10 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_16is_pydevd_thread_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
- __Pyx_RefNannyDeclarations
int __pyx_t_1;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 27, __pyx_L1_error)
__pyx_v_self->is_pydevd_thread = __pyx_t_1;
@@ -3649,7 +5451,6 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.is_pydevd_thread.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
- __Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -3664,9 +5465,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1
/* Python wrapper */
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17inside_frame_eval_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17inside_frame_eval_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17inside_frame_eval___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -3681,7 +5484,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->inside_frame_eval); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 28, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -3703,9 +5506,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17inside_frame_eval_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17inside_frame_eval_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17inside_frame_eval_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -3715,12 +5520,10 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17inside_frame_eval_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
- __Pyx_RefNannyDeclarations
int __pyx_t_1;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
__pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 28, __pyx_L1_error)
__pyx_v_self->inside_frame_eval = __pyx_t_1;
@@ -3731,7 +5534,6 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.inside_frame_eval.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
- __Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -3746,9 +5548,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1
/* Python wrapper */
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17fully_initialized_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17fully_initialized_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17fully_initialized___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -3763,7 +5567,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->fully_initialized); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 29, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -3785,9 +5589,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17fully_initialized_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17fully_initialized_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17fully_initialized_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -3797,12 +5603,10 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17fully_initialized_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
- __Pyx_RefNannyDeclarations
int __pyx_t_1;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 29, __pyx_L1_error)
__pyx_v_self->fully_initialized = __pyx_t_1;
@@ -3813,7 +5617,6 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.fully_initialized.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
- __Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -3828,9 +5631,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1
/* Python wrapper */
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -3841,7 +5646,7 @@ static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->thread_trace_func);
__pyx_r = __pyx_v_self->thread_trace_func;
@@ -3857,9 +5662,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -3870,7 +5677,7 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__", 0);
+ __Pyx_RefNannySetupContext("__set__", 1);
__Pyx_INCREF(__pyx_v_value);
__Pyx_GIVEREF(__pyx_v_value);
__Pyx_GOTREF(__pyx_v_self->thread_trace_func);
@@ -3886,9 +5693,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -3899,7 +5708,7 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->thread_trace_func);
@@ -3923,9 +5732,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1
/* Python wrapper */
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_27force_stay_in_untraced_mode_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_27force_stay_in_untraced_mode_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_27force_stay_in_untraced_mode___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -3940,7 +5751,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->force_stay_in_untraced_mode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -3962,9 +5773,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_27force_stay_in_untraced_mode_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_27force_stay_in_untraced_mode_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_27force_stay_in_untraced_mode_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -3974,12 +5787,10 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_2
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_27force_stay_in_untraced_mode_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
- __Pyx_RefNannyDeclarations
int __pyx_t_1;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 37, __pyx_L1_error)
__pyx_v_self->force_stay_in_untraced_mode = __pyx_t_1;
@@ -3990,7 +5801,6 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_2
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.force_stay_in_untraced_mode.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
- __Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -4001,11 +5811,39 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_2
*/
/* Python wrapper */
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1__reduce_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1__reduce_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_nargs > 0)) {
+ __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
+ if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo___reduce_cython__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self));
/* function exit code */
@@ -4027,11 +5865,10 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
PyObject *__pyx_t_6 = NULL;
int __pyx_t_7;
int __pyx_t_8;
- int __pyx_t_9;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__reduce_cython__", 0);
+ __Pyx_RefNannySetupContext("__reduce_cython__", 1);
/* "(tree fragment)":5
* cdef object _dict
@@ -4053,21 +5890,21 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
__pyx_t_6 = PyTuple_New(7); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_v_self->additional_info));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_self->additional_info));
- PyTuple_SET_ITEM(__pyx_t_6, 1, ((PyObject *)__pyx_v_self->additional_info));
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_INCREF((PyObject *)__pyx_v_self->additional_info);
+ __Pyx_GIVEREF((PyObject *)__pyx_v_self->additional_info);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, ((PyObject *)__pyx_v_self->additional_info))) __PYX_ERR(1, 5, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_2);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_3);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 4, __pyx_t_4);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 4, __pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_6, 5, __pyx_t_5);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 5, __pyx_t_5)) __PYX_ERR(1, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->thread_trace_func);
__Pyx_GIVEREF(__pyx_v_self->thread_trace_func);
- PyTuple_SET_ITEM(__pyx_t_6, 6, __pyx_v_self->thread_trace_func);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 6, __pyx_v_self->thread_trace_func)) __PYX_ERR(1, 5, __pyx_L1_error);
__pyx_t_1 = 0;
__pyx_t_2 = 0;
__pyx_t_3 = 0;
@@ -4096,8 +5933,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
* use_setstate = True
*/
__pyx_t_7 = (__pyx_v__dict != Py_None);
- __pyx_t_8 = (__pyx_t_7 != 0);
- if (__pyx_t_8) {
+ if (__pyx_t_7) {
/* "(tree fragment)":8
* _dict = getattr(self, '__dict__', None)
@@ -4110,7 +5946,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
__Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v__dict);
__Pyx_GIVEREF(__pyx_v__dict);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v__dict);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v__dict)) __PYX_ERR(1, 8, __pyx_L1_error);
__pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 8, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -4141,21 +5977,19 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
* else:
* use_setstate = self.additional_info is not None or self.thread_trace_func is not None # <<<<<<<<<<<<<<
* if use_setstate:
- * return __pyx_unpickle_ThreadInfo, (type(self), 0x0af4089, None), state
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, None), state
*/
/*else*/ {
- __pyx_t_7 = (((PyObject *)__pyx_v_self->additional_info) != Py_None);
- __pyx_t_9 = (__pyx_t_7 != 0);
- if (!__pyx_t_9) {
+ __pyx_t_8 = (((PyObject *)__pyx_v_self->additional_info) != Py_None);
+ if (!__pyx_t_8) {
} else {
- __pyx_t_8 = __pyx_t_9;
+ __pyx_t_7 = __pyx_t_8;
goto __pyx_L4_bool_binop_done;
}
- __pyx_t_9 = (__pyx_v_self->thread_trace_func != Py_None);
- __pyx_t_7 = (__pyx_t_9 != 0);
- __pyx_t_8 = __pyx_t_7;
+ __pyx_t_8 = (__pyx_v_self->thread_trace_func != Py_None);
+ __pyx_t_7 = __pyx_t_8;
__pyx_L4_bool_binop_done:;
- __pyx_v_use_setstate = __pyx_t_8;
+ __pyx_v_use_setstate = __pyx_t_7;
}
__pyx_L3:;
@@ -4163,18 +5997,17 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
* else:
* use_setstate = self.additional_info is not None or self.thread_trace_func is not None
* if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle_ThreadInfo, (type(self), 0x0af4089, None), state
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, None), state
* else:
*/
- __pyx_t_8 = (__pyx_v_use_setstate != 0);
- if (__pyx_t_8) {
+ if (__pyx_v_use_setstate) {
/* "(tree fragment)":13
* use_setstate = self.additional_info is not None or self.thread_trace_func is not None
* if use_setstate:
- * return __pyx_unpickle_ThreadInfo, (type(self), 0x0af4089, None), state # <<<<<<<<<<<<<<
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, None), state # <<<<<<<<<<<<<<
* else:
- * return __pyx_unpickle_ThreadInfo, (type(self), 0x0af4089, state)
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, state)
*/
__Pyx_XDECREF(__pyx_r);
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_ThreadInfo); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
@@ -4183,22 +6016,22 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
__Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
__Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_11485321);
- __Pyx_GIVEREF(__pyx_int_11485321);
- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_11485321);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 13, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_int_240343912);
+ __Pyx_GIVEREF(__pyx_int_240343912);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_240343912)) __PYX_ERR(1, 13, __pyx_L1_error);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
- PyTuple_SET_ITEM(__pyx_t_6, 2, Py_None);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, Py_None)) __PYX_ERR(1, 13, __pyx_L1_error);
__pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_state);
__Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state)) __PYX_ERR(1, 13, __pyx_L1_error);
__pyx_t_5 = 0;
__pyx_t_6 = 0;
__pyx_r = __pyx_t_4;
@@ -4209,15 +6042,15 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
* else:
* use_setstate = self.additional_info is not None or self.thread_trace_func is not None
* if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle_ThreadInfo, (type(self), 0x0af4089, None), state
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, None), state
* else:
*/
}
/* "(tree fragment)":15
- * return __pyx_unpickle_ThreadInfo, (type(self), 0x0af4089, None), state
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, None), state
* else:
- * return __pyx_unpickle_ThreadInfo, (type(self), 0x0af4089, state) # <<<<<<<<<<<<<<
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, state) # <<<<<<<<<<<<<<
* def __setstate_cython__(self, __pyx_state):
* __pyx_unpickle_ThreadInfo__set_state(self, __pyx_state)
*/
@@ -4229,19 +6062,19 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
__Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
__Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_11485321);
- __Pyx_GIVEREF(__pyx_int_11485321);
- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_11485321);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 15, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_int_240343912);
+ __Pyx_GIVEREF(__pyx_int_240343912);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_240343912)) __PYX_ERR(1, 15, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_state);
__Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state)) __PYX_ERR(1, 15, __pyx_L1_error);
__pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error);
__pyx_t_4 = 0;
__pyx_t_6 = 0;
__pyx_r = __pyx_t_5;
@@ -4275,46 +6108,129 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
/* "(tree fragment)":16
* else:
- * return __pyx_unpickle_ThreadInfo, (type(self), 0x0af4089, state)
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, state)
* def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
* __pyx_unpickle_ThreadInfo__set_state(self, __pyx_state)
*/
/* Python wrapper */
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_3__setstate_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_3__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_3__setstate_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v___pyx_state = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_2__setstate_cython__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_2__setstate_cython__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 16, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 16, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v___pyx_state = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 16, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_2__setstate_cython__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self), __pyx_v___pyx_state);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_2__setstate_cython__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__setstate_cython__", 0);
+ __Pyx_RefNannySetupContext("__setstate_cython__", 1);
/* "(tree fragment)":17
- * return __pyx_unpickle_ThreadInfo, (type(self), 0x0af4089, state)
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, state)
* def __setstate_cython__(self, __pyx_state):
* __pyx_unpickle_ThreadInfo__set_state(self, __pyx_state) # <<<<<<<<<<<<<<
*/
- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 17, __pyx_L1_error)
__pyx_t_1 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle_ThreadInfo__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "(tree fragment)":16
* else:
- * return __pyx_unpickle_ThreadInfo, (type(self), 0x0af4089, state)
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, state)
* def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
* __pyx_unpickle_ThreadInfo__set_state(self, __pyx_state)
*/
@@ -4343,12 +6259,20 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10Thread
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
- if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
- if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_nargs > 0)) {
+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1;}
+ if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo___init__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self));
/* function exit code */
@@ -4359,7 +6283,7 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo___init__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__init__", 0);
+ __Pyx_RefNannySetupContext("__init__", 1);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":140
*
@@ -4452,9 +6376,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
/* Python wrapper */
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self));
/* function exit code */
@@ -4465,7 +6391,7 @@ static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->co_filename);
__pyx_r = __pyx_v_self->co_filename;
@@ -4481,9 +6407,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -4498,8 +6426,8 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(0, 127, __pyx_L1_error)
+ __Pyx_RefNannySetupContext("__set__", 1);
+ if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(0, 127, __pyx_L1_error)
__pyx_t_1 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
@@ -4523,9 +6451,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self));
/* function exit code */
@@ -4536,7 +6466,7 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->co_filename);
@@ -4560,9 +6490,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
/* Python wrapper */
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self));
/* function exit code */
@@ -4573,7 +6505,7 @@ static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->co_name);
__pyx_r = __pyx_v_self->co_name;
@@ -4589,9 +6521,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -4606,8 +6540,8 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(0, 128, __pyx_L1_error)
+ __Pyx_RefNannySetupContext("__set__", 1);
+ if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(0, 128, __pyx_L1_error)
__pyx_t_1 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
@@ -4631,9 +6565,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self));
/* function exit code */
@@ -4644,7 +6580,7 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->co_name);
@@ -4668,9 +6604,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
/* Python wrapper */
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self));
/* function exit code */
@@ -4681,7 +6619,7 @@ static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->canonical_normalized_filename);
__pyx_r = __pyx_v_self->canonical_normalized_filename;
@@ -4697,9 +6635,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -4714,8 +6654,8 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(0, 129, __pyx_L1_error)
+ __Pyx_RefNannySetupContext("__set__", 1);
+ if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(0, 129, __pyx_L1_error)
__pyx_t_1 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
@@ -4739,9 +6679,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self));
/* function exit code */
@@ -4752,7 +6694,7 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->canonical_normalized_filename);
@@ -4776,9 +6718,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
/* Python wrapper */
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_16breakpoint_found_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_16breakpoint_found_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_16breakpoint_found___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self));
/* function exit code */
@@ -4793,7 +6737,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->breakpoint_found); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -4815,9 +6759,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_16breakpoint_found_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_16breakpoint_found_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_16breakpoint_found_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -4827,12 +6773,10 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_16breakpoint_found_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
- __Pyx_RefNannyDeclarations
int __pyx_t_1;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 131, __pyx_L1_error)
__pyx_v_self->breakpoint_found = __pyx_t_1;
@@ -4843,7 +6787,6 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.FuncCodeInfo.breakpoint_found.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
- __Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -4858,9 +6801,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
/* Python wrapper */
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self));
/* function exit code */
@@ -4871,7 +6816,7 @@ static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->new_code);
__pyx_r = __pyx_v_self->new_code;
@@ -4887,9 +6832,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -4900,7 +6847,7 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__", 0);
+ __Pyx_RefNannySetupContext("__set__", 1);
__Pyx_INCREF(__pyx_v_value);
__Pyx_GIVEREF(__pyx_v_value);
__Pyx_GOTREF(__pyx_v_self->new_code);
@@ -4916,9 +6863,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self));
/* function exit code */
@@ -4929,7 +6878,7 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->new_code);
@@ -4953,9 +6902,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
/* Python wrapper */
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_17breakpoints_mtime_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_17breakpoints_mtime_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_17breakpoints_mtime___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self));
/* function exit code */
@@ -4970,7 +6921,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->breakpoints_mtime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 137, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -4992,9 +6943,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_17breakpoints_mtime_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_17breakpoints_mtime_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_17breakpoints_mtime_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -5004,12 +6957,10 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_17breakpoints_mtime_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
- __Pyx_RefNannyDeclarations
int __pyx_t_1;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
__pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 137, __pyx_L1_error)
__pyx_v_self->breakpoints_mtime = __pyx_t_1;
@@ -5020,7 +6971,6 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.FuncCodeInfo.breakpoints_mtime.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
- __Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -5031,11 +6981,39 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo
*/
/* Python wrapper */
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_3__reduce_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_3__reduce_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_nargs > 0)) {
+ __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
+ if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_2__reduce_cython__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self));
/* function exit code */
@@ -5055,11 +7033,10 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
PyObject *__pyx_t_4 = NULL;
int __pyx_t_5;
int __pyx_t_6;
- int __pyx_t_7;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__reduce_cython__", 0);
+ __Pyx_RefNannySetupContext("__reduce_cython__", 1);
/* "(tree fragment)":5
* cdef object _dict
@@ -5077,23 +7054,23 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
__pyx_t_4 = PyTuple_New(7); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->canonical_normalized_filename);
__Pyx_GIVEREF(__pyx_v_self->canonical_normalized_filename);
- PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_v_self->canonical_normalized_filename);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_v_self->canonical_normalized_filename)) __PYX_ERR(1, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->co_filename);
__Pyx_GIVEREF(__pyx_v_self->co_filename);
- PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_v_self->co_filename);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_v_self->co_filename)) __PYX_ERR(1, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->co_name);
__Pyx_GIVEREF(__pyx_v_self->co_name);
- PyTuple_SET_ITEM(__pyx_t_4, 5, __pyx_v_self->co_name);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 5, __pyx_v_self->co_name)) __PYX_ERR(1, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->new_code);
__Pyx_GIVEREF(__pyx_v_self->new_code);
- PyTuple_SET_ITEM(__pyx_t_4, 6, __pyx_v_self->new_code);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 6, __pyx_v_self->new_code)) __PYX_ERR(1, 5, __pyx_L1_error);
__pyx_t_1 = 0;
__pyx_t_2 = 0;
__pyx_t_3 = 0;
@@ -5120,8 +7097,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
* use_setstate = True
*/
__pyx_t_5 = (__pyx_v__dict != Py_None);
- __pyx_t_6 = (__pyx_t_5 != 0);
- if (__pyx_t_6) {
+ if (__pyx_t_5) {
/* "(tree fragment)":8
* _dict = getattr(self, '__dict__', None)
@@ -5134,7 +7110,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v__dict);
__Pyx_GIVEREF(__pyx_v__dict);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v__dict);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v__dict)) __PYX_ERR(1, 8, __pyx_L1_error);
__pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -5165,35 +7141,31 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
* else:
* use_setstate = self.canonical_normalized_filename is not None or self.co_filename is not None or self.co_name is not None or self.new_code is not None # <<<<<<<<<<<<<<
* if use_setstate:
- * return __pyx_unpickle_FuncCodeInfo, (type(self), 0xb3ee05d, None), state
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, None), state
*/
/*else*/ {
- __pyx_t_5 = (__pyx_v_self->canonical_normalized_filename != ((PyObject*)Py_None));
- __pyx_t_7 = (__pyx_t_5 != 0);
- if (!__pyx_t_7) {
+ __pyx_t_6 = (__pyx_v_self->canonical_normalized_filename != ((PyObject*)Py_None));
+ if (!__pyx_t_6) {
} else {
- __pyx_t_6 = __pyx_t_7;
+ __pyx_t_5 = __pyx_t_6;
goto __pyx_L4_bool_binop_done;
}
- __pyx_t_7 = (__pyx_v_self->co_filename != ((PyObject*)Py_None));
- __pyx_t_5 = (__pyx_t_7 != 0);
- if (!__pyx_t_5) {
+ __pyx_t_6 = (__pyx_v_self->co_filename != ((PyObject*)Py_None));
+ if (!__pyx_t_6) {
} else {
- __pyx_t_6 = __pyx_t_5;
+ __pyx_t_5 = __pyx_t_6;
goto __pyx_L4_bool_binop_done;
}
- __pyx_t_5 = (__pyx_v_self->co_name != ((PyObject*)Py_None));
- __pyx_t_7 = (__pyx_t_5 != 0);
- if (!__pyx_t_7) {
+ __pyx_t_6 = (__pyx_v_self->co_name != ((PyObject*)Py_None));
+ if (!__pyx_t_6) {
} else {
- __pyx_t_6 = __pyx_t_7;
+ __pyx_t_5 = __pyx_t_6;
goto __pyx_L4_bool_binop_done;
}
- __pyx_t_7 = (__pyx_v_self->new_code != Py_None);
- __pyx_t_5 = (__pyx_t_7 != 0);
- __pyx_t_6 = __pyx_t_5;
+ __pyx_t_6 = (__pyx_v_self->new_code != Py_None);
+ __pyx_t_5 = __pyx_t_6;
__pyx_L4_bool_binop_done:;
- __pyx_v_use_setstate = __pyx_t_6;
+ __pyx_v_use_setstate = __pyx_t_5;
}
__pyx_L3:;
@@ -5201,18 +7173,17 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
* else:
* use_setstate = self.canonical_normalized_filename is not None or self.co_filename is not None or self.co_name is not None or self.new_code is not None
* if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle_FuncCodeInfo, (type(self), 0xb3ee05d, None), state
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, None), state
* else:
*/
- __pyx_t_6 = (__pyx_v_use_setstate != 0);
- if (__pyx_t_6) {
+ if (__pyx_v_use_setstate) {
/* "(tree fragment)":13
* use_setstate = self.canonical_normalized_filename is not None or self.co_filename is not None or self.co_name is not None or self.new_code is not None
* if use_setstate:
- * return __pyx_unpickle_FuncCodeInfo, (type(self), 0xb3ee05d, None), state # <<<<<<<<<<<<<<
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, None), state # <<<<<<<<<<<<<<
* else:
- * return __pyx_unpickle_FuncCodeInfo, (type(self), 0xb3ee05d, state)
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, state)
*/
__Pyx_XDECREF(__pyx_r);
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_FuncCodeInfo); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
@@ -5221,22 +7192,22 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
__Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_188670045);
- __Pyx_GIVEREF(__pyx_int_188670045);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_188670045);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 13, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_int_72405718);
+ __Pyx_GIVEREF(__pyx_int_72405718);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_72405718)) __PYX_ERR(1, 13, __pyx_L1_error);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
- PyTuple_SET_ITEM(__pyx_t_4, 2, Py_None);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, Py_None)) __PYX_ERR(1, 13, __pyx_L1_error);
__pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_state);
__Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state)) __PYX_ERR(1, 13, __pyx_L1_error);
__pyx_t_3 = 0;
__pyx_t_4 = 0;
__pyx_r = __pyx_t_2;
@@ -5247,15 +7218,15 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
* else:
* use_setstate = self.canonical_normalized_filename is not None or self.co_filename is not None or self.co_name is not None or self.new_code is not None
* if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle_FuncCodeInfo, (type(self), 0xb3ee05d, None), state
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, None), state
* else:
*/
}
/* "(tree fragment)":15
- * return __pyx_unpickle_FuncCodeInfo, (type(self), 0xb3ee05d, None), state
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, None), state
* else:
- * return __pyx_unpickle_FuncCodeInfo, (type(self), 0xb3ee05d, state) # <<<<<<<<<<<<<<
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, state) # <<<<<<<<<<<<<<
* def __setstate_cython__(self, __pyx_state):
* __pyx_unpickle_FuncCodeInfo__set_state(self, __pyx_state)
*/
@@ -5267,19 +7238,19 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
__Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_188670045);
- __Pyx_GIVEREF(__pyx_int_188670045);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_188670045);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 15, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_int_72405718);
+ __Pyx_GIVEREF(__pyx_int_72405718);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_72405718)) __PYX_ERR(1, 15, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_state);
__Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state)) __PYX_ERR(1, 15, __pyx_L1_error);
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error);
__pyx_t_2 = 0;
__pyx_t_4 = 0;
__pyx_r = __pyx_t_3;
@@ -5311,20 +7282,103 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
/* "(tree fragment)":16
* else:
- * return __pyx_unpickle_FuncCodeInfo, (type(self), 0xb3ee05d, state)
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, state)
* def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
* __pyx_unpickle_FuncCodeInfo__set_state(self, __pyx_state)
*/
/* Python wrapper */
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_5__setstate_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_5__setstate_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v___pyx_state = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_4__setstate_cython__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 16, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 16, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v___pyx_state = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 16, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.FuncCodeInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_4__setstate_cython__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self), __pyx_v___pyx_state);
/* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -5336,21 +7390,21 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__setstate_cython__", 0);
+ __Pyx_RefNannySetupContext("__setstate_cython__", 1);
/* "(tree fragment)":17
- * return __pyx_unpickle_FuncCodeInfo, (type(self), 0xb3ee05d, state)
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, state)
* def __setstate_cython__(self, __pyx_state):
* __pyx_unpickle_FuncCodeInfo__set_state(self, __pyx_state) # <<<<<<<<<<<<<<
*/
- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 17, __pyx_L1_error)
__pyx_t_1 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle_FuncCodeInfo__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "(tree fragment)":16
* else:
- * return __pyx_unpickle_FuncCodeInfo, (type(self), 0xb3ee05d, state)
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, state)
* def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
* __pyx_unpickle_FuncCodeInfo__set_state(self, __pyx_state)
*/
@@ -5377,70 +7431,114 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCo
*/
/* Python wrapper */
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_3dummy_trace_dispatch(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_3dummy_trace_dispatch = {"dummy_trace_dispatch", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_3dummy_trace_dispatch, METH_VARARGS|METH_KEYWORDS, 0};
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_3dummy_trace_dispatch(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_3dummy_trace_dispatch(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_3dummy_trace_dispatch = {"dummy_trace_dispatch", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_3dummy_trace_dispatch, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_3dummy_trace_dispatch(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
PyObject *__pyx_v_frame = 0;
PyObject *__pyx_v_event = 0;
PyObject *__pyx_v_arg = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[3] = {0,0,0};
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("dummy_trace_dispatch (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_frame,&__pyx_n_s_event,&__pyx_n_s_arg,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_frame,&__pyx_n_s_event,&__pyx_n_s_arg,0};
+ if (__pyx_kwds) {
Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+ switch (__pyx_nargs) {
+ case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_frame)) != 0)) kw_args--;
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 152, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_event)) != 0)) kw_args--;
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_event)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 152, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("dummy_trace_dispatch", 1, 3, 3, 1); __PYX_ERR(0, 152, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_arg)) != 0)) kw_args--;
+ if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 152, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("dummy_trace_dispatch", 1, 3, 3, 2); __PYX_ERR(0, 152, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dummy_trace_dispatch") < 0)) __PYX_ERR(0, 152, __pyx_L3_error)
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "dummy_trace_dispatch") < 0)) __PYX_ERR(0, 152, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+ } else if (unlikely(__pyx_nargs != 3)) {
goto __pyx_L5_argtuple_error;
} else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
}
__pyx_v_frame = values[0];
__pyx_v_event = ((PyObject*)values[1]);
__pyx_v_arg = values[2];
}
- goto __pyx_L4_argument_unpacking_done;
+ goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("dummy_trace_dispatch", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 152, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("dummy_trace_dispatch", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 152, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.dummy_trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
@@ -5453,6 +7551,12 @@ static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_3dummy_t
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -5461,16 +7565,14 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_2dummy_t
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
int __pyx_t_1;
- int __pyx_t_2;
+ PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_t_6;
- PyObject *__pyx_t_7 = NULL;
+ int __pyx_t_5;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("dummy_trace_dispatch", 0);
+ __Pyx_RefNannySetupContext("dummy_trace_dispatch", 1);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":153
*
@@ -5479,9 +7581,8 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_2dummy_t
* if frame.f_trace is not None:
* return frame.f_trace(frame, event, arg)
*/
- __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call_2, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 153, __pyx_L1_error)
- __pyx_t_2 = (__pyx_t_1 != 0);
- if (__pyx_t_2) {
+ __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call_2, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 153, __pyx_L1_error)
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":154
* def dummy_trace_dispatch(frame, str event, arg):
@@ -5490,11 +7591,10 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_2dummy_t
* return frame.f_trace(frame, event, arg)
* return None
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 154, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = (__pyx_t_3 != Py_None);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_1 = (__pyx_t_2 != 0);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 154, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = (__pyx_t_2 != Py_None);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":155
@@ -5505,58 +7605,32 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_2dummy_t
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 155, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = NULL;
- __pyx_t_6 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_5);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- __pyx_t_6 = 1;
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
}
}
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_v_frame, __pyx_v_event, __pyx_v_arg};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_v_frame, __pyx_v_event, __pyx_v_arg};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
#endif
{
- __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 155, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- if (__pyx_t_5) {
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
- }
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_frame);
- __Pyx_INCREF(__pyx_v_event);
- __Pyx_GIVEREF(__pyx_v_event);
- PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_event);
- __Pyx_INCREF(__pyx_v_arg);
- __Pyx_GIVEREF(__pyx_v_arg);
- PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_arg);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_v_frame, __pyx_v_event, __pyx_v_arg};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 155, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
goto __pyx_L0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":154
@@ -5598,10 +7672,9 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_2dummy_t
/* function exit code */
__pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.dummy_trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -5622,9 +7695,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_2dummy_t
static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_5get_thread_info_py(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_5get_thread_info_py = {"get_thread_info_py", (PyCFunction)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_5get_thread_info_py, METH_NOARGS, 0};
static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_5get_thread_info_py(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("get_thread_info_py (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_4get_thread_info_py(__pyx_self);
/* function exit code */
@@ -5639,7 +7714,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_thread_info_py", 0);
+ __Pyx_RefNannySetupContext("get_thread_info_py", 1);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":160
*
@@ -5648,7 +7723,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo
*
*
*/
- __Pyx_XDECREF(((PyObject *)__pyx_r));
+ __Pyx_XDECREF((PyObject *)__pyx_r);
__pyx_t_1 = ((PyObject *)__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_thread_info(PyEval_GetFrame())); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 160, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_t_1);
@@ -5706,7 +7781,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_thread_info", 0);
+ __Pyx_RefNannySetupContext("get_thread_info", 1);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":170
* '''
@@ -5766,9 +7841,9 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo
/*except:*/ {
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_thread_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(0, 174, __pyx_L5_except_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_XGOTREF(__pyx_t_5);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_6);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":175
* thread_info = _thread_local_info.thread_info
@@ -5777,7 +7852,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo
* return None
* thread_info = ThreadInfo()
*/
- __pyx_t_7 = ((__pyx_v_frame_obj == NULL) != 0);
+ __pyx_t_7 = (__pyx_v_frame_obj == NULL);
if (__pyx_t_7) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":176
@@ -5787,7 +7862,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo
* thread_info = ThreadInfo()
* thread_info.initialize(frame_obj)
*/
- __Pyx_XDECREF(((PyObject *)__pyx_r));
+ __Pyx_XDECREF((PyObject *)__pyx_r);
__pyx_r = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)Py_None); __Pyx_INCREF(Py_None);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -5863,7 +7938,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo
* _code_extra_index = _PyEval_RequestCodeExtraIndex(release_co_extra)
*
*/
- __pyx_t_7 = ((__pyx_v_18_pydevd_frame_eval_22pydevd_frame_evaluator__code_extra_index == -1L) != 0);
+ __pyx_t_7 = (__pyx_v_18_pydevd_frame_eval_22pydevd_frame_evaluator__code_extra_index == -1L);
if (__pyx_t_7) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":187
@@ -5947,7 +8022,6 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L4_exception_handled;
}
- __pyx_L5_except_error:;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":170
* '''
@@ -5956,6 +8030,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo
* # Note: changing to a `dict[thread.ident] = thread_info` had almost no
* # effect in the performance.
*/
+ __pyx_L5_except_error:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
@@ -5982,8 +8057,8 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo
*
*
*/
- __Pyx_XDECREF(((PyObject *)__pyx_r));
- __Pyx_INCREF(((PyObject *)__pyx_v_thread_info));
+ __Pyx_XDECREF((PyObject *)__pyx_r);
+ __Pyx_INCREF((PyObject *)__pyx_v_thread_info);
__pyx_r = __pyx_v_thread_info;
goto __pyx_L0;
@@ -6019,16 +8094,98 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo
*/
/* Python wrapper */
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_7decref_py(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
-static char __pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_6decref_py[] = "\n Helper to be called from Python.\n ";
-static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_7decref_py = {"decref_py", (PyCFunction)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_7decref_py, METH_O, __pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_6decref_py};
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_7decref_py(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_7decref_py(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_6decref_py, "\n Helper to be called from Python.\n ");
+static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_7decref_py = {"decref_py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_7decref_py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_6decref_py};
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_7decref_py(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_obj = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("decref_py (wrapper)", 0);
- __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_6decref_py(__pyx_self, ((PyObject *)__pyx_v_obj));
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 196, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "decref_py") < 0)) __PYX_ERR(0, 196, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v_obj = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("decref_py", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 196, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.decref_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_6decref_py(__pyx_self, __pyx_v_obj);
/* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -6036,7 +8193,7 @@ static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_7decref_
static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_6decref_py(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("decref_py", 0);
+ __Pyx_RefNannySetupContext("decref_py", 1);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":200
* Helper to be called from Python.
@@ -6071,71 +8228,115 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_6decref_
*/
/* Python wrapper */
-static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_9get_func_code_info_py(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_8get_func_code_info_py[] = "\n Helper to be called from Python.\n ";
-static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_9get_func_code_info_py = {"get_func_code_info_py", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_9get_func_code_info_py, METH_VARARGS|METH_KEYWORDS, __pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_8get_func_code_info_py};
-static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_9get_func_code_info_py(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_9get_func_code_info_py(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_8get_func_code_info_py, "\n Helper to be called from Python.\n ");
+static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_9get_func_code_info_py = {"get_func_code_info_py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_9get_func_code_info_py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_8get_func_code_info_py};
+static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_9get_func_code_info_py(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
PyObject *__pyx_v_thread_info = 0;
PyObject *__pyx_v_frame = 0;
PyObject *__pyx_v_code_obj = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[3] = {0,0,0};
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("get_func_code_info_py (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_thread_info,&__pyx_n_s_frame,&__pyx_n_s_code_obj,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_thread_info,&__pyx_n_s_frame,&__pyx_n_s_code_obj,0};
+ if (__pyx_kwds) {
Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+ switch (__pyx_nargs) {
+ case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_thread_info)) != 0)) kw_args--;
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_thread_info)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 203, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_frame)) != 0)) kw_args--;
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 203, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("get_func_code_info_py", 1, 3, 3, 1); __PYX_ERR(0, 203, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_code_obj)) != 0)) kw_args--;
+ if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code_obj)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 203, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("get_func_code_info_py", 1, 3, 3, 2); __PYX_ERR(0, 203, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_func_code_info_py") < 0)) __PYX_ERR(0, 203, __pyx_L3_error)
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get_func_code_info_py") < 0)) __PYX_ERR(0, 203, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+ } else if (unlikely(__pyx_nargs != 3)) {
goto __pyx_L5_argtuple_error;
} else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
}
__pyx_v_thread_info = values[0];
__pyx_v_frame = values[1];
__pyx_v_code_obj = values[2];
}
- goto __pyx_L4_argument_unpacking_done;
+ goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("get_func_code_info_py", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 203, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("get_func_code_info_py", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 203, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_func_code_info_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
@@ -6143,6 +8344,12 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_8get_func_code_info_py(__pyx_self, __pyx_v_thread_info, __pyx_v_frame, __pyx_v_code_obj);
/* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -6154,7 +8361,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_func_code_info_py", 0);
+ __Pyx_RefNannySetupContext("get_func_code_info_py", 1);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":207
* Helper to be called from Python.
@@ -6163,7 +8370,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
*
*
*/
- __Pyx_XDECREF(((PyObject *)__pyx_r));
+ __Pyx_XDECREF((PyObject *)__pyx_r);
__pyx_t_1 = ((PyObject *)__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_func_code_info(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_thread_info), ((PyFrameObject *)__pyx_v_frame), ((PyCodeObject *)__pyx_v_code_obj))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 207, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_t_1);
@@ -6227,13 +8434,11 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
PyObject *__pyx_t_9 = NULL;
PyObject *__pyx_t_10 = NULL;
PyObject *__pyx_t_11 = NULL;
- PyObject *__pyx_t_12 = NULL;
- int __pyx_t_13;
- PyObject *(*__pyx_t_14)(PyObject *);
+ PyObject *(*__pyx_t_12)(PyObject *);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_func_code_info", 0);
+ __Pyx_RefNannySetupContext("get_func_code_info", 1);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":228
* # print('get_func_code_info', f_code.co_name, f_code.co_filename)
@@ -6275,7 +8480,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
* extra_obj = extra
* if extra_obj is not NULL:
*/
- __pyx_t_3 = ((__pyx_v_extra != NULL) != 0);
+ __pyx_t_3 = (__pyx_v_extra != NULL);
if (__pyx_t_3) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":234
@@ -6294,7 +8499,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
* func_code_info_obj = extra_obj
* if func_code_info_obj.breakpoints_mtime == main_debugger.mtime:
*/
- __pyx_t_3 = ((__pyx_v_extra_obj != NULL) != 0);
+ __pyx_t_3 = (__pyx_v_extra_obj != NULL);
if (__pyx_t_3) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":236
@@ -6323,7 +8528,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
__pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 237, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 237, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 237, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_3) {
@@ -6334,8 +8539,8 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
*
* cdef str co_filename = code_obj.co_filename
*/
- __Pyx_XDECREF(((PyObject *)__pyx_r));
- __Pyx_INCREF(((PyObject *)__pyx_v_func_code_info_obj));
+ __Pyx_XDECREF((PyObject *)__pyx_r);
+ __Pyx_INCREF((PyObject *)__pyx_v_func_code_info_obj);
__pyx_r = __pyx_v_func_code_info_obj;
goto __pyx_L0;
@@ -6448,7 +8653,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
* try:
* abs_path_real_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[co_filename]
*/
- __pyx_t_3 = ((!(__pyx_v_func_code_info->always_skip_code != 0)) != 0);
+ __pyx_t_3 = (!__pyx_v_func_code_info->always_skip_code);
if (__pyx_t_3) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":255
@@ -6509,9 +8714,9 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
/*except:*/ {
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_func_code_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_2) < 0) __PYX_ERR(0, 257, __pyx_L9_except_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_2);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":258
* abs_path_real_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[co_filename]
@@ -6523,20 +8728,27 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
__Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_get_abs_path_real_path_and_base); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 258, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_11 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_10))) {
__pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
if (likely(__pyx_t_11)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
__Pyx_INCREF(__pyx_t_11);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_10, function);
+ __pyx_t_5 = 1;
}
}
- __pyx_t_9 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_11, ((PyObject *)__pyx_v_frame_obj)) : __Pyx_PyObject_CallOneArg(__pyx_t_10, ((PyObject *)__pyx_v_frame_obj));
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 258, __pyx_L9_except_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_11, ((PyObject *)__pyx_v_frame_obj)};
+ __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 258, __pyx_L9_except_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ }
__Pyx_XDECREF_SET(__pyx_v_abs_path_real_path_and_base, __pyx_t_9);
__pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -6544,7 +8756,6 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
goto __pyx_L8_exception_handled;
}
- __pyx_L9_except_error:;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":255
*
@@ -6553,6 +8764,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
* abs_path_real_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[co_filename]
* except:
*/
+ __pyx_L9_except_error:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
@@ -6575,7 +8787,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
*/
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_abs_path_real_path_and_base, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 260, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 260, __pyx_L1_error)
+ if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(0, 260, __pyx_L1_error)
__Pyx_GIVEREF(__pyx_t_2);
__Pyx_GOTREF(__pyx_v_func_code_info->canonical_normalized_filename);
__Pyx_DECREF(__pyx_v_func_code_info->canonical_normalized_filename);
@@ -6592,21 +8804,28 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_get_cache_file_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 262, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
if (likely(__pyx_t_1)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
}
}
- __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 262, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (!(likely(PyDict_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 262, __pyx_L1_error)
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 262, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ if (!(likely(PyDict_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_2))) __PYX_ERR(0, 262, __pyx_L1_error)
__pyx_v_cache_file_type = ((PyObject*)__pyx_t_2);
__pyx_t_2 = 0;
@@ -6624,12 +8843,12 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 265, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2)) __PYX_ERR(0, 265, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4)) __PYX_ERR(0, 265, __pyx_L1_error);
__Pyx_INCREF(((PyObject *)__pyx_v_frame_obj->f_code));
__Pyx_GIVEREF(((PyObject *)__pyx_v_frame_obj->f_code));
- PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_frame_obj->f_code));
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_frame_obj->f_code))) __PYX_ERR(0, 265, __pyx_L1_error);
__pyx_t_2 = 0;
__pyx_t_4 = 0;
__pyx_v_cache_file_type_key = ((PyObject*)__pyx_t_1);
@@ -6697,9 +8916,9 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
/*except:*/ {
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_func_code_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_2) < 0) __PYX_ERR(0, 268, __pyx_L17_except_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_2);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":269
* file_type = cache_file_type[cache_file_type_key] # Make it faster
@@ -6712,7 +8931,8 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_11 = NULL;
__pyx_t_5 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_10))) {
__pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
if (likely(__pyx_t_11)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
@@ -6722,39 +8942,15 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
__pyx_t_5 = 1;
}
}
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[3] = {__pyx_t_11, ((PyObject *)__pyx_v_frame_obj), __pyx_v_abs_path_real_path_and_base};
- __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 269, __pyx_L17_except_error)
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- } else
#endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[3] = {__pyx_t_11, ((PyObject *)__pyx_v_frame_obj), __pyx_v_abs_path_real_path_and_base};
- __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 269, __pyx_L17_except_error)
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_11, ((PyObject *)__pyx_v_frame_obj), __pyx_v_abs_path_real_path_and_base};
+ __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 269, __pyx_L17_except_error)
__Pyx_GOTREF(__pyx_t_9);
- } else
- #endif
- {
- __pyx_t_12 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 269, __pyx_L17_except_error)
- __Pyx_GOTREF(__pyx_t_12);
- if (__pyx_t_11) {
- __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL;
- }
- __Pyx_INCREF(((PyObject *)__pyx_v_frame_obj));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_frame_obj));
- PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_5, ((PyObject *)__pyx_v_frame_obj));
- __Pyx_INCREF(__pyx_v_abs_path_real_path_and_base);
- __Pyx_GIVEREF(__pyx_v_abs_path_real_path_and_base);
- PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_5, __pyx_v_abs_path_real_path_and_base);
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 269, __pyx_L17_except_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF_SET(__pyx_v_file_type, __pyx_t_9);
__pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -6762,7 +8958,6 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
goto __pyx_L16_exception_handled;
}
- __pyx_L17_except_error:;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":266
* # on the cache.
@@ -6771,6 +8966,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
* file_type = cache_file_type[cache_file_type_key] # Make it faster
* except:
*/
+ __pyx_L17_except_error:;
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_6);
@@ -6792,8 +8988,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
*
*/
__pyx_t_3 = (__pyx_v_file_type != Py_None);
- __pyx_t_13 = (__pyx_t_3 != 0);
- if (__pyx_t_13) {
+ if (__pyx_t_3) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":272
*
@@ -6829,8 +9024,8 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
* if main_debugger is not None:
*
*/
- __pyx_t_13 = ((!(__pyx_v_func_code_info->always_skip_code != 0)) != 0);
- if (__pyx_t_13) {
+ __pyx_t_3 = (!__pyx_v_func_code_info->always_skip_code);
+ if (__pyx_t_3) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":275
*
@@ -6839,8 +9034,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
*
* breakpoints: dict = main_debugger.breakpoints.get(func_code_info.canonical_normalized_filename)
*/
- __pyx_t_13 = (__pyx_v_main_debugger != Py_None);
- __pyx_t_3 = (__pyx_t_13 != 0);
+ __pyx_t_3 = (__pyx_v_main_debugger != Py_None);
if (__pyx_t_3) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":277
@@ -6856,21 +9050,28 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_1))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_5 = 1;
}
}
- __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_v_func_code_info->canonical_normalized_filename) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_func_code_info->canonical_normalized_filename);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 277, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (!(likely(PyDict_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 277, __pyx_L1_error)
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_func_code_info->canonical_normalized_filename};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ if (!(likely(PyDict_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_2))) __PYX_ERR(0, 277, __pyx_L1_error)
__pyx_v_breakpoints = ((PyObject*)__pyx_t_2);
__pyx_t_2 = 0;
@@ -6887,20 +9088,27 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
if (likely(__pyx_t_1)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
}
}
- __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_1, __pyx_v_func_code_info->co_name) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_func_code_info->co_name);
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_func_code_info->co_name};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
__pyx_v_function_breakpoint = __pyx_t_2;
__pyx_t_2 = 0;
@@ -6929,20 +9137,27 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_1))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_5 = 1;
}
}
- __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_v_code_obj_py) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_code_obj_py);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 284, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_code_obj_py};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 284, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
__pyx_v_cached_code_obj_info = __pyx_t_2;
__pyx_t_2 = 0;
@@ -6953,7 +9168,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
* # The cache is for new code objects, so, in this case it's already
* # using the new code and we can't change it as this is a generator!
*/
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_cached_code_obj_info); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 285, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_cached_code_obj_info); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 285, __pyx_L1_error)
if (__pyx_t_3) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":291
@@ -6979,20 +9194,27 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_cached_code_obj_info, __pyx_n_s_compute_force_stay_in_untraced_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 293, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_1))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_5 = 1;
}
}
- __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_v_breakpoints) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_breakpoints);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 293, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_breakpoints};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 293, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
PyObject* sequence = __pyx_t_2;
Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
@@ -7023,18 +9245,18 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
__pyx_t_9 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 292, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_14 = Py_TYPE(__pyx_t_9)->tp_iternext;
- index = 0; __pyx_t_1 = __pyx_t_14(__pyx_t_9); if (unlikely(!__pyx_t_1)) goto __pyx_L27_unpacking_failed;
+ __pyx_t_12 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_9);
+ index = 0; __pyx_t_1 = __pyx_t_12(__pyx_t_9); if (unlikely(!__pyx_t_1)) goto __pyx_L27_unpacking_failed;
__Pyx_GOTREF(__pyx_t_1);
- index = 1; __pyx_t_4 = __pyx_t_14(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L27_unpacking_failed;
+ index = 1; __pyx_t_4 = __pyx_t_12(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L27_unpacking_failed;
__Pyx_GOTREF(__pyx_t_4);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_9), 2) < 0) __PYX_ERR(0, 292, __pyx_L1_error)
- __pyx_t_14 = NULL;
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_9), 2) < 0) __PYX_ERR(0, 292, __pyx_L1_error)
+ __pyx_t_12 = NULL;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L28_unpacking_done;
__pyx_L27_unpacking_failed:;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_14 = NULL;
+ __pyx_t_12 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
__PYX_ERR(0, 292, __pyx_L1_error)
__pyx_L28_unpacking_done:;
@@ -7080,7 +9302,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
* # Go directly into tracing mode
* func_code_info.breakpoint_found = True
*/
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_function_breakpoint); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 296, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_function_breakpoint); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 296, __pyx_L1_error)
if (__pyx_t_3) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":298
@@ -7122,7 +9344,7 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
* # if DEBUG:
* # print('found breakpoints', code_obj_py.co_name, breakpoints)
*/
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_breakpoints); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 301, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_breakpoints); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 301, __pyx_L1_error)
if (__pyx_t_3) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":307
@@ -7164,18 +9386,18 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
__pyx_t_9 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 307, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_14 = Py_TYPE(__pyx_t_9)->tp_iternext;
- index = 0; __pyx_t_4 = __pyx_t_14(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L29_unpacking_failed;
+ __pyx_t_12 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_9);
+ index = 0; __pyx_t_4 = __pyx_t_12(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L29_unpacking_failed;
__Pyx_GOTREF(__pyx_t_4);
- index = 1; __pyx_t_1 = __pyx_t_14(__pyx_t_9); if (unlikely(!__pyx_t_1)) goto __pyx_L29_unpacking_failed;
+ index = 1; __pyx_t_1 = __pyx_t_12(__pyx_t_9); if (unlikely(!__pyx_t_1)) goto __pyx_L29_unpacking_failed;
__Pyx_GOTREF(__pyx_t_1);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_9), 2) < 0) __PYX_ERR(0, 307, __pyx_L1_error)
- __pyx_t_14 = NULL;
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_9), 2) < 0) __PYX_ERR(0, 307, __pyx_L1_error)
+ __pyx_t_12 = NULL;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L30_unpacking_done;
__pyx_L29_unpacking_failed:;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_14 = NULL;
+ __pyx_t_12 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
__PYX_ERR(0, 307, __pyx_L1_error)
__pyx_L30_unpacking_done:;
@@ -7251,8 +9473,8 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
*
*
*/
- __Pyx_XDECREF(((PyObject *)__pyx_r));
- __Pyx_INCREF(((PyObject *)__pyx_v_func_code_info));
+ __Pyx_XDECREF((PyObject *)__pyx_r);
+ __Pyx_INCREF((PyObject *)__pyx_v_func_code_info);
__pyx_r = __pyx_v_func_code_info;
goto __pyx_L0;
@@ -7272,7 +9494,6 @@ static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeIn
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
- __Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_func_code_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
@@ -7309,64 +9530,92 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInf
PyObject *__pyx_v_line_to_offset = 0;
int __pyx_v_first_line;
int __pyx_v_last_line;
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[3] = {0,0,0};
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_line_to_offset,&__pyx_n_s_first_line,&__pyx_n_s_last_line,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_line_to_offset,&__pyx_n_s_first_line,&__pyx_n_s_last_line,0};
+ if (__pyx_kwds) {
Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+ switch (__pyx_nargs) {
+ case 3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
CYTHON_FALLTHROUGH;
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
CYTHON_FALLTHROUGH;
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
+ kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+ switch (__pyx_nargs) {
case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_line_to_offset)) != 0)) kw_args--;
+ if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_line_to_offset)) != 0)) {
+ (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 322, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_first_line)) != 0)) kw_args--;
+ if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_first_line)) != 0)) {
+ (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 322, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(0, 322, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_last_line)) != 0)) kw_args--;
+ if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_last_line)) != 0)) {
+ (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 322, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(0, 322, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 322, __pyx_L3_error)
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 322, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+ } else if (unlikely(__pyx_nargs != 3)) {
goto __pyx_L5_argtuple_error;
} else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+ values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+ values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+ values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
}
__pyx_v_line_to_offset = ((PyObject*)values[0]);
__pyx_v_first_line = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_first_line == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 322, __pyx_L3_error)
__pyx_v_last_line = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_last_line == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 322, __pyx_L3_error)
}
- goto __pyx_L4_argument_unpacking_done;
+ goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 322, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 322, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
+ }
+ }
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CodeLineInfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
@@ -7379,6 +9628,12 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInf
__pyx_L1_error:;
__pyx_r = -1;
__pyx_L0:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -7386,7 +9641,7 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInf
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo___init__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self, PyObject *__pyx_v_line_to_offset, int __pyx_v_first_line, int __pyx_v_last_line) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__init__", 0);
+ __Pyx_RefNannySetupContext("__init__", 1);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":323
*
@@ -7444,9 +9699,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInf
/* Python wrapper */
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v_self));
/* function exit code */
@@ -7457,7 +9714,7 @@ static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeL
static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->line_to_offset);
__pyx_r = __pyx_v_self->line_to_offset;
@@ -7473,9 +9730,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeL
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -7490,8 +9749,8 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInf
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- if (!(likely(PyDict_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(0, 318, __pyx_L1_error)
+ __Pyx_RefNannySetupContext("__set__", 1);
+ if (!(likely(PyDict_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_v_value))) __PYX_ERR(0, 318, __pyx_L1_error)
__pyx_t_1 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
@@ -7515,9 +9774,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInf
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v_self));
/* function exit code */
@@ -7528,7 +9789,7 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInf
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->line_to_offset);
@@ -7552,9 +9813,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInf
/* Python wrapper */
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_10first_line_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_10first_line_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_10first_line___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v_self));
/* function exit code */
@@ -7569,7 +9832,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeL
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->first_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 319, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -7591,9 +9854,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeL
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_10first_line_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_10first_line_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_10first_line_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -7603,12 +9868,10 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInf
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_10first_line_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
- __Pyx_RefNannyDeclarations
int __pyx_t_1;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
__pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 319, __pyx_L1_error)
__pyx_v_self->first_line = __pyx_t_1;
@@ -7619,7 +9882,6 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInf
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CodeLineInfo.first_line.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
- __Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -7634,9 +9896,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInf
/* Python wrapper */
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_9last_line_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_9last_line_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_9last_line___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v_self));
/* function exit code */
@@ -7651,7 +9915,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeL
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->last_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 320, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -7673,9 +9937,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeL
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_9last_line_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_9last_line_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_9last_line_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -7685,12 +9951,10 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInf
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_9last_line_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
- __Pyx_RefNannyDeclarations
int __pyx_t_1;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
__pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 320, __pyx_L1_error)
__pyx_v_self->last_line = __pyx_t_1;
@@ -7701,7 +9965,6 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInf
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CodeLineInfo.last_line.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
- __Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -7712,11 +9975,39 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInf
*/
/* Python wrapper */
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_3__reduce_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_3__reduce_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_nargs > 0)) {
+ __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
+ if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_2__reduce_cython__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v_self));
/* function exit code */
@@ -7734,11 +10025,10 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeL
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
int __pyx_t_4;
- int __pyx_t_5;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__reduce_cython__", 0);
+ __Pyx_RefNannySetupContext("__reduce_cython__", 1);
/* "(tree fragment)":5
* cdef object _dict
@@ -7754,12 +10044,12 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeL
__pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->line_to_offset);
__Pyx_GIVEREF(__pyx_v_self->line_to_offset);
- PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_self->line_to_offset);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_self->line_to_offset)) __PYX_ERR(1, 5, __pyx_L1_error);
__pyx_t_1 = 0;
__pyx_t_2 = 0;
__pyx_v_state = ((PyObject*)__pyx_t_3);
@@ -7785,8 +10075,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeL
* use_setstate = True
*/
__pyx_t_4 = (__pyx_v__dict != Py_None);
- __pyx_t_5 = (__pyx_t_4 != 0);
- if (__pyx_t_5) {
+ if (__pyx_t_4) {
/* "(tree fragment)":8
* _dict = getattr(self, '__dict__', None)
@@ -7799,7 +10088,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeL
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_v__dict);
__Pyx_GIVEREF(__pyx_v__dict);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict)) __PYX_ERR(1, 8, __pyx_L1_error);
__pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -7830,11 +10119,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeL
* else:
* use_setstate = self.line_to_offset is not None # <<<<<<<<<<<<<<
* if use_setstate:
- * return __pyx_unpickle__CodeLineInfo, (type(self), 0x3fbbd02, None), state
+ * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, None), state
*/
/*else*/ {
- __pyx_t_5 = (__pyx_v_self->line_to_offset != ((PyObject*)Py_None));
- __pyx_v_use_setstate = __pyx_t_5;
+ __pyx_t_4 = (__pyx_v_self->line_to_offset != ((PyObject*)Py_None));
+ __pyx_v_use_setstate = __pyx_t_4;
}
__pyx_L3:;
@@ -7842,18 +10131,17 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeL
* else:
* use_setstate = self.line_to_offset is not None
* if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle__CodeLineInfo, (type(self), 0x3fbbd02, None), state
+ * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, None), state
* else:
*/
- __pyx_t_5 = (__pyx_v_use_setstate != 0);
- if (__pyx_t_5) {
+ if (__pyx_v_use_setstate) {
/* "(tree fragment)":13
* use_setstate = self.line_to_offset is not None
* if use_setstate:
- * return __pyx_unpickle__CodeLineInfo, (type(self), 0x3fbbd02, None), state # <<<<<<<<<<<<<<
+ * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, None), state # <<<<<<<<<<<<<<
* else:
- * return __pyx_unpickle__CodeLineInfo, (type(self), 0x3fbbd02, state)
+ * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, state)
*/
__Pyx_XDECREF(__pyx_r);
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle__CodeLineInfo); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
@@ -7862,22 +10150,22 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeL
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
__Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_66829570);
- __Pyx_GIVEREF(__pyx_int_66829570);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_66829570);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 13, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_int_95010005);
+ __Pyx_GIVEREF(__pyx_int_95010005);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_95010005)) __PYX_ERR(1, 13, __pyx_L1_error);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
- PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None)) __PYX_ERR(1, 13, __pyx_L1_error);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_state);
__Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(1, 13, __pyx_L1_error);
__pyx_t_2 = 0;
__pyx_t_3 = 0;
__pyx_r = __pyx_t_1;
@@ -7888,15 +10176,15 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeL
* else:
* use_setstate = self.line_to_offset is not None
* if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle__CodeLineInfo, (type(self), 0x3fbbd02, None), state
+ * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, None), state
* else:
*/
}
/* "(tree fragment)":15
- * return __pyx_unpickle__CodeLineInfo, (type(self), 0x3fbbd02, None), state
+ * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, None), state
* else:
- * return __pyx_unpickle__CodeLineInfo, (type(self), 0x3fbbd02, state) # <<<<<<<<<<<<<<
+ * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, state) # <<<<<<<<<<<<<<
* def __setstate_cython__(self, __pyx_state):
* __pyx_unpickle__CodeLineInfo__set_state(self, __pyx_state)
*/
@@ -7908,19 +10196,19 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeL
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
__Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_66829570);
- __Pyx_GIVEREF(__pyx_int_66829570);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_66829570);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 15, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_int_95010005);
+ __Pyx_GIVEREF(__pyx_int_95010005);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_95010005)) __PYX_ERR(1, 15, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_state);
__Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state)) __PYX_ERR(1, 15, __pyx_L1_error);
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error);
__pyx_t_1 = 0;
__pyx_t_3 = 0;
__pyx_r = __pyx_t_2;
@@ -7951,20 +10239,103 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeL
/* "(tree fragment)":16
* else:
- * return __pyx_unpickle__CodeLineInfo, (type(self), 0x3fbbd02, state)
+ * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, state)
* def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
* __pyx_unpickle__CodeLineInfo__set_state(self, __pyx_state)
*/
/* Python wrapper */
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_5__setstate_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_5__setstate_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v___pyx_state = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_4__setstate_cython__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 16, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 16, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v___pyx_state = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 16, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CodeLineInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_4__setstate_cython__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v_self), __pyx_v___pyx_state);
/* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -7976,21 +10347,21 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeL
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__setstate_cython__", 0);
+ __Pyx_RefNannySetupContext("__setstate_cython__", 1);
/* "(tree fragment)":17
- * return __pyx_unpickle__CodeLineInfo, (type(self), 0x3fbbd02, state)
+ * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, state)
* def __setstate_cython__(self, __pyx_state):
* __pyx_unpickle__CodeLineInfo__set_state(self, __pyx_state) # <<<<<<<<<<<<<<
*/
- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 17, __pyx_L1_error)
__pyx_t_1 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle__CodeLineInfo__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "(tree fragment)":16
* else:
- * return __pyx_unpickle__CodeLineInfo, (type(self), 0x3fbbd02, state)
+ * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, state)
* def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
* __pyx_unpickle__CodeLineInfo__set_state(self, __pyx_state)
*/
@@ -8017,15 +10388,97 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeL
*/
/* Python wrapper */
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_get_code_line_info(PyObject *__pyx_self, PyObject *__pyx_v_code_obj); /*proto*/
-static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_get_code_line_info = {"_get_code_line_info", (PyCFunction)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_get_code_line_info, METH_O, 0};
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_get_code_line_info(PyObject *__pyx_self, PyObject *__pyx_v_code_obj) {
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_get_code_line_info(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_get_code_line_info = {"_get_code_line_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_get_code_line_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_get_code_line_info(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_code_obj = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_get_code_line_info (wrapper)", 0);
- __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10_get_code_line_info(__pyx_self, ((PyObject *)__pyx_v_code_obj));
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code_obj,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code_obj)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 329, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_get_code_line_info") < 0)) __PYX_ERR(0, 329, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v_code_obj = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("_get_code_line_info", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 329, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._get_code_line_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10_get_code_line_info(__pyx_self, __pyx_v_code_obj);
/* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -8041,18 +10494,18 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10_get_c
PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
- Py_ssize_t __pyx_t_4;
- PyObject *(*__pyx_t_5)(PyObject *);
- PyObject *__pyx_t_6 = NULL;
+ int __pyx_t_4;
+ Py_ssize_t __pyx_t_5;
+ PyObject *(*__pyx_t_6)(PyObject *);
PyObject *__pyx_t_7 = NULL;
- PyObject *(*__pyx_t_8)(PyObject *);
- int __pyx_t_9;
+ PyObject *__pyx_t_8 = NULL;
+ PyObject *(*__pyx_t_9)(PyObject *);
int __pyx_t_10;
int __pyx_t_11;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_get_code_line_info", 0);
+ __Pyx_RefNannySetupContext("_get_code_line_info", 1);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":330
* # Note: this method has a version in pure-python too.
@@ -8074,7 +10527,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10_get_c
*
*/
__Pyx_INCREF(Py_None);
- __pyx_v_first_line = Py_None;
+ __pyx_v_first_line = ((PyObject*)Py_None);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":332
* line_to_offset: dict = {}
@@ -8084,7 +10537,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10_get_c
* cdef int offset
*/
__Pyx_INCREF(Py_None);
- __pyx_v_last_line = Py_None;
+ __pyx_v_last_line = ((PyObject*)Py_None);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":337
* cdef int line
@@ -8099,50 +10552,70 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10_get_c
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_4 = 1;
}
}
- __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_code_obj) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_code_obj);
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_code_obj};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
- __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
- __pyx_t_5 = NULL;
+ __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3);
+ __pyx_t_5 = 0;
+ __pyx_t_6 = NULL;
} else {
- __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 337, __pyx_L1_error)
+ __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 337, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 337, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 337, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
for (;;) {
- if (likely(!__pyx_t_5)) {
+ if (likely(!__pyx_t_6)) {
if (likely(PyList_CheckExact(__pyx_t_3))) {
- if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
+ {
+ Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
+ #if !CYTHON_ASSUME_SAFE_MACROS
+ if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 337, __pyx_L1_error)
+ #endif
+ if (__pyx_t_5 >= __pyx_temp) break;
+ }
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 337, __pyx_L1_error)
+ __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 337, __pyx_L1_error)
#else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
} else {
- if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
+ {
+ Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
+ #if !CYTHON_ASSUME_SAFE_MACROS
+ if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 337, __pyx_L1_error)
+ #endif
+ if (__pyx_t_5 >= __pyx_temp) break;
+ }
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 337, __pyx_L1_error)
+ __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 337, __pyx_L1_error)
#else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
}
} else {
- __pyx_t_1 = __pyx_t_5(__pyx_t_3);
+ __pyx_t_1 = __pyx_t_6(__pyx_t_3);
if (unlikely(!__pyx_t_1)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
@@ -8164,46 +10637,46 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10_get_c
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__pyx_t_2 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);
+ __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1);
} else {
__pyx_t_2 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_6 = PyList_GET_ITEM(sequence, 1);
+ __pyx_t_7 = PyList_GET_ITEM(sequence, 1);
}
__Pyx_INCREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_7);
#else
__pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 337, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 337, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 337, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 337, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 337, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
- index = 0; __pyx_t_2 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_2)) goto __pyx_L5_unpacking_failed;
+ __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_8);
+ index = 0; __pyx_t_2 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_2)) goto __pyx_L5_unpacking_failed;
__Pyx_GOTREF(__pyx_t_2);
- index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_6);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 337, __pyx_L1_error)
- __pyx_t_8 = NULL;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_7);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 337, __pyx_L1_error)
+ __pyx_t_9 = NULL;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L6_unpacking_done;
__pyx_L5_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_8 = NULL;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_9 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
__PYX_ERR(0, 337, __pyx_L1_error)
__pyx_L6_unpacking_done:;
}
- __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 337, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 337, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 337, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_v_offset = __pyx_t_9;
+ __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 337, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_v_offset = __pyx_t_4;
__pyx_v_line = __pyx_t_10;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":338
@@ -8215,10 +10688,10 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10_get_c
*/
__pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_offset); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 338, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 338, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- if (unlikely(PyDict_SetItem(__pyx_v_line_to_offset, __pyx_t_6, __pyx_t_1) < 0)) __PYX_ERR(0, 338, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 338, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (unlikely((PyDict_SetItem(__pyx_v_line_to_offset, __pyx_t_7, __pyx_t_1) < 0))) __PYX_ERR(0, 338, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":337
@@ -8238,7 +10711,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10_get_c
* first_line = min(line_to_offset)
* last_line = max(line_to_offset)
*/
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_line_to_offset); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 340, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_line_to_offset); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 340, __pyx_L1_error)
if (__pyx_t_11) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":341
@@ -8250,7 +10723,8 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10_get_c
*/
__pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_min, __pyx_v_line_to_offset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 341, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF_SET(__pyx_v_first_line, __pyx_t_3);
+ if (!(likely(__Pyx_Py3Int_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("int", __pyx_t_3))) __PYX_ERR(0, 341, __pyx_L1_error)
+ __Pyx_DECREF_SET(__pyx_v_first_line, ((PyObject*)__pyx_t_3));
__pyx_t_3 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":342
@@ -8262,7 +10736,8 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10_get_c
*/
__pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_v_line_to_offset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 342, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF_SET(__pyx_v_last_line, __pyx_t_3);
+ if (!(likely(__Pyx_Py3Int_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("int", __pyx_t_3))) __PYX_ERR(0, 342, __pyx_L1_error)
+ __Pyx_DECREF_SET(__pyx_v_last_line, ((PyObject*)__pyx_t_3));
__pyx_t_3 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":340
@@ -8286,13 +10761,13 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10_get_c
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_v_line_to_offset);
__Pyx_GIVEREF(__pyx_v_line_to_offset);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_line_to_offset);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_line_to_offset)) __PYX_ERR(0, 343, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_first_line);
__Pyx_GIVEREF(__pyx_v_first_line);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_first_line);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_first_line)) __PYX_ERR(0, 343, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_last_line);
__Pyx_GIVEREF(__pyx_v_last_line);
- PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_last_line);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_last_line)) __PYX_ERR(0, 343, __pyx_L1_error);
__pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo), __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 343, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -8313,8 +10788,8 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10_get_c
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._get_code_line_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -8335,16 +10810,98 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10_get_c
*/
/* Python wrapper */
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13get_cached_code_obj_info_py(PyObject *__pyx_self, PyObject *__pyx_v_code_obj_py); /*proto*/
-static char __pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_12get_cached_code_obj_info_py[] = "\n :return _CacheValue:\n :note: on cython use _cache.get(code_obj_py) directly.\n ";
-static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_13get_cached_code_obj_info_py = {"get_cached_code_obj_info_py", (PyCFunction)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13get_cached_code_obj_info_py, METH_O, __pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_12get_cached_code_obj_info_py};
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13get_cached_code_obj_info_py(PyObject *__pyx_self, PyObject *__pyx_v_code_obj_py) {
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13get_cached_code_obj_info_py(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_12get_cached_code_obj_info_py, "\n :return _CacheValue:\n :note: on cython use _cache.get(code_obj_py) directly.\n ");
+static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_13get_cached_code_obj_info_py = {"get_cached_code_obj_info_py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13get_cached_code_obj_info_py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_12get_cached_code_obj_info_py};
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13get_cached_code_obj_info_py(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_code_obj_py = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("get_cached_code_obj_info_py (wrapper)", 0);
- __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12get_cached_code_obj_info_py(__pyx_self, ((PyObject *)__pyx_v_code_obj_py));
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code_obj_py,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code_obj_py)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 353, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get_cached_code_obj_info_py") < 0)) __PYX_ERR(0, 353, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v_code_obj_py = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("get_cached_code_obj_info_py", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 353, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_cached_code_obj_info_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12get_cached_code_obj_info_py(__pyx_self, __pyx_v_code_obj_py);
/* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -8355,10 +10912,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12get_ca
PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
+ int __pyx_t_4;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_cached_code_obj_info_py", 0);
+ __Pyx_RefNannySetupContext("get_cached_code_obj_info_py", 1);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":358
* :note: on cython use _cache.get(code_obj_py) directly.
@@ -8374,20 +10932,27 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12get_ca
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_4 = 1;
}
}
- __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_code_obj_py) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_code_obj_py);
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 358, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_code_obj_py};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 358, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
@@ -8423,7 +10988,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12get_ca
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue___init__[] = "\n :param code_obj_py:\n :param _CodeLineInfo code_line_info:\n :param set[int] breakpoints_hit_at_lines:\n ";
+PyDoc_STRVAR(__pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue___init__, "\n :param code_obj_py:\n :param _CodeLineInfo code_line_info:\n :param set[int] breakpoints_hit_at_lines:\n ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue___init__;
#endif
@@ -8431,64 +10996,92 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
PyObject *__pyx_v_code_obj_py = 0;
struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_code_line_info = 0;
PyObject *__pyx_v_breakpoints_hit_at_lines = 0;
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[3] = {0,0,0};
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code_obj_py,&__pyx_n_s_code_line_info,&__pyx_n_s_breakpoints_hit_at_lines,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code_obj_py,&__pyx_n_s_code_line_info,&__pyx_n_s_breakpoints_hit_at_lines,0};
+ if (__pyx_kwds) {
Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+ switch (__pyx_nargs) {
+ case 3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
CYTHON_FALLTHROUGH;
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
CYTHON_FALLTHROUGH;
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
+ kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+ switch (__pyx_nargs) {
case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_code_obj_py)) != 0)) kw_args--;
+ if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code_obj_py)) != 0)) {
+ (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 368, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_code_line_info)) != 0)) kw_args--;
+ if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code_line_info)) != 0)) {
+ (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 368, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(0, 368, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_breakpoints_hit_at_lines)) != 0)) kw_args--;
+ if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_breakpoints_hit_at_lines)) != 0)) {
+ (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 368, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(0, 368, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 368, __pyx_L3_error)
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 368, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+ } else if (unlikely(__pyx_nargs != 3)) {
goto __pyx_L5_argtuple_error;
} else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+ values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+ values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+ values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
}
__pyx_v_code_obj_py = values[0];
__pyx_v_code_line_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)values[1]);
__pyx_v_breakpoints_hit_at_lines = ((PyObject*)values[2]);
}
- goto __pyx_L4_argument_unpacking_done;
+ goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 368, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 368, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
+ }
+ }
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CacheValue.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
@@ -8502,6 +11095,12 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
__pyx_L1_error:;
__pyx_r = -1;
__pyx_L0:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -8513,7 +11112,7 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__init__", 0);
+ __Pyx_RefNannySetupContext("__init__", 1);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":374
* :param set[int] breakpoints_hit_at_lines:
@@ -8535,10 +11134,10 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
* self.breakpoints_hit_at_lines = breakpoints_hit_at_lines
* self.code_lines_as_set = set(code_line_info.line_to_offset)
*/
- __Pyx_INCREF(((PyObject *)__pyx_v_code_line_info));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_code_line_info));
- __Pyx_GOTREF(__pyx_v_self->code_line_info);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->code_line_info));
+ __Pyx_INCREF((PyObject *)__pyx_v_code_line_info);
+ __Pyx_GIVEREF((PyObject *)__pyx_v_code_line_info);
+ __Pyx_GOTREF((PyObject *)__pyx_v_self->code_line_info);
+ __Pyx_DECREF((PyObject *)__pyx_v_self->code_line_info);
__pyx_v_self->code_line_info = __pyx_v_code_line_info;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":376
@@ -8597,7 +11196,13 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
* :param breakpoints:
*/
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_3compute_force_stay_in_untraced_mode(PyObject *__pyx_v_self, PyObject *__pyx_v_breakpoints); /*proto*/
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_3compute_force_stay_in_untraced_mode(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_compute_force_stay_in_untraced_mode(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self, PyObject *__pyx_v_breakpoints, int __pyx_skip_dispatch) {
int __pyx_v_force_stay_in_untraced_mode;
int __pyx_v_breakpoint_found;
@@ -8609,39 +11214,47 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheV
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
int __pyx_t_5;
+ int __pyx_t_6;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("compute_force_stay_in_untraced_mode", 0);
+ __Pyx_RefNannySetupContext("compute_force_stay_in_untraced_mode", 1);
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
- else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+ else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
- PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+ PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
#endif
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_compute_force_stay_in_untraced_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 379, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_3compute_force_stay_in_untraced_mode)) {
+ if (!__Pyx_IsSameCFunction(__pyx_t_1, (void*) __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_3compute_force_stay_in_untraced_mode)) {
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_t_1);
__pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
}
}
- __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_breakpoints) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_breakpoints);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 379, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_breakpoints};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 379, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -8650,7 +11263,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheV
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
__pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
__pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
- if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
+ if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
__pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
}
#endif
@@ -8679,21 +11292,28 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheV
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->code_lines_as_set, __pyx_n_s_intersection); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 391, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_5 = 1;
}
}
- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_breakpoints) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_breakpoints);
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 391, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 391, __pyx_L1_error)
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_breakpoints};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 391, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("set", __pyx_t_1))) __PYX_ERR(0, 391, __pyx_L1_error)
__pyx_v_target_breakpoints = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
@@ -8704,8 +11324,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheV
*
* if not breakpoint_found:
*/
- __pyx_t_5 = (__pyx_v_target_breakpoints != Py_None)&&(PySet_GET_SIZE(__pyx_v_target_breakpoints) != 0);
- __pyx_v_breakpoint_found = (!(!__pyx_t_5));
+ __pyx_t_6 = (__pyx_v_target_breakpoints != Py_None)&&(PySet_GET_SIZE(__pyx_v_target_breakpoints) != 0);
+ __pyx_v_breakpoint_found = (!(!__pyx_t_6));
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":394
* breakpoint_found = bool(target_breakpoints)
@@ -8714,8 +11334,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheV
* force_stay_in_untraced_mode = True
* else:
*/
- __pyx_t_5 = ((!(__pyx_v_breakpoint_found != 0)) != 0);
- if (__pyx_t_5) {
+ __pyx_t_6 = (!__pyx_v_breakpoint_found);
+ if (__pyx_t_6) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":395
*
@@ -8749,24 +11369,31 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheV
__pyx_t_3 = PySet_New(__pyx_v_breakpoints); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 397, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_5 = 1;
}
}
- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 397, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 397, __pyx_L1_error)
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 397, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 397, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_force_stay_in_untraced_mode = __pyx_t_5;
+ __pyx_v_force_stay_in_untraced_mode = __pyx_t_6;
}
__pyx_L3:;
@@ -8785,9 +11412,9 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheV
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 399, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1)) __PYX_ERR(0, 399, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(0, 399, __pyx_L1_error);
__pyx_t_1 = 0;
__pyx_t_2 = 0;
__pyx_r = __pyx_t_3;
@@ -8818,15 +11445,98 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheV
}
/* Python wrapper */
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_3compute_force_stay_in_untraced_mode(PyObject *__pyx_v_self, PyObject *__pyx_v_breakpoints); /*proto*/
-static char __pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_2compute_force_stay_in_untraced_mode[] = "\n :param breakpoints:\n set(breakpoint_lines) or dict(breakpoint_line->breakpoint info)\n :return tuple(breakpoint_found, force_stay_in_untraced_mode)\n ";
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_3compute_force_stay_in_untraced_mode(PyObject *__pyx_v_self, PyObject *__pyx_v_breakpoints) {
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_3compute_force_stay_in_untraced_mode(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_2compute_force_stay_in_untraced_mode, "\n :param breakpoints:\n set(breakpoint_lines) or dict(breakpoint_line->breakpoint info)\n :return tuple(breakpoint_found, force_stay_in_untraced_mode)\n ");
+static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_3compute_force_stay_in_untraced_mode = {"compute_force_stay_in_untraced_mode", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_3compute_force_stay_in_untraced_mode, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_2compute_force_stay_in_untraced_mode};
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_3compute_force_stay_in_untraced_mode(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_breakpoints = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("compute_force_stay_in_untraced_mode (wrapper)", 0);
- __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_2compute_force_stay_in_untraced_mode(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self), ((PyObject *)__pyx_v_breakpoints));
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_breakpoints,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_breakpoints)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 379, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "compute_force_stay_in_untraced_mode") < 0)) __PYX_ERR(0, 379, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v_breakpoints = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("compute_force_stay_in_untraced_mode", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 379, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CacheValue.compute_force_stay_in_untraced_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_2compute_force_stay_in_untraced_mode(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self), __pyx_v_breakpoints);
/* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -8838,7 +11548,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_Cache
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("compute_force_stay_in_untraced_mode", 0);
+ __Pyx_RefNannySetupContext("compute_force_stay_in_untraced_mode", 1);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_compute_force_stay_in_untraced_mode(__pyx_v_self, __pyx_v_breakpoints, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 379, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -8868,9 +11578,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_Cache
/* Python wrapper */
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self));
/* function exit code */
@@ -8881,7 +11593,7 @@ static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_Cache
static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->code_obj_py);
__pyx_r = __pyx_v_self->code_obj_py;
@@ -8897,9 +11609,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_Cache
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -8910,7 +11624,7 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self, PyObject *__pyx_v_value) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__", 0);
+ __Pyx_RefNannySetupContext("__set__", 1);
__Pyx_INCREF(__pyx_v_value);
__Pyx_GIVEREF(__pyx_v_value);
__Pyx_GOTREF(__pyx_v_self->code_obj_py);
@@ -8926,9 +11640,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self));
/* function exit code */
@@ -8939,7 +11655,7 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->code_obj_py);
@@ -8963,9 +11679,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
/* Python wrapper */
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self));
/* function exit code */
@@ -8976,9 +11694,9 @@ static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_Cache
static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_self->code_line_info));
+ __Pyx_INCREF((PyObject *)__pyx_v_self->code_line_info);
__pyx_r = ((PyObject *)__pyx_v_self->code_line_info);
goto __pyx_L0;
@@ -8992,9 +11710,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_Cache
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -9009,13 +11729,13 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
+ __Pyx_RefNannySetupContext("__set__", 1);
if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo))))) __PYX_ERR(0, 364, __pyx_L1_error)
__pyx_t_1 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->code_line_info);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->code_line_info));
+ __Pyx_GOTREF((PyObject *)__pyx_v_self->code_line_info);
+ __Pyx_DECREF((PyObject *)__pyx_v_self->code_line_info);
__pyx_v_self->code_line_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_t_1);
__pyx_t_1 = 0;
@@ -9034,9 +11754,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self));
/* function exit code */
@@ -9047,11 +11769,11 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->code_line_info);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->code_line_info));
+ __Pyx_GOTREF((PyObject *)__pyx_v_self->code_line_info);
+ __Pyx_DECREF((PyObject *)__pyx_v_self->code_line_info);
__pyx_v_self->code_line_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)Py_None);
/* function exit code */
@@ -9071,9 +11793,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
/* Python wrapper */
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self));
/* function exit code */
@@ -9084,7 +11808,7 @@ static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_Cache
static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->breakpoints_hit_at_lines);
__pyx_r = __pyx_v_self->breakpoints_hit_at_lines;
@@ -9100,9 +11824,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_Cache
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -9117,8 +11843,8 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- if (!(likely(PySet_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(0, 365, __pyx_L1_error)
+ __Pyx_RefNannySetupContext("__set__", 1);
+ if (!(likely(PySet_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("set", __pyx_v_value))) __PYX_ERR(0, 365, __pyx_L1_error)
__pyx_t_1 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
@@ -9142,9 +11868,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self));
/* function exit code */
@@ -9155,7 +11883,7 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->breakpoints_hit_at_lines);
@@ -9179,9 +11907,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
/* Python wrapper */
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_1__get__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self));
/* function exit code */
@@ -9192,7 +11922,7 @@ static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_Cache
static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
+ __Pyx_RefNannySetupContext("__get__", 1);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->code_lines_as_set);
__pyx_r = __pyx_v_self->code_lines_as_set;
@@ -9208,9 +11938,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_Cache
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self), ((PyObject *)__pyx_v_value));
/* function exit code */
@@ -9225,8 +11957,8 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- if (!(likely(PySet_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(0, 366, __pyx_L1_error)
+ __Pyx_RefNannySetupContext("__set__", 1);
+ if (!(likely(PySet_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("set", __pyx_v_value))) __PYX_ERR(0, 366, __pyx_L1_error)
__pyx_t_1 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
@@ -9250,9 +11982,11 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
/* Python wrapper */
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_5__del__(PyObject *__pyx_v_self) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self));
/* function exit code */
@@ -9263,7 +11997,7 @@ static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
+ __Pyx_RefNannySetupContext("__del__", 1);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
__Pyx_GOTREF(__pyx_v_self->code_lines_as_set);
@@ -9283,11 +12017,39 @@ static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_
*/
/* Python wrapper */
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_5__reduce_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_5__reduce_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_nargs > 0)) {
+ __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
+ if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_4__reduce_cython__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self));
/* function exit code */
@@ -9303,14 +12065,13 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_Cache
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_t_2;
- int __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_t_5;
- PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_t_4;
+ PyObject *__pyx_t_5 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__reduce_cython__", 0);
+ __Pyx_RefNannySetupContext("__reduce_cython__", 1);
/* "(tree fragment)":5
* cdef object _dict
@@ -9323,16 +12084,16 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_Cache
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_self->breakpoints_hit_at_lines);
__Pyx_GIVEREF(__pyx_v_self->breakpoints_hit_at_lines);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->breakpoints_hit_at_lines);
- __Pyx_INCREF(((PyObject *)__pyx_v_self->code_line_info));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_self->code_line_info));
- PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self->code_line_info));
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->breakpoints_hit_at_lines)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_INCREF((PyObject *)__pyx_v_self->code_line_info);
+ __Pyx_GIVEREF((PyObject *)__pyx_v_self->code_line_info);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self->code_line_info))) __PYX_ERR(1, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->code_lines_as_set);
__Pyx_GIVEREF(__pyx_v_self->code_lines_as_set);
- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_self->code_lines_as_set);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_self->code_lines_as_set)) __PYX_ERR(1, 5, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_self->code_obj_py);
__Pyx_GIVEREF(__pyx_v_self->code_obj_py);
- PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_self->code_obj_py);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_self->code_obj_py)) __PYX_ERR(1, 5, __pyx_L1_error);
__pyx_v_state = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
@@ -9356,8 +12117,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_Cache
* use_setstate = True
*/
__pyx_t_2 = (__pyx_v__dict != Py_None);
- __pyx_t_3 = (__pyx_t_2 != 0);
- if (__pyx_t_3) {
+ if (__pyx_t_2) {
/* "(tree fragment)":8
* _dict = getattr(self, '__dict__', None)
@@ -9370,12 +12130,12 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_Cache
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v__dict);
__Pyx_GIVEREF(__pyx_v__dict);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict);
- __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict)) __PYX_ERR(1, 8, __pyx_L1_error);
+ __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4));
- __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3));
+ __pyx_t_3 = 0;
/* "(tree fragment)":9
* if _dict is not None:
@@ -9401,35 +12161,31 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_Cache
* else:
* use_setstate = self.breakpoints_hit_at_lines is not None or self.code_line_info is not None or self.code_lines_as_set is not None or self.code_obj_py is not None # <<<<<<<<<<<<<<
* if use_setstate:
- * return __pyx_unpickle__CacheValue, (type(self), 0x3d481b9, None), state
+ * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, None), state
*/
/*else*/ {
- __pyx_t_2 = (__pyx_v_self->breakpoints_hit_at_lines != ((PyObject*)Py_None));
- __pyx_t_5 = (__pyx_t_2 != 0);
- if (!__pyx_t_5) {
+ __pyx_t_4 = (__pyx_v_self->breakpoints_hit_at_lines != ((PyObject*)Py_None));
+ if (!__pyx_t_4) {
} else {
- __pyx_t_3 = __pyx_t_5;
+ __pyx_t_2 = __pyx_t_4;
goto __pyx_L4_bool_binop_done;
}
- __pyx_t_5 = (((PyObject *)__pyx_v_self->code_line_info) != Py_None);
- __pyx_t_2 = (__pyx_t_5 != 0);
- if (!__pyx_t_2) {
+ __pyx_t_4 = (((PyObject *)__pyx_v_self->code_line_info) != Py_None);
+ if (!__pyx_t_4) {
} else {
- __pyx_t_3 = __pyx_t_2;
+ __pyx_t_2 = __pyx_t_4;
goto __pyx_L4_bool_binop_done;
}
- __pyx_t_2 = (__pyx_v_self->code_lines_as_set != ((PyObject*)Py_None));
- __pyx_t_5 = (__pyx_t_2 != 0);
- if (!__pyx_t_5) {
+ __pyx_t_4 = (__pyx_v_self->code_lines_as_set != ((PyObject*)Py_None));
+ if (!__pyx_t_4) {
} else {
- __pyx_t_3 = __pyx_t_5;
+ __pyx_t_2 = __pyx_t_4;
goto __pyx_L4_bool_binop_done;
}
- __pyx_t_5 = (__pyx_v_self->code_obj_py != Py_None);
- __pyx_t_2 = (__pyx_t_5 != 0);
- __pyx_t_3 = __pyx_t_2;
+ __pyx_t_4 = (__pyx_v_self->code_obj_py != Py_None);
+ __pyx_t_2 = __pyx_t_4;
__pyx_L4_bool_binop_done:;
- __pyx_v_use_setstate = __pyx_t_3;
+ __pyx_v_use_setstate = __pyx_t_2;
}
__pyx_L3:;
@@ -9437,89 +12193,88 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_Cache
* else:
* use_setstate = self.breakpoints_hit_at_lines is not None or self.code_line_info is not None or self.code_lines_as_set is not None or self.code_obj_py is not None
* if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle__CacheValue, (type(self), 0x3d481b9, None), state
+ * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, None), state
* else:
*/
- __pyx_t_3 = (__pyx_v_use_setstate != 0);
- if (__pyx_t_3) {
+ if (__pyx_v_use_setstate) {
/* "(tree fragment)":13
* use_setstate = self.breakpoints_hit_at_lines is not None or self.code_line_info is not None or self.code_lines_as_set is not None or self.code_obj_py is not None
* if use_setstate:
- * return __pyx_unpickle__CacheValue, (type(self), 0x3d481b9, None), state # <<<<<<<<<<<<<<
+ * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, None), state # <<<<<<<<<<<<<<
* else:
- * return __pyx_unpickle__CacheValue, (type(self), 0x3d481b9, state)
+ * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, state)
*/
__Pyx_XDECREF(__pyx_r);
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle__CacheValue); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle__CacheValue); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
__Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_64258489);
- __Pyx_GIVEREF(__pyx_int_64258489);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_64258489);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 13, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_int_180628038);
+ __Pyx_GIVEREF(__pyx_int_180628038);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_180628038)) __PYX_ERR(1, 13, __pyx_L1_error);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
- PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
- __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(1, 13, __pyx_L1_error);
+ __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_3);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_state);
__Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
- __pyx_t_4 = 0;
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state)) __PYX_ERR(1, 13, __pyx_L1_error);
+ __pyx_t_3 = 0;
__pyx_t_1 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_5;
+ __pyx_t_5 = 0;
goto __pyx_L0;
/* "(tree fragment)":12
* else:
* use_setstate = self.breakpoints_hit_at_lines is not None or self.code_line_info is not None or self.code_lines_as_set is not None or self.code_obj_py is not None
* if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle__CacheValue, (type(self), 0x3d481b9, None), state
+ * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, None), state
* else:
*/
}
/* "(tree fragment)":15
- * return __pyx_unpickle__CacheValue, (type(self), 0x3d481b9, None), state
+ * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, None), state
* else:
- * return __pyx_unpickle__CacheValue, (type(self), 0x3d481b9, state) # <<<<<<<<<<<<<<
+ * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, state) # <<<<<<<<<<<<<<
* def __setstate_cython__(self, __pyx_state):
* __pyx_unpickle__CacheValue__set_state(self, __pyx_state)
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle__CacheValue); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle__CacheValue); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
__Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_64258489);
- __Pyx_GIVEREF(__pyx_int_64258489);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_64258489);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 15, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_int_180628038);
+ __Pyx_GIVEREF(__pyx_int_180628038);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_180628038)) __PYX_ERR(1, 15, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_state);
__Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(1, 15, __pyx_L1_error);
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_5);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
- __pyx_t_6 = 0;
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error);
+ __pyx_t_5 = 0;
__pyx_t_1 = 0;
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
goto __pyx_L0;
}
@@ -9532,8 +12287,8 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_Cache
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CacheValue.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -9546,20 +12301,103 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_Cache
/* "(tree fragment)":16
* else:
- * return __pyx_unpickle__CacheValue, (type(self), 0x3d481b9, state)
+ * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, state)
* def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
* __pyx_unpickle__CacheValue__set_state(self, __pyx_state)
*/
/* Python wrapper */
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_7__setstate_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_7__setstate_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v___pyx_state = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_6__setstate_cython__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 16, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 16, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v___pyx_state = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 16, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CacheValue.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_6__setstate_cython__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self), __pyx_v___pyx_state);
/* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -9571,21 +12409,21 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_Cache
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__setstate_cython__", 0);
+ __Pyx_RefNannySetupContext("__setstate_cython__", 1);
/* "(tree fragment)":17
- * return __pyx_unpickle__CacheValue, (type(self), 0x3d481b9, state)
+ * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, state)
* def __setstate_cython__(self, __pyx_state):
* __pyx_unpickle__CacheValue__set_state(self, __pyx_state) # <<<<<<<<<<<<<<
*/
- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 17, __pyx_L1_error)
__pyx_t_1 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle__CacheValue__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "(tree fragment)":16
* else:
- * return __pyx_unpickle__CacheValue, (type(self), 0x3d481b9, state)
+ * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, state)
* def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
* __pyx_unpickle__CacheValue__set_state(self, __pyx_state)
*/
@@ -9612,59 +12450,99 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_Cache
*/
/* Python wrapper */
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_15generate_code_with_breakpoints_py(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_15generate_code_with_breakpoints_py = {"generate_code_with_breakpoints_py", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_15generate_code_with_breakpoints_py, METH_VARARGS|METH_KEYWORDS, 0};
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_15generate_code_with_breakpoints_py(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_15generate_code_with_breakpoints_py(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_15generate_code_with_breakpoints_py = {"generate_code_with_breakpoints_py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_15generate_code_with_breakpoints_py, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_15generate_code_with_breakpoints_py(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
PyObject *__pyx_v_code_obj_py = 0;
PyObject *__pyx_v_breakpoints = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[2] = {0,0};
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("generate_code_with_breakpoints_py (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code_obj_py,&__pyx_n_s_breakpoints,0};
- PyObject* values[2] = {0,0};
- if (unlikely(__pyx_kwds)) {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code_obj_py,&__pyx_n_s_breakpoints,0};
+ if (__pyx_kwds) {
Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ switch (__pyx_nargs) {
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_code_obj_py)) != 0)) kw_args--;
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code_obj_py)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 401, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_breakpoints)) != 0)) kw_args--;
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_breakpoints)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 401, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("generate_code_with_breakpoints_py", 1, 2, 2, 1); __PYX_ERR(0, 401, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "generate_code_with_breakpoints_py") < 0)) __PYX_ERR(0, 401, __pyx_L3_error)
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "generate_code_with_breakpoints_py") < 0)) __PYX_ERR(0, 401, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+ } else if (unlikely(__pyx_nargs != 2)) {
goto __pyx_L5_argtuple_error;
} else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
}
__pyx_v_code_obj_py = values[0];
__pyx_v_breakpoints = ((PyObject*)values[1]);
}
- goto __pyx_L4_argument_unpacking_done;
+ goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("generate_code_with_breakpoints_py", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 401, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("generate_code_with_breakpoints_py", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 401, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.generate_code_with_breakpoints_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
@@ -9677,6 +12555,12 @@ static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_15genera
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -9688,7 +12572,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_14genera
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("generate_code_with_breakpoints_py", 0);
+ __Pyx_RefNannySetupContext("generate_code_with_breakpoints_py", 1);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":402
*
@@ -9746,14 +12630,13 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_
int __pyx_t_2;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- Py_ssize_t __pyx_t_5;
+ int __pyx_t_5;
Py_ssize_t __pyx_t_6;
- int __pyx_t_7;
+ Py_ssize_t __pyx_t_7;
int __pyx_t_8;
int __pyx_t_9;
- int __pyx_t_10;
- PyObject *__pyx_t_11 = NULL;
- PyObject *(*__pyx_t_12)(PyObject *);
+ PyObject *__pyx_t_10 = NULL;
+ PyObject *(*__pyx_t_11)(PyObject *);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
@@ -9768,16 +12651,18 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_
* # if DEBUG:
*/
#ifndef CYTHON_WITHOUT_ASSERTIONS
- if (unlikely(!Py_OptimizeFlag)) {
+ if (unlikely(__pyx_assertions_enabled())) {
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_cache); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 424, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_code_obj_py, __pyx_t_1, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 424, __pyx_L1_error)
+ __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_code_obj_py, __pyx_t_1, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 424, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (unlikely(!(__pyx_t_2 != 0))) {
- PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_If_a_code_object_is_cached_that);
+ if (unlikely(!__pyx_t_2)) {
+ __Pyx_Raise(__pyx_builtin_AssertionError, __pyx_kp_s_If_a_code_object_is_cached_that, 0, 0);
__PYX_ERR(0, 424, __pyx_L1_error)
}
}
+ #else
+ if ((1)); else __PYX_ERR(0, 424, __pyx_L1_error)
#endif
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":429
@@ -9790,20 +12675,27 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_get_code_line_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 429, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
}
}
- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_code_obj_py) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_code_obj_py);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_code_obj_py};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
__pyx_v_code_line_info = __pyx_t_1;
__pyx_t_1 = 0;
@@ -9837,7 +12729,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_
*/
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_code_line_info, __pyx_n_s_line_to_offset); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 434, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 434, __pyx_L1_error)
+ if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(0, 434, __pyx_L1_error)
__pyx_v_line_to_offset = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
@@ -9848,18 +12740,18 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_
* if breakpoint_line in line_to_offset:
* breakpoints_hit_at_lines.add(breakpoint_line)
*/
- __pyx_t_5 = 0;
+ __pyx_t_6 = 0;
if (unlikely(__pyx_v_breakpoints == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
__PYX_ERR(0, 436, __pyx_L1_error)
}
- __pyx_t_3 = __Pyx_dict_iterator(__pyx_v_breakpoints, 1, ((PyObject *)NULL), (&__pyx_t_6), (&__pyx_t_7)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 436, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_dict_iterator(__pyx_v_breakpoints, 1, ((PyObject *)NULL), (&__pyx_t_7), (&__pyx_t_5)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 436, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_1);
__pyx_t_1 = __pyx_t_3;
__pyx_t_3 = 0;
while (1) {
- __pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_6, &__pyx_t_5, &__pyx_t_3, NULL, NULL, __pyx_t_7);
+ __pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_7, &__pyx_t_6, &__pyx_t_3, NULL, NULL, __pyx_t_5);
if (unlikely(__pyx_t_8 == 0)) break;
if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 436, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -9880,10 +12772,9 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
__PYX_ERR(0, 437, __pyx_L1_error)
}
- __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_t_3, __pyx_v_line_to_offset, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 437, __pyx_L1_error)
+ __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_t_3, __pyx_v_line_to_offset, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 437, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_9 = (__pyx_t_2 != 0);
- if (__pyx_t_9) {
+ if (__pyx_t_2) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":438
* for breakpoint_line in breakpoints:
@@ -9894,7 +12785,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_
*/
__pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_breakpoint_line); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 438, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_10 = PySet_Add(__pyx_v_breakpoints_hit_at_lines, __pyx_t_3); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 438, __pyx_L1_error)
+ __pyx_t_9 = PySet_Add(__pyx_v_breakpoints_hit_at_lines, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 438, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":437
@@ -9915,8 +12806,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_
* success, new_code = insert_pydevd_breaks(
* code_obj_py,
*/
- __pyx_t_9 = (PySet_GET_SIZE(__pyx_v_breakpoints_hit_at_lines) != 0);
- if (__pyx_t_9) {
+ __pyx_t_2 = (PySet_GET_SIZE(__pyx_v_breakpoints_hit_at_lines) != 0);
+ if (__pyx_t_2) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":441
*
@@ -9936,53 +12827,27 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_
*
*/
__pyx_t_4 = NULL;
- __pyx_t_7 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
- __pyx_t_7 = 1;
+ __pyx_t_5 = 1;
}
}
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_code_obj_py, __pyx_v_breakpoints_hit_at_lines, __pyx_v_code_line_info};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 441, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_code_obj_py, __pyx_v_breakpoints_hit_at_lines, __pyx_v_code_line_info};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 441, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
#endif
{
- __pyx_t_11 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 441, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- if (__pyx_t_4) {
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_4); __pyx_t_4 = NULL;
- }
- __Pyx_INCREF(__pyx_v_code_obj_py);
- __Pyx_GIVEREF(__pyx_v_code_obj_py);
- PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_7, __pyx_v_code_obj_py);
- __Pyx_INCREF(__pyx_v_breakpoints_hit_at_lines);
- __Pyx_GIVEREF(__pyx_v_breakpoints_hit_at_lines);
- PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_7, __pyx_v_breakpoints_hit_at_lines);
- __Pyx_INCREF(__pyx_v_code_line_info);
- __Pyx_GIVEREF(__pyx_v_code_line_info);
- PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_7, __pyx_v_code_line_info);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 441, __pyx_L1_error)
+ PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_v_code_obj_py, __pyx_v_breakpoints_hit_at_lines, __pyx_v_code_line_info};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 441, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
PyObject* sequence = __pyx_t_1;
Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
@@ -9994,37 +12859,37 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_11 = PyTuple_GET_ITEM(sequence, 1);
+ __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1);
} else {
__pyx_t_3 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_11 = PyList_GET_ITEM(sequence, 1);
+ __pyx_t_4 = PyList_GET_ITEM(sequence, 1);
}
__Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_11);
+ __Pyx_INCREF(__pyx_t_4);
#else
__pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 441, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_11 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 441, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 441, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 441, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 441, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_12 = Py_TYPE(__pyx_t_4)->tp_iternext;
- index = 0; __pyx_t_3 = __pyx_t_12(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L7_unpacking_failed;
+ __pyx_t_11 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_10);
+ index = 0; __pyx_t_3 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_3)) goto __pyx_L7_unpacking_failed;
__Pyx_GOTREF(__pyx_t_3);
- index = 1; __pyx_t_11 = __pyx_t_12(__pyx_t_4); if (unlikely(!__pyx_t_11)) goto __pyx_L7_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_11);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_4), 2) < 0) __PYX_ERR(0, 441, __pyx_L1_error)
- __pyx_t_12 = NULL;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ index = 1; __pyx_t_4 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_4)) goto __pyx_L7_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_4);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) __PYX_ERR(0, 441, __pyx_L1_error)
+ __pyx_t_11 = NULL;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
goto __pyx_L8_unpacking_done;
__pyx_L7_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_12 = NULL;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_11 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
__PYX_ERR(0, 441, __pyx_L1_error)
__pyx_L8_unpacking_done:;
@@ -10037,11 +12902,11 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_
* code_obj_py,
* breakpoints_hit_at_lines,
*/
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 441, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 441, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_success = __pyx_t_9;
- __pyx_v_new_code = __pyx_t_11;
- __pyx_t_11 = 0;
+ __pyx_v_success = __pyx_t_2;
+ __pyx_v_new_code = __pyx_t_4;
+ __pyx_t_4 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":447
* )
@@ -10050,8 +12915,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_
* code_obj_py = None
* else:
*/
- __pyx_t_9 = ((!(__pyx_v_success != 0)) != 0);
- if (__pyx_t_9) {
+ __pyx_t_2 = (!__pyx_v_success);
+ if (__pyx_t_2) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":448
*
@@ -10102,8 +12967,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_
* if breakpoint_found and success:
* # if DEBUG:
*/
- __pyx_t_9 = (PySet_GET_SIZE(__pyx_v_breakpoints_hit_at_lines) != 0);
- __pyx_v_breakpoint_found = (!(!__pyx_t_9));
+ __pyx_t_2 = (PySet_GET_SIZE(__pyx_v_breakpoints_hit_at_lines) != 0);
+ __pyx_v_breakpoint_found = (!(!__pyx_t_2));
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":453
*
@@ -10112,16 +12977,14 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_
* # if DEBUG:
* # op_number = debug_helper.write_dis(
*/
- __pyx_t_2 = (__pyx_v_breakpoint_found != 0);
- if (__pyx_t_2) {
+ if (__pyx_v_breakpoint_found) {
} else {
- __pyx_t_9 = __pyx_t_2;
+ __pyx_t_2 = __pyx_v_breakpoint_found;
goto __pyx_L11_bool_binop_done;
}
- __pyx_t_2 = (__pyx_v_success != 0);
- __pyx_t_9 = __pyx_t_2;
+ __pyx_t_2 = __pyx_v_success;
__pyx_L11_bool_binop_done:;
- if (__pyx_t_9) {
+ if (__pyx_t_2) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":466
* # )
@@ -10134,18 +12997,18 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_code_obj_py);
__Pyx_GIVEREF(__pyx_v_code_obj_py);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_code_obj_py);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_code_obj_py)) __PYX_ERR(0, 466, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_code_line_info);
__Pyx_GIVEREF(__pyx_v_code_line_info);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_code_line_info);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_code_line_info)) __PYX_ERR(0, 466, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_breakpoints_hit_at_lines);
__Pyx_GIVEREF(__pyx_v_breakpoints_hit_at_lines);
- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_breakpoints_hit_at_lines);
- __pyx_t_11 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue), __pyx_t_1, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 466, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_breakpoints_hit_at_lines)) __PYX_ERR(0, 466, __pyx_L1_error);
+ __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 466, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_cache_value = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_t_11);
- __pyx_t_11 = 0;
+ __pyx_v_cache_value = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_t_4);
+ __pyx_t_4 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":467
*
@@ -10154,10 +13017,10 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_
*
* return breakpoint_found, code_obj_py
*/
- __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_cache); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 467, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- if (unlikely(PyObject_SetItem(__pyx_t_11, __pyx_v_code_obj_py, ((PyObject *)__pyx_v_cache_value)) < 0)) __PYX_ERR(0, 467, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_cache); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 467, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ if (unlikely((PyObject_SetItem(__pyx_t_4, __pyx_v_code_obj_py, ((PyObject *)__pyx_v_cache_value)) < 0))) __PYX_ERR(0, 467, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":453
*
@@ -10176,16 +13039,16 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_
* import sys
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_11 = __Pyx_PyBool_FromLong(__pyx_v_breakpoint_found); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 469, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_breakpoint_found); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 469, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 469, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_11);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_11);
+ __Pyx_GIVEREF(__pyx_t_4);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4)) __PYX_ERR(0, 469, __pyx_L1_error);
__Pyx_INCREF(__pyx_v_code_obj_py);
__Pyx_GIVEREF(__pyx_v_code_obj_py);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_code_obj_py);
- __pyx_t_11 = 0;
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_code_obj_py)) __PYX_ERR(0, 469, __pyx_L1_error);
+ __pyx_t_4 = 0;
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
@@ -10203,7 +13066,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.generate_code_with_breakpoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
@@ -10230,9 +13093,11 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_17frame_eval_func(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_17frame_eval_func = {"frame_eval_func", (PyCFunction)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_17frame_eval_func, METH_NOARGS, 0};
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_17frame_eval_func(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("frame_eval_func (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_16frame_eval_func(__pyx_self);
/* function exit code */
@@ -10244,15 +13109,15 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_16frame_
PyThreadState *__pyx_v_state;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- int __pyx_t_1;
+ PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
+ int __pyx_t_5;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("frame_eval_func", 0);
+ __Pyx_RefNannySetupContext("frame_eval_func", 1);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":476
*
@@ -10270,8 +13135,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_16frame_
* state.interp.eval_frame = <_PyFrameEvalFunction *> get_bytecode_while_frame_eval_39
* else:
*/
- __pyx_t_1 = (__pyx_v_18_pydevd_frame_eval_22pydevd_frame_evaluator_IS_PY_39_OWNARDS != 0);
- if (__pyx_t_1) {
+ if (__pyx_v_18_pydevd_frame_eval_22pydevd_frame_evaluator_IS_PY_39_OWNARDS) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":478
* cdef PyThreadState *state = PyThreadState_Get()
@@ -10311,30 +13175,37 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_16frame_
*
*
*/
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_dummy_tracing_holder); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 481, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_set_trace_func); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 481, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_dummy_trace_dispatch); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 481, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_dummy_tracing_holder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 481, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_set_trace_func); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 481, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_dummy_trace_dispatch); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 481, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
}
}
- __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 481, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_2};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 481, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":475
* cdef bint IS_PY_39_OWNARDS = sys.version_info[:2] >= (3, 9)
@@ -10348,10 +13219,10 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_16frame_
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.frame_eval_func", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -10372,9 +13243,11 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_16frame_
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_19stop_frame_eval(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_19stop_frame_eval = {"stop_frame_eval", (PyCFunction)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_19stop_frame_eval, METH_NOARGS, 0};
static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_19stop_frame_eval(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("stop_frame_eval (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_18stop_frame_eval(__pyx_self);
/* function exit code */
@@ -10386,7 +13259,7 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_18stop_f
PyThreadState *__pyx_v_state;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("stop_frame_eval", 0);
+ __Pyx_RefNannySetupContext("stop_frame_eval", 1);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":485
*
@@ -10451,15 +13324,15 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
int __pyx_t_1;
PyObject *__pyx_t_2 = NULL;
int __pyx_t_3;
- int __pyx_t_4;
+ PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
PyObject *__pyx_t_9 = NULL;
- PyObject *__pyx_t_10 = NULL;
- int __pyx_t_11;
- PyObject *(*__pyx_t_12)(PyObject *);
+ int __pyx_t_10;
+ PyObject *(*__pyx_t_11)(PyObject *);
+ int __pyx_t_12;
int __pyx_t_13;
char const *__pyx_t_14;
PyObject *__pyx_t_15 = NULL;
@@ -10469,7 +13342,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_bytecode_while_frame_eval_38", 0);
+ __Pyx_RefNannySetupContext("get_bytecode_while_frame_eval_38", 1);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":499
* where programmatic breakpoints are added.
@@ -10482,17 +13355,15 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = (__pyx_t_2 == Py_None);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_4 = (__pyx_t_3 != 0);
- if (!__pyx_t_4) {
+ if (!__pyx_t_3) {
} else {
- __pyx_t_1 = __pyx_t_4;
+ __pyx_t_1 = __pyx_t_3;
goto __pyx_L4_bool_binop_done;
}
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = (__pyx_t_2 == Py_None);
+ __pyx_t_3 = (__pyx_t_2 == Py_None);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_3 = (__pyx_t_4 != 0);
if (!__pyx_t_3) {
} else {
__pyx_t_1 = __pyx_t_3;
@@ -10604,10 +13475,10 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
- __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+ __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
+ __Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_5);
__Pyx_XGOTREF(__pyx_t_6);
- __Pyx_XGOTREF(__pyx_t_7);
/*try:*/ {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":517
@@ -10619,12 +13490,12 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*/
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 517, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_thread_info); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 517, __pyx_L7_error)
- __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_thread_info); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 517, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo))))) __PYX_ERR(0, 517, __pyx_L7_error)
- __pyx_v_thread_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_t_8);
- __pyx_t_8 = 0;
+ if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo))))) __PYX_ERR(0, 517, __pyx_L7_error)
+ __pyx_v_thread_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_t_7);
+ __pyx_t_7 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":516
* cdef int CMD_SMART_STEP_INTO = 128
@@ -10634,13 +13505,13 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* except:
*/
}
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L12_try_end;
__pyx_L7_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":518
* try:
@@ -10651,10 +13522,10 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*/
/*except:*/ {
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_bytecode_while_frame_eval_38", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_2, &__pyx_t_9) < 0) __PYX_ERR(0, 518, __pyx_L9_except_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_t_9);
+ if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_2, &__pyx_t_8) < 0) __PYX_ERR(0, 518, __pyx_L9_except_error)
+ __Pyx_XGOTREF(__pyx_t_7);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_8);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":519
* thread_info = _thread_local_info.thread_info
@@ -10663,10 +13534,10 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* if thread_info is None:
* return CALL_EvalFrameDefault_38(frame_obj, exc)
*/
- __pyx_t_10 = ((PyObject *)__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_thread_info(__pyx_v_frame_obj)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 519, __pyx_L9_except_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_XDECREF_SET(__pyx_v_thread_info, ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_t_10));
- __pyx_t_10 = 0;
+ __pyx_t_9 = ((PyObject *)__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_thread_info(__pyx_v_frame_obj)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 519, __pyx_L9_except_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_XDECREF_SET(__pyx_v_thread_info, ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_t_9));
+ __pyx_t_9 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":520
* except:
@@ -10676,8 +13547,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*
*/
__pyx_t_1 = (((PyObject *)__pyx_v_thread_info) == Py_None);
- __pyx_t_3 = (__pyx_t_1 != 0);
- if (__pyx_t_3) {
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":521
* thread_info = get_thread_info(frame_obj)
@@ -10688,8 +13558,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*/
__pyx_r = CALL_EvalFrameDefault_38(__pyx_v_frame_obj, __pyx_v_exc);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L10_except_return;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":520
@@ -10700,12 +13570,11 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*
*/
}
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L8_exception_handled;
}
- __pyx_L9_except_error:;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":516
* cdef int CMD_SMART_STEP_INTO = 128
@@ -10714,22 +13583,23 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* thread_info = _thread_local_info.thread_info
* except:
*/
+ __pyx_L9_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+ __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
goto __pyx_L1_error;
__pyx_L10_except_return:;
+ __Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+ __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
goto __pyx_L0;
__pyx_L8_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+ __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
__pyx_L12_try_end:;
}
@@ -10740,8 +13610,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* return CALL_EvalFrameDefault_38(frame_obj, exc)
*
*/
- __pyx_t_3 = (__pyx_v_thread_info->inside_frame_eval != 0);
- if (__pyx_t_3) {
+ __pyx_t_1 = (__pyx_v_thread_info->inside_frame_eval != 0);
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":524
*
@@ -10769,8 +13639,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* thread_info.initialize_if_possible()
* if not thread_info.fully_initialized:
*/
- __pyx_t_3 = ((!(__pyx_v_thread_info->fully_initialized != 0)) != 0);
- if (__pyx_t_3) {
+ __pyx_t_1 = (!__pyx_v_thread_info->fully_initialized);
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":527
*
@@ -10779,9 +13649,9 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* if not thread_info.fully_initialized:
* return CALL_EvalFrameDefault_38(frame_obj, exc)
*/
- __pyx_t_9 = ((struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_thread_info->__pyx_vtab)->initialize_if_possible(__pyx_v_thread_info); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 527, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_8 = ((struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_thread_info->__pyx_vtab)->initialize_if_possible(__pyx_v_thread_info); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 527, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":528
* if not thread_info.fully_initialized:
@@ -10790,8 +13660,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* return CALL_EvalFrameDefault_38(frame_obj, exc)
*
*/
- __pyx_t_3 = ((!(__pyx_v_thread_info->fully_initialized != 0)) != 0);
- if (__pyx_t_3) {
+ __pyx_t_1 = (!__pyx_v_thread_info->fully_initialized);
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":529
* thread_info.initialize_if_possible()
@@ -10828,10 +13698,10 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* if thread_info.is_pydevd_thread or additional_info.is_tracing:
* # Make sure that we don't trace pydevd threads or inside our own calls.
*/
- __pyx_t_9 = ((PyObject *)__pyx_v_thread_info->additional_info);
- __Pyx_INCREF(__pyx_t_9);
- __pyx_v_additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_9);
- __pyx_t_9 = 0;
+ __pyx_t_8 = ((PyObject *)__pyx_v_thread_info->additional_info);
+ __Pyx_INCREF(__pyx_t_8);
+ __pyx_v_additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_8);
+ __pyx_t_8 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":533
* # Can only get additional_info when fully initialized.
@@ -10840,16 +13710,15 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* # Make sure that we don't trace pydevd threads or inside our own calls.
* return CALL_EvalFrameDefault_38(frame_obj, exc)
*/
- __pyx_t_1 = (__pyx_v_thread_info->is_pydevd_thread != 0);
- if (!__pyx_t_1) {
+ if (!__pyx_v_thread_info->is_pydevd_thread) {
} else {
- __pyx_t_3 = __pyx_t_1;
+ __pyx_t_1 = __pyx_v_thread_info->is_pydevd_thread;
goto __pyx_L20_bool_binop_done;
}
- __pyx_t_1 = (__pyx_v_additional_info->is_tracing != 0);
- __pyx_t_3 = __pyx_t_1;
+ __pyx_t_3 = (__pyx_v_additional_info->is_tracing != 0);
+ __pyx_t_1 = __pyx_t_3;
__pyx_L20_bool_binop_done:;
- if (__pyx_t_3) {
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":535
* if thread_info.is_pydevd_thread or additional_info.is_tracing:
@@ -10904,11 +13773,11 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* if main_debugger is None:
* return CALL_EvalFrameDefault_38(frame_obj, exc)
*/
- __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 545, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_global_dbg); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L23_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 545, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_global_dbg); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_v_main_debugger = __pyx_t_2;
__pyx_t_2 = 0;
@@ -10919,8 +13788,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* return CALL_EvalFrameDefault_38(frame_obj, exc)
* frame = frame_obj
*/
- __pyx_t_3 = (__pyx_v_main_debugger == Py_None);
- __pyx_t_1 = (__pyx_t_3 != 0);
+ __pyx_t_1 = (__pyx_v_main_debugger == Py_None);
if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":547
@@ -10962,8 +13830,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* if apply_to_global:
*/
__pyx_t_1 = (__pyx_v_thread_info->thread_trace_func == Py_None);
- __pyx_t_3 = (__pyx_t_1 != 0);
- if (__pyx_t_3) {
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":551
*
@@ -10972,53 +13839,30 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* if apply_to_global:
* thread_info.thread_trace_func = trace_func
*/
- __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_fix_top_level_trace_and_get_trac); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 551, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_8 = NULL;
- __pyx_t_11 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
- __Pyx_INCREF(__pyx_t_8);
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_fix_top_level_trace_and_get_trac); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 551, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_7 = NULL;
+ __pyx_t_10 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_9, function);
- __pyx_t_11 = 1;
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_10 = 1;
}
}
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_v_main_debugger, __pyx_v_frame};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L23_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_v_main_debugger, __pyx_v_frame};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L23_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else
#endif
{
- __pyx_t_10 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 551, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_10);
- if (__pyx_t_8) {
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
- }
- __Pyx_INCREF(__pyx_v_main_debugger);
- __Pyx_GIVEREF(__pyx_v_main_debugger);
- PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_11, __pyx_v_main_debugger);
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_11, __pyx_v_frame);
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L23_error)
+ PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_main_debugger, __pyx_v_frame};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
PyObject* sequence = __pyx_t_2;
Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
@@ -11029,46 +13873,46 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1);
+ __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1);
} else {
- __pyx_t_9 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_10 = PyList_GET_ITEM(sequence, 1);
+ __pyx_t_8 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_7 = PyList_GET_ITEM(sequence, 1);
}
- __Pyx_INCREF(__pyx_t_9);
- __Pyx_INCREF(__pyx_t_10);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_7);
#else
- __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 551, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 551, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 551, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 551, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_7);
#endif
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_8 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 551, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_12 = Py_TYPE(__pyx_t_8)->tp_iternext;
- index = 0; __pyx_t_9 = __pyx_t_12(__pyx_t_8); if (unlikely(!__pyx_t_9)) goto __pyx_L27_unpacking_failed;
+ __pyx_t_9 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 551, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_9);
- index = 1; __pyx_t_10 = __pyx_t_12(__pyx_t_8); if (unlikely(!__pyx_t_10)) goto __pyx_L27_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_10);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_8), 2) < 0) __PYX_ERR(0, 551, __pyx_L23_error)
- __pyx_t_12 = NULL;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_11 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_9);
+ index = 0; __pyx_t_8 = __pyx_t_11(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L27_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_8);
+ index = 1; __pyx_t_7 = __pyx_t_11(__pyx_t_9); if (unlikely(!__pyx_t_7)) goto __pyx_L27_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_7);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_9), 2) < 0) __PYX_ERR(0, 551, __pyx_L23_error)
+ __pyx_t_11 = NULL;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L28_unpacking_done;
__pyx_L27_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_12 = NULL;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_11 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
__PYX_ERR(0, 551, __pyx_L23_error)
__pyx_L28_unpacking_done:;
}
- __pyx_v_trace_func = __pyx_t_9;
- __pyx_t_9 = 0;
- __pyx_v_apply_to_global = __pyx_t_10;
- __pyx_t_10 = 0;
+ __pyx_v_trace_func = __pyx_t_8;
+ __pyx_t_8 = 0;
+ __pyx_v_apply_to_global = __pyx_t_7;
+ __pyx_t_7 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":552
* if thread_info.thread_trace_func is None:
@@ -11077,8 +13921,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* thread_info.thread_trace_func = trace_func
*
*/
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_apply_to_global); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 552, __pyx_L23_error)
- if (__pyx_t_3) {
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_apply_to_global); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 552, __pyx_L23_error)
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":553
* trace_func, apply_to_global = fix_top_level_trace_and_get_trace_func(main_debugger, frame)
@@ -11118,32 +13962,32 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* main_debugger.break_on_caught_exceptions or \
* main_debugger.break_on_user_uncaught_exceptions or \
*/
- __pyx_t_11 = __pyx_v_additional_info->pydev_step_cmd;
- __pyx_t_4 = ((__pyx_t_11 == __pyx_v_CMD_STEP_INTO) != 0);
- if (!__pyx_t_4) {
+ __pyx_t_10 = __pyx_v_additional_info->pydev_step_cmd;
+ __pyx_t_12 = (__pyx_t_10 == __pyx_v_CMD_STEP_INTO);
+ if (!__pyx_t_12) {
} else {
- __pyx_t_1 = __pyx_t_4;
+ __pyx_t_3 = __pyx_t_12;
goto __pyx_L33_bool_binop_done;
}
- __pyx_t_4 = ((__pyx_t_11 == __pyx_v_CMD_STEP_INTO_MY_CODE) != 0);
- if (!__pyx_t_4) {
+ __pyx_t_12 = (__pyx_t_10 == __pyx_v_CMD_STEP_INTO_MY_CODE);
+ if (!__pyx_t_12) {
} else {
- __pyx_t_1 = __pyx_t_4;
+ __pyx_t_3 = __pyx_t_12;
goto __pyx_L33_bool_binop_done;
}
- __pyx_t_4 = ((__pyx_t_11 == __pyx_v_CMD_STEP_INTO_COROUTINE) != 0);
- if (!__pyx_t_4) {
+ __pyx_t_12 = (__pyx_t_10 == __pyx_v_CMD_STEP_INTO_COROUTINE);
+ if (!__pyx_t_12) {
} else {
- __pyx_t_1 = __pyx_t_4;
+ __pyx_t_3 = __pyx_t_12;
goto __pyx_L33_bool_binop_done;
}
- __pyx_t_4 = ((__pyx_t_11 == __pyx_v_CMD_SMART_STEP_INTO) != 0);
- __pyx_t_1 = __pyx_t_4;
+ __pyx_t_12 = (__pyx_t_10 == __pyx_v_CMD_SMART_STEP_INTO);
+ __pyx_t_3 = __pyx_t_12;
__pyx_L33_bool_binop_done:;
- __pyx_t_4 = (__pyx_t_1 != 0);
- if (!__pyx_t_4) {
+ __pyx_t_12 = __pyx_t_3;
+ if (!__pyx_t_12) {
} else {
- __pyx_t_3 = __pyx_t_4;
+ __pyx_t_1 = __pyx_t_12;
goto __pyx_L31_bool_binop_done;
}
@@ -11156,11 +14000,11 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_break_on_caught_exceptions); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 556, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 556, __pyx_L23_error)
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 556, __pyx_L23_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (!__pyx_t_4) {
+ if (!__pyx_t_12) {
} else {
- __pyx_t_3 = __pyx_t_4;
+ __pyx_t_1 = __pyx_t_12;
goto __pyx_L31_bool_binop_done;
}
@@ -11173,11 +14017,11 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_break_on_user_uncaught_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 557, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 557, __pyx_L23_error)
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 557, __pyx_L23_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (!__pyx_t_4) {
+ if (!__pyx_t_12) {
} else {
- __pyx_t_3 = __pyx_t_4;
+ __pyx_t_1 = __pyx_t_12;
goto __pyx_L31_bool_binop_done;
}
@@ -11190,11 +14034,11 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_has_plugin_exception_breaks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 558, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 558, __pyx_L23_error)
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 558, __pyx_L23_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (!__pyx_t_4) {
+ if (!__pyx_t_12) {
} else {
- __pyx_t_3 = __pyx_t_4;
+ __pyx_t_1 = __pyx_t_12;
goto __pyx_L31_bool_binop_done;
}
@@ -11207,11 +14051,11 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_signature_factory); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 559, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 559, __pyx_L23_error)
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 559, __pyx_L23_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (!__pyx_t_4) {
+ if (!__pyx_t_12) {
} else {
- __pyx_t_3 = __pyx_t_4;
+ __pyx_t_1 = __pyx_t_12;
goto __pyx_L31_bool_binop_done;
}
@@ -11222,37 +14066,36 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*
* # if DEBUG:
*/
- __pyx_t_11 = __pyx_v_additional_info->pydev_step_cmd;
- __pyx_t_1 = ((__pyx_t_11 == __pyx_v_CMD_STEP_OVER) != 0);
- if (!__pyx_t_1) {
+ __pyx_t_10 = __pyx_v_additional_info->pydev_step_cmd;
+ __pyx_t_3 = (__pyx_t_10 == __pyx_v_CMD_STEP_OVER);
+ if (!__pyx_t_3) {
} else {
- __pyx_t_4 = __pyx_t_1;
+ __pyx_t_12 = __pyx_t_3;
goto __pyx_L42_bool_binop_done;
}
- __pyx_t_1 = ((__pyx_t_11 == __pyx_v_CMD_STEP_OVER_MY_CODE) != 0);
- __pyx_t_4 = __pyx_t_1;
+ __pyx_t_3 = (__pyx_t_10 == __pyx_v_CMD_STEP_OVER_MY_CODE);
+ __pyx_t_12 = __pyx_t_3;
__pyx_L42_bool_binop_done:;
- __pyx_t_1 = (__pyx_t_4 != 0);
- if (__pyx_t_1) {
+ __pyx_t_3 = __pyx_t_12;
+ if (__pyx_t_3) {
} else {
- __pyx_t_3 = __pyx_t_1;
+ __pyx_t_1 = __pyx_t_3;
goto __pyx_L31_bool_binop_done;
}
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_show_return_values); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 560, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 560, __pyx_L23_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 560, __pyx_L23_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (__pyx_t_1) {
+ if (__pyx_t_3) {
} else {
- __pyx_t_3 = __pyx_t_1;
+ __pyx_t_1 = __pyx_t_3;
goto __pyx_L31_bool_binop_done;
}
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 560, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = (__pyx_t_2 == __pyx_v_additional_info->pydev_step_stop);
+ __pyx_t_3 = (__pyx_t_2 == __pyx_v_additional_info->pydev_step_stop);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_4 = (__pyx_t_1 != 0);
- __pyx_t_3 = __pyx_t_4;
+ __pyx_t_1 = __pyx_t_3;
__pyx_L31_bool_binop_done:;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":555
@@ -11262,7 +14105,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* main_debugger.break_on_caught_exceptions or \
* main_debugger.break_on_user_uncaught_exceptions or \
*/
- if (__pyx_t_3) {
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":564
* # if DEBUG:
@@ -11271,9 +14114,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* frame.f_trace = thread_info.thread_trace_func
* else:
*/
- __pyx_t_3 = (__pyx_v_thread_info->thread_trace_func != Py_None);
- __pyx_t_4 = (__pyx_t_3 != 0);
- if (__pyx_t_4) {
+ __pyx_t_1 = (__pyx_v_thread_info->thread_trace_func != Py_None);
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":565
* # print('get_bytecode_while_frame_eval enabled trace')
@@ -11307,11 +14149,11 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
/*else*/ {
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 567, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_10 = __pyx_t_2;
- __Pyx_INCREF(__pyx_t_10);
+ __pyx_t_7 = __pyx_t_2;
+ __Pyx_INCREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_10) < 0) __PYX_ERR(0, 567, __pyx_L23_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_7) < 0) __PYX_ERR(0, 567, __pyx_L23_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
__pyx_L45:;
@@ -11333,10 +14175,10 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* # print('get_bytecode_while_frame_eval always skip', func_code_info.always_skip_code)
*/
/*else*/ {
- __pyx_t_10 = ((PyObject *)__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_func_code_info(__pyx_v_thread_info, __pyx_v_frame_obj, __pyx_v_frame_obj->f_code)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 569, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_v_func_code_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_t_10);
- __pyx_t_10 = 0;
+ __pyx_t_7 = ((PyObject *)__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_func_code_info(__pyx_v_thread_info, __pyx_v_frame_obj, __pyx_v_frame_obj->f_code)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 569, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_v_func_code_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_t_7);
+ __pyx_t_7 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":572
* # if DEBUG:
@@ -11345,8 +14187,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*
* if main_debugger.has_plugin_line_breaks or main_debugger.has_plugin_exception_breaks:
*/
- __pyx_t_4 = ((!(__pyx_v_func_code_info->always_skip_code != 0)) != 0);
- if (__pyx_t_4) {
+ __pyx_t_1 = (!__pyx_v_func_code_info->always_skip_code);
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":574
* if not func_code_info.always_skip_code:
@@ -11355,22 +14197,22 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* can_skip = main_debugger.plugin.can_skip(main_debugger, frame_obj)
*
*/
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_has_plugin_line_breaks); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 574, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 574, __pyx_L23_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_has_plugin_line_breaks); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 574, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 574, __pyx_L23_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (!__pyx_t_3) {
} else {
- __pyx_t_4 = __pyx_t_3;
+ __pyx_t_1 = __pyx_t_3;
goto __pyx_L48_bool_binop_done;
}
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_has_plugin_exception_breaks); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 574, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 574, __pyx_L23_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_4 = __pyx_t_3;
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_has_plugin_exception_breaks); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 574, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 574, __pyx_L23_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_1 = __pyx_t_3;
__pyx_L48_bool_binop_done:;
- if (__pyx_t_4) {
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":575
*
@@ -11381,57 +14223,34 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_plugin); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 575, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_can_skip); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 575, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_can_skip); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 575, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = NULL;
- __pyx_t_11 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9);
+ __pyx_t_10 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
if (likely(__pyx_t_2)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_9, function);
- __pyx_t_11 = 1;
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_10 = 1;
}
}
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_main_debugger, ((PyObject *)__pyx_v_frame_obj)};
- __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 575, __pyx_L23_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_main_debugger, ((PyObject *)__pyx_v_frame_obj)};
- __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 575, __pyx_L23_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- } else
#endif
{
- __pyx_t_8 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 575, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_8);
- if (__pyx_t_2) {
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); __pyx_t_2 = NULL;
- }
- __Pyx_INCREF(__pyx_v_main_debugger);
- __Pyx_GIVEREF(__pyx_v_main_debugger);
- PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_11, __pyx_v_main_debugger);
- __Pyx_INCREF(((PyObject *)__pyx_v_frame_obj));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_frame_obj));
- PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_11, ((PyObject *)__pyx_v_frame_obj));
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 575, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_10);
+ PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_main_debugger, ((PyObject *)__pyx_v_frame_obj)};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 575, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 575, __pyx_L23_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_v_can_skip = __pyx_t_4;
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 575, __pyx_L23_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_v_can_skip = __pyx_t_1;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":577
* can_skip = main_debugger.plugin.can_skip(main_debugger, frame_obj)
@@ -11440,8 +14259,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* # if DEBUG:
* # print('get_bytecode_while_frame_eval not can_skip')
*/
- __pyx_t_4 = ((!(__pyx_v_can_skip != 0)) != 0);
- if (__pyx_t_4) {
+ __pyx_t_1 = (!__pyx_v_can_skip);
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":580
* # if DEBUG:
@@ -11450,9 +14269,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* frame.f_trace = thread_info.thread_trace_func
* else:
*/
- __pyx_t_4 = (__pyx_v_thread_info->thread_trace_func != Py_None);
- __pyx_t_3 = (__pyx_t_4 != 0);
- if (__pyx_t_3) {
+ __pyx_t_1 = (__pyx_v_thread_info->thread_trace_func != Py_None);
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":581
* # print('get_bytecode_while_frame_eval not can_skip')
@@ -11461,10 +14279,10 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* else:
* frame.f_trace = main_debugger.trace_dispatch
*/
- __pyx_t_10 = __pyx_v_thread_info->thread_trace_func;
- __Pyx_INCREF(__pyx_t_10);
- if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_10) < 0) __PYX_ERR(0, 581, __pyx_L23_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_7 = __pyx_v_thread_info->thread_trace_func;
+ __Pyx_INCREF(__pyx_t_7);
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_7) < 0) __PYX_ERR(0, 581, __pyx_L23_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":580
* # if DEBUG:
@@ -11484,13 +14302,13 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* if can_skip and func_code_info.breakpoint_found:
*/
/*else*/ {
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 583, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_9 = __pyx_t_10;
- __Pyx_INCREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_9) < 0) __PYX_ERR(0, 583, __pyx_L23_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 583, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = __pyx_t_7;
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_8) < 0) __PYX_ERR(0, 583, __pyx_L23_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__pyx_L51:;
@@ -11519,16 +14337,14 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* # if DEBUG:
* # print('get_bytecode_while_frame_eval new_code', func_code_info.new_code)
*/
- __pyx_t_4 = (__pyx_v_can_skip != 0);
- if (__pyx_t_4) {
+ if (__pyx_v_can_skip) {
} else {
- __pyx_t_3 = __pyx_t_4;
+ __pyx_t_1 = __pyx_v_can_skip;
goto __pyx_L53_bool_binop_done;
}
- __pyx_t_4 = (__pyx_v_func_code_info->breakpoint_found != 0);
- __pyx_t_3 = __pyx_t_4;
+ __pyx_t_1 = __pyx_v_func_code_info->breakpoint_found;
__pyx_L53_bool_binop_done:;
- if (__pyx_t_3) {
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":588
* # if DEBUG:
@@ -11537,8 +14353,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* # If breakpoints are found but new_code is None,
* # this means we weren't able to actually add the code
*/
- __pyx_t_3 = ((!(__pyx_v_thread_info->force_stay_in_untraced_mode != 0)) != 0);
- if (__pyx_t_3) {
+ __pyx_t_1 = (!__pyx_v_thread_info->force_stay_in_untraced_mode);
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":592
* # this means we weren't able to actually add the code
@@ -11547,9 +14363,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* if thread_info.thread_trace_func is not None:
* frame.f_trace = thread_info.thread_trace_func
*/
- __pyx_t_3 = (__pyx_v_func_code_info->new_code == Py_None);
- __pyx_t_4 = (__pyx_t_3 != 0);
- if (__pyx_t_4) {
+ __pyx_t_1 = (__pyx_v_func_code_info->new_code == Py_None);
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":593
* # where needed, so, fallback to tracing.
@@ -11558,9 +14373,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* frame.f_trace = thread_info.thread_trace_func
* else:
*/
- __pyx_t_4 = (__pyx_v_thread_info->thread_trace_func != Py_None);
- __pyx_t_3 = (__pyx_t_4 != 0);
- if (__pyx_t_3) {
+ __pyx_t_1 = (__pyx_v_thread_info->thread_trace_func != Py_None);
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":594
* if func_code_info.new_code is None:
@@ -11569,10 +14383,10 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* else:
* frame.f_trace = main_debugger.trace_dispatch
*/
- __pyx_t_9 = __pyx_v_thread_info->thread_trace_func;
- __Pyx_INCREF(__pyx_t_9);
- if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_9) < 0) __PYX_ERR(0, 594, __pyx_L23_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_8 = __pyx_v_thread_info->thread_trace_func;
+ __Pyx_INCREF(__pyx_t_8);
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_8) < 0) __PYX_ERR(0, 594, __pyx_L23_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":593
* # where needed, so, fallback to tracing.
@@ -11592,13 +14406,13 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* # print('Using frame eval break for', frame_obj.f_code.co_name)
*/
/*else*/ {
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 596, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_10 = __pyx_t_9;
- __Pyx_INCREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_10) < 0) __PYX_ERR(0, 596, __pyx_L23_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 596, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_7 = __pyx_t_8;
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_7) < 0) __PYX_ERR(0, 596, __pyx_L23_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
__pyx_L57:;
@@ -11620,24 +14434,31 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* old = frame_obj.f_code
*/
/*else*/ {
- __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_update_globals_dict); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 599, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_8 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
- __Pyx_INCREF(__pyx_t_8);
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_update_globals_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 599, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_2 = NULL;
+ __pyx_t_10 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_9, function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_10 = 1;
}
}
- __pyx_t_10 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_8, ((PyObject *)__pyx_v_frame_obj->f_globals)) : __Pyx_PyObject_CallOneArg(__pyx_t_9, ((PyObject *)__pyx_v_frame_obj->f_globals));
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 599, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_frame_obj->f_globals)};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 599, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":600
* # print('Using frame eval break for', frame_obj.f_code.co_name)
@@ -11646,10 +14467,10 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* old = frame_obj.f_code
* frame_obj.f_code = func_code_info.new_code
*/
- __pyx_t_10 = __pyx_v_func_code_info->new_code;
- __Pyx_INCREF(__pyx_t_10);
- Py_INCREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_7 = __pyx_v_func_code_info->new_code;
+ __Pyx_INCREF(__pyx_t_7);
+ Py_INCREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":601
* update_globals_dict( frame_obj.f_globals)
@@ -11658,10 +14479,10 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* frame_obj.f_code = func_code_info.new_code
* Py_DECREF(old)
*/
- __pyx_t_10 = ((PyObject *)__pyx_v_frame_obj->f_code);
- __Pyx_INCREF(__pyx_t_10);
- __pyx_v_old = __pyx_t_10;
- __pyx_t_10 = 0;
+ __pyx_t_7 = ((PyObject *)__pyx_v_frame_obj->f_code);
+ __Pyx_INCREF(__pyx_t_7);
+ __pyx_v_old = __pyx_t_7;
+ __pyx_t_7 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":602
* Py_INCREF(func_code_info.new_code)
@@ -11701,24 +14522,31 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* finally:
*/
/*else*/ {
- __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_update_globals_dict); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 608, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_8 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
- __Pyx_INCREF(__pyx_t_8);
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_update_globals_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 608, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_2 = NULL;
+ __pyx_t_10 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_9, function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_10 = 1;
}
}
- __pyx_t_10 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_8, ((PyObject *)__pyx_v_frame_obj->f_globals)) : __Pyx_PyObject_CallOneArg(__pyx_t_9, ((PyObject *)__pyx_v_frame_obj->f_globals));
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 608, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_frame_obj->f_globals)};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 608, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
__pyx_L55:;
@@ -11768,20 +14596,20 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
- __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
- if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5);
- __Pyx_XGOTREF(__pyx_t_7);
+ if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_5);
+ __Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_17);
- __pyx_t_11 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
+ __pyx_t_10 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
{
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":611
@@ -11808,12 +14636,12 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
}
- __Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_ErrRestore(__pyx_t_7, __pyx_t_6, __pyx_t_5);
- __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
- __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
+ __Pyx_XGIVEREF(__pyx_t_4);
+ __Pyx_ErrRestore(__pyx_t_6, __pyx_t_5, __pyx_t_4);
+ __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
+ __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
goto __pyx_L1_error;
}
__pyx_L22_return: {
@@ -11863,11 +14691,11 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_WriteUnraisable("_pydevd_frame_eval.pydevd_frame_evaluator.get_bytecode_while_frame_eval_38", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
- __pyx_r = 0;
+ __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_bytecode_while_frame_eval_38", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_thread_info);
__Pyx_XDECREF((PyObject *)__pyx_v_additional_info);
@@ -11911,15 +14739,15 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
int __pyx_t_1;
PyObject *__pyx_t_2 = NULL;
int __pyx_t_3;
- int __pyx_t_4;
+ PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
PyObject *__pyx_t_9 = NULL;
- PyObject *__pyx_t_10 = NULL;
- int __pyx_t_11;
- PyObject *(*__pyx_t_12)(PyObject *);
+ int __pyx_t_10;
+ PyObject *(*__pyx_t_11)(PyObject *);
+ int __pyx_t_12;
int __pyx_t_13;
char const *__pyx_t_14;
PyObject *__pyx_t_15 = NULL;
@@ -11929,7 +14757,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_bytecode_while_frame_eval_39", 0);
+ __Pyx_RefNannySetupContext("get_bytecode_while_frame_eval_39", 1);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":628
* where programmatic breakpoints are added.
@@ -11942,17 +14770,15 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = (__pyx_t_2 == Py_None);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_4 = (__pyx_t_3 != 0);
- if (!__pyx_t_4) {
+ if (!__pyx_t_3) {
} else {
- __pyx_t_1 = __pyx_t_4;
+ __pyx_t_1 = __pyx_t_3;
goto __pyx_L4_bool_binop_done;
}
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 628, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = (__pyx_t_2 == Py_None);
+ __pyx_t_3 = (__pyx_t_2 == Py_None);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_3 = (__pyx_t_4 != 0);
if (!__pyx_t_3) {
} else {
__pyx_t_1 = __pyx_t_3;
@@ -12064,10 +14890,10 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
- __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+ __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
+ __Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_5);
__Pyx_XGOTREF(__pyx_t_6);
- __Pyx_XGOTREF(__pyx_t_7);
/*try:*/ {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":646
@@ -12079,12 +14905,12 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*/
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 646, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_thread_info); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 646, __pyx_L7_error)
- __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_thread_info); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 646, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo))))) __PYX_ERR(0, 646, __pyx_L7_error)
- __pyx_v_thread_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_t_8);
- __pyx_t_8 = 0;
+ if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo))))) __PYX_ERR(0, 646, __pyx_L7_error)
+ __pyx_v_thread_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_t_7);
+ __pyx_t_7 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":645
* cdef int CMD_SMART_STEP_INTO = 128
@@ -12094,13 +14920,13 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* except:
*/
}
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L12_try_end;
__pyx_L7_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":647
* try:
@@ -12111,10 +14937,10 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*/
/*except:*/ {
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_bytecode_while_frame_eval_39", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_2, &__pyx_t_9) < 0) __PYX_ERR(0, 647, __pyx_L9_except_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_t_9);
+ if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_2, &__pyx_t_8) < 0) __PYX_ERR(0, 647, __pyx_L9_except_error)
+ __Pyx_XGOTREF(__pyx_t_7);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_8);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":648
* thread_info = _thread_local_info.thread_info
@@ -12123,10 +14949,10 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* if thread_info is None:
* return CALL_EvalFrameDefault_39(tstate, frame_obj, exc)
*/
- __pyx_t_10 = ((PyObject *)__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_thread_info(__pyx_v_frame_obj)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 648, __pyx_L9_except_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_XDECREF_SET(__pyx_v_thread_info, ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_t_10));
- __pyx_t_10 = 0;
+ __pyx_t_9 = ((PyObject *)__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_thread_info(__pyx_v_frame_obj)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 648, __pyx_L9_except_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_XDECREF_SET(__pyx_v_thread_info, ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_t_9));
+ __pyx_t_9 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":649
* except:
@@ -12136,8 +14962,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*
*/
__pyx_t_1 = (((PyObject *)__pyx_v_thread_info) == Py_None);
- __pyx_t_3 = (__pyx_t_1 != 0);
- if (__pyx_t_3) {
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":650
* thread_info = get_thread_info(frame_obj)
@@ -12148,8 +14973,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*/
__pyx_r = CALL_EvalFrameDefault_39(__pyx_v_tstate, __pyx_v_frame_obj, __pyx_v_exc);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L10_except_return;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":649
@@ -12160,12 +14985,11 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*
*/
}
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L8_exception_handled;
}
- __pyx_L9_except_error:;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":645
* cdef int CMD_SMART_STEP_INTO = 128
@@ -12174,22 +14998,23 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* thread_info = _thread_local_info.thread_info
* except:
*/
+ __pyx_L9_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+ __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
goto __pyx_L1_error;
__pyx_L10_except_return:;
+ __Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+ __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
goto __pyx_L0;
__pyx_L8_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+ __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
__pyx_L12_try_end:;
}
@@ -12200,8 +15025,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* return CALL_EvalFrameDefault_39(tstate, frame_obj, exc)
*
*/
- __pyx_t_3 = (__pyx_v_thread_info->inside_frame_eval != 0);
- if (__pyx_t_3) {
+ __pyx_t_1 = (__pyx_v_thread_info->inside_frame_eval != 0);
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":653
*
@@ -12229,8 +15054,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* thread_info.initialize_if_possible()
* if not thread_info.fully_initialized:
*/
- __pyx_t_3 = ((!(__pyx_v_thread_info->fully_initialized != 0)) != 0);
- if (__pyx_t_3) {
+ __pyx_t_1 = (!__pyx_v_thread_info->fully_initialized);
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":656
*
@@ -12239,9 +15064,9 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* if not thread_info.fully_initialized:
* return CALL_EvalFrameDefault_39(tstate, frame_obj, exc)
*/
- __pyx_t_9 = ((struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_thread_info->__pyx_vtab)->initialize_if_possible(__pyx_v_thread_info); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 656, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_8 = ((struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_thread_info->__pyx_vtab)->initialize_if_possible(__pyx_v_thread_info); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 656, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":657
* if not thread_info.fully_initialized:
@@ -12250,8 +15075,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* return CALL_EvalFrameDefault_39(tstate, frame_obj, exc)
*
*/
- __pyx_t_3 = ((!(__pyx_v_thread_info->fully_initialized != 0)) != 0);
- if (__pyx_t_3) {
+ __pyx_t_1 = (!__pyx_v_thread_info->fully_initialized);
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":658
* thread_info.initialize_if_possible()
@@ -12288,10 +15113,10 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* if thread_info.is_pydevd_thread or additional_info.is_tracing:
* # Make sure that we don't trace pydevd threads or inside our own calls.
*/
- __pyx_t_9 = ((PyObject *)__pyx_v_thread_info->additional_info);
- __Pyx_INCREF(__pyx_t_9);
- __pyx_v_additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_9);
- __pyx_t_9 = 0;
+ __pyx_t_8 = ((PyObject *)__pyx_v_thread_info->additional_info);
+ __Pyx_INCREF(__pyx_t_8);
+ __pyx_v_additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_8);
+ __pyx_t_8 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":662
* # Can only get additional_info when fully initialized.
@@ -12300,16 +15125,15 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* # Make sure that we don't trace pydevd threads or inside our own calls.
* return CALL_EvalFrameDefault_39(tstate, frame_obj, exc)
*/
- __pyx_t_1 = (__pyx_v_thread_info->is_pydevd_thread != 0);
- if (!__pyx_t_1) {
+ if (!__pyx_v_thread_info->is_pydevd_thread) {
} else {
- __pyx_t_3 = __pyx_t_1;
+ __pyx_t_1 = __pyx_v_thread_info->is_pydevd_thread;
goto __pyx_L20_bool_binop_done;
}
- __pyx_t_1 = (__pyx_v_additional_info->is_tracing != 0);
- __pyx_t_3 = __pyx_t_1;
+ __pyx_t_3 = (__pyx_v_additional_info->is_tracing != 0);
+ __pyx_t_1 = __pyx_t_3;
__pyx_L20_bool_binop_done:;
- if (__pyx_t_3) {
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":664
* if thread_info.is_pydevd_thread or additional_info.is_tracing:
@@ -12364,11 +15188,11 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* if main_debugger is None:
* return CALL_EvalFrameDefault_39(tstate, frame_obj, exc)
*/
- __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 674, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_global_dbg); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 674, __pyx_L23_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 674, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_global_dbg); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 674, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_v_main_debugger = __pyx_t_2;
__pyx_t_2 = 0;
@@ -12379,8 +15203,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* return CALL_EvalFrameDefault_39(tstate, frame_obj, exc)
* frame = frame_obj
*/
- __pyx_t_3 = (__pyx_v_main_debugger == Py_None);
- __pyx_t_1 = (__pyx_t_3 != 0);
+ __pyx_t_1 = (__pyx_v_main_debugger == Py_None);
if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":676
@@ -12422,8 +15245,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* if apply_to_global:
*/
__pyx_t_1 = (__pyx_v_thread_info->thread_trace_func == Py_None);
- __pyx_t_3 = (__pyx_t_1 != 0);
- if (__pyx_t_3) {
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":680
*
@@ -12432,53 +15254,30 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* if apply_to_global:
* thread_info.thread_trace_func = trace_func
*/
- __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_fix_top_level_trace_and_get_trac); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 680, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_8 = NULL;
- __pyx_t_11 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
- __Pyx_INCREF(__pyx_t_8);
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_fix_top_level_trace_and_get_trac); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 680, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_7 = NULL;
+ __pyx_t_10 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_9, function);
- __pyx_t_11 = 1;
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_10 = 1;
}
}
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_v_main_debugger, __pyx_v_frame};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 680, __pyx_L23_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_v_main_debugger, __pyx_v_frame};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 680, __pyx_L23_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else
#endif
{
- __pyx_t_10 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 680, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_10);
- if (__pyx_t_8) {
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
- }
- __Pyx_INCREF(__pyx_v_main_debugger);
- __Pyx_GIVEREF(__pyx_v_main_debugger);
- PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_11, __pyx_v_main_debugger);
- __Pyx_INCREF(__pyx_v_frame);
- __Pyx_GIVEREF(__pyx_v_frame);
- PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_11, __pyx_v_frame);
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 680, __pyx_L23_error)
+ PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_main_debugger, __pyx_v_frame};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 680, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
PyObject* sequence = __pyx_t_2;
Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
@@ -12489,46 +15288,46 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1);
+ __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1);
} else {
- __pyx_t_9 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_10 = PyList_GET_ITEM(sequence, 1);
+ __pyx_t_8 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_7 = PyList_GET_ITEM(sequence, 1);
}
- __Pyx_INCREF(__pyx_t_9);
- __Pyx_INCREF(__pyx_t_10);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_7);
#else
- __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 680, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 680, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 680, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 680, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_7);
#endif
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_8 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 680, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_12 = Py_TYPE(__pyx_t_8)->tp_iternext;
- index = 0; __pyx_t_9 = __pyx_t_12(__pyx_t_8); if (unlikely(!__pyx_t_9)) goto __pyx_L27_unpacking_failed;
+ __pyx_t_9 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 680, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_9);
- index = 1; __pyx_t_10 = __pyx_t_12(__pyx_t_8); if (unlikely(!__pyx_t_10)) goto __pyx_L27_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_10);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_8), 2) < 0) __PYX_ERR(0, 680, __pyx_L23_error)
- __pyx_t_12 = NULL;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_11 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_9);
+ index = 0; __pyx_t_8 = __pyx_t_11(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L27_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_8);
+ index = 1; __pyx_t_7 = __pyx_t_11(__pyx_t_9); if (unlikely(!__pyx_t_7)) goto __pyx_L27_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_7);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_9), 2) < 0) __PYX_ERR(0, 680, __pyx_L23_error)
+ __pyx_t_11 = NULL;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L28_unpacking_done;
__pyx_L27_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_12 = NULL;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_11 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
__PYX_ERR(0, 680, __pyx_L23_error)
__pyx_L28_unpacking_done:;
}
- __pyx_v_trace_func = __pyx_t_9;
- __pyx_t_9 = 0;
- __pyx_v_apply_to_global = __pyx_t_10;
- __pyx_t_10 = 0;
+ __pyx_v_trace_func = __pyx_t_8;
+ __pyx_t_8 = 0;
+ __pyx_v_apply_to_global = __pyx_t_7;
+ __pyx_t_7 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":681
* if thread_info.thread_trace_func is None:
@@ -12537,8 +15336,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* thread_info.thread_trace_func = trace_func
*
*/
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_apply_to_global); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 681, __pyx_L23_error)
- if (__pyx_t_3) {
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_apply_to_global); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 681, __pyx_L23_error)
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":682
* trace_func, apply_to_global = fix_top_level_trace_and_get_trace_func(main_debugger, frame)
@@ -12578,32 +15377,32 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* main_debugger.break_on_caught_exceptions or \
* main_debugger.break_on_user_uncaught_exceptions or \
*/
- __pyx_t_11 = __pyx_v_additional_info->pydev_step_cmd;
- __pyx_t_4 = ((__pyx_t_11 == __pyx_v_CMD_STEP_INTO) != 0);
- if (!__pyx_t_4) {
+ __pyx_t_10 = __pyx_v_additional_info->pydev_step_cmd;
+ __pyx_t_12 = (__pyx_t_10 == __pyx_v_CMD_STEP_INTO);
+ if (!__pyx_t_12) {
} else {
- __pyx_t_1 = __pyx_t_4;
+ __pyx_t_3 = __pyx_t_12;
goto __pyx_L33_bool_binop_done;
}
- __pyx_t_4 = ((__pyx_t_11 == __pyx_v_CMD_STEP_INTO_MY_CODE) != 0);
- if (!__pyx_t_4) {
+ __pyx_t_12 = (__pyx_t_10 == __pyx_v_CMD_STEP_INTO_MY_CODE);
+ if (!__pyx_t_12) {
} else {
- __pyx_t_1 = __pyx_t_4;
+ __pyx_t_3 = __pyx_t_12;
goto __pyx_L33_bool_binop_done;
}
- __pyx_t_4 = ((__pyx_t_11 == __pyx_v_CMD_STEP_INTO_COROUTINE) != 0);
- if (!__pyx_t_4) {
+ __pyx_t_12 = (__pyx_t_10 == __pyx_v_CMD_STEP_INTO_COROUTINE);
+ if (!__pyx_t_12) {
} else {
- __pyx_t_1 = __pyx_t_4;
+ __pyx_t_3 = __pyx_t_12;
goto __pyx_L33_bool_binop_done;
}
- __pyx_t_4 = ((__pyx_t_11 == __pyx_v_CMD_SMART_STEP_INTO) != 0);
- __pyx_t_1 = __pyx_t_4;
+ __pyx_t_12 = (__pyx_t_10 == __pyx_v_CMD_SMART_STEP_INTO);
+ __pyx_t_3 = __pyx_t_12;
__pyx_L33_bool_binop_done:;
- __pyx_t_4 = (__pyx_t_1 != 0);
- if (!__pyx_t_4) {
+ __pyx_t_12 = __pyx_t_3;
+ if (!__pyx_t_12) {
} else {
- __pyx_t_3 = __pyx_t_4;
+ __pyx_t_1 = __pyx_t_12;
goto __pyx_L31_bool_binop_done;
}
@@ -12616,11 +15415,11 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_break_on_caught_exceptions); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 685, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 685, __pyx_L23_error)
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 685, __pyx_L23_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (!__pyx_t_4) {
+ if (!__pyx_t_12) {
} else {
- __pyx_t_3 = __pyx_t_4;
+ __pyx_t_1 = __pyx_t_12;
goto __pyx_L31_bool_binop_done;
}
@@ -12633,11 +15432,11 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_break_on_user_uncaught_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 686, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 686, __pyx_L23_error)
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 686, __pyx_L23_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (!__pyx_t_4) {
+ if (!__pyx_t_12) {
} else {
- __pyx_t_3 = __pyx_t_4;
+ __pyx_t_1 = __pyx_t_12;
goto __pyx_L31_bool_binop_done;
}
@@ -12650,11 +15449,11 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_has_plugin_exception_breaks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 687, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 687, __pyx_L23_error)
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 687, __pyx_L23_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (!__pyx_t_4) {
+ if (!__pyx_t_12) {
} else {
- __pyx_t_3 = __pyx_t_4;
+ __pyx_t_1 = __pyx_t_12;
goto __pyx_L31_bool_binop_done;
}
@@ -12667,11 +15466,11 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_signature_factory); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 688, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 688, __pyx_L23_error)
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 688, __pyx_L23_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (!__pyx_t_4) {
+ if (!__pyx_t_12) {
} else {
- __pyx_t_3 = __pyx_t_4;
+ __pyx_t_1 = __pyx_t_12;
goto __pyx_L31_bool_binop_done;
}
@@ -12682,37 +15481,36 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*
* # if DEBUG:
*/
- __pyx_t_11 = __pyx_v_additional_info->pydev_step_cmd;
- __pyx_t_1 = ((__pyx_t_11 == __pyx_v_CMD_STEP_OVER) != 0);
- if (!__pyx_t_1) {
+ __pyx_t_10 = __pyx_v_additional_info->pydev_step_cmd;
+ __pyx_t_3 = (__pyx_t_10 == __pyx_v_CMD_STEP_OVER);
+ if (!__pyx_t_3) {
} else {
- __pyx_t_4 = __pyx_t_1;
+ __pyx_t_12 = __pyx_t_3;
goto __pyx_L42_bool_binop_done;
}
- __pyx_t_1 = ((__pyx_t_11 == __pyx_v_CMD_STEP_OVER_MY_CODE) != 0);
- __pyx_t_4 = __pyx_t_1;
+ __pyx_t_3 = (__pyx_t_10 == __pyx_v_CMD_STEP_OVER_MY_CODE);
+ __pyx_t_12 = __pyx_t_3;
__pyx_L42_bool_binop_done:;
- __pyx_t_1 = (__pyx_t_4 != 0);
- if (__pyx_t_1) {
+ __pyx_t_3 = __pyx_t_12;
+ if (__pyx_t_3) {
} else {
- __pyx_t_3 = __pyx_t_1;
+ __pyx_t_1 = __pyx_t_3;
goto __pyx_L31_bool_binop_done;
}
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_show_return_values); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 689, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 689, __pyx_L23_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 689, __pyx_L23_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (__pyx_t_1) {
+ if (__pyx_t_3) {
} else {
- __pyx_t_3 = __pyx_t_1;
+ __pyx_t_1 = __pyx_t_3;
goto __pyx_L31_bool_binop_done;
}
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 689, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = (__pyx_t_2 == __pyx_v_additional_info->pydev_step_stop);
+ __pyx_t_3 = (__pyx_t_2 == __pyx_v_additional_info->pydev_step_stop);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_4 = (__pyx_t_1 != 0);
- __pyx_t_3 = __pyx_t_4;
+ __pyx_t_1 = __pyx_t_3;
__pyx_L31_bool_binop_done:;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":684
@@ -12722,7 +15520,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* main_debugger.break_on_caught_exceptions or \
* main_debugger.break_on_user_uncaught_exceptions or \
*/
- if (__pyx_t_3) {
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":693
* # if DEBUG:
@@ -12731,9 +15529,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* frame.f_trace = thread_info.thread_trace_func
* else:
*/
- __pyx_t_3 = (__pyx_v_thread_info->thread_trace_func != Py_None);
- __pyx_t_4 = (__pyx_t_3 != 0);
- if (__pyx_t_4) {
+ __pyx_t_1 = (__pyx_v_thread_info->thread_trace_func != Py_None);
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":694
* # print('get_bytecode_while_frame_eval enabled trace')
@@ -12767,11 +15564,11 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
/*else*/ {
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 696, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_10 = __pyx_t_2;
- __Pyx_INCREF(__pyx_t_10);
+ __pyx_t_7 = __pyx_t_2;
+ __Pyx_INCREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_10) < 0) __PYX_ERR(0, 696, __pyx_L23_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_7) < 0) __PYX_ERR(0, 696, __pyx_L23_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
__pyx_L45:;
@@ -12793,10 +15590,10 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* # print('get_bytecode_while_frame_eval always skip', func_code_info.always_skip_code)
*/
/*else*/ {
- __pyx_t_10 = ((PyObject *)__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_func_code_info(__pyx_v_thread_info, __pyx_v_frame_obj, __pyx_v_frame_obj->f_code)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 698, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_v_func_code_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_t_10);
- __pyx_t_10 = 0;
+ __pyx_t_7 = ((PyObject *)__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_func_code_info(__pyx_v_thread_info, __pyx_v_frame_obj, __pyx_v_frame_obj->f_code)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 698, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_v_func_code_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_t_7);
+ __pyx_t_7 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":701
* # if DEBUG:
@@ -12805,8 +15602,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*
* if main_debugger.has_plugin_line_breaks or main_debugger.has_plugin_exception_breaks:
*/
- __pyx_t_4 = ((!(__pyx_v_func_code_info->always_skip_code != 0)) != 0);
- if (__pyx_t_4) {
+ __pyx_t_1 = (!__pyx_v_func_code_info->always_skip_code);
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":703
* if not func_code_info.always_skip_code:
@@ -12815,22 +15612,22 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* can_skip = main_debugger.plugin.can_skip(main_debugger, frame_obj)
*
*/
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_has_plugin_line_breaks); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 703, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 703, __pyx_L23_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_has_plugin_line_breaks); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 703, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 703, __pyx_L23_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (!__pyx_t_3) {
} else {
- __pyx_t_4 = __pyx_t_3;
+ __pyx_t_1 = __pyx_t_3;
goto __pyx_L48_bool_binop_done;
}
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_has_plugin_exception_breaks); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 703, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 703, __pyx_L23_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_4 = __pyx_t_3;
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_has_plugin_exception_breaks); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 703, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 703, __pyx_L23_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_1 = __pyx_t_3;
__pyx_L48_bool_binop_done:;
- if (__pyx_t_4) {
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":704
*
@@ -12841,57 +15638,34 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_plugin); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 704, __pyx_L23_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_can_skip); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 704, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_can_skip); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 704, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = NULL;
- __pyx_t_11 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9);
+ __pyx_t_10 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
if (likely(__pyx_t_2)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_9, function);
- __pyx_t_11 = 1;
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_10 = 1;
}
}
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_main_debugger, ((PyObject *)__pyx_v_frame_obj)};
- __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 704, __pyx_L23_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_main_debugger, ((PyObject *)__pyx_v_frame_obj)};
- __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 704, __pyx_L23_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- } else
#endif
{
- __pyx_t_8 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 704, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_8);
- if (__pyx_t_2) {
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); __pyx_t_2 = NULL;
- }
- __Pyx_INCREF(__pyx_v_main_debugger);
- __Pyx_GIVEREF(__pyx_v_main_debugger);
- PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_11, __pyx_v_main_debugger);
- __Pyx_INCREF(((PyObject *)__pyx_v_frame_obj));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_frame_obj));
- PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_11, ((PyObject *)__pyx_v_frame_obj));
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 704, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_10);
+ PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_main_debugger, ((PyObject *)__pyx_v_frame_obj)};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 704, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 704, __pyx_L23_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_v_can_skip = __pyx_t_4;
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 704, __pyx_L23_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_v_can_skip = __pyx_t_1;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":706
* can_skip = main_debugger.plugin.can_skip(main_debugger, frame_obj)
@@ -12900,8 +15674,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* # if DEBUG:
* # print('get_bytecode_while_frame_eval not can_skip')
*/
- __pyx_t_4 = ((!(__pyx_v_can_skip != 0)) != 0);
- if (__pyx_t_4) {
+ __pyx_t_1 = (!__pyx_v_can_skip);
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":709
* # if DEBUG:
@@ -12910,9 +15684,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* frame.f_trace = thread_info.thread_trace_func
* else:
*/
- __pyx_t_4 = (__pyx_v_thread_info->thread_trace_func != Py_None);
- __pyx_t_3 = (__pyx_t_4 != 0);
- if (__pyx_t_3) {
+ __pyx_t_1 = (__pyx_v_thread_info->thread_trace_func != Py_None);
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":710
* # print('get_bytecode_while_frame_eval not can_skip')
@@ -12921,10 +15694,10 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* else:
* frame.f_trace = main_debugger.trace_dispatch
*/
- __pyx_t_10 = __pyx_v_thread_info->thread_trace_func;
- __Pyx_INCREF(__pyx_t_10);
- if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_10) < 0) __PYX_ERR(0, 710, __pyx_L23_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_7 = __pyx_v_thread_info->thread_trace_func;
+ __Pyx_INCREF(__pyx_t_7);
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_7) < 0) __PYX_ERR(0, 710, __pyx_L23_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":709
* # if DEBUG:
@@ -12944,13 +15717,13 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* if can_skip and func_code_info.breakpoint_found:
*/
/*else*/ {
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 712, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_9 = __pyx_t_10;
- __Pyx_INCREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_9) < 0) __PYX_ERR(0, 712, __pyx_L23_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 712, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = __pyx_t_7;
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_8) < 0) __PYX_ERR(0, 712, __pyx_L23_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__pyx_L51:;
@@ -12979,16 +15752,14 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* # if DEBUG:
* # print('get_bytecode_while_frame_eval new_code', func_code_info.new_code)
*/
- __pyx_t_4 = (__pyx_v_can_skip != 0);
- if (__pyx_t_4) {
+ if (__pyx_v_can_skip) {
} else {
- __pyx_t_3 = __pyx_t_4;
+ __pyx_t_1 = __pyx_v_can_skip;
goto __pyx_L53_bool_binop_done;
}
- __pyx_t_4 = (__pyx_v_func_code_info->breakpoint_found != 0);
- __pyx_t_3 = __pyx_t_4;
+ __pyx_t_1 = __pyx_v_func_code_info->breakpoint_found;
__pyx_L53_bool_binop_done:;
- if (__pyx_t_3) {
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":717
* # if DEBUG:
@@ -12997,8 +15768,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* # If breakpoints are found but new_code is None,
* # this means we weren't able to actually add the code
*/
- __pyx_t_3 = ((!(__pyx_v_thread_info->force_stay_in_untraced_mode != 0)) != 0);
- if (__pyx_t_3) {
+ __pyx_t_1 = (!__pyx_v_thread_info->force_stay_in_untraced_mode);
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":721
* # this means we weren't able to actually add the code
@@ -13007,9 +15778,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* if thread_info.thread_trace_func is not None:
* frame.f_trace = thread_info.thread_trace_func
*/
- __pyx_t_3 = (__pyx_v_func_code_info->new_code == Py_None);
- __pyx_t_4 = (__pyx_t_3 != 0);
- if (__pyx_t_4) {
+ __pyx_t_1 = (__pyx_v_func_code_info->new_code == Py_None);
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":722
* # where needed, so, fallback to tracing.
@@ -13018,9 +15788,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* frame.f_trace = thread_info.thread_trace_func
* else:
*/
- __pyx_t_4 = (__pyx_v_thread_info->thread_trace_func != Py_None);
- __pyx_t_3 = (__pyx_t_4 != 0);
- if (__pyx_t_3) {
+ __pyx_t_1 = (__pyx_v_thread_info->thread_trace_func != Py_None);
+ if (__pyx_t_1) {
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":723
* if func_code_info.new_code is None:
@@ -13029,10 +15798,10 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* else:
* frame.f_trace = main_debugger.trace_dispatch
*/
- __pyx_t_9 = __pyx_v_thread_info->thread_trace_func;
- __Pyx_INCREF(__pyx_t_9);
- if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_9) < 0) __PYX_ERR(0, 723, __pyx_L23_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_8 = __pyx_v_thread_info->thread_trace_func;
+ __Pyx_INCREF(__pyx_t_8);
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_8) < 0) __PYX_ERR(0, 723, __pyx_L23_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":722
* # where needed, so, fallback to tracing.
@@ -13052,13 +15821,13 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* # print('Using frame eval break for', frame_obj.f_code.co_name)
*/
/*else*/ {
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 725, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_10 = __pyx_t_9;
- __Pyx_INCREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_10) < 0) __PYX_ERR(0, 725, __pyx_L23_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 725, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_7 = __pyx_t_8;
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_7) < 0) __PYX_ERR(0, 725, __pyx_L23_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
__pyx_L57:;
@@ -13080,24 +15849,31 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* old = frame_obj.f_code
*/
/*else*/ {
- __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_update_globals_dict); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 728, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_8 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
- __Pyx_INCREF(__pyx_t_8);
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_update_globals_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 728, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_2 = NULL;
+ __pyx_t_10 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_9, function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_10 = 1;
}
}
- __pyx_t_10 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_8, ((PyObject *)__pyx_v_frame_obj->f_globals)) : __Pyx_PyObject_CallOneArg(__pyx_t_9, ((PyObject *)__pyx_v_frame_obj->f_globals));
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 728, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_frame_obj->f_globals)};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 728, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":729
* # print('Using frame eval break for', frame_obj.f_code.co_name)
@@ -13106,10 +15882,10 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* old = frame_obj.f_code
* frame_obj.f_code = func_code_info.new_code
*/
- __pyx_t_10 = __pyx_v_func_code_info->new_code;
- __Pyx_INCREF(__pyx_t_10);
- Py_INCREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_7 = __pyx_v_func_code_info->new_code;
+ __Pyx_INCREF(__pyx_t_7);
+ Py_INCREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":730
* update_globals_dict( frame_obj.f_globals)
@@ -13118,10 +15894,10 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* frame_obj.f_code = func_code_info.new_code
* Py_DECREF(old)
*/
- __pyx_t_10 = ((PyObject *)__pyx_v_frame_obj->f_code);
- __Pyx_INCREF(__pyx_t_10);
- __pyx_v_old = __pyx_t_10;
- __pyx_t_10 = 0;
+ __pyx_t_7 = ((PyObject *)__pyx_v_frame_obj->f_code);
+ __Pyx_INCREF(__pyx_t_7);
+ __pyx_v_old = __pyx_t_7;
+ __pyx_t_7 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":731
* Py_INCREF(func_code_info.new_code)
@@ -13161,24 +15937,31 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
* finally:
*/
/*else*/ {
- __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_update_globals_dict); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 737, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_8 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
- __Pyx_INCREF(__pyx_t_8);
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_update_globals_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 737, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_2 = NULL;
+ __pyx_t_10 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_9, function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ __pyx_t_10 = 1;
}
}
- __pyx_t_10 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_8, ((PyObject *)__pyx_v_frame_obj->f_globals)) : __Pyx_PyObject_CallOneArg(__pyx_t_9, ((PyObject *)__pyx_v_frame_obj->f_globals));
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 737, __pyx_L23_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_frame_obj->f_globals)};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 737, __pyx_L23_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
__pyx_L55:;
@@ -13228,20 +16011,20 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
- __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
- if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5);
- __Pyx_XGOTREF(__pyx_t_7);
+ if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_5);
+ __Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_17);
- __pyx_t_11 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
+ __pyx_t_10 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
{
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":740
@@ -13268,12 +16051,12 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
}
- __Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_ErrRestore(__pyx_t_7, __pyx_t_6, __pyx_t_5);
- __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
- __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
+ __Pyx_XGIVEREF(__pyx_t_4);
+ __Pyx_ErrRestore(__pyx_t_6, __pyx_t_5, __pyx_t_4);
+ __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
+ __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
goto __pyx_L1_error;
}
__pyx_L22_return: {
@@ -13323,11 +16106,11 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_WriteUnraisable("_pydevd_frame_eval.pydevd_frame_evaluator.get_bytecode_while_frame_eval_39", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
- __pyx_r = 0;
+ __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_bytecode_while_frame_eval_39", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_thread_info);
__Pyx_XDECREF((PyObject *)__pyx_v_additional_info);
@@ -13348,70 +16131,114 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytec
*/
/* Python wrapper */
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_21__pyx_unpickle_ThreadInfo(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_21__pyx_unpickle_ThreadInfo = {"__pyx_unpickle_ThreadInfo", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_21__pyx_unpickle_ThreadInfo, METH_VARARGS|METH_KEYWORDS, 0};
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_21__pyx_unpickle_ThreadInfo(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_21__pyx_unpickle_ThreadInfo(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_21__pyx_unpickle_ThreadInfo = {"__pyx_unpickle_ThreadInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_21__pyx_unpickle_ThreadInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_21__pyx_unpickle_ThreadInfo(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
PyObject *__pyx_v___pyx_type = 0;
long __pyx_v___pyx_checksum;
PyObject *__pyx_v___pyx_state = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[3] = {0,0,0};
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__pyx_unpickle_ThreadInfo (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
+ if (__pyx_kwds) {
Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+ switch (__pyx_nargs) {
+ case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ThreadInfo", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
+ if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ThreadInfo", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_ThreadInfo") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_ThreadInfo") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+ } else if (unlikely(__pyx_nargs != 3)) {
goto __pyx_L5_argtuple_error;
} else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
}
__pyx_v___pyx_type = values[0];
__pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
__pyx_v___pyx_state = values[2];
}
- goto __pyx_L4_argument_unpacking_done;
+ goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ThreadInfo", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ThreadInfo", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 1, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle_ThreadInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
@@ -13419,6 +16246,12 @@ static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_21__pyx_
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_20__pyx_unpickle_ThreadInfo(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);
/* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -13430,129 +16263,116 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_20__pyx_
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_t_2;
- int __pyx_t_3;
+ PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
+ int __pyx_t_5;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__pyx_unpickle_ThreadInfo", 0);
+ __Pyx_RefNannySetupContext("__pyx_unpickle_ThreadInfo", 1);
/* "(tree fragment)":4
* cdef object __pyx_PickleError
* cdef object __pyx_result
- * if __pyx_checksum not in (0x0af4089, 0xe535b68, 0xb8148ba): # <<<<<<<<<<<<<<
+ * if __pyx_checksum not in (0xe535b68, 0xb8148ba, 0x0af4089): # <<<<<<<<<<<<<<
* from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x0af4089, 0xe535b68, 0xb8148ba) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe535b68, 0xb8148ba, 0x0af4089) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum
*/
__pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__6, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__6, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_3 = (__pyx_t_2 != 0);
- if (__pyx_t_3) {
+ if (__pyx_t_2) {
/* "(tree fragment)":5
* cdef object __pyx_result
- * if __pyx_checksum not in (0x0af4089, 0xe535b68, 0xb8148ba):
+ * if __pyx_checksum not in (0xe535b68, 0xb8148ba, 0x0af4089):
* from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<<
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x0af4089, 0xe535b68, 0xb8148ba) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe535b68, 0xb8148ba, 0x0af4089) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum
* __pyx_result = ThreadInfo.__new__(__pyx_type)
*/
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_n_s_PickleError);
__Pyx_GIVEREF(__pyx_n_s_PickleError);
- PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError);
- __pyx_t_4 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, -1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_t_1);
__pyx_v___pyx_PickleError = __pyx_t_1;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "(tree fragment)":6
- * if __pyx_checksum not in (0x0af4089, 0xe535b68, 0xb8148ba):
+ * if __pyx_checksum not in (0xe535b68, 0xb8148ba, 0x0af4089):
* from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x0af4089, 0xe535b68, 0xb8148ba) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum) # <<<<<<<<<<<<<<
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe535b68, 0xb8148ba, 0x0af4089) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum # <<<<<<<<<<<<<<
* __pyx_result = ThreadInfo.__new__(__pyx_type)
* if __pyx_state is not None:
*/
- __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_INCREF(__pyx_v___pyx_PickleError);
- __pyx_t_1 = __pyx_v___pyx_PickleError; __pyx_t_6 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_6)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_6);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
- }
- }
- __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_Raise(__pyx_t_4, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(1, 6, __pyx_L1_error)
/* "(tree fragment)":4
* cdef object __pyx_PickleError
* cdef object __pyx_result
- * if __pyx_checksum not in (0x0af4089, 0xe535b68, 0xb8148ba): # <<<<<<<<<<<<<<
+ * if __pyx_checksum not in (0xe535b68, 0xb8148ba, 0x0af4089): # <<<<<<<<<<<<<<
* from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x0af4089, 0xe535b68, 0xb8148ba) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe535b68, 0xb8148ba, 0x0af4089) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum
*/
}
/* "(tree fragment)":7
* from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x0af4089, 0xe535b68, 0xb8148ba) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe535b68, 0xb8148ba, 0x0af4089) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum
* __pyx_result = ThreadInfo.__new__(__pyx_type) # <<<<<<<<<<<<<<
* if __pyx_state is not None:
* __pyx_unpickle_ThreadInfo__set_state( __pyx_result, __pyx_state)
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo), __pyx_n_s_new); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_5);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
}
}
- __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v___pyx_type);
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 7, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v___pyx_result = __pyx_t_4;
- __pyx_t_4 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_v___pyx_result = __pyx_t_1;
+ __pyx_t_1 = 0;
/* "(tree fragment)":8
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x0af4089, 0xe535b68, 0xb8148ba) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe535b68, 0xb8148ba, 0x0af4089) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum
* __pyx_result = ThreadInfo.__new__(__pyx_type)
* if __pyx_state is not None: # <<<<<<<<<<<<<<
* __pyx_unpickle_ThreadInfo__set_state( __pyx_result, __pyx_state)
* return __pyx_result
*/
- __pyx_t_3 = (__pyx_v___pyx_state != Py_None);
- __pyx_t_2 = (__pyx_t_3 != 0);
+ __pyx_t_2 = (__pyx_v___pyx_state != Py_None);
if (__pyx_t_2) {
/* "(tree fragment)":9
@@ -13562,13 +16382,13 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_20__pyx_
* return __pyx_result
* cdef __pyx_unpickle_ThreadInfo__set_state(ThreadInfo __pyx_result, tuple __pyx_state):
*/
- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
- __pyx_t_4 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle_ThreadInfo__set_state(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 9, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 9, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle_ThreadInfo__set_state(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 9, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "(tree fragment)":8
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x0af4089, 0xe535b68, 0xb8148ba) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe535b68, 0xb8148ba, 0x0af4089) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum
* __pyx_result = ThreadInfo.__new__(__pyx_type)
* if __pyx_state is not None: # <<<<<<<<<<<<<<
* __pyx_unpickle_ThreadInfo__set_state( __pyx_result, __pyx_state)
@@ -13597,9 +16417,8 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_20__pyx_
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle_ThreadInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -13626,14 +16445,13 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
int __pyx_t_3;
Py_ssize_t __pyx_t_4;
int __pyx_t_5;
- int __pyx_t_6;
+ PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__pyx_unpickle_ThreadInfo__set_state", 0);
+ __Pyx_RefNannySetupContext("__pyx_unpickle_ThreadInfo__set_state", 1);
/* "(tree fragment)":12
* return __pyx_result
@@ -13659,8 +16477,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
__Pyx_GOTREF(__pyx_t_1);
if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(1, 12, __pyx_L1_error)
__Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v___pyx_result->additional_info);
- __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->additional_info));
+ __Pyx_GOTREF((PyObject *)__pyx_v___pyx_result->additional_info);
+ __Pyx_DECREF((PyObject *)__pyx_v___pyx_result->additional_info);
__pyx_v___pyx_result->additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_1);
__pyx_t_1 = 0;
if (unlikely(__pyx_v___pyx_state == Py_None)) {
@@ -13721,16 +16539,15 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
__PYX_ERR(1, 13, __pyx_L1_error)
}
- __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
- __pyx_t_5 = ((__pyx_t_4 > 7) != 0);
+ __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
+ __pyx_t_5 = (__pyx_t_4 > 7);
if (__pyx_t_5) {
} else {
__pyx_t_2 = __pyx_t_5;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
- __pyx_t_6 = (__pyx_t_5 != 0);
- __pyx_t_2 = __pyx_t_6;
+ __pyx_t_2 = __pyx_t_5;
__pyx_L4_bool_binop_done:;
if (__pyx_t_2) {
@@ -13739,33 +16556,40 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
* if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'):
* __pyx_result.__dict__.update(__pyx_state[7]) # <<<<<<<<<<<<<<
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(__pyx_v___pyx_state == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(1, 14, __pyx_L1_error)
}
- __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 7, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_9 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_9)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_9);
+ __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 7, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = NULL;
+ __pyx_t_3 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_3 = 1;
}
}
- __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_6};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_3, 1+__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "(tree fragment)":13
@@ -13789,9 +16613,9 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle_ThreadInfo__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
@@ -13807,70 +16631,114 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
*/
/* Python wrapper */
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_23__pyx_unpickle_FuncCodeInfo(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_23__pyx_unpickle_FuncCodeInfo = {"__pyx_unpickle_FuncCodeInfo", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_23__pyx_unpickle_FuncCodeInfo, METH_VARARGS|METH_KEYWORDS, 0};
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_23__pyx_unpickle_FuncCodeInfo(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_23__pyx_unpickle_FuncCodeInfo(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_23__pyx_unpickle_FuncCodeInfo = {"__pyx_unpickle_FuncCodeInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_23__pyx_unpickle_FuncCodeInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_23__pyx_unpickle_FuncCodeInfo(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
PyObject *__pyx_v___pyx_type = 0;
long __pyx_v___pyx_checksum;
PyObject *__pyx_v___pyx_state = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[3] = {0,0,0};
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__pyx_unpickle_FuncCodeInfo (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
+ if (__pyx_kwds) {
Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+ switch (__pyx_nargs) {
+ case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FuncCodeInfo", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
+ if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FuncCodeInfo", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_FuncCodeInfo") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_FuncCodeInfo") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+ } else if (unlikely(__pyx_nargs != 3)) {
goto __pyx_L5_argtuple_error;
} else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
}
__pyx_v___pyx_type = values[0];
__pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
__pyx_v___pyx_state = values[2];
}
- goto __pyx_L4_argument_unpacking_done;
+ goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FuncCodeInfo", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FuncCodeInfo", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 1, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle_FuncCodeInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
@@ -13878,6 +16746,12 @@ static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_23__pyx_
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_22__pyx_unpickle_FuncCodeInfo(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);
/* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -13889,129 +16763,116 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_22__pyx_
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_t_2;
- int __pyx_t_3;
+ PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
+ int __pyx_t_5;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__pyx_unpickle_FuncCodeInfo", 0);
+ __Pyx_RefNannySetupContext("__pyx_unpickle_FuncCodeInfo", 1);
/* "(tree fragment)":4
* cdef object __pyx_PickleError
* cdef object __pyx_result
- * if __pyx_checksum not in (0xb3ee05d, 0x450d2d6, 0x956dcaa): # <<<<<<<<<<<<<<
+ * if __pyx_checksum not in (0x450d2d6, 0x956dcaa, 0xb3ee05d): # <<<<<<<<<<<<<<
* from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0xb3ee05d, 0x450d2d6, 0x956dcaa) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x450d2d6, 0x956dcaa, 0xb3ee05d) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum
*/
__pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__7, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__7, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_3 = (__pyx_t_2 != 0);
- if (__pyx_t_3) {
+ if (__pyx_t_2) {
/* "(tree fragment)":5
* cdef object __pyx_result
- * if __pyx_checksum not in (0xb3ee05d, 0x450d2d6, 0x956dcaa):
+ * if __pyx_checksum not in (0x450d2d6, 0x956dcaa, 0xb3ee05d):
* from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<<
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0xb3ee05d, 0x450d2d6, 0x956dcaa) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x450d2d6, 0x956dcaa, 0xb3ee05d) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum
* __pyx_result = FuncCodeInfo.__new__(__pyx_type)
*/
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_n_s_PickleError);
__Pyx_GIVEREF(__pyx_n_s_PickleError);
- PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError);
- __pyx_t_4 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, -1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_t_1);
__pyx_v___pyx_PickleError = __pyx_t_1;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "(tree fragment)":6
- * if __pyx_checksum not in (0xb3ee05d, 0x450d2d6, 0x956dcaa):
+ * if __pyx_checksum not in (0x450d2d6, 0x956dcaa, 0xb3ee05d):
* from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0xb3ee05d, 0x450d2d6, 0x956dcaa) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum) # <<<<<<<<<<<<<<
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x450d2d6, 0x956dcaa, 0xb3ee05d) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum # <<<<<<<<<<<<<<
* __pyx_result = FuncCodeInfo.__new__(__pyx_type)
* if __pyx_state is not None:
*/
- __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_INCREF(__pyx_v___pyx_PickleError);
- __pyx_t_1 = __pyx_v___pyx_PickleError; __pyx_t_6 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_6)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_6);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
- }
- }
- __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_Raise(__pyx_t_4, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(1, 6, __pyx_L1_error)
/* "(tree fragment)":4
* cdef object __pyx_PickleError
* cdef object __pyx_result
- * if __pyx_checksum not in (0xb3ee05d, 0x450d2d6, 0x956dcaa): # <<<<<<<<<<<<<<
+ * if __pyx_checksum not in (0x450d2d6, 0x956dcaa, 0xb3ee05d): # <<<<<<<<<<<<<<
* from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0xb3ee05d, 0x450d2d6, 0x956dcaa) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x450d2d6, 0x956dcaa, 0xb3ee05d) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum
*/
}
/* "(tree fragment)":7
* from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0xb3ee05d, 0x450d2d6, 0x956dcaa) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x450d2d6, 0x956dcaa, 0xb3ee05d) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum
* __pyx_result = FuncCodeInfo.__new__(__pyx_type) # <<<<<<<<<<<<<<
* if __pyx_state is not None:
* __pyx_unpickle_FuncCodeInfo__set_state( __pyx_result, __pyx_state)
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo), __pyx_n_s_new); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_5);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
}
}
- __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v___pyx_type);
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 7, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v___pyx_result = __pyx_t_4;
- __pyx_t_4 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_v___pyx_result = __pyx_t_1;
+ __pyx_t_1 = 0;
/* "(tree fragment)":8
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0xb3ee05d, 0x450d2d6, 0x956dcaa) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x450d2d6, 0x956dcaa, 0xb3ee05d) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum
* __pyx_result = FuncCodeInfo.__new__(__pyx_type)
* if __pyx_state is not None: # <<<<<<<<<<<<<<
* __pyx_unpickle_FuncCodeInfo__set_state( __pyx_result, __pyx_state)
* return __pyx_result
*/
- __pyx_t_3 = (__pyx_v___pyx_state != Py_None);
- __pyx_t_2 = (__pyx_t_3 != 0);
+ __pyx_t_2 = (__pyx_v___pyx_state != Py_None);
if (__pyx_t_2) {
/* "(tree fragment)":9
@@ -14021,13 +16882,13 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_22__pyx_
* return __pyx_result
* cdef __pyx_unpickle_FuncCodeInfo__set_state(FuncCodeInfo __pyx_result, tuple __pyx_state):
*/
- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
- __pyx_t_4 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle_FuncCodeInfo__set_state(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 9, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 9, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle_FuncCodeInfo__set_state(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 9, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "(tree fragment)":8
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0xb3ee05d, 0x450d2d6, 0x956dcaa) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x450d2d6, 0x956dcaa, 0xb3ee05d) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum
* __pyx_result = FuncCodeInfo.__new__(__pyx_type)
* if __pyx_state is not None: # <<<<<<<<<<<<<<
* __pyx_unpickle_FuncCodeInfo__set_state( __pyx_result, __pyx_state)
@@ -14056,9 +16917,8 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_22__pyx_
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle_FuncCodeInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -14085,14 +16945,13 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
int __pyx_t_3;
Py_ssize_t __pyx_t_4;
int __pyx_t_5;
- int __pyx_t_6;
+ PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__pyx_unpickle_FuncCodeInfo__set_state", 0);
+ __Pyx_RefNannySetupContext("__pyx_unpickle_FuncCodeInfo__set_state", 1);
/* "(tree fragment)":12
* return __pyx_result
@@ -14134,7 +16993,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
}
__pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
+ if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error)
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v___pyx_result->canonical_normalized_filename);
__Pyx_DECREF(__pyx_v___pyx_result->canonical_normalized_filename);
@@ -14146,7 +17005,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
}
__pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
+ if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error)
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v___pyx_result->co_filename);
__Pyx_DECREF(__pyx_v___pyx_result->co_filename);
@@ -14158,7 +17017,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
}
__pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
+ if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error)
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v___pyx_result->co_name);
__Pyx_DECREF(__pyx_v___pyx_result->co_name);
@@ -14186,16 +17045,15 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
__PYX_ERR(1, 13, __pyx_L1_error)
}
- __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
- __pyx_t_5 = ((__pyx_t_4 > 7) != 0);
+ __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
+ __pyx_t_5 = (__pyx_t_4 > 7);
if (__pyx_t_5) {
} else {
__pyx_t_2 = __pyx_t_5;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
- __pyx_t_6 = (__pyx_t_5 != 0);
- __pyx_t_2 = __pyx_t_6;
+ __pyx_t_2 = __pyx_t_5;
__pyx_L4_bool_binop_done:;
if (__pyx_t_2) {
@@ -14204,33 +17062,40 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
* if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'):
* __pyx_result.__dict__.update(__pyx_state[7]) # <<<<<<<<<<<<<<
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(__pyx_v___pyx_state == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(1, 14, __pyx_L1_error)
}
- __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 7, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_9 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_9)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_9);
+ __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 7, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = NULL;
+ __pyx_t_3 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_3 = 1;
}
}
- __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_6};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_3, 1+__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "(tree fragment)":13
@@ -14254,9 +17119,9 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle_FuncCodeInfo__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
@@ -14272,70 +17137,114 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
*/
/* Python wrapper */
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_25__pyx_unpickle__CodeLineInfo(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_25__pyx_unpickle__CodeLineInfo = {"__pyx_unpickle__CodeLineInfo", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_25__pyx_unpickle__CodeLineInfo, METH_VARARGS|METH_KEYWORDS, 0};
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_25__pyx_unpickle__CodeLineInfo(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v___pyx_type = 0;
- long __pyx_v___pyx_checksum;
- PyObject *__pyx_v___pyx_state = 0;
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_25__pyx_unpickle__CodeLineInfo(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_25__pyx_unpickle__CodeLineInfo = {"__pyx_unpickle__CodeLineInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_25__pyx_unpickle__CodeLineInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_25__pyx_unpickle__CodeLineInfo(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v___pyx_type = 0;
+ long __pyx_v___pyx_checksum;
+ PyObject *__pyx_v___pyx_state = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[3] = {0,0,0};
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__pyx_unpickle__CodeLineInfo (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
+ if (__pyx_kwds) {
Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+ switch (__pyx_nargs) {
+ case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("__pyx_unpickle__CodeLineInfo", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
+ if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("__pyx_unpickle__CodeLineInfo", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle__CodeLineInfo") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle__CodeLineInfo") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+ } else if (unlikely(__pyx_nargs != 3)) {
goto __pyx_L5_argtuple_error;
} else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
}
__pyx_v___pyx_type = values[0];
__pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
__pyx_v___pyx_state = values[2];
}
- goto __pyx_L4_argument_unpacking_done;
+ goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__CodeLineInfo", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__CodeLineInfo", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 1, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle__CodeLineInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
@@ -14343,6 +17252,12 @@ static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_25__pyx_
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_24__pyx_unpickle__CodeLineInfo(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);
/* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -14354,129 +17269,116 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_24__pyx_
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_t_2;
- int __pyx_t_3;
+ PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
+ int __pyx_t_5;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__pyx_unpickle__CodeLineInfo", 0);
+ __Pyx_RefNannySetupContext("__pyx_unpickle__CodeLineInfo", 1);
/* "(tree fragment)":4
* cdef object __pyx_PickleError
* cdef object __pyx_result
- * if __pyx_checksum not in (0x3fbbd02, 0x5a9bcd5, 0x0267473): # <<<<<<<<<<<<<<
+ * if __pyx_checksum not in (0x5a9bcd5, 0x0267473, 0x3fbbd02): # <<<<<<<<<<<<<<
* from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x3fbbd02, 0x5a9bcd5, 0x0267473) = (first_line, last_line, line_to_offset))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x5a9bcd5, 0x0267473, 0x3fbbd02) = (first_line, last_line, line_to_offset))" % __pyx_checksum
*/
__pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__8, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__8, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_3 = (__pyx_t_2 != 0);
- if (__pyx_t_3) {
+ if (__pyx_t_2) {
/* "(tree fragment)":5
* cdef object __pyx_result
- * if __pyx_checksum not in (0x3fbbd02, 0x5a9bcd5, 0x0267473):
+ * if __pyx_checksum not in (0x5a9bcd5, 0x0267473, 0x3fbbd02):
* from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<<
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x3fbbd02, 0x5a9bcd5, 0x0267473) = (first_line, last_line, line_to_offset))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x5a9bcd5, 0x0267473, 0x3fbbd02) = (first_line, last_line, line_to_offset))" % __pyx_checksum
* __pyx_result = _CodeLineInfo.__new__(__pyx_type)
*/
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_n_s_PickleError);
__Pyx_GIVEREF(__pyx_n_s_PickleError);
- PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError);
- __pyx_t_4 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, -1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_t_1);
__pyx_v___pyx_PickleError = __pyx_t_1;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "(tree fragment)":6
- * if __pyx_checksum not in (0x3fbbd02, 0x5a9bcd5, 0x0267473):
+ * if __pyx_checksum not in (0x5a9bcd5, 0x0267473, 0x3fbbd02):
* from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x3fbbd02, 0x5a9bcd5, 0x0267473) = (first_line, last_line, line_to_offset))" % __pyx_checksum) # <<<<<<<<<<<<<<
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x5a9bcd5, 0x0267473, 0x3fbbd02) = (first_line, last_line, line_to_offset))" % __pyx_checksum # <<<<<<<<<<<<<<
* __pyx_result = _CodeLineInfo.__new__(__pyx_type)
* if __pyx_state is not None:
*/
- __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_INCREF(__pyx_v___pyx_PickleError);
- __pyx_t_1 = __pyx_v___pyx_PickleError; __pyx_t_6 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_6)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_6);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
- }
- }
- __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_Raise(__pyx_t_4, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(1, 6, __pyx_L1_error)
/* "(tree fragment)":4
* cdef object __pyx_PickleError
* cdef object __pyx_result
- * if __pyx_checksum not in (0x3fbbd02, 0x5a9bcd5, 0x0267473): # <<<<<<<<<<<<<<
+ * if __pyx_checksum not in (0x5a9bcd5, 0x0267473, 0x3fbbd02): # <<<<<<<<<<<<<<
* from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x3fbbd02, 0x5a9bcd5, 0x0267473) = (first_line, last_line, line_to_offset))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x5a9bcd5, 0x0267473, 0x3fbbd02) = (first_line, last_line, line_to_offset))" % __pyx_checksum
*/
}
/* "(tree fragment)":7
* from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x3fbbd02, 0x5a9bcd5, 0x0267473) = (first_line, last_line, line_to_offset))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x5a9bcd5, 0x0267473, 0x3fbbd02) = (first_line, last_line, line_to_offset))" % __pyx_checksum
* __pyx_result = _CodeLineInfo.__new__(__pyx_type) # <<<<<<<<<<<<<<
* if __pyx_state is not None:
* __pyx_unpickle__CodeLineInfo__set_state(<_CodeLineInfo> __pyx_result, __pyx_state)
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo), __pyx_n_s_new); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_5);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
}
}
- __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v___pyx_type);
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 7, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v___pyx_result = __pyx_t_4;
- __pyx_t_4 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_v___pyx_result = __pyx_t_1;
+ __pyx_t_1 = 0;
/* "(tree fragment)":8
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x3fbbd02, 0x5a9bcd5, 0x0267473) = (first_line, last_line, line_to_offset))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x5a9bcd5, 0x0267473, 0x3fbbd02) = (first_line, last_line, line_to_offset))" % __pyx_checksum
* __pyx_result = _CodeLineInfo.__new__(__pyx_type)
* if __pyx_state is not None: # <<<<<<<<<<<<<<
* __pyx_unpickle__CodeLineInfo__set_state(<_CodeLineInfo> __pyx_result, __pyx_state)
* return __pyx_result
*/
- __pyx_t_3 = (__pyx_v___pyx_state != Py_None);
- __pyx_t_2 = (__pyx_t_3 != 0);
+ __pyx_t_2 = (__pyx_v___pyx_state != Py_None);
if (__pyx_t_2) {
/* "(tree fragment)":9
@@ -14486,13 +17388,13 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_24__pyx_
* return __pyx_result
* cdef __pyx_unpickle__CodeLineInfo__set_state(_CodeLineInfo __pyx_result, tuple __pyx_state):
*/
- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
- __pyx_t_4 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle__CodeLineInfo__set_state(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 9, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 9, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle__CodeLineInfo__set_state(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 9, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "(tree fragment)":8
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x3fbbd02, 0x5a9bcd5, 0x0267473) = (first_line, last_line, line_to_offset))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x5a9bcd5, 0x0267473, 0x3fbbd02) = (first_line, last_line, line_to_offset))" % __pyx_checksum
* __pyx_result = _CodeLineInfo.__new__(__pyx_type)
* if __pyx_state is not None: # <<<<<<<<<<<<<<
* __pyx_unpickle__CodeLineInfo__set_state(<_CodeLineInfo> __pyx_result, __pyx_state)
@@ -14521,9 +17423,8 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_24__pyx_
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle__CodeLineInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -14550,14 +17451,13 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
int __pyx_t_3;
Py_ssize_t __pyx_t_4;
int __pyx_t_5;
- int __pyx_t_6;
+ PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__pyx_unpickle__CodeLineInfo__set_state", 0);
+ __Pyx_RefNannySetupContext("__pyx_unpickle__CodeLineInfo__set_state", 1);
/* "(tree fragment)":12
* return __pyx_result
@@ -14590,7 +17490,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
}
__pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
+ if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error)
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v___pyx_result->line_to_offset);
__Pyx_DECREF(__pyx_v___pyx_result->line_to_offset);
@@ -14607,16 +17507,15 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
__PYX_ERR(1, 13, __pyx_L1_error)
}
- __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
- __pyx_t_5 = ((__pyx_t_4 > 3) != 0);
+ __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
+ __pyx_t_5 = (__pyx_t_4 > 3);
if (__pyx_t_5) {
} else {
__pyx_t_3 = __pyx_t_5;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
- __pyx_t_6 = (__pyx_t_5 != 0);
- __pyx_t_3 = __pyx_t_6;
+ __pyx_t_3 = __pyx_t_5;
__pyx_L4_bool_binop_done:;
if (__pyx_t_3) {
@@ -14625,33 +17524,40 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
* if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
* __pyx_result.__dict__.update(__pyx_state[3]) # <<<<<<<<<<<<<<
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(__pyx_v___pyx_state == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(1, 14, __pyx_L1_error)
}
- __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_9 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_9)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_9);
+ __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = NULL;
+ __pyx_t_2 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_2 = 1;
}
}
- __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_6};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_2, 1+__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "(tree fragment)":13
@@ -14675,9 +17581,9 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle__CodeLineInfo__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
@@ -14693,70 +17599,114 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
*/
/* Python wrapper */
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_27__pyx_unpickle__CacheValue(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_27__pyx_unpickle__CacheValue = {"__pyx_unpickle__CacheValue", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_27__pyx_unpickle__CacheValue, METH_VARARGS|METH_KEYWORDS, 0};
-static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_27__pyx_unpickle__CacheValue(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_27__pyx_unpickle__CacheValue(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_27__pyx_unpickle__CacheValue = {"__pyx_unpickle__CacheValue", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_27__pyx_unpickle__CacheValue, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_27__pyx_unpickle__CacheValue(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
PyObject *__pyx_v___pyx_type = 0;
long __pyx_v___pyx_checksum;
PyObject *__pyx_v___pyx_state = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[3] = {0,0,0};
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__pyx_unpickle__CacheValue (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
+ if (__pyx_kwds) {
Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+ switch (__pyx_nargs) {
+ case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("__pyx_unpickle__CacheValue", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
+ if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("__pyx_unpickle__CacheValue", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle__CacheValue") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle__CacheValue") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+ } else if (unlikely(__pyx_nargs != 3)) {
goto __pyx_L5_argtuple_error;
} else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
}
__pyx_v___pyx_type = values[0];
__pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
__pyx_v___pyx_state = values[2];
}
- goto __pyx_L4_argument_unpacking_done;
+ goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__CacheValue", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__CacheValue", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 1, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle__CacheValue", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
@@ -14764,6 +17714,12 @@ static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_27__pyx_
__pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_26__pyx_unpickle__CacheValue(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);
/* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
@@ -14775,129 +17731,116 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_26__pyx_
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_t_2;
- int __pyx_t_3;
+ PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
+ int __pyx_t_5;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__pyx_unpickle__CacheValue", 0);
+ __Pyx_RefNannySetupContext("__pyx_unpickle__CacheValue", 1);
/* "(tree fragment)":4
* cdef object __pyx_PickleError
* cdef object __pyx_result
- * if __pyx_checksum not in (0x3d481b9, 0xac42a46, 0xedff7c3): # <<<<<<<<<<<<<<
+ * if __pyx_checksum not in (0xac42a46, 0xedff7c3, 0x3d481b9): # <<<<<<<<<<<<<<
* from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x3d481b9, 0xac42a46, 0xedff7c3) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xac42a46, 0xedff7c3, 0x3d481b9) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum
*/
__pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__9, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__9, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_3 = (__pyx_t_2 != 0);
- if (__pyx_t_3) {
+ if (__pyx_t_2) {
/* "(tree fragment)":5
* cdef object __pyx_result
- * if __pyx_checksum not in (0x3d481b9, 0xac42a46, 0xedff7c3):
+ * if __pyx_checksum not in (0xac42a46, 0xedff7c3, 0x3d481b9):
* from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<<
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x3d481b9, 0xac42a46, 0xedff7c3) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xac42a46, 0xedff7c3, 0x3d481b9) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum
* __pyx_result = _CacheValue.__new__(__pyx_type)
*/
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_n_s_PickleError);
__Pyx_GIVEREF(__pyx_n_s_PickleError);
- PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError);
- __pyx_t_4 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, -1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_t_1);
__pyx_v___pyx_PickleError = __pyx_t_1;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "(tree fragment)":6
- * if __pyx_checksum not in (0x3d481b9, 0xac42a46, 0xedff7c3):
+ * if __pyx_checksum not in (0xac42a46, 0xedff7c3, 0x3d481b9):
* from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x3d481b9, 0xac42a46, 0xedff7c3) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum) # <<<<<<<<<<<<<<
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xac42a46, 0xedff7c3, 0x3d481b9) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum # <<<<<<<<<<<<<<
* __pyx_result = _CacheValue.__new__(__pyx_type)
* if __pyx_state is not None:
*/
- __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_INCREF(__pyx_v___pyx_PickleError);
- __pyx_t_1 = __pyx_v___pyx_PickleError; __pyx_t_6 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_6)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_6);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
- }
- }
- __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_Raise(__pyx_t_4, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(1, 6, __pyx_L1_error)
/* "(tree fragment)":4
* cdef object __pyx_PickleError
* cdef object __pyx_result
- * if __pyx_checksum not in (0x3d481b9, 0xac42a46, 0xedff7c3): # <<<<<<<<<<<<<<
+ * if __pyx_checksum not in (0xac42a46, 0xedff7c3, 0x3d481b9): # <<<<<<<<<<<<<<
* from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x3d481b9, 0xac42a46, 0xedff7c3) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xac42a46, 0xedff7c3, 0x3d481b9) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum
*/
}
/* "(tree fragment)":7
* from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x3d481b9, 0xac42a46, 0xedff7c3) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xac42a46, 0xedff7c3, 0x3d481b9) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum
* __pyx_result = _CacheValue.__new__(__pyx_type) # <<<<<<<<<<<<<<
* if __pyx_state is not None:
* __pyx_unpickle__CacheValue__set_state(<_CacheValue> __pyx_result, __pyx_state)
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue), __pyx_n_s_new); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_5);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
}
}
- __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v___pyx_type);
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 7, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v___pyx_result = __pyx_t_4;
- __pyx_t_4 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_v___pyx_result = __pyx_t_1;
+ __pyx_t_1 = 0;
/* "(tree fragment)":8
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x3d481b9, 0xac42a46, 0xedff7c3) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xac42a46, 0xedff7c3, 0x3d481b9) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum
* __pyx_result = _CacheValue.__new__(__pyx_type)
* if __pyx_state is not None: # <<<<<<<<<<<<<<
* __pyx_unpickle__CacheValue__set_state(<_CacheValue> __pyx_result, __pyx_state)
* return __pyx_result
*/
- __pyx_t_3 = (__pyx_v___pyx_state != Py_None);
- __pyx_t_2 = (__pyx_t_3 != 0);
+ __pyx_t_2 = (__pyx_v___pyx_state != Py_None);
if (__pyx_t_2) {
/* "(tree fragment)":9
@@ -14907,13 +17850,13 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_26__pyx_
* return __pyx_result
* cdef __pyx_unpickle__CacheValue__set_state(_CacheValue __pyx_result, tuple __pyx_state):
*/
- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
- __pyx_t_4 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle__CacheValue__set_state(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 9, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 9, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle__CacheValue__set_state(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 9, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "(tree fragment)":8
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x3d481b9, 0xac42a46, 0xedff7c3) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xac42a46, 0xedff7c3, 0x3d481b9) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum
* __pyx_result = _CacheValue.__new__(__pyx_type)
* if __pyx_state is not None: # <<<<<<<<<<<<<<
* __pyx_unpickle__CacheValue__set_state(<_CacheValue> __pyx_result, __pyx_state)
@@ -14942,9 +17885,8 @@ static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_26__pyx_
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle__CacheValue", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -14970,14 +17912,14 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
int __pyx_t_2;
Py_ssize_t __pyx_t_3;
int __pyx_t_4;
- int __pyx_t_5;
+ PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
+ int __pyx_t_8;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__pyx_unpickle__CacheValue__set_state", 0);
+ __Pyx_RefNannySetupContext("__pyx_unpickle__CacheValue__set_state", 1);
/* "(tree fragment)":12
* return __pyx_result
@@ -14992,7 +17934,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
}
__pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
+ if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("set", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error)
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v___pyx_result->breakpoints_hit_at_lines);
__Pyx_DECREF(__pyx_v___pyx_result->breakpoints_hit_at_lines);
@@ -15006,8 +17948,8 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
__Pyx_GOTREF(__pyx_t_1);
if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo))))) __PYX_ERR(1, 12, __pyx_L1_error)
__Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v___pyx_result->code_line_info);
- __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->code_line_info));
+ __Pyx_GOTREF((PyObject *)__pyx_v___pyx_result->code_line_info);
+ __Pyx_DECREF((PyObject *)__pyx_v___pyx_result->code_line_info);
__pyx_v___pyx_result->code_line_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_t_1);
__pyx_t_1 = 0;
if (unlikely(__pyx_v___pyx_state == Py_None)) {
@@ -15016,7 +17958,7 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
}
__pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
+ if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("set", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error)
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v___pyx_result->code_lines_as_set);
__Pyx_DECREF(__pyx_v___pyx_result->code_lines_as_set);
@@ -15044,16 +17986,15 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
__PYX_ERR(1, 13, __pyx_L1_error)
}
- __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
- __pyx_t_4 = ((__pyx_t_3 > 4) != 0);
+ __pyx_t_3 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
+ __pyx_t_4 = (__pyx_t_3 > 4);
if (__pyx_t_4) {
} else {
__pyx_t_2 = __pyx_t_4;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
- __pyx_t_5 = (__pyx_t_4 != 0);
- __pyx_t_2 = __pyx_t_5;
+ __pyx_t_2 = __pyx_t_4;
__pyx_L4_bool_binop_done:;
if (__pyx_t_2) {
@@ -15062,33 +18003,40 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
* if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
* __pyx_result.__dict__.update(__pyx_state[4]) # <<<<<<<<<<<<<<
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_update); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(__pyx_v___pyx_state == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(1, 14, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_8 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_8);
+ __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = NULL;
+ __pyx_t_8 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_7, function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ __pyx_t_8 = 1;
}
}
- __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ }
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "(tree fragment)":13
@@ -15112,9 +18060,9 @@ static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unp
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle__CacheValue__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
@@ -15127,12 +18075,17 @@ static struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator_Thr
static PyObject *__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *p;
PyObject *o;
- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
+ #if CYTHON_COMPILING_IN_LIMITED_API
+ allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
+ o = alloc_func(t, 0);
+ #else
+ if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
o = (*t->tp_alloc)(t, 0);
} else {
o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
}
if (unlikely(!o)) return 0;
+ #endif
p = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)o);
p->__pyx_vtab = __pyx_vtabptr_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo;
p->additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)Py_None); Py_INCREF(Py_None);
@@ -15143,14 +18096,23 @@ static PyObject *__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator_Thre
static void __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo(PyObject *o) {
struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *p = (struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)o;
#if CYTHON_USE_TP_FINALIZE
- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
- if (PyObject_CallFinalizerFromDealloc(o)) return;
+ if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
+ if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo) {
+ if (PyObject_CallFinalizerFromDealloc(o)) return;
+ }
}
#endif
PyObject_GC_UnTrack(o);
Py_CLEAR(p->additional_info);
Py_CLEAR(p->thread_trace_func);
+ #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
(*Py_TYPE(o)->tp_free)(o);
+ #else
+ {
+ freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
+ if (tp_free) tp_free(o);
+ }
+ #endif
}
static int __pyx_tp_traverse_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo(PyObject *o, visitproc v, void *a) {
@@ -15260,8 +18222,8 @@ static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadI
}
static PyMethodDef __pyx_methods_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo[] = {
- {"__reduce_cython__", (PyCFunction)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1__reduce_cython__, METH_NOARGS, 0},
- {"__setstate_cython__", (PyCFunction)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_3__setstate_cython__, METH_O, 0},
+ {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+ {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
{0, 0, 0, 0}
};
@@ -15274,10 +18236,28 @@ static struct PyGetSetDef __pyx_getsets_18_pydevd_frame_eval_22pydevd_frame_eval
{(char *)"force_stay_in_untraced_mode", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_force_stay_in_untraced_mode, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_force_stay_in_untraced_mode, (char *)0, 0},
{0, 0, 0, 0, 0}
};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo_slots[] = {
+ {Py_tp_dealloc, (void *)__pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo},
+ {Py_tp_traverse, (void *)__pyx_tp_traverse_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo},
+ {Py_tp_clear, (void *)__pyx_tp_clear_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo},
+ {Py_tp_methods, (void *)__pyx_methods_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo},
+ {Py_tp_getset, (void *)__pyx_getsets_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo},
+ {Py_tp_new, (void *)__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo},
+ {0, 0},
+};
+static PyType_Spec __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo_spec = {
+ "_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo",
+ sizeof(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo),
+ 0,
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
+ __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo_slots,
+};
+#else
static PyTypeObject __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo = {
PyVarObject_HEAD_INIT(0, 0)
- "_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo", /*tp_name*/
+ "_pydevd_frame_eval.pydevd_frame_evaluator.""ThreadInfo", /*tp_name*/
sizeof(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo), /*tp_basicsize*/
0, /*tp_itemsize*/
__pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo, /*tp_dealloc*/
@@ -15320,7 +18300,9 @@ static PyTypeObject __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_Thr
0, /*tp_dict*/
0, /*tp_descr_get*/
0, /*tp_descr_set*/
+ #if !CYTHON_USE_TYPE_SPECS
0, /*tp_dictoffset*/
+ #endif
0, /*tp_init*/
0, /*tp_alloc*/
__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo, /*tp_new*/
@@ -15334,28 +18316,41 @@ static PyTypeObject __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_Thr
0, /*tp_del*/
0, /*tp_version_tag*/
#if PY_VERSION_HEX >= 0x030400a1
+ #if CYTHON_USE_TP_FINALIZE
0, /*tp_finalize*/
+ #else
+ NULL, /*tp_finalize*/
+ #endif
#endif
#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
0, /*tp_vectorcall*/
#endif
- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ #if __PYX_NEED_TP_PRINT_SLOT == 1
0, /*tp_print*/
#endif
- #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
+ #if PY_VERSION_HEX >= 0x030C0000
+ 0, /*tp_watched*/
+ #endif
+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
0, /*tp_pypy_flags*/
#endif
};
+#endif
static PyObject *__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *p;
PyObject *o;
- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
+ #if CYTHON_COMPILING_IN_LIMITED_API
+ allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
+ o = alloc_func(t, 0);
+ #else
+ if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
o = (*t->tp_alloc)(t, 0);
} else {
o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
}
if (unlikely(!o)) return 0;
+ #endif
p = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)o);
p->co_filename = ((PyObject*)Py_None); Py_INCREF(Py_None);
p->co_name = ((PyObject*)Py_None); Py_INCREF(Py_None);
@@ -15367,8 +18362,10 @@ static PyObject *__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator_Func
static void __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo(PyObject *o) {
struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *p = (struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)o;
#if CYTHON_USE_TP_FINALIZE
- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
- if (PyObject_CallFinalizerFromDealloc(o)) return;
+ if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
+ if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo) {
+ if (PyObject_CallFinalizerFromDealloc(o)) return;
+ }
}
#endif
PyObject_GC_UnTrack(o);
@@ -15376,7 +18373,14 @@ static void __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncC
Py_CLEAR(p->co_name);
Py_CLEAR(p->canonical_normalized_filename);
Py_CLEAR(p->new_code);
+ #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
(*Py_TYPE(o)->tp_free)(o);
+ #else
+ {
+ freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
+ if (tp_free) tp_free(o);
+ }
+ #endif
}
static int __pyx_tp_traverse_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo(PyObject *o, visitproc v, void *a) {
@@ -15478,8 +18482,8 @@ static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCod
}
static PyMethodDef __pyx_methods_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo[] = {
- {"__reduce_cython__", (PyCFunction)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_3__reduce_cython__, METH_NOARGS, 0},
- {"__setstate_cython__", (PyCFunction)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_5__setstate_cython__, METH_O, 0},
+ {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+ {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
{0, 0, 0, 0}
};
@@ -15492,10 +18496,29 @@ static struct PyGetSetDef __pyx_getsets_18_pydevd_frame_eval_22pydevd_frame_eval
{(char *)"breakpoints_mtime", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_breakpoints_mtime, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_breakpoints_mtime, (char *)0, 0},
{0, 0, 0, 0, 0}
};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo_slots[] = {
+ {Py_tp_dealloc, (void *)__pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo},
+ {Py_tp_traverse, (void *)__pyx_tp_traverse_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo},
+ {Py_tp_clear, (void *)__pyx_tp_clear_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo},
+ {Py_tp_methods, (void *)__pyx_methods_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo},
+ {Py_tp_getset, (void *)__pyx_getsets_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo},
+ {Py_tp_init, (void *)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_1__init__},
+ {Py_tp_new, (void *)__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo},
+ {0, 0},
+};
+static PyType_Spec __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo_spec = {
+ "_pydevd_frame_eval.pydevd_frame_evaluator.FuncCodeInfo",
+ sizeof(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo),
+ 0,
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
+ __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo_slots,
+};
+#else
static PyTypeObject __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo = {
PyVarObject_HEAD_INIT(0, 0)
- "_pydevd_frame_eval.pydevd_frame_evaluator.FuncCodeInfo", /*tp_name*/
+ "_pydevd_frame_eval.pydevd_frame_evaluator.""FuncCodeInfo", /*tp_name*/
sizeof(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo), /*tp_basicsize*/
0, /*tp_itemsize*/
__pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo, /*tp_dealloc*/
@@ -15538,7 +18561,9 @@ static PyTypeObject __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_Fun
0, /*tp_dict*/
0, /*tp_descr_get*/
0, /*tp_descr_set*/
+ #if !CYTHON_USE_TYPE_SPECS
0, /*tp_dictoffset*/
+ #endif
__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_1__init__, /*tp_init*/
0, /*tp_alloc*/
__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo, /*tp_new*/
@@ -15552,28 +18577,41 @@ static PyTypeObject __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_Fun
0, /*tp_del*/
0, /*tp_version_tag*/
#if PY_VERSION_HEX >= 0x030400a1
+ #if CYTHON_USE_TP_FINALIZE
0, /*tp_finalize*/
+ #else
+ NULL, /*tp_finalize*/
+ #endif
#endif
#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
0, /*tp_vectorcall*/
#endif
- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ #if __PYX_NEED_TP_PRINT_SLOT == 1
0, /*tp_print*/
#endif
- #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
+ #if PY_VERSION_HEX >= 0x030C0000
+ 0, /*tp_watched*/
+ #endif
+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
0, /*tp_pypy_flags*/
#endif
};
+#endif
static PyObject *__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *p;
PyObject *o;
- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
+ #if CYTHON_COMPILING_IN_LIMITED_API
+ allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
+ o = alloc_func(t, 0);
+ #else
+ if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
o = (*t->tp_alloc)(t, 0);
} else {
o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
}
if (unlikely(!o)) return 0;
+ #endif
p = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)o);
p->line_to_offset = ((PyObject*)Py_None); Py_INCREF(Py_None);
return o;
@@ -15582,13 +18620,22 @@ static PyObject *__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator__Cod
static void __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo(PyObject *o) {
struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *p = (struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)o;
#if CYTHON_USE_TP_FINALIZE
- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
- if (PyObject_CallFinalizerFromDealloc(o)) return;
+ if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
+ if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo) {
+ if (PyObject_CallFinalizerFromDealloc(o)) return;
+ }
}
#endif
PyObject_GC_UnTrack(o);
Py_CLEAR(p->line_to_offset);
+ #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
(*Py_TYPE(o)->tp_free)(o);
+ #else
+ {
+ freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
+ if (tp_free) tp_free(o);
+ }
+ #endif
}
static int __pyx_tp_traverse_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo(PyObject *o, visitproc v, void *a) {
@@ -15651,8 +18698,8 @@ static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLi
}
static PyMethodDef __pyx_methods_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo[] = {
- {"__reduce_cython__", (PyCFunction)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_3__reduce_cython__, METH_NOARGS, 0},
- {"__setstate_cython__", (PyCFunction)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_5__setstate_cython__, METH_O, 0},
+ {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+ {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
{0, 0, 0, 0}
};
@@ -15662,10 +18709,29 @@ static struct PyGetSetDef __pyx_getsets_18_pydevd_frame_eval_22pydevd_frame_eval
{(char *)"last_line", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_last_line, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_last_line, (char *)0, 0},
{0, 0, 0, 0, 0}
};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo_slots[] = {
+ {Py_tp_dealloc, (void *)__pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo},
+ {Py_tp_traverse, (void *)__pyx_tp_traverse_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo},
+ {Py_tp_clear, (void *)__pyx_tp_clear_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo},
+ {Py_tp_methods, (void *)__pyx_methods_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo},
+ {Py_tp_getset, (void *)__pyx_getsets_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo},
+ {Py_tp_init, (void *)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_1__init__},
+ {Py_tp_new, (void *)__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo},
+ {0, 0},
+};
+static PyType_Spec __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo_spec = {
+ "_pydevd_frame_eval.pydevd_frame_evaluator._CodeLineInfo",
+ sizeof(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo),
+ 0,
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
+ __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo_slots,
+};
+#else
static PyTypeObject __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo = {
PyVarObject_HEAD_INIT(0, 0)
- "_pydevd_frame_eval.pydevd_frame_evaluator._CodeLineInfo", /*tp_name*/
+ "_pydevd_frame_eval.pydevd_frame_evaluator.""_CodeLineInfo", /*tp_name*/
sizeof(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo), /*tp_basicsize*/
0, /*tp_itemsize*/
__pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo, /*tp_dealloc*/
@@ -15708,7 +18774,9 @@ static PyTypeObject __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__Co
0, /*tp_dict*/
0, /*tp_descr_get*/
0, /*tp_descr_set*/
+ #if !CYTHON_USE_TYPE_SPECS
0, /*tp_dictoffset*/
+ #endif
__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_1__init__, /*tp_init*/
0, /*tp_alloc*/
__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo, /*tp_new*/
@@ -15722,29 +18790,42 @@ static PyTypeObject __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__Co
0, /*tp_del*/
0, /*tp_version_tag*/
#if PY_VERSION_HEX >= 0x030400a1
+ #if CYTHON_USE_TP_FINALIZE
0, /*tp_finalize*/
+ #else
+ NULL, /*tp_finalize*/
+ #endif
#endif
#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
0, /*tp_vectorcall*/
#endif
- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ #if __PYX_NEED_TP_PRINT_SLOT == 1
0, /*tp_print*/
#endif
- #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
+ #if PY_VERSION_HEX >= 0x030C0000
+ 0, /*tp_watched*/
+ #endif
+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
0, /*tp_pypy_flags*/
#endif
};
+#endif
static struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue __pyx_vtable_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue;
static PyObject *__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *p;
PyObject *o;
- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
+ #if CYTHON_COMPILING_IN_LIMITED_API
+ allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
+ o = alloc_func(t, 0);
+ #else
+ if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
o = (*t->tp_alloc)(t, 0);
} else {
o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
}
if (unlikely(!o)) return 0;
+ #endif
p = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)o);
p->__pyx_vtab = __pyx_vtabptr_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue;
p->code_obj_py = Py_None; Py_INCREF(Py_None);
@@ -15757,8 +18838,10 @@ static PyObject *__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator__Cac
static void __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue(PyObject *o) {
struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *p = (struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)o;
#if CYTHON_USE_TP_FINALIZE
- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
- if (PyObject_CallFinalizerFromDealloc(o)) return;
+ if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
+ if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue) {
+ if (PyObject_CallFinalizerFromDealloc(o)) return;
+ }
}
#endif
PyObject_GC_UnTrack(o);
@@ -15766,7 +18849,14 @@ static void __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator__Cach
Py_CLEAR(p->code_line_info);
Py_CLEAR(p->breakpoints_hit_at_lines);
Py_CLEAR(p->code_lines_as_set);
+ #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
(*Py_TYPE(o)->tp_free)(o);
+ #else
+ {
+ freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
+ if (tp_free) tp_free(o);
+ }
+ #endif
}
static int __pyx_tp_traverse_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue(PyObject *o, visitproc v, void *a) {
@@ -15858,9 +18948,8 @@ static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheV
}
static PyMethodDef __pyx_methods_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue[] = {
- {"compute_force_stay_in_untraced_mode", (PyCFunction)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_3compute_force_stay_in_untraced_mode, METH_O, __pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_2compute_force_stay_in_untraced_mode},
- {"__reduce_cython__", (PyCFunction)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_5__reduce_cython__, METH_NOARGS, 0},
- {"__setstate_cython__", (PyCFunction)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_7__setstate_cython__, METH_O, 0},
+ {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+ {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
{0, 0, 0, 0}
};
@@ -15871,10 +18960,29 @@ static struct PyGetSetDef __pyx_getsets_18_pydevd_frame_eval_22pydevd_frame_eval
{(char *)"code_lines_as_set", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_code_lines_as_set, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_code_lines_as_set, (char *)0, 0},
{0, 0, 0, 0, 0}
};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue_slots[] = {
+ {Py_tp_dealloc, (void *)__pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue},
+ {Py_tp_traverse, (void *)__pyx_tp_traverse_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue},
+ {Py_tp_clear, (void *)__pyx_tp_clear_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue},
+ {Py_tp_methods, (void *)__pyx_methods_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue},
+ {Py_tp_getset, (void *)__pyx_getsets_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue},
+ {Py_tp_init, (void *)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_1__init__},
+ {Py_tp_new, (void *)__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue},
+ {0, 0},
+};
+static PyType_Spec __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue_spec = {
+ "_pydevd_frame_eval.pydevd_frame_evaluator._CacheValue",
+ sizeof(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue),
+ 0,
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
+ __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue_slots,
+};
+#else
static PyTypeObject __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue = {
PyVarObject_HEAD_INIT(0, 0)
- "_pydevd_frame_eval.pydevd_frame_evaluator._CacheValue", /*tp_name*/
+ "_pydevd_frame_eval.pydevd_frame_evaluator.""_CacheValue", /*tp_name*/
sizeof(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue), /*tp_basicsize*/
0, /*tp_itemsize*/
__pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue, /*tp_dealloc*/
@@ -15917,7 +19025,9 @@ static PyTypeObject __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__Ca
0, /*tp_dict*/
0, /*tp_descr_get*/
0, /*tp_descr_set*/
+ #if !CYTHON_USE_TYPE_SPECS
0, /*tp_dictoffset*/
+ #endif
__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_1__init__, /*tp_init*/
0, /*tp_alloc*/
__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue, /*tp_new*/
@@ -15931,54 +19041,30 @@ static PyTypeObject __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__Ca
0, /*tp_del*/
0, /*tp_version_tag*/
#if PY_VERSION_HEX >= 0x030400a1
+ #if CYTHON_USE_TP_FINALIZE
0, /*tp_finalize*/
+ #else
+ NULL, /*tp_finalize*/
+ #endif
#endif
#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
0, /*tp_vectorcall*/
#endif
- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ #if __PYX_NEED_TP_PRINT_SLOT == 1
0, /*tp_print*/
#endif
- #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
+ #if PY_VERSION_HEX >= 0x030C0000
+ 0, /*tp_watched*/
+ #endif
+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
0, /*tp_pypy_flags*/
#endif
};
+#endif
static PyMethodDef __pyx_methods[] = {
{0, 0, 0, 0}
};
-
-#if PY_MAJOR_VERSION >= 3
-#if CYTHON_PEP489_MULTI_PHASE_INIT
-static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
-static int __pyx_pymod_exec_pydevd_frame_evaluator(PyObject* module); /*proto*/
-static PyModuleDef_Slot __pyx_moduledef_slots[] = {
- {Py_mod_create, (void*)__pyx_pymod_create},
- {Py_mod_exec, (void*)__pyx_pymod_exec_pydevd_frame_evaluator},
- {0, NULL}
-};
-#endif
-
-static struct PyModuleDef __pyx_moduledef = {
- PyModuleDef_HEAD_INIT,
- "pydevd_frame_evaluator",
- 0, /* m_doc */
- #if CYTHON_PEP489_MULTI_PHASE_INIT
- 0, /* m_size */
- #else
- -1, /* m_size */
- #endif
- __pyx_methods /* m_methods */,
- #if CYTHON_PEP489_MULTI_PHASE_INIT
- __pyx_moduledef_slots, /* m_slots */
- #else
- NULL, /* m_reload */
- #endif
- NULL, /* m_traverse */
- NULL, /* m_clear */
- NULL /* m_free */
-};
-#endif
#ifndef CYTHON_SMALL_CODE
#if defined(__clang__)
#define CYTHON_SMALL_CODE
@@ -15988,151 +19074,182 @@ static struct PyModuleDef __pyx_moduledef = {
#define CYTHON_SMALL_CODE
#endif
#endif
-
-static __Pyx_StringTabEntry __pyx_string_tab[] = {
- {&__pyx_kp_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 0},
- {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, sizeof(__pyx_k_AttributeError), 0, 0, 1, 1},
- {&__pyx_n_s_CacheValue, __pyx_k_CacheValue, sizeof(__pyx_k_CacheValue), 0, 0, 1, 1},
- {&__pyx_n_s_CodeLineInfo, __pyx_k_CodeLineInfo, sizeof(__pyx_k_CodeLineInfo), 0, 0, 1, 1},
- {&__pyx_n_s_DebugHelper, __pyx_k_DebugHelper, sizeof(__pyx_k_DebugHelper), 0, 0, 1, 1},
- {&__pyx_n_s_FuncCodeInfo, __pyx_k_FuncCodeInfo, sizeof(__pyx_k_FuncCodeInfo), 0, 0, 1, 1},
- {&__pyx_n_s_GlobalDebuggerHolder, __pyx_k_GlobalDebuggerHolder, sizeof(__pyx_k_GlobalDebuggerHolder), 0, 0, 1, 1},
- {&__pyx_kp_s_If_a_code_object_is_cached_that, __pyx_k_If_a_code_object_is_cached_that, sizeof(__pyx_k_If_a_code_object_is_cached_that), 0, 0, 1, 0},
- {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_k_Incompatible_checksums_0x_x_vs_0, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0), 0, 0, 1, 0},
- {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2, __pyx_k_Incompatible_checksums_0x_x_vs_0_2, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_2), 0, 0, 1, 0},
- {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3, __pyx_k_Incompatible_checksums_0x_x_vs_0_3, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_3), 0, 0, 1, 0},
- {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4, __pyx_k_Incompatible_checksums_0x_x_vs_0_4, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_4), 0, 0, 1, 0},
- {&__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER, __pyx_k_NORM_PATHS_AND_BASE_CONTAINER, sizeof(__pyx_k_NORM_PATHS_AND_BASE_CONTAINER), 0, 0, 1, 1},
- {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1},
- {&__pyx_n_s_SetTrace, __pyx_k_SetTrace, sizeof(__pyx_k_SetTrace), 0, 0, 1, 1},
- {&__pyx_n_s_ThreadInfo, __pyx_k_ThreadInfo, sizeof(__pyx_k_ThreadInfo), 0, 0, 1, 1},
- {&__pyx_kp_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 0},
- {&__pyx_kp_s__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 0, 1, 0},
- {&__pyx_kp_s__5, __pyx_k__5, sizeof(__pyx_k__5), 0, 0, 1, 0},
- {&__pyx_n_s_active, __pyx_k_active, sizeof(__pyx_k_active), 0, 0, 1, 1},
- {&__pyx_n_s_additional_info, __pyx_k_additional_info, sizeof(__pyx_k_additional_info), 0, 0, 1, 1},
- {&__pyx_n_s_arg, __pyx_k_arg, sizeof(__pyx_k_arg), 0, 0, 1, 1},
- {&__pyx_n_s_bootstrap, __pyx_k_bootstrap, sizeof(__pyx_k_bootstrap), 0, 0, 1, 1},
- {&__pyx_n_s_bootstrap_2, __pyx_k_bootstrap_2, sizeof(__pyx_k_bootstrap_2), 0, 0, 1, 1},
- {&__pyx_n_s_bootstrap_inner, __pyx_k_bootstrap_inner, sizeof(__pyx_k_bootstrap_inner), 0, 0, 1, 1},
- {&__pyx_n_s_bootstrap_inner_2, __pyx_k_bootstrap_inner_2, sizeof(__pyx_k_bootstrap_inner_2), 0, 0, 1, 1},
- {&__pyx_n_s_break_on_caught_exceptions, __pyx_k_break_on_caught_exceptions, sizeof(__pyx_k_break_on_caught_exceptions), 0, 0, 1, 1},
- {&__pyx_n_s_break_on_user_uncaught_exception, __pyx_k_break_on_user_uncaught_exception, sizeof(__pyx_k_break_on_user_uncaught_exception), 0, 0, 1, 1},
- {&__pyx_n_s_breakpoints, __pyx_k_breakpoints, sizeof(__pyx_k_breakpoints), 0, 0, 1, 1},
- {&__pyx_n_s_breakpoints_hit_at_lines, __pyx_k_breakpoints_hit_at_lines, sizeof(__pyx_k_breakpoints_hit_at_lines), 0, 0, 1, 1},
- {&__pyx_n_s_cache, __pyx_k_cache, sizeof(__pyx_k_cache), 0, 0, 1, 1},
- {&__pyx_n_s_call, __pyx_k_call, sizeof(__pyx_k_call), 0, 0, 1, 1},
- {&__pyx_n_s_call_2, __pyx_k_call_2, sizeof(__pyx_k_call_2), 0, 0, 1, 1},
- {&__pyx_n_s_can_skip, __pyx_k_can_skip, sizeof(__pyx_k_can_skip), 0, 0, 1, 1},
- {&__pyx_n_s_clear_thread_local_info, __pyx_k_clear_thread_local_info, sizeof(__pyx_k_clear_thread_local_info), 0, 0, 1, 1},
- {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
- {&__pyx_n_s_code_line_info, __pyx_k_code_line_info, sizeof(__pyx_k_code_line_info), 0, 0, 1, 1},
- {&__pyx_n_s_code_obj, __pyx_k_code_obj, sizeof(__pyx_k_code_obj), 0, 0, 1, 1},
- {&__pyx_n_s_code_obj_py, __pyx_k_code_obj_py, sizeof(__pyx_k_code_obj_py), 0, 0, 1, 1},
- {&__pyx_n_s_compute_force_stay_in_untraced_m, __pyx_k_compute_force_stay_in_untraced_m, sizeof(__pyx_k_compute_force_stay_in_untraced_m), 0, 0, 1, 1},
- {&__pyx_n_s_current_thread, __pyx_k_current_thread, sizeof(__pyx_k_current_thread), 0, 0, 1, 1},
- {&__pyx_n_s_decref_py, __pyx_k_decref_py, sizeof(__pyx_k_decref_py), 0, 0, 1, 1},
- {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1},
- {&__pyx_n_s_dis, __pyx_k_dis, sizeof(__pyx_k_dis), 0, 0, 1, 1},
- {&__pyx_n_s_dummy_trace_dispatch, __pyx_k_dummy_trace_dispatch, sizeof(__pyx_k_dummy_trace_dispatch), 0, 0, 1, 1},
- {&__pyx_n_s_dummy_tracing_holder, __pyx_k_dummy_tracing_holder, sizeof(__pyx_k_dummy_tracing_holder), 0, 0, 1, 1},
- {&__pyx_n_s_enter, __pyx_k_enter, sizeof(__pyx_k_enter), 0, 0, 1, 1},
- {&__pyx_n_s_event, __pyx_k_event, sizeof(__pyx_k_event), 0, 0, 1, 1},
- {&__pyx_n_s_exec, __pyx_k_exec, sizeof(__pyx_k_exec), 0, 0, 1, 1},
- {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1},
- {&__pyx_n_s_f_back, __pyx_k_f_back, sizeof(__pyx_k_f_back), 0, 0, 1, 1},
- {&__pyx_n_s_f_trace, __pyx_k_f_trace, sizeof(__pyx_k_f_trace), 0, 0, 1, 1},
- {&__pyx_n_s_findlinestarts, __pyx_k_findlinestarts, sizeof(__pyx_k_findlinestarts), 0, 0, 1, 1},
- {&__pyx_n_s_first_line, __pyx_k_first_line, sizeof(__pyx_k_first_line), 0, 0, 1, 1},
- {&__pyx_n_s_fix_top_level_trace_and_get_trac, __pyx_k_fix_top_level_trace_and_get_trac, sizeof(__pyx_k_fix_top_level_trace_and_get_trac), 0, 0, 1, 1},
- {&__pyx_n_s_frame, __pyx_k_frame, sizeof(__pyx_k_frame), 0, 0, 1, 1},
- {&__pyx_n_s_frame_eval_func, __pyx_k_frame_eval_func, sizeof(__pyx_k_frame_eval_func), 0, 0, 1, 1},
- {&__pyx_n_s_function_breakpoint_name_to_brea, __pyx_k_function_breakpoint_name_to_brea, sizeof(__pyx_k_function_breakpoint_name_to_brea), 0, 0, 1, 1},
- {&__pyx_n_s_generate_code_with_breakpoints_p, __pyx_k_generate_code_with_breakpoints_p, sizeof(__pyx_k_generate_code_with_breakpoints_p), 0, 0, 1, 1},
- {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1},
- {&__pyx_n_s_get_abs_path_real_path_and_base, __pyx_k_get_abs_path_real_path_and_base, sizeof(__pyx_k_get_abs_path_real_path_and_base), 0, 0, 1, 1},
- {&__pyx_n_s_get_cache_file_type, __pyx_k_get_cache_file_type, sizeof(__pyx_k_get_cache_file_type), 0, 0, 1, 1},
- {&__pyx_n_s_get_cached_code_obj_info_py, __pyx_k_get_cached_code_obj_info_py, sizeof(__pyx_k_get_cached_code_obj_info_py), 0, 0, 1, 1},
- {&__pyx_n_s_get_code_line_info, __pyx_k_get_code_line_info, sizeof(__pyx_k_get_code_line_info), 0, 0, 1, 1},
- {&__pyx_n_s_get_file_type, __pyx_k_get_file_type, sizeof(__pyx_k_get_file_type), 0, 0, 1, 1},
- {&__pyx_n_s_get_func_code_info_py, __pyx_k_get_func_code_info_py, sizeof(__pyx_k_get_func_code_info_py), 0, 0, 1, 1},
- {&__pyx_n_s_get_ident, __pyx_k_get_ident, sizeof(__pyx_k_get_ident), 0, 0, 1, 1},
- {&__pyx_n_s_get_ident_2, __pyx_k_get_ident_2, sizeof(__pyx_k_get_ident_2), 0, 0, 1, 1},
- {&__pyx_n_s_get_thread_info_py, __pyx_k_get_thread_info_py, sizeof(__pyx_k_get_thread_info_py), 0, 0, 1, 1},
- {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1},
- {&__pyx_n_s_global_dbg, __pyx_k_global_dbg, sizeof(__pyx_k_global_dbg), 0, 0, 1, 1},
- {&__pyx_n_s_has_plugin_exception_breaks, __pyx_k_has_plugin_exception_breaks, sizeof(__pyx_k_has_plugin_exception_breaks), 0, 0, 1, 1},
- {&__pyx_n_s_has_plugin_line_breaks, __pyx_k_has_plugin_line_breaks, sizeof(__pyx_k_has_plugin_line_breaks), 0, 0, 1, 1},
- {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
- {&__pyx_n_s_insert_pydevd_breaks, __pyx_k_insert_pydevd_breaks, sizeof(__pyx_k_insert_pydevd_breaks), 0, 0, 1, 1},
- {&__pyx_n_s_intersection, __pyx_k_intersection, sizeof(__pyx_k_intersection), 0, 0, 1, 1},
- {&__pyx_n_s_is_pydev_daemon_thread, __pyx_k_is_pydev_daemon_thread, sizeof(__pyx_k_is_pydev_daemon_thread), 0, 0, 1, 1},
- {&__pyx_n_s_issuperset, __pyx_k_issuperset, sizeof(__pyx_k_issuperset), 0, 0, 1, 1},
- {&__pyx_n_s_last_line, __pyx_k_last_line, sizeof(__pyx_k_last_line), 0, 0, 1, 1},
- {&__pyx_n_s_line, __pyx_k_line, sizeof(__pyx_k_line), 0, 0, 1, 1},
- {&__pyx_n_s_line_to_offset, __pyx_k_line_to_offset, sizeof(__pyx_k_line_to_offset), 0, 0, 1, 1},
- {&__pyx_n_s_local, __pyx_k_local, sizeof(__pyx_k_local), 0, 0, 1, 1},
- {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
- {&__pyx_n_s_main_2, __pyx_k_main_2, sizeof(__pyx_k_main_2), 0, 0, 1, 1},
- {&__pyx_n_s_max, __pyx_k_max, sizeof(__pyx_k_max), 0, 0, 1, 1},
- {&__pyx_n_s_min, __pyx_k_min, sizeof(__pyx_k_min), 0, 0, 1, 1},
- {&__pyx_n_s_mtime, __pyx_k_mtime, sizeof(__pyx_k_mtime), 0, 0, 1, 1},
- {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
- {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1},
- {&__pyx_n_s_obj, __pyx_k_obj, sizeof(__pyx_k_obj), 0, 0, 1, 1},
- {&__pyx_n_s_offset, __pyx_k_offset, sizeof(__pyx_k_offset), 0, 0, 1, 1},
- {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1},
- {&__pyx_n_s_plugin, __pyx_k_plugin, sizeof(__pyx_k_plugin), 0, 0, 1, 1},
- {&__pyx_n_s_pydev_bundle__pydev_saved_modul, __pyx_k_pydev_bundle__pydev_saved_modul, sizeof(__pyx_k_pydev_bundle__pydev_saved_modul), 0, 0, 1, 1},
- {&__pyx_n_s_pydev_monkey, __pyx_k_pydev_monkey, sizeof(__pyx_k_pydev_monkey), 0, 0, 1, 1},
- {&__pyx_n_s_pydevd, __pyx_k_pydevd, sizeof(__pyx_k_pydevd), 0, 0, 1, 1},
- {&__pyx_n_s_pydevd_bundle_pydevd_additional, __pyx_k_pydevd_bundle_pydevd_additional, sizeof(__pyx_k_pydevd_bundle_pydevd_additional), 0, 0, 1, 1},
- {&__pyx_n_s_pydevd_bundle_pydevd_constants, __pyx_k_pydevd_bundle_pydevd_constants, sizeof(__pyx_k_pydevd_bundle_pydevd_constants), 0, 0, 1, 1},
- {&__pyx_n_s_pydevd_bundle_pydevd_trace_disp, __pyx_k_pydevd_bundle_pydevd_trace_disp, sizeof(__pyx_k_pydevd_bundle_pydevd_trace_disp), 0, 0, 1, 1},
- {&__pyx_n_s_pydevd_file_utils, __pyx_k_pydevd_file_utils, sizeof(__pyx_k_pydevd_file_utils), 0, 0, 1, 1},
- {&__pyx_n_s_pydevd_frame_eval_pydevd_frame, __pyx_k_pydevd_frame_eval_pydevd_frame, sizeof(__pyx_k_pydevd_frame_eval_pydevd_frame), 0, 0, 1, 1},
- {&__pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_k_pydevd_frame_eval_pydevd_frame_2, sizeof(__pyx_k_pydevd_frame_eval_pydevd_frame_2), 0, 0, 1, 0},
- {&__pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_k_pydevd_frame_eval_pydevd_frame_3, sizeof(__pyx_k_pydevd_frame_eval_pydevd_frame_3), 0, 0, 1, 1},
- {&__pyx_n_s_pydevd_frame_eval_pydevd_modify, __pyx_k_pydevd_frame_eval_pydevd_modify, sizeof(__pyx_k_pydevd_frame_eval_pydevd_modify), 0, 0, 1, 1},
- {&__pyx_n_s_pydevd_tracing, __pyx_k_pydevd_tracing, sizeof(__pyx_k_pydevd_tracing), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_unpickle_FuncCodeInfo, __pyx_k_pyx_unpickle_FuncCodeInfo, sizeof(__pyx_k_pyx_unpickle_FuncCodeInfo), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_unpickle_ThreadInfo, __pyx_k_pyx_unpickle_ThreadInfo, sizeof(__pyx_k_pyx_unpickle_ThreadInfo), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_unpickle__CacheValue, __pyx_k_pyx_unpickle__CacheValue, sizeof(__pyx_k_pyx_unpickle__CacheValue), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_unpickle__CodeLineInfo, __pyx_k_pyx_unpickle__CodeLineInfo, sizeof(__pyx_k_pyx_unpickle__CodeLineInfo), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
- {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1},
- {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1},
- {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1},
- {&__pyx_n_s_rfind, __pyx_k_rfind, sizeof(__pyx_k_rfind), 0, 0, 1, 1},
- {&__pyx_n_s_run, __pyx_k_run, sizeof(__pyx_k_run), 0, 0, 1, 1},
- {&__pyx_n_s_set_additional_thread_info_lock, __pyx_k_set_additional_thread_info_lock, sizeof(__pyx_k_set_additional_thread_info_lock), 0, 0, 1, 1},
- {&__pyx_n_s_set_trace_func, __pyx_k_set_trace_func, sizeof(__pyx_k_set_trace_func), 0, 0, 1, 1},
- {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1},
- {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1},
- {&__pyx_n_s_show_return_values, __pyx_k_show_return_values, sizeof(__pyx_k_show_return_values), 0, 0, 1, 1},
- {&__pyx_n_s_signature_factory, __pyx_k_signature_factory, sizeof(__pyx_k_signature_factory), 0, 0, 1, 1},
- {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1},
- {&__pyx_n_s_stop_frame_eval, __pyx_k_stop_frame_eval, sizeof(__pyx_k_stop_frame_eval), 0, 0, 1, 1},
- {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0},
- {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1},
- {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
- {&__pyx_n_s_thread, __pyx_k_thread, sizeof(__pyx_k_thread), 0, 0, 1, 1},
- {&__pyx_n_s_thread_active, __pyx_k_thread_active, sizeof(__pyx_k_thread_active), 0, 0, 1, 1},
- {&__pyx_n_s_thread_info, __pyx_k_thread_info, sizeof(__pyx_k_thread_info), 0, 0, 1, 1},
- {&__pyx_n_s_thread_local_info, __pyx_k_thread_local_info, sizeof(__pyx_k_thread_local_info), 0, 0, 1, 1},
- {&__pyx_n_s_threading, __pyx_k_threading, sizeof(__pyx_k_threading), 0, 0, 1, 1},
- {&__pyx_n_s_trace_dispatch, __pyx_k_trace_dispatch, sizeof(__pyx_k_trace_dispatch), 0, 0, 1, 1},
- {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1},
- {&__pyx_n_s_update_globals_dict, __pyx_k_update_globals_dict, sizeof(__pyx_k_update_globals_dict), 0, 0, 1, 1},
- {&__pyx_n_s_version_info, __pyx_k_version_info, sizeof(__pyx_k_version_info), 0, 0, 1, 1},
- {0, 0, 0, 0, 0, 0, 0}
-};
+/* #### Code section: pystring_table ### */
+
+static int __Pyx_CreateStringTabAndInitStrings(void) {
+ __Pyx_StringTabEntry __pyx_string_tab[] = {
+ {&__pyx_kp_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 0},
+ {&__pyx_n_s_AssertionError, __pyx_k_AssertionError, sizeof(__pyx_k_AssertionError), 0, 0, 1, 1},
+ {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, sizeof(__pyx_k_AttributeError), 0, 0, 1, 1},
+ {&__pyx_n_s_CacheValue, __pyx_k_CacheValue, sizeof(__pyx_k_CacheValue), 0, 0, 1, 1},
+ {&__pyx_n_s_CacheValue___reduce_cython, __pyx_k_CacheValue___reduce_cython, sizeof(__pyx_k_CacheValue___reduce_cython), 0, 0, 1, 1},
+ {&__pyx_n_s_CacheValue___setstate_cython, __pyx_k_CacheValue___setstate_cython, sizeof(__pyx_k_CacheValue___setstate_cython), 0, 0, 1, 1},
+ {&__pyx_n_s_CacheValue_compute_force_stay_i, __pyx_k_CacheValue_compute_force_stay_i, sizeof(__pyx_k_CacheValue_compute_force_stay_i), 0, 0, 1, 1},
+ {&__pyx_n_s_CodeLineInfo, __pyx_k_CodeLineInfo, sizeof(__pyx_k_CodeLineInfo), 0, 0, 1, 1},
+ {&__pyx_n_s_CodeLineInfo___reduce_cython, __pyx_k_CodeLineInfo___reduce_cython, sizeof(__pyx_k_CodeLineInfo___reduce_cython), 0, 0, 1, 1},
+ {&__pyx_n_s_CodeLineInfo___setstate_cython, __pyx_k_CodeLineInfo___setstate_cython, sizeof(__pyx_k_CodeLineInfo___setstate_cython), 0, 0, 1, 1},
+ {&__pyx_n_s_DebugHelper, __pyx_k_DebugHelper, sizeof(__pyx_k_DebugHelper), 0, 0, 1, 1},
+ {&__pyx_n_s_FuncCodeInfo, __pyx_k_FuncCodeInfo, sizeof(__pyx_k_FuncCodeInfo), 0, 0, 1, 1},
+ {&__pyx_n_s_FuncCodeInfo___reduce_cython, __pyx_k_FuncCodeInfo___reduce_cython, sizeof(__pyx_k_FuncCodeInfo___reduce_cython), 0, 0, 1, 1},
+ {&__pyx_n_s_FuncCodeInfo___setstate_cython, __pyx_k_FuncCodeInfo___setstate_cython, sizeof(__pyx_k_FuncCodeInfo___setstate_cython), 0, 0, 1, 1},
+ {&__pyx_n_s_GlobalDebuggerHolder, __pyx_k_GlobalDebuggerHolder, sizeof(__pyx_k_GlobalDebuggerHolder), 0, 0, 1, 1},
+ {&__pyx_kp_s_If_a_code_object_is_cached_that, __pyx_k_If_a_code_object_is_cached_that, sizeof(__pyx_k_If_a_code_object_is_cached_that), 0, 0, 1, 0},
+ {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_k_Incompatible_checksums_0x_x_vs_0, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0), 0, 0, 1, 0},
+ {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2, __pyx_k_Incompatible_checksums_0x_x_vs_0_2, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_2), 0, 0, 1, 0},
+ {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3, __pyx_k_Incompatible_checksums_0x_x_vs_0_3, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_3), 0, 0, 1, 0},
+ {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4, __pyx_k_Incompatible_checksums_0x_x_vs_0_4, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_4), 0, 0, 1, 0},
+ {&__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER, __pyx_k_NORM_PATHS_AND_BASE_CONTAINER, sizeof(__pyx_k_NORM_PATHS_AND_BASE_CONTAINER), 0, 0, 1, 1},
+ {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1},
+ {&__pyx_n_s_SetTrace, __pyx_k_SetTrace, sizeof(__pyx_k_SetTrace), 0, 0, 1, 1},
+ {&__pyx_n_s_ThreadInfo, __pyx_k_ThreadInfo, sizeof(__pyx_k_ThreadInfo), 0, 0, 1, 1},
+ {&__pyx_n_s_ThreadInfo___reduce_cython, __pyx_k_ThreadInfo___reduce_cython, sizeof(__pyx_k_ThreadInfo___reduce_cython), 0, 0, 1, 1},
+ {&__pyx_n_s_ThreadInfo___setstate_cython, __pyx_k_ThreadInfo___setstate_cython, sizeof(__pyx_k_ThreadInfo___setstate_cython), 0, 0, 1, 1},
+ {&__pyx_n_s__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 0, 1, 1},
+ {&__pyx_kp_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 0},
+ {&__pyx_kp_s__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 0, 1, 0},
+ {&__pyx_kp_u__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 1, 0, 0},
+ {&__pyx_n_s__47, __pyx_k__47, sizeof(__pyx_k__47), 0, 0, 1, 1},
+ {&__pyx_kp_s__5, __pyx_k__5, sizeof(__pyx_k__5), 0, 0, 1, 0},
+ {&__pyx_n_s_active, __pyx_k_active, sizeof(__pyx_k_active), 0, 0, 1, 1},
+ {&__pyx_n_s_additional_info, __pyx_k_additional_info, sizeof(__pyx_k_additional_info), 0, 0, 1, 1},
+ {&__pyx_n_s_arg, __pyx_k_arg, sizeof(__pyx_k_arg), 0, 0, 1, 1},
+ {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1},
+ {&__pyx_n_s_bootstrap, __pyx_k_bootstrap, sizeof(__pyx_k_bootstrap), 0, 0, 1, 1},
+ {&__pyx_n_s_bootstrap_2, __pyx_k_bootstrap_2, sizeof(__pyx_k_bootstrap_2), 0, 0, 1, 1},
+ {&__pyx_n_s_bootstrap_inner, __pyx_k_bootstrap_inner, sizeof(__pyx_k_bootstrap_inner), 0, 0, 1, 1},
+ {&__pyx_n_s_bootstrap_inner_2, __pyx_k_bootstrap_inner_2, sizeof(__pyx_k_bootstrap_inner_2), 0, 0, 1, 1},
+ {&__pyx_n_s_break_on_caught_exceptions, __pyx_k_break_on_caught_exceptions, sizeof(__pyx_k_break_on_caught_exceptions), 0, 0, 1, 1},
+ {&__pyx_n_s_break_on_user_uncaught_exception, __pyx_k_break_on_user_uncaught_exception, sizeof(__pyx_k_break_on_user_uncaught_exception), 0, 0, 1, 1},
+ {&__pyx_n_s_breakpoints, __pyx_k_breakpoints, sizeof(__pyx_k_breakpoints), 0, 0, 1, 1},
+ {&__pyx_n_s_breakpoints_hit_at_lines, __pyx_k_breakpoints_hit_at_lines, sizeof(__pyx_k_breakpoints_hit_at_lines), 0, 0, 1, 1},
+ {&__pyx_n_s_cache, __pyx_k_cache, sizeof(__pyx_k_cache), 0, 0, 1, 1},
+ {&__pyx_n_s_call, __pyx_k_call, sizeof(__pyx_k_call), 0, 0, 1, 1},
+ {&__pyx_n_s_call_2, __pyx_k_call_2, sizeof(__pyx_k_call_2), 0, 0, 1, 1},
+ {&__pyx_n_s_can_skip, __pyx_k_can_skip, sizeof(__pyx_k_can_skip), 0, 0, 1, 1},
+ {&__pyx_n_s_clear_thread_local_info, __pyx_k_clear_thread_local_info, sizeof(__pyx_k_clear_thread_local_info), 0, 0, 1, 1},
+ {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
+ {&__pyx_n_s_code_line_info, __pyx_k_code_line_info, sizeof(__pyx_k_code_line_info), 0, 0, 1, 1},
+ {&__pyx_n_s_code_obj, __pyx_k_code_obj, sizeof(__pyx_k_code_obj), 0, 0, 1, 1},
+ {&__pyx_n_s_code_obj_py, __pyx_k_code_obj_py, sizeof(__pyx_k_code_obj_py), 0, 0, 1, 1},
+ {&__pyx_n_s_compute_force_stay_in_untraced_m, __pyx_k_compute_force_stay_in_untraced_m, sizeof(__pyx_k_compute_force_stay_in_untraced_m), 0, 0, 1, 1},
+ {&__pyx_n_s_current_thread, __pyx_k_current_thread, sizeof(__pyx_k_current_thread), 0, 0, 1, 1},
+ {&__pyx_n_s_decref_py, __pyx_k_decref_py, sizeof(__pyx_k_decref_py), 0, 0, 1, 1},
+ {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1},
+ {&__pyx_n_s_dict_2, __pyx_k_dict_2, sizeof(__pyx_k_dict_2), 0, 0, 1, 1},
+ {&__pyx_n_s_dis, __pyx_k_dis, sizeof(__pyx_k_dis), 0, 0, 1, 1},
+ {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0},
+ {&__pyx_n_s_dummy_trace_dispatch, __pyx_k_dummy_trace_dispatch, sizeof(__pyx_k_dummy_trace_dispatch), 0, 0, 1, 1},
+ {&__pyx_n_s_dummy_tracing_holder, __pyx_k_dummy_tracing_holder, sizeof(__pyx_k_dummy_tracing_holder), 0, 0, 1, 1},
+ {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0},
+ {&__pyx_n_s_enter, __pyx_k_enter, sizeof(__pyx_k_enter), 0, 0, 1, 1},
+ {&__pyx_n_s_event, __pyx_k_event, sizeof(__pyx_k_event), 0, 0, 1, 1},
+ {&__pyx_n_s_exec, __pyx_k_exec, sizeof(__pyx_k_exec), 0, 0, 1, 1},
+ {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1},
+ {&__pyx_n_s_f_back, __pyx_k_f_back, sizeof(__pyx_k_f_back), 0, 0, 1, 1},
+ {&__pyx_n_s_f_trace, __pyx_k_f_trace, sizeof(__pyx_k_f_trace), 0, 0, 1, 1},
+ {&__pyx_n_s_findlinestarts, __pyx_k_findlinestarts, sizeof(__pyx_k_findlinestarts), 0, 0, 1, 1},
+ {&__pyx_n_s_first_line, __pyx_k_first_line, sizeof(__pyx_k_first_line), 0, 0, 1, 1},
+ {&__pyx_n_s_fix_top_level_trace_and_get_trac, __pyx_k_fix_top_level_trace_and_get_trac, sizeof(__pyx_k_fix_top_level_trace_and_get_trac), 0, 0, 1, 1},
+ {&__pyx_n_s_frame, __pyx_k_frame, sizeof(__pyx_k_frame), 0, 0, 1, 1},
+ {&__pyx_n_s_frame_eval_func, __pyx_k_frame_eval_func, sizeof(__pyx_k_frame_eval_func), 0, 0, 1, 1},
+ {&__pyx_n_s_function_breakpoint_name_to_brea, __pyx_k_function_breakpoint_name_to_brea, sizeof(__pyx_k_function_breakpoint_name_to_brea), 0, 0, 1, 1},
+ {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0},
+ {&__pyx_n_s_generate_code_with_breakpoints_p, __pyx_k_generate_code_with_breakpoints_p, sizeof(__pyx_k_generate_code_with_breakpoints_p), 0, 0, 1, 1},
+ {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1},
+ {&__pyx_n_s_get_abs_path_real_path_and_base, __pyx_k_get_abs_path_real_path_and_base, sizeof(__pyx_k_get_abs_path_real_path_and_base), 0, 0, 1, 1},
+ {&__pyx_n_s_get_cache_file_type, __pyx_k_get_cache_file_type, sizeof(__pyx_k_get_cache_file_type), 0, 0, 1, 1},
+ {&__pyx_n_s_get_cached_code_obj_info_py, __pyx_k_get_cached_code_obj_info_py, sizeof(__pyx_k_get_cached_code_obj_info_py), 0, 0, 1, 1},
+ {&__pyx_n_s_get_code_line_info, __pyx_k_get_code_line_info, sizeof(__pyx_k_get_code_line_info), 0, 0, 1, 1},
+ {&__pyx_n_s_get_file_type, __pyx_k_get_file_type, sizeof(__pyx_k_get_file_type), 0, 0, 1, 1},
+ {&__pyx_n_s_get_func_code_info_py, __pyx_k_get_func_code_info_py, sizeof(__pyx_k_get_func_code_info_py), 0, 0, 1, 1},
+ {&__pyx_n_s_get_ident, __pyx_k_get_ident, sizeof(__pyx_k_get_ident), 0, 0, 1, 1},
+ {&__pyx_n_s_get_ident_2, __pyx_k_get_ident_2, sizeof(__pyx_k_get_ident_2), 0, 0, 1, 1},
+ {&__pyx_n_s_get_thread_info_py, __pyx_k_get_thread_info_py, sizeof(__pyx_k_get_thread_info_py), 0, 0, 1, 1},
+ {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1},
+ {&__pyx_n_s_global_dbg, __pyx_k_global_dbg, sizeof(__pyx_k_global_dbg), 0, 0, 1, 1},
+ {&__pyx_n_s_has_plugin_exception_breaks, __pyx_k_has_plugin_exception_breaks, sizeof(__pyx_k_has_plugin_exception_breaks), 0, 0, 1, 1},
+ {&__pyx_n_s_has_plugin_line_breaks, __pyx_k_has_plugin_line_breaks, sizeof(__pyx_k_has_plugin_line_breaks), 0, 0, 1, 1},
+ {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
+ {&__pyx_n_s_initializing, __pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 0, 1, 1},
+ {&__pyx_n_s_insert_pydevd_breaks, __pyx_k_insert_pydevd_breaks, sizeof(__pyx_k_insert_pydevd_breaks), 0, 0, 1, 1},
+ {&__pyx_n_s_intersection, __pyx_k_intersection, sizeof(__pyx_k_intersection), 0, 0, 1, 1},
+ {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1},
+ {&__pyx_n_s_is_pydev_daemon_thread, __pyx_k_is_pydev_daemon_thread, sizeof(__pyx_k_is_pydev_daemon_thread), 0, 0, 1, 1},
+ {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0},
+ {&__pyx_n_s_issuperset, __pyx_k_issuperset, sizeof(__pyx_k_issuperset), 0, 0, 1, 1},
+ {&__pyx_n_s_last_line, __pyx_k_last_line, sizeof(__pyx_k_last_line), 0, 0, 1, 1},
+ {&__pyx_n_s_line, __pyx_k_line, sizeof(__pyx_k_line), 0, 0, 1, 1},
+ {&__pyx_n_s_line_to_offset, __pyx_k_line_to_offset, sizeof(__pyx_k_line_to_offset), 0, 0, 1, 1},
+ {&__pyx_n_s_local, __pyx_k_local, sizeof(__pyx_k_local), 0, 0, 1, 1},
+ {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
+ {&__pyx_n_s_main_2, __pyx_k_main_2, sizeof(__pyx_k_main_2), 0, 0, 1, 1},
+ {&__pyx_n_s_max, __pyx_k_max, sizeof(__pyx_k_max), 0, 0, 1, 1},
+ {&__pyx_n_s_min, __pyx_k_min, sizeof(__pyx_k_min), 0, 0, 1, 1},
+ {&__pyx_n_s_mtime, __pyx_k_mtime, sizeof(__pyx_k_mtime), 0, 0, 1, 1},
+ {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
+ {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1},
+ {&__pyx_n_s_obj, __pyx_k_obj, sizeof(__pyx_k_obj), 0, 0, 1, 1},
+ {&__pyx_n_s_offset, __pyx_k_offset, sizeof(__pyx_k_offset), 0, 0, 1, 1},
+ {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1},
+ {&__pyx_n_s_plugin, __pyx_k_plugin, sizeof(__pyx_k_plugin), 0, 0, 1, 1},
+ {&__pyx_n_s_pydev_bundle__pydev_saved_modul, __pyx_k_pydev_bundle__pydev_saved_modul, sizeof(__pyx_k_pydev_bundle__pydev_saved_modul), 0, 0, 1, 1},
+ {&__pyx_n_s_pydev_monkey, __pyx_k_pydev_monkey, sizeof(__pyx_k_pydev_monkey), 0, 0, 1, 1},
+ {&__pyx_n_s_pydevd, __pyx_k_pydevd, sizeof(__pyx_k_pydevd), 0, 0, 1, 1},
+ {&__pyx_n_s_pydevd_bundle_pydevd_additional, __pyx_k_pydevd_bundle_pydevd_additional, sizeof(__pyx_k_pydevd_bundle_pydevd_additional), 0, 0, 1, 1},
+ {&__pyx_n_s_pydevd_bundle_pydevd_constants, __pyx_k_pydevd_bundle_pydevd_constants, sizeof(__pyx_k_pydevd_bundle_pydevd_constants), 0, 0, 1, 1},
+ {&__pyx_n_s_pydevd_bundle_pydevd_trace_disp, __pyx_k_pydevd_bundle_pydevd_trace_disp, sizeof(__pyx_k_pydevd_bundle_pydevd_trace_disp), 0, 0, 1, 1},
+ {&__pyx_n_s_pydevd_file_utils, __pyx_k_pydevd_file_utils, sizeof(__pyx_k_pydevd_file_utils), 0, 0, 1, 1},
+ {&__pyx_n_s_pydevd_frame_eval_pydevd_frame, __pyx_k_pydevd_frame_eval_pydevd_frame, sizeof(__pyx_k_pydevd_frame_eval_pydevd_frame), 0, 0, 1, 1},
+ {&__pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_k_pydevd_frame_eval_pydevd_frame_2, sizeof(__pyx_k_pydevd_frame_eval_pydevd_frame_2), 0, 0, 1, 0},
+ {&__pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_k_pydevd_frame_eval_pydevd_frame_3, sizeof(__pyx_k_pydevd_frame_eval_pydevd_frame_3), 0, 0, 1, 1},
+ {&__pyx_n_s_pydevd_frame_eval_pydevd_modify, __pyx_k_pydevd_frame_eval_pydevd_modify, sizeof(__pyx_k_pydevd_frame_eval_pydevd_modify), 0, 0, 1, 1},
+ {&__pyx_n_s_pydevd_tracing, __pyx_k_pydevd_tracing, sizeof(__pyx_k_pydevd_tracing), 0, 0, 1, 1},
+ {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1},
+ {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1},
+ {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1},
+ {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1},
+ {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1},
+ {&__pyx_n_s_pyx_unpickle_FuncCodeInfo, __pyx_k_pyx_unpickle_FuncCodeInfo, sizeof(__pyx_k_pyx_unpickle_FuncCodeInfo), 0, 0, 1, 1},
+ {&__pyx_n_s_pyx_unpickle_ThreadInfo, __pyx_k_pyx_unpickle_ThreadInfo, sizeof(__pyx_k_pyx_unpickle_ThreadInfo), 0, 0, 1, 1},
+ {&__pyx_n_s_pyx_unpickle__CacheValue, __pyx_k_pyx_unpickle__CacheValue, sizeof(__pyx_k_pyx_unpickle__CacheValue), 0, 0, 1, 1},
+ {&__pyx_n_s_pyx_unpickle__CodeLineInfo, __pyx_k_pyx_unpickle__CodeLineInfo, sizeof(__pyx_k_pyx_unpickle__CodeLineInfo), 0, 0, 1, 1},
+ {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
+ {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1},
+ {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1},
+ {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1},
+ {&__pyx_n_s_return, __pyx_k_return, sizeof(__pyx_k_return), 0, 0, 1, 1},
+ {&__pyx_n_s_rfind, __pyx_k_rfind, sizeof(__pyx_k_rfind), 0, 0, 1, 1},
+ {&__pyx_n_s_run, __pyx_k_run, sizeof(__pyx_k_run), 0, 0, 1, 1},
+ {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1},
+ {&__pyx_n_s_set_additional_thread_info_lock, __pyx_k_set_additional_thread_info_lock, sizeof(__pyx_k_set_additional_thread_info_lock), 0, 0, 1, 1},
+ {&__pyx_n_s_set_trace_func, __pyx_k_set_trace_func, sizeof(__pyx_k_set_trace_func), 0, 0, 1, 1},
+ {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1},
+ {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1},
+ {&__pyx_n_s_show_return_values, __pyx_k_show_return_values, sizeof(__pyx_k_show_return_values), 0, 0, 1, 1},
+ {&__pyx_n_s_signature_factory, __pyx_k_signature_factory, sizeof(__pyx_k_signature_factory), 0, 0, 1, 1},
+ {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1},
+ {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1},
+ {&__pyx_n_s_stop_frame_eval, __pyx_k_stop_frame_eval, sizeof(__pyx_k_stop_frame_eval), 0, 0, 1, 1},
+ {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0},
+ {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1},
+ {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
+ {&__pyx_n_s_thread, __pyx_k_thread, sizeof(__pyx_k_thread), 0, 0, 1, 1},
+ {&__pyx_n_s_thread_active, __pyx_k_thread_active, sizeof(__pyx_k_thread_active), 0, 0, 1, 1},
+ {&__pyx_n_s_thread_info, __pyx_k_thread_info, sizeof(__pyx_k_thread_info), 0, 0, 1, 1},
+ {&__pyx_n_s_thread_local_info, __pyx_k_thread_local_info, sizeof(__pyx_k_thread_local_info), 0, 0, 1, 1},
+ {&__pyx_n_s_threading, __pyx_k_threading, sizeof(__pyx_k_threading), 0, 0, 1, 1},
+ {&__pyx_n_s_trace_dispatch, __pyx_k_trace_dispatch, sizeof(__pyx_k_trace_dispatch), 0, 0, 1, 1},
+ {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1},
+ {&__pyx_n_s_update_globals_dict, __pyx_k_update_globals_dict, sizeof(__pyx_k_update_globals_dict), 0, 0, 1, 1},
+ {&__pyx_n_s_use_setstate, __pyx_k_use_setstate, sizeof(__pyx_k_use_setstate), 0, 0, 1, 1},
+ {&__pyx_n_s_version_info, __pyx_k_version_info, sizeof(__pyx_k_version_info), 0, 0, 1, 1},
+ {0, 0, 0, 0, 0, 0, 0}
+ };
+ return __Pyx_InitStrings(__pyx_string_tab);
+}
+/* #### Code section: cached_builtins ### */
static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
+ __pyx_builtin_AssertionError = __Pyx_GetBuiltinName(__pyx_n_s_AssertionError); if (!__pyx_builtin_AssertionError) __PYX_ERR(0, 42, __pyx_L1_error)
__pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(0, 110, __pyx_L1_error)
__pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_n_s_min); if (!__pyx_builtin_min) __PYX_ERR(0, 341, __pyx_L1_error)
__pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s_max); if (!__pyx_builtin_max) __PYX_ERR(0, 342, __pyx_L1_error)
@@ -16140,6 +19257,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
__pyx_L1_error:;
return -1;
}
+/* #### Code section: cached_constants ### */
static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
__Pyx_RefNannyDeclarations
@@ -16159,20 +19277,20 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
/* "(tree fragment)":4
* cdef object __pyx_PickleError
* cdef object __pyx_result
- * if __pyx_checksum not in (0x0af4089, 0xe535b68, 0xb8148ba): # <<<<<<<<<<<<<<
+ * if __pyx_checksum not in (0xe535b68, 0xb8148ba, 0x0af4089): # <<<<<<<<<<<<<<
* from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x0af4089, 0xe535b68, 0xb8148ba) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum)
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe535b68, 0xb8148ba, 0x0af4089) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum
*/
- __pyx_tuple__6 = PyTuple_Pack(3, __pyx_int_11485321, __pyx_int_240343912, __pyx_int_193022138); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_tuple__6 = PyTuple_Pack(3, __pyx_int_240343912, __pyx_int_193022138, __pyx_int_11485321); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__6);
__Pyx_GIVEREF(__pyx_tuple__6);
- __pyx_tuple__7 = PyTuple_Pack(3, __pyx_int_188670045, __pyx_int_72405718, __pyx_int_156687530); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_tuple__7 = PyTuple_Pack(3, __pyx_int_72405718, __pyx_int_156687530, __pyx_int_188670045); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__7);
__Pyx_GIVEREF(__pyx_tuple__7);
- __pyx_tuple__8 = PyTuple_Pack(3, __pyx_int_66829570, __pyx_int_95010005, __pyx_int_2520179); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_tuple__8 = PyTuple_Pack(3, __pyx_int_95010005, __pyx_int_2520179, __pyx_int_66829570); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__8);
__Pyx_GIVEREF(__pyx_tuple__8);
- __pyx_tuple__9 = PyTuple_Pack(3, __pyx_int_64258489, __pyx_int_180628038, __pyx_int_249558979); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_tuple__9 = PyTuple_Pack(3, __pyx_int_180628038, __pyx_int_249558979, __pyx_int_64258489); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__9);
__Pyx_GIVEREF(__pyx_tuple__9);
@@ -16183,7 +19301,43 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
* global _thread_local_info
* _thread_local_info = threading.local()
*/
- __pyx_codeobj__10 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_clear_thread_local_info, 19, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__10)) __PYX_ERR(0, 19, __pyx_L1_error)
+ __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_clear_thread_local_info, 19, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 19, __pyx_L1_error)
+
+ /* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+ __pyx_tuple__12 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_state, __pyx_n_s_dict_2, __pyx_n_s_use_setstate); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__12);
+ __Pyx_GIVEREF(__pyx_tuple__12);
+ __pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(1, 1, __pyx_L1_error)
+
+ /* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle_ThreadInfo__set_state(self, __pyx_state)
+ */
+ __pyx_tuple__14 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 16, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__14);
+ __Pyx_GIVEREF(__pyx_tuple__14);
+ __pyx_codeobj__15 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__15)) __PYX_ERR(1, 16, __pyx_L1_error)
+
+ /* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+ __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(1, 1, __pyx_L1_error)
+
+ /* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle_FuncCodeInfo__set_state(self, __pyx_state)
+ */
+ __pyx_codeobj__17 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__17)) __PYX_ERR(1, 16, __pyx_L1_error)
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":152
*
@@ -16192,10 +19346,10 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
* if event == 'call':
* if frame.f_trace is not None:
*/
- __pyx_tuple__11 = PyTuple_Pack(3, __pyx_n_s_frame, __pyx_n_s_event, __pyx_n_s_arg); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__11);
- __Pyx_GIVEREF(__pyx_tuple__11);
- __pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_dummy_trace_dispatch, 152, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(0, 152, __pyx_L1_error)
+ __pyx_tuple__18 = PyTuple_Pack(3, __pyx_n_s_frame, __pyx_n_s_event, __pyx_n_s_arg); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__18);
+ __Pyx_GIVEREF(__pyx_tuple__18);
+ __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_dummy_trace_dispatch, 152, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) __PYX_ERR(0, 152, __pyx_L1_error)
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":159
*
@@ -16204,7 +19358,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
* return get_thread_info(PyEval_GetFrame())
*
*/
- __pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_get_thread_info_py, 159, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(0, 159, __pyx_L1_error)
+ __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_get_thread_info_py, 159, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 159, __pyx_L1_error)
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":196
*
@@ -16213,10 +19367,10 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
* '''
* Helper to be called from Python.
*/
- __pyx_tuple__14 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 196, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__14);
- __Pyx_GIVEREF(__pyx_tuple__14);
- __pyx_codeobj__15 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_decref_py, 196, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__15)) __PYX_ERR(0, 196, __pyx_L1_error)
+ __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 196, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__21);
+ __Pyx_GIVEREF(__pyx_tuple__21);
+ __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_decref_py, 196, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 196, __pyx_L1_error)
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":203
*
@@ -16225,10 +19379,25 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
* '''
* Helper to be called from Python.
*/
- __pyx_tuple__16 = PyTuple_Pack(3, __pyx_n_s_thread_info, __pyx_n_s_frame, __pyx_n_s_code_obj); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 203, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__16);
- __Pyx_GIVEREF(__pyx_tuple__16);
- __pyx_codeobj__17 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__16, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_get_func_code_info_py, 203, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__17)) __PYX_ERR(0, 203, __pyx_L1_error)
+ __pyx_tuple__23 = PyTuple_Pack(3, __pyx_n_s_thread_info, __pyx_n_s_frame, __pyx_n_s_code_obj); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 203, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__23);
+ __Pyx_GIVEREF(__pyx_tuple__23);
+ __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_get_func_code_info_py, 203, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 203, __pyx_L1_error)
+
+ /* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+ __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) __PYX_ERR(1, 1, __pyx_L1_error)
+
+ /* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle__CodeLineInfo__set_state(self, __pyx_state)
+ */
+ __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(1, 16, __pyx_L1_error)
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":329
*
@@ -16237,10 +19406,10 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
* line_to_offset: dict = {}
* first_line: int = None
*/
- __pyx_tuple__18 = PyTuple_Pack(6, __pyx_n_s_code_obj, __pyx_n_s_line_to_offset, __pyx_n_s_first_line, __pyx_n_s_last_line, __pyx_n_s_offset, __pyx_n_s_line); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 329, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__18);
- __Pyx_GIVEREF(__pyx_tuple__18);
- __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_get_code_line_info, 329, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __pyx_tuple__27 = PyTuple_Pack(6, __pyx_n_s_code_obj, __pyx_n_s_line_to_offset, __pyx_n_s_first_line, __pyx_n_s_last_line, __pyx_n_s_offset, __pyx_n_s_line); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__27);
+ __Pyx_GIVEREF(__pyx_tuple__27);
+ __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_get_code_line_info, 329, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 329, __pyx_L1_error)
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":353
* _cache: dict = {}
@@ -16249,10 +19418,37 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
* '''
* :return _CacheValue:
*/
- __pyx_tuple__20 = PyTuple_Pack(1, __pyx_n_s_code_obj_py); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 353, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__20);
- __Pyx_GIVEREF(__pyx_tuple__20);
- __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__20, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_get_cached_code_obj_info_py, 353, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) __PYX_ERR(0, 353, __pyx_L1_error)
+ __pyx_tuple__29 = PyTuple_Pack(1, __pyx_n_s_code_obj_py); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 353, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__29);
+ __Pyx_GIVEREF(__pyx_tuple__29);
+ __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_get_cached_code_obj_info_py, 353, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 353, __pyx_L1_error)
+
+ /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":379
+ * self.code_lines_as_set = set(code_line_info.line_to_offset)
+ *
+ * cpdef compute_force_stay_in_untraced_mode(self, breakpoints): # <<<<<<<<<<<<<<
+ * '''
+ * :param breakpoints:
+ */
+ __pyx_tuple__31 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_breakpoints); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 379, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__31);
+ __Pyx_GIVEREF(__pyx_tuple__31);
+ __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_compute_force_stay_in_untraced_m, 379, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 379, __pyx_L1_error)
+
+ /* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+ __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(1, 1, __pyx_L1_error)
+
+ /* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle__CacheValue__set_state(self, __pyx_state)
+ */
+ __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(1, 16, __pyx_L1_error)
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":401
* return breakpoint_found, force_stay_in_untraced_mode
@@ -16261,10 +19457,10 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
* return generate_code_with_breakpoints(code_obj_py, breakpoints)
*
*/
- __pyx_tuple__22 = PyTuple_Pack(2, __pyx_n_s_code_obj_py, __pyx_n_s_breakpoints); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 401, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__22);
- __Pyx_GIVEREF(__pyx_tuple__22);
- __pyx_codeobj__23 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__22, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_generate_code_with_breakpoints_p, 401, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__23)) __PYX_ERR(0, 401, __pyx_L1_error)
+ __pyx_tuple__35 = PyTuple_Pack(2, __pyx_n_s_code_obj_py, __pyx_n_s_breakpoints); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 401, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__35);
+ __Pyx_GIVEREF(__pyx_tuple__35);
+ __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_generate_code_with_breakpoints_p, 401, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 401, __pyx_L1_error)
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":473
* import sys
@@ -16273,12 +19469,12 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
*
* def frame_eval_func():
*/
- __pyx_slice__24 = PySlice_New(Py_None, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__24)) __PYX_ERR(0, 473, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__24);
- __Pyx_GIVEREF(__pyx_slice__24);
- __pyx_tuple__25 = PyTuple_Pack(2, __pyx_int_3, __pyx_int_9); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 473, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__25);
- __Pyx_GIVEREF(__pyx_tuple__25);
+ __pyx_slice__37 = PySlice_New(Py_None, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__37)) __PYX_ERR(0, 473, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__37);
+ __Pyx_GIVEREF(__pyx_slice__37);
+ __pyx_tuple__38 = PyTuple_Pack(2, __pyx_int_3, __pyx_int_9); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 473, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__38);
+ __Pyx_GIVEREF(__pyx_tuple__38);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":475
* cdef bint IS_PY_39_OWNARDS = sys.version_info[:2] >= (3, 9)
@@ -16287,10 +19483,10 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
* cdef PyThreadState *state = PyThreadState_Get()
* if IS_PY_39_OWNARDS:
*/
- __pyx_tuple__26 = PyTuple_Pack(1, __pyx_n_s_state); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 475, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__26);
- __Pyx_GIVEREF(__pyx_tuple__26);
- __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_frame_eval_func, 475, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 475, __pyx_L1_error)
+ __pyx_tuple__39 = PyTuple_Pack(1, __pyx_n_s_state); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 475, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__39);
+ __Pyx_GIVEREF(__pyx_tuple__39);
+ __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_frame_eval_func, 475, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 475, __pyx_L1_error)
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":484
*
@@ -16299,41 +19495,30 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
* cdef PyThreadState *state = PyThreadState_Get()
* state.interp.eval_frame = _PyEval_EvalFrameDefault
*/
- __pyx_tuple__28 = PyTuple_Pack(1, __pyx_n_s_state); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 484, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__28);
- __Pyx_GIVEREF(__pyx_tuple__28);
- __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_stop_frame_eval, 484, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 484, __pyx_L1_error)
+ __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_stop_frame_eval, 484, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 484, __pyx_L1_error)
/* "(tree fragment)":1
* def __pyx_unpickle_ThreadInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
* cdef object __pyx_PickleError
* cdef object __pyx_result
*/
- __pyx_tuple__30 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__30);
- __Pyx_GIVEREF(__pyx_tuple__30);
- __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ThreadInfo, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(1, 1, __pyx_L1_error)
- __pyx_tuple__32 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__32);
- __Pyx_GIVEREF(__pyx_tuple__32);
- __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_FuncCodeInfo, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(1, 1, __pyx_L1_error)
- __pyx_tuple__34 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__34);
- __Pyx_GIVEREF(__pyx_tuple__34);
- __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle__CodeLineInfo, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(1, 1, __pyx_L1_error)
- __pyx_tuple__36 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__36);
- __Pyx_GIVEREF(__pyx_tuple__36);
- __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle__CacheValue, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __pyx_tuple__42 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__42);
+ __Pyx_GIVEREF(__pyx_tuple__42);
+ __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ThreadInfo, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_FuncCodeInfo, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle__CodeLineInfo, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle__CacheValue, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(1, 1, __pyx_L1_error)
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
__Pyx_RefNannyFinishContext();
return -1;
}
+/* #### Code section: init_constants ### */
-static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
- if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
+static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) {
+ if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(0, 1, __pyx_L1_error);
__pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -16355,6 +19540,19 @@ static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
__pyx_L1_error:;
return -1;
}
+/* #### Code section: init_globals ### */
+
+static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
+ /* AssertionsEnabled.init */
+ if (likely(__Pyx_init_assertions_enabled() == 0)); else
+
+if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)
+
+ return 0;
+ __pyx_L1_error:;
+ return -1;
+}
+/* #### Code section: init_module ### */
static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
@@ -16398,60 +19596,118 @@ static int __Pyx_modinit_type_init_code(void) {
__pyx_vtabptr_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo = &__pyx_vtable_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo;
__pyx_vtable_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo.initialize = (PyObject *(*)(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *, PyFrameObject *))__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_initialize;
__pyx_vtable_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo.initialize_if_possible = (PyObject *(*)(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *))__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_initialize_if_possible;
- if (PyType_Ready(&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo) < 0) __PYX_ERR(0, 24, __pyx_L1_error)
- #if PY_VERSION_HEX < 0x030800B1
- __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo.tp_print = 0;
- #endif
- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo.tp_dictoffset && __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo.tp_getattro == PyObject_GenericGetAttr)) {
- __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo.tp_getattro = __Pyx_PyObject_GenericGetAttr;
- }
- if (__Pyx_SetVtable(__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo.tp_dict, __pyx_vtabptr_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo) < 0) __PYX_ERR(0, 24, __pyx_L1_error)
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ThreadInfo, (PyObject *)&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo) < 0) __PYX_ERR(0, 24, __pyx_L1_error)
- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo) < 0) __PYX_ERR(0, 24, __pyx_L1_error)
+ #if CYTHON_USE_TYPE_SPECS
+ __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo_spec, NULL); if (unlikely(!__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo)) __PYX_ERR(0, 24, __pyx_L1_error)
+ if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo_spec, __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo) < 0) __PYX_ERR(0, 24, __pyx_L1_error)
+ #else
__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo = &__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo;
- if (PyType_Ready(&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo) < 0) __PYX_ERR(0, 125, __pyx_L1_error)
- #if PY_VERSION_HEX < 0x030800B1
- __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo.tp_print = 0;
#endif
- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo.tp_dictoffset && __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo.tp_getattro == PyObject_GenericGetAttr)) {
- __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo.tp_getattro = __Pyx_PyObject_GenericGetAttr;
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ #endif
+ #if !CYTHON_USE_TYPE_SPECS
+ if (__Pyx_PyType_Ready(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo) < 0) __PYX_ERR(0, 24, __pyx_L1_error)
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo->tp_print = 0;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo->tp_dictoffset && __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo->tp_getattro == PyObject_GenericGetAttr)) {
+ __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo->tp_getattro = __Pyx_PyObject_GenericGetAttr;
}
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_FuncCodeInfo, (PyObject *)&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo) < 0) __PYX_ERR(0, 125, __pyx_L1_error)
- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo) < 0) __PYX_ERR(0, 125, __pyx_L1_error)
+ #endif
+ if (__Pyx_SetVtable(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo, __pyx_vtabptr_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo) < 0) __PYX_ERR(0, 24, __pyx_L1_error)
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if (__Pyx_MergeVtables(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo) < 0) __PYX_ERR(0, 24, __pyx_L1_error)
+ #endif
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ThreadInfo, (PyObject *) __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo) < 0) __PYX_ERR(0, 24, __pyx_L1_error)
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo) < 0) __PYX_ERR(0, 24, __pyx_L1_error)
+ #endif
+ #if CYTHON_USE_TYPE_SPECS
+ __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo_spec, NULL); if (unlikely(!__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo)) __PYX_ERR(0, 125, __pyx_L1_error)
+ if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo_spec, __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo) < 0) __PYX_ERR(0, 125, __pyx_L1_error)
+ #else
__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo = &__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo;
- if (PyType_Ready(&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo) < 0) __PYX_ERR(0, 316, __pyx_L1_error)
- #if PY_VERSION_HEX < 0x030800B1
- __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo.tp_print = 0;
#endif
- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo.tp_dictoffset && __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo.tp_getattro == PyObject_GenericGetAttr)) {
- __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo.tp_getattro = __Pyx_PyObject_GenericGetAttr;
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ #endif
+ #if !CYTHON_USE_TYPE_SPECS
+ if (__Pyx_PyType_Ready(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo) < 0) __PYX_ERR(0, 125, __pyx_L1_error)
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo->tp_print = 0;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo->tp_dictoffset && __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo->tp_getattro == PyObject_GenericGetAttr)) {
+ __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo->tp_getattro = __Pyx_PyObject_GenericGetAttr;
}
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CodeLineInfo, (PyObject *)&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo) < 0) __PYX_ERR(0, 316, __pyx_L1_error)
- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo) < 0) __PYX_ERR(0, 316, __pyx_L1_error)
+ #endif
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_FuncCodeInfo, (PyObject *) __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo) < 0) __PYX_ERR(0, 125, __pyx_L1_error)
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo) < 0) __PYX_ERR(0, 125, __pyx_L1_error)
+ #endif
+ #if CYTHON_USE_TYPE_SPECS
+ __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo_spec, NULL); if (unlikely(!__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo)) __PYX_ERR(0, 316, __pyx_L1_error)
+ if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo_spec, __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo) < 0) __PYX_ERR(0, 316, __pyx_L1_error)
+ #else
__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo = &__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ #endif
+ #if !CYTHON_USE_TYPE_SPECS
+ if (__Pyx_PyType_Ready(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo) < 0) __PYX_ERR(0, 316, __pyx_L1_error)
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo->tp_print = 0;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo->tp_dictoffset && __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo->tp_getattro == PyObject_GenericGetAttr)) {
+ __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+ }
+ #endif
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CodeLineInfo, (PyObject *) __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo) < 0) __PYX_ERR(0, 316, __pyx_L1_error)
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo) < 0) __PYX_ERR(0, 316, __pyx_L1_error)
+ #endif
__pyx_vtabptr_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue = &__pyx_vtable_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue;
__pyx_vtable_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue.compute_force_stay_in_untraced_mode = (PyObject *(*)(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *, PyObject *, int __pyx_skip_dispatch))__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_compute_force_stay_in_untraced_mode;
- if (PyType_Ready(&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
- #if PY_VERSION_HEX < 0x030800B1
- __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue.tp_print = 0;
+ #if CYTHON_USE_TYPE_SPECS
+ __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue_spec, NULL); if (unlikely(!__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue)) __PYX_ERR(0, 361, __pyx_L1_error)
+ if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue_spec, __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
+ #else
+ __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue = &__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ #endif
+ #if !CYTHON_USE_TYPE_SPECS
+ if (__Pyx_PyType_Ready(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue->tp_print = 0;
#endif
- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue.tp_dictoffset && __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue.tp_getattro == PyObject_GenericGetAttr)) {
- __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue.tp_getattro = __Pyx_PyObject_GenericGetAttr;
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue->tp_dictoffset && __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue->tp_getattro == PyObject_GenericGetAttr)) {
+ __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue->tp_getattro = __Pyx_PyObject_GenericGetAttr;
}
+ #endif
#if CYTHON_UPDATE_DESCRIPTOR_DOC
{
- PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 361, __pyx_L1_error)
- if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
+ PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 361, __pyx_L1_error)
+ if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
__pyx_wrapperbase_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
__pyx_wrapperbase_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue___init__.doc = __pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue___init__;
((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue___init__;
}
}
#endif
- if (__Pyx_SetVtable(__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue.tp_dict, __pyx_vtabptr_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CacheValue, (PyObject *)&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
- __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue = &__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue;
+ if (__Pyx_SetVtable(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue, __pyx_vtabptr_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if (__Pyx_MergeVtables(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
+ #endif
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CacheValue, (PyObject *) __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
+ #endif
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
@@ -16469,8 +19725,8 @@ static int __Pyx_modinit_type_import_code(void) {
/*--- Type import code ---*/
__pyx_t_1 = PyImport_ImportModule("_pydevd_bundle.pydevd_cython"); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo = __Pyx_ImportType(__pyx_t_1, "_pydevd_bundle.pydevd_cython", "PyDBAdditionalThreadInfo", sizeof(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo), __Pyx_ImportType_CheckSize_Warn);
- if (!__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo) __PYX_ERR(2, 1, __pyx_L1_error)
+ __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo = __Pyx_ImportType_3_0_10(__pyx_t_1, "_pydevd_bundle.pydevd_cython", "PyDBAdditionalThreadInfo", sizeof(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo), __PYX_GET_STRUCT_ALIGNMENT_3_0_10(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo),__Pyx_ImportType_CheckSize_Warn_3_0_10); if (!__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo) __PYX_ERR(2, 1, __pyx_L1_error)
+ __pyx_vtabptr_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo = (struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo*)__Pyx_GetVtable(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo); if (unlikely(!__pyx_vtabptr_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo)) __PYX_ERR(2, 1, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_RefNannyFinishContext();
return 0;
@@ -16497,6 +19753,55 @@ static int __Pyx_modinit_function_import_code(void) {
}
+#if PY_MAJOR_VERSION >= 3
+#if CYTHON_PEP489_MULTI_PHASE_INIT
+static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
+static int __pyx_pymod_exec_pydevd_frame_evaluator(PyObject* module); /*proto*/
+static PyModuleDef_Slot __pyx_moduledef_slots[] = {
+ {Py_mod_create, (void*)__pyx_pymod_create},
+ {Py_mod_exec, (void*)__pyx_pymod_exec_pydevd_frame_evaluator},
+ {0, NULL}
+};
+#endif
+
+#ifdef __cplusplus
+namespace {
+ struct PyModuleDef __pyx_moduledef =
+ #else
+ static struct PyModuleDef __pyx_moduledef =
+ #endif
+ {
+ PyModuleDef_HEAD_INIT,
+ "pydevd_frame_evaluator",
+ 0, /* m_doc */
+ #if CYTHON_PEP489_MULTI_PHASE_INIT
+ 0, /* m_size */
+ #elif CYTHON_USE_MODULE_STATE
+ sizeof(__pyx_mstate), /* m_size */
+ #else
+ -1, /* m_size */
+ #endif
+ __pyx_methods /* m_methods */,
+ #if CYTHON_PEP489_MULTI_PHASE_INIT
+ __pyx_moduledef_slots, /* m_slots */
+ #else
+ NULL, /* m_reload */
+ #endif
+ #if CYTHON_USE_MODULE_STATE
+ __pyx_m_traverse, /* m_traverse */
+ __pyx_m_clear, /* m_clear */
+ NULL /* m_free */
+ #else
+ NULL, /* m_traverse */
+ NULL, /* m_clear */
+ NULL /* m_free */
+ #endif
+ };
+ #ifdef __cplusplus
+} /* anonymous namespace */
+#endif
+#endif
+
#ifndef CYTHON_NO_PYINIT_EXPORT
#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#elif PY_MAJOR_VERSION < 3
@@ -16547,12 +19852,21 @@ static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
}
return 0;
}
-static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) {
+#if CYTHON_COMPILING_IN_LIMITED_API
+static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none)
+#else
+static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none)
+#endif
+{
PyObject *value = PyObject_GetAttrString(spec, from_name);
int result = 0;
if (likely(value)) {
if (allow_none || value != Py_None) {
+#if CYTHON_COMPILING_IN_LIMITED_API
+ result = PyModule_AddObject(module, to_name, value);
+#else
result = PyDict_SetItemString(moddict, to_name, value);
+#endif
}
Py_DECREF(value);
} else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
@@ -16562,8 +19876,9 @@ static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject
}
return result;
}
-static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
+static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) {
PyObject *module = NULL, *moddict, *modname;
+ CYTHON_UNUSED_VAR(def);
if (__Pyx_check_single_interpreter())
return NULL;
if (__pyx_m)
@@ -16573,8 +19888,12 @@ static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNU
module = PyModule_NewObject(modname);
Py_DECREF(modname);
if (unlikely(!module)) goto bad;
+#if CYTHON_COMPILING_IN_LIMITED_API
+ moddict = module;
+#else
moddict = PyModule_GetDict(module);
if (unlikely(!moddict)) goto bad;
+#endif
if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad;
if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad;
if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad;
@@ -16590,9 +19909,14 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec_pydevd_frame_evaluator(PyObject *_
#endif
#endif
{
+ int stringtab_initialized = 0;
+ #if CYTHON_USE_MODULE_STATE
+ int pystate_addmodule_run = 0;
+ #endif
PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_t_4;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
@@ -16606,6 +19930,33 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec_pydevd_frame_evaluator(PyObject *_
#elif PY_MAJOR_VERSION >= 3
if (__pyx_m) return __Pyx_NewRef(__pyx_m);
#endif
+ /*--- Module creation code ---*/
+ #if CYTHON_PEP489_MULTI_PHASE_INIT
+ __pyx_m = __pyx_pyinit_module;
+ Py_INCREF(__pyx_m);
+ #else
+ #if PY_MAJOR_VERSION < 3
+ __pyx_m = Py_InitModule4("pydevd_frame_evaluator", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+ if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
+ #elif CYTHON_USE_MODULE_STATE
+ __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
+ {
+ int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef);
+ __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "pydevd_frame_evaluator" pseudovariable */
+ if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
+ pystate_addmodule_run = 1;
+ }
+ #else
+ __pyx_m = PyModule_Create(&__pyx_moduledef);
+ if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
+ #endif
+ #endif
+ CYTHON_UNUSED_VAR(__pyx_t_1);
+ __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
+ Py_INCREF(__pyx_d);
+ __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#if CYTHON_REFNANNY
__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
if (!__Pyx_RefNanny) {
@@ -16616,7 +19967,7 @@ if (!__Pyx_RefNanny) {
}
#endif
__Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_pydevd_frame_evaluator(void)", 0);
- if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#ifdef __Pxy_PyFrame_Initialize_Offsets
__Pxy_PyFrame_Initialize_Offsets();
#endif
@@ -16624,48 +19975,31 @@ if (!__Pyx_RefNanny) {
__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
#ifdef __Pyx_CyFunction_USED
- if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#endif
#ifdef __Pyx_FusedFunction_USED
- if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#endif
#ifdef __Pyx_Coroutine_USED
- if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#endif
#ifdef __Pyx_Generator_USED
- if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#endif
#ifdef __Pyx_AsyncGen_USED
- if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#endif
#ifdef __Pyx_StopAsyncIteration_USED
- if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#endif
/*--- Library function declarations ---*/
/*--- Threads initialization code ---*/
#if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
PyEval_InitThreads();
#endif
- /*--- Module creation code ---*/
- #if CYTHON_PEP489_MULTI_PHASE_INIT
- __pyx_m = __pyx_pyinit_module;
- Py_INCREF(__pyx_m);
- #else
- #if PY_MAJOR_VERSION < 3
- __pyx_m = Py_InitModule4("pydevd_frame_evaluator", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
- #else
- __pyx_m = PyModule_Create(&__pyx_moduledef);
- #endif
- if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
- #endif
- __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
- Py_INCREF(__pyx_d);
- __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
- Py_INCREF(__pyx_b);
- __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
- Py_INCREF(__pyx_cython_runtime);
- if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
/*--- Initialize various global constants etc. ---*/
+ if (__Pyx_InitConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ stringtab_initialized = 1;
if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -16677,7 +20011,7 @@ if (!__Pyx_RefNanny) {
{
PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
if (!PyDict_GetItemString(modules, "_pydevd_frame_eval.pydevd_frame_evaluator")) {
- if (unlikely(PyDict_SetItemString(modules, "_pydevd_frame_eval.pydevd_frame_evaluator", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (unlikely((PyDict_SetItemString(modules, "_pydevd_frame_eval.pydevd_frame_evaluator", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
}
}
#endif
@@ -16689,8 +20023,8 @@ if (!__Pyx_RefNanny) {
(void)__Pyx_modinit_global_init_code();
(void)__Pyx_modinit_variable_export_code();
(void)__Pyx_modinit_function_export_code();
- if (unlikely(__Pyx_modinit_type_init_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
- if (unlikely(__Pyx_modinit_type_import_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (unlikely((__Pyx_modinit_type_import_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
(void)__Pyx_modinit_variable_import_code();
(void)__Pyx_modinit_function_import_code();
/*--- Execution code ---*/
@@ -16704,26 +20038,26 @@ if (!__Pyx_RefNanny) {
* from _pydevd_bundle.pydevd_constants import GlobalDebuggerHolder
* import dis
*/
- __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_n_s_threading);
__Pyx_GIVEREF(__pyx_n_s_threading);
- PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_threading);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_threading)) __PYX_ERR(0, 2, __pyx_L1_error);
__Pyx_INCREF(__pyx_n_s_thread);
__Pyx_GIVEREF(__pyx_n_s_thread);
- PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_thread);
- __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydev_bundle__pydev_saved_modul, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error)
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_thread)) __PYX_ERR(0, 2, __pyx_L1_error);
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydev_bundle__pydev_saved_modul, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_threading); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_threading, __pyx_t_1) < 0) __PYX_ERR(0, 2, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_thread); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_thread, __pyx_t_1) < 0) __PYX_ERR(0, 2, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_threading, __pyx_t_2) < 0) __PYX_ERR(0, 2, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_thread); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_thread, __pyx_t_2) < 0) __PYX_ERR(0, 2, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":3
* from __future__ import print_function
@@ -16732,19 +20066,19 @@ if (!__Pyx_RefNanny) {
* import dis
* import sys
*/
- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_n_s_GlobalDebuggerHolder);
__Pyx_GIVEREF(__pyx_n_s_GlobalDebuggerHolder);
- PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_GlobalDebuggerHolder);
- __pyx_t_1 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_constants, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_GlobalDebuggerHolder)) __PYX_ERR(0, 3, __pyx_L1_error);
+ __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_constants, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_GlobalDebuggerHolder, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_GlobalDebuggerHolder, __pyx_t_3) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":4
* from _pydev_bundle._pydev_saved_modules import threading, thread
@@ -16753,10 +20087,10 @@ if (!__Pyx_RefNanny) {
* import sys
* from _pydevd_frame_eval.pydevd_frame_tracing import update_globals_dict, dummy_tracing_holder
*/
- __pyx_t_1 = __Pyx_Import(__pyx_n_s_dis, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_dis, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_dis, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_dis, __pyx_t_2) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":5
* from _pydevd_bundle.pydevd_constants import GlobalDebuggerHolder
@@ -16765,10 +20099,10 @@ if (!__Pyx_RefNanny) {
* from _pydevd_frame_eval.pydevd_frame_tracing import update_globals_dict, dummy_tracing_holder
* from _pydevd_frame_eval.pydevd_modify_bytecode import DebugHelper, insert_pydevd_breaks
*/
- __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(0, 5, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_sys, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_2) < 0) __PYX_ERR(0, 5, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":6
* import dis
@@ -16777,26 +20111,26 @@ if (!__Pyx_RefNanny) {
* from _pydevd_frame_eval.pydevd_modify_bytecode import DebugHelper, insert_pydevd_breaks
* from pydevd_file_utils import get_abs_path_real_path_and_base_from_frame, NORM_PATHS_AND_BASE_CONTAINER
*/
- __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_n_s_update_globals_dict);
__Pyx_GIVEREF(__pyx_n_s_update_globals_dict);
- PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_update_globals_dict);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_update_globals_dict)) __PYX_ERR(0, 6, __pyx_L1_error);
__Pyx_INCREF(__pyx_n_s_dummy_tracing_holder);
__Pyx_GIVEREF(__pyx_n_s_dummy_tracing_holder);
- PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_dummy_tracing_holder);
- __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_frame_eval_pydevd_frame, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error)
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_dummy_tracing_holder)) __PYX_ERR(0, 6, __pyx_L1_error);
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydevd_frame_eval_pydevd_frame, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_update_globals_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_update_globals_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_update_globals_dict, __pyx_t_1) < 0) __PYX_ERR(0, 6, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_dummy_tracing_holder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_dummy_tracing_holder, __pyx_t_1) < 0) __PYX_ERR(0, 6, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_update_globals_dict, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_dummy_tracing_holder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_dummy_tracing_holder, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":7
* import sys
@@ -16805,26 +20139,26 @@ if (!__Pyx_RefNanny) {
* from pydevd_file_utils import get_abs_path_real_path_and_base_from_frame, NORM_PATHS_AND_BASE_CONTAINER
* from _pydevd_bundle.pydevd_trace_dispatch import fix_top_level_trace_and_get_trace_func
*/
- __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_n_s_DebugHelper);
__Pyx_GIVEREF(__pyx_n_s_DebugHelper);
- PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_DebugHelper);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_DebugHelper)) __PYX_ERR(0, 7, __pyx_L1_error);
__Pyx_INCREF(__pyx_n_s_insert_pydevd_breaks);
__Pyx_GIVEREF(__pyx_n_s_insert_pydevd_breaks);
- PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_insert_pydevd_breaks);
- __pyx_t_1 = __Pyx_Import(__pyx_n_s_pydevd_frame_eval_pydevd_modify, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_DebugHelper); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error)
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_insert_pydevd_breaks)) __PYX_ERR(0, 7, __pyx_L1_error);
+ __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_frame_eval_pydevd_modify, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_DebugHelper, __pyx_t_2) < 0) __PYX_ERR(0, 7, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_DebugHelper); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_DebugHelper, __pyx_t_3) < 0) __PYX_ERR(0, 7, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_insert_pydevd_breaks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_insert_pydevd_breaks, __pyx_t_3) < 0) __PYX_ERR(0, 7, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_insert_pydevd_breaks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_insert_pydevd_breaks, __pyx_t_2) < 0) __PYX_ERR(0, 7, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":8
* from _pydevd_frame_eval.pydevd_frame_tracing import update_globals_dict, dummy_tracing_holder
@@ -16833,26 +20167,26 @@ if (!__Pyx_RefNanny) {
* from _pydevd_bundle.pydevd_trace_dispatch import fix_top_level_trace_and_get_trace_func
*
*/
- __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_n_s_get_abs_path_real_path_and_base);
__Pyx_GIVEREF(__pyx_n_s_get_abs_path_real_path_and_base);
- PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_get_abs_path_real_path_and_base);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_get_abs_path_real_path_and_base)) __PYX_ERR(0, 8, __pyx_L1_error);
__Pyx_INCREF(__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER);
__Pyx_GIVEREF(__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER);
- PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER);
- __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_file_utils, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error)
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER)) __PYX_ERR(0, 8, __pyx_L1_error);
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydevd_file_utils, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_get_abs_path_real_path_and_base); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_get_abs_path_real_path_and_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_abs_path_real_path_and_base, __pyx_t_1) < 0) __PYX_ERR(0, 8, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER, __pyx_t_1) < 0) __PYX_ERR(0, 8, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_abs_path_real_path_and_base, __pyx_t_2) < 0) __PYX_ERR(0, 8, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER, __pyx_t_2) < 0) __PYX_ERR(0, 8, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":9
* from _pydevd_frame_eval.pydevd_modify_bytecode import DebugHelper, insert_pydevd_breaks
@@ -16861,19 +20195,19 @@ if (!__Pyx_RefNanny) {
*
* from _pydevd_bundle.pydevd_additional_thread_info import _set_additional_thread_info_lock
*/
- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_n_s_fix_top_level_trace_and_get_trac);
__Pyx_GIVEREF(__pyx_n_s_fix_top_level_trace_and_get_trac);
- PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_fix_top_level_trace_and_get_trac);
- __pyx_t_1 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_trace_disp, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_fix_top_level_trace_and_get_trac); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error)
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_fix_top_level_trace_and_get_trac)) __PYX_ERR(0, 9, __pyx_L1_error);
+ __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_trace_disp, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_fix_top_level_trace_and_get_trac, __pyx_t_2) < 0) __PYX_ERR(0, 9, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_fix_top_level_trace_and_get_trac); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_fix_top_level_trace_and_get_trac, __pyx_t_3) < 0) __PYX_ERR(0, 9, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":11
* from _pydevd_bundle.pydevd_trace_dispatch import fix_top_level_trace_and_get_trace_func
@@ -16882,19 +20216,19 @@ if (!__Pyx_RefNanny) {
* from _pydevd_bundle.pydevd_cython cimport PyDBAdditionalThreadInfo
* from pydevd_tracing import SetTrace
*/
- __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_n_s_set_additional_thread_info_lock);
__Pyx_GIVEREF(__pyx_n_s_set_additional_thread_info_lock);
- PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_set_additional_thread_info_lock);
- __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_additional, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error)
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_set_additional_thread_info_lock)) __PYX_ERR(0, 11, __pyx_L1_error);
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_additional, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_set_additional_thread_info_lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_set_additional_thread_info_lock); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_additional_thread_info_lock, __pyx_t_1) < 0) __PYX_ERR(0, 11, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_additional_thread_info_lock, __pyx_t_2) < 0) __PYX_ERR(0, 11, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":13
* from _pydevd_bundle.pydevd_additional_thread_info import _set_additional_thread_info_lock
@@ -16903,19 +20237,19 @@ if (!__Pyx_RefNanny) {
*
* _get_ident = threading.get_ident # Note this is py3 only, if py2 needed to be supported, _get_ident would be needed.
*/
- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_n_s_SetTrace);
__Pyx_GIVEREF(__pyx_n_s_SetTrace);
- PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_SetTrace);
- __pyx_t_1 = __Pyx_Import(__pyx_n_s_pydevd_tracing, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_SetTrace); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error)
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_SetTrace)) __PYX_ERR(0, 13, __pyx_L1_error);
+ __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_tracing, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_SetTrace, __pyx_t_2) < 0) __PYX_ERR(0, 13, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_SetTrace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_SetTrace, __pyx_t_3) < 0) __PYX_ERR(0, 13, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":15
* from pydevd_tracing import SetTrace
@@ -16924,13 +20258,13 @@ if (!__Pyx_RefNanny) {
* _thread_local_info = threading.local()
* _thread_active = threading._active
*/
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_threading); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get_ident_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_ident, __pyx_t_2) < 0) __PYX_ERR(0, 15, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get_ident_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_ident, __pyx_t_3) < 0) __PYX_ERR(0, 15, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":16
*
@@ -16939,16 +20273,16 @@ if (!__Pyx_RefNanny) {
* _thread_active = threading._active
*
*/
- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_local); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_threading); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 16, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_local); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_thread_local_info, __pyx_t_2) < 0) __PYX_ERR(0, 16, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 16, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_thread_local_info, __pyx_t_3) < 0) __PYX_ERR(0, 16, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":17
* _get_ident = threading.get_ident # Note this is py3 only, if py2 needed to be supported, _get_ident would be needed.
@@ -16957,13 +20291,13 @@ if (!__Pyx_RefNanny) {
*
* def clear_thread_local_info():
*/
- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_threading); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 17, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_active); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_active); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 17, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_thread_active, __pyx_t_2) < 0) __PYX_ERR(0, 17, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_thread_active, __pyx_t_1) < 0) __PYX_ERR(0, 17, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":19
* _thread_active = threading._active
@@ -16972,10 +20306,56 @@ if (!__Pyx_RefNanny) {
* global _thread_local_info
* _thread_local_info = threading.local()
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_1clear_thread_local_info, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_clear_thread_local_info, __pyx_t_1) < 0) __PYX_ERR(0, 19, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_1clear_thread_local_info, 0, __pyx_n_s_clear_thread_local_info, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__11)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_clear_thread_local_info, __pyx_t_2) < 0) __PYX_ERR(0, 19, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ThreadInfo___reduce_cython, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__13)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ PyType_Modified(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo);
+
+ /* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle_ThreadInfo__set_state(self, __pyx_state)
+ */
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_3__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ThreadInfo___setstate_cython, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__15)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 16, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 16, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ PyType_Modified(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo);
+
+ /* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FuncCodeInfo___reduce_cython, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__16)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ PyType_Modified(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo);
+
+ /* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle_FuncCodeInfo__set_state(self, __pyx_state)
+ */
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FuncCodeInfo___setstate_cython, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__17)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 16, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 16, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ PyType_Modified(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":152
*
@@ -16984,10 +20364,10 @@ if (!__Pyx_RefNanny) {
* if event == 'call':
* if frame.f_trace is not None:
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_3dummy_trace_dispatch, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_dummy_trace_dispatch, __pyx_t_1) < 0) __PYX_ERR(0, 152, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_3dummy_trace_dispatch, 0, __pyx_n_s_dummy_trace_dispatch, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__19)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_dummy_trace_dispatch, __pyx_t_2) < 0) __PYX_ERR(0, 152, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":159
*
@@ -16996,10 +20376,15 @@ if (!__Pyx_RefNanny) {
* return get_thread_info(PyEval_GetFrame())
*
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_5get_thread_info_py, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_thread_info_py, __pyx_t_1) < 0) __PYX_ERR(0, 159, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_n_s_ThreadInfo) < 0) __PYX_ERR(0, 159, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_5get_thread_info_py, 0, __pyx_n_s_get_thread_info_py, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 159, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_thread_info_py, __pyx_t_3) < 0) __PYX_ERR(0, 159, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":196
*
@@ -17008,10 +20393,10 @@ if (!__Pyx_RefNanny) {
* '''
* Helper to be called from Python.
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_7decref_py, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 196, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_decref_py, __pyx_t_1) < 0) __PYX_ERR(0, 196, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_7decref_py, 0, __pyx_n_s_decref_py, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 196, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_decref_py, __pyx_t_3) < 0) __PYX_ERR(0, 196, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":203
*
@@ -17020,10 +20405,15 @@ if (!__Pyx_RefNanny) {
* '''
* Helper to be called from Python.
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_9get_func_code_info_py, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_func_code_info_py, __pyx_t_1) < 0) __PYX_ERR(0, 203, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 203, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_FuncCodeInfo) < 0) __PYX_ERR(0, 203, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_9get_func_code_info_py, 0, __pyx_n_s_get_func_code_info_py, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_func_code_info_py, __pyx_t_2) < 0) __PYX_ERR(0, 203, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":210
*
@@ -17034,6 +20424,29 @@ if (!__Pyx_RefNanny) {
*/
__pyx_v_18_pydevd_frame_eval_22pydevd_frame_evaluator__code_extra_index = -1;
+ /* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CodeLineInfo___reduce_cython, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__25)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ PyType_Modified(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo);
+
+ /* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle__CodeLineInfo__set_state(self, __pyx_state)
+ */
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CodeLineInfo___setstate_cython, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 16, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 16, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ PyType_Modified(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo);
+
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":329
*
* # Note: this method has a version in pure-python too.
@@ -17041,10 +20454,10 @@ if (!__Pyx_RefNanny) {
* line_to_offset: dict = {}
* first_line: int = None
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_get_code_line_info, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_code_line_info, __pyx_t_1) < 0) __PYX_ERR(0, 329, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_get_code_line_info, 0, __pyx_n_s_get_code_line_info, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_code_line_info, __pyx_t_2) < 0) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":351
* # handled by the cython side in `FuncCodeInfo get_func_code_info` by providing the
@@ -17053,10 +20466,10 @@ if (!__Pyx_RefNanny) {
*
* def get_cached_code_obj_info_py(code_obj_py):
*/
- __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 351, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_cache, __pyx_t_1) < 0) __PYX_ERR(0, 351, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 351, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_cache, __pyx_t_2) < 0) __PYX_ERR(0, 351, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":353
* _cache: dict = {}
@@ -17065,10 +20478,46 @@ if (!__Pyx_RefNanny) {
* '''
* :return _CacheValue:
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_13get_cached_code_obj_info_py, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 353, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_cached_code_obj_info_py, __pyx_t_1) < 0) __PYX_ERR(0, 353, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_13get_cached_code_obj_info_py, 0, __pyx_n_s_get_cached_code_obj_info_py, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 353, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_cached_code_obj_info_py, __pyx_t_2) < 0) __PYX_ERR(0, 353, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":379
+ * self.code_lines_as_set = set(code_line_info.line_to_offset)
+ *
+ * cpdef compute_force_stay_in_untraced_mode(self, breakpoints): # <<<<<<<<<<<<<<
+ * '''
+ * :param breakpoints:
+ */
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_3compute_force_stay_in_untraced_mode, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CacheValue_compute_force_stay_i, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 379, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue, __pyx_n_s_compute_force_stay_in_untraced_m, __pyx_t_2) < 0) __PYX_ERR(0, 379, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ PyType_Modified(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue);
+
+ /* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CacheValue___reduce_cython, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ PyType_Modified(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue);
+
+ /* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle__CacheValue__set_state(self, __pyx_state)
+ */
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CacheValue___setstate_cython, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 16, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 16, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ PyType_Modified(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue);
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":401
* return breakpoint_found, force_stay_in_untraced_mode
@@ -17077,10 +20526,10 @@ if (!__Pyx_RefNanny) {
* return generate_code_with_breakpoints(code_obj_py, breakpoints)
*
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_15generate_code_with_breakpoints_py, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 401, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_generate_code_with_breakpoints_p, __pyx_t_1) < 0) __PYX_ERR(0, 401, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_15generate_code_with_breakpoints_py, 0, __pyx_n_s_generate_code_with_breakpoints_p, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 401, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_generate_code_with_breakpoints_p, __pyx_t_2) < 0) __PYX_ERR(0, 401, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":471
* return breakpoint_found, code_obj_py
@@ -17089,10 +20538,10 @@ if (!__Pyx_RefNanny) {
*
* cdef bint IS_PY_39_OWNARDS = sys.version_info[:2] >= (3, 9)
*/
- __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 471, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(0, 471, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_sys, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 471, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_2) < 0) __PYX_ERR(0, 471, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":473
* import sys
@@ -17101,19 +20550,19 @@ if (!__Pyx_RefNanny) {
*
* def frame_eval_func():
*/
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 473, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_version_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 473, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 473, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_2, 0, 2, NULL, NULL, &__pyx_slice__24, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 473, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_version_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 473, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_tuple__25, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 473, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 473, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_3, 0, 2, NULL, NULL, &__pyx_slice__37, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 473, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_tuple__38, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 473, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_v_18_pydevd_frame_eval_22pydevd_frame_evaluator_IS_PY_39_OWNARDS = __pyx_t_3;
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 473, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_v_18_pydevd_frame_eval_22pydevd_frame_evaluator_IS_PY_39_OWNARDS = __pyx_t_4;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":475
* cdef bint IS_PY_39_OWNARDS = sys.version_info[:2] >= (3, 9)
@@ -17122,10 +20571,10 @@ if (!__Pyx_RefNanny) {
* cdef PyThreadState *state = PyThreadState_Get()
* if IS_PY_39_OWNARDS:
*/
- __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_17frame_eval_func, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 475, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_frame_eval_func, __pyx_t_2) < 0) __PYX_ERR(0, 475, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_17frame_eval_func, 0, __pyx_n_s_frame_eval_func, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__40)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 475, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_frame_eval_func, __pyx_t_3) < 0) __PYX_ERR(0, 475, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":484
*
@@ -17134,20 +20583,20 @@ if (!__Pyx_RefNanny) {
* cdef PyThreadState *state = PyThreadState_Get()
* state.interp.eval_frame = _PyEval_EvalFrameDefault
*/
- __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_19stop_frame_eval, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 484, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_stop_frame_eval, __pyx_t_2) < 0) __PYX_ERR(0, 484, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_19stop_frame_eval, 0, __pyx_n_s_stop_frame_eval, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 484, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_stop_frame_eval, __pyx_t_3) < 0) __PYX_ERR(0, 484, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "(tree fragment)":1
* def __pyx_unpickle_ThreadInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
* cdef object __pyx_PickleError
* cdef object __pyx_result
*/
- __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_21__pyx_unpickle_ThreadInfo, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ThreadInfo, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_21__pyx_unpickle_ThreadInfo, 0, __pyx_n_s_pyx_unpickle_ThreadInfo, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ThreadInfo, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "(tree fragment)":11
* __pyx_unpickle_ThreadInfo__set_state( __pyx_result, __pyx_state)
@@ -17156,20 +20605,20 @@ if (!__Pyx_RefNanny) {
* __pyx_result._can_create_dummy_thread = __pyx_state[0]; __pyx_result.additional_info = __pyx_state[1]; __pyx_result.force_stay_in_untraced_mode = __pyx_state[2]; __pyx_result.fully_initialized = __pyx_state[3]; __pyx_result.inside_frame_eval = __pyx_state[4]; __pyx_result.is_pydevd_thread = __pyx_state[5]; __pyx_result.thread_trace_func = __pyx_state[6]
* if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'):
*/
- __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_23__pyx_unpickle_FuncCodeInfo, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_FuncCodeInfo, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_23__pyx_unpickle_FuncCodeInfo, 0, __pyx_n_s_pyx_unpickle_FuncCodeInfo, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_FuncCodeInfo, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "(tree fragment)":1
* def __pyx_unpickle__CodeLineInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
* cdef object __pyx_PickleError
* cdef object __pyx_result
*/
- __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_25__pyx_unpickle__CodeLineInfo, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle__CodeLineInfo, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_25__pyx_unpickle__CodeLineInfo, 0, __pyx_n_s_pyx_unpickle__CodeLineInfo, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle__CodeLineInfo, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "(tree fragment)":11
* __pyx_unpickle__CodeLineInfo__set_state(<_CodeLineInfo> __pyx_result, __pyx_state)
@@ -17178,32 +20627,42 @@ if (!__Pyx_RefNanny) {
* __pyx_result.first_line = __pyx_state[0]; __pyx_result.last_line = __pyx_state[1]; __pyx_result.line_to_offset = __pyx_state[2]
* if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
*/
- __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_27__pyx_unpickle__CacheValue, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle__CacheValue, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_27__pyx_unpickle__CacheValue, 0, __pyx_n_s_pyx_unpickle__CacheValue, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle__CacheValue, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":1
* from __future__ import print_function # <<<<<<<<<<<<<<
* from _pydev_bundle._pydev_saved_modules import threading, thread
* from _pydevd_bundle.pydevd_constants import GlobalDebuggerHolder
*/
- __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/*--- Wrapped vars code ---*/
goto __pyx_L0;
__pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
if (__pyx_m) {
- if (__pyx_d) {
+ if (__pyx_d && stringtab_initialized) {
__Pyx_AddTraceback("init _pydevd_frame_eval.pydevd_frame_evaluator", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
+ #if !CYTHON_USE_MODULE_STATE
Py_CLEAR(__pyx_m);
+ #else
+ Py_DECREF(__pyx_m);
+ if (pystate_addmodule_run) {
+ PyObject *tp, *value, *tb;
+ PyErr_Fetch(&tp, &value, &tb);
+ PyState_RemoveModule(&__pyx_moduledef);
+ PyErr_Restore(tp, value, tb);
+ }
+ #endif
} else if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_ImportError, "init _pydevd_frame_eval.pydevd_frame_evaluator");
}
@@ -17217,6 +20676,22 @@ if (!__Pyx_RefNanny) {
return;
#endif
}
+/* #### Code section: cleanup_globals ### */
+/* #### Code section: cleanup_module ### */
+/* #### Code section: main_method ### */
+/* #### Code section: utility_code_pragmas ### */
+#ifdef _MSC_VER
+#pragma warning( push )
+/* Warning 4127: conditional expression is constant
+ * Cython uses constant conditional expressions to allow in inline functions to be optimized at
+ * compile-time, so this warning is not useful
+ */
+#pragma warning( disable : 4127 )
+#endif
+
+
+
+/* #### Code section: utility_code_def ### */
/* --- Runtime support code --- */
/* Refnanny */
@@ -17236,463 +20711,970 @@ static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
}
#endif
-/* PyObjectGetAttrStr */
-#if CYTHON_USE_TYPE_SLOTS
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
- PyTypeObject* tp = Py_TYPE(obj);
- if (likely(tp->tp_getattro))
- return tp->tp_getattro(obj, attr_name);
-#if PY_MAJOR_VERSION < 3
- if (likely(tp->tp_getattr))
- return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
-#endif
- return PyObject_GetAttr(obj, attr_name);
-}
-#endif
-
-/* GetBuiltinName */
-static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
- PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
- if (unlikely(!result)) {
- PyErr_Format(PyExc_NameError,
+/* PyErrExceptionMatches */
+#if CYTHON_FAST_THREAD_STATE
+static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
+ Py_ssize_t i, n;
+ n = PyTuple_GET_SIZE(tuple);
#if PY_MAJOR_VERSION >= 3
- "name '%U' is not defined", name);
-#else
- "name '%.200s' is not defined", PyString_AS_STRING(name));
+ for (i=0; itp_dict;
- return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
-}
-static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
- PyObject **dictptr = NULL;
- Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
- if (offset) {
-#if CYTHON_COMPILING_IN_CPYTHON
- dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
+static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {
+ int result;
+ PyObject *exc_type;
+#if PY_VERSION_HEX >= 0x030C00A6
+ PyObject *current_exception = tstate->current_exception;
+ if (unlikely(!current_exception)) return 0;
+ exc_type = (PyObject*) Py_TYPE(current_exception);
+ if (exc_type == err) return 1;
#else
- dictptr = _PyObject_GetDictPtr(obj);
+ exc_type = tstate->curexc_type;
+ if (exc_type == err) return 1;
+ if (unlikely(!exc_type)) return 0;
#endif
+ #if CYTHON_AVOID_BORROWED_REFS
+ Py_INCREF(exc_type);
+ #endif
+ if (unlikely(PyTuple_Check(err))) {
+ result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
+ } else {
+ result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
}
- return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
-}
-static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
- PyObject *dict = Py_TYPE(obj)->tp_dict;
- if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
- return 0;
- return obj_dict_version == __Pyx_get_object_dict_version(obj);
+ #if CYTHON_AVOID_BORROWED_REFS
+ Py_DECREF(exc_type);
+ #endif
+ return result;
}
#endif
-/* GetModuleGlobalName */
-#if CYTHON_USE_DICT_VERSIONS
-static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
+/* PyErrFetchRestore */
+#if CYTHON_FAST_THREAD_STATE
+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
+#if PY_VERSION_HEX >= 0x030C00A6
+ PyObject *tmp_value;
+ assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value)));
+ if (value) {
+ #if CYTHON_COMPILING_IN_CPYTHON
+ if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb))
+ #endif
+ PyException_SetTraceback(value, tb);
+ }
+ tmp_value = tstate->current_exception;
+ tstate->current_exception = value;
+ Py_XDECREF(tmp_value);
+ Py_XDECREF(type);
+ Py_XDECREF(tb);
#else
-static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
+ PyObject *tmp_type, *tmp_value, *tmp_tb;
+ tmp_type = tstate->curexc_type;
+ tmp_value = tstate->curexc_value;
+ tmp_tb = tstate->curexc_traceback;
+ tstate->curexc_type = type;
+ tstate->curexc_value = value;
+ tstate->curexc_traceback = tb;
+ Py_XDECREF(tmp_type);
+ Py_XDECREF(tmp_value);
+ Py_XDECREF(tmp_tb);
#endif
-{
- PyObject *result;
-#if !CYTHON_AVOID_BORROWED_REFS
-#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
- result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
- __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
- if (likely(result)) {
- return __Pyx_NewRef(result);
- } else if (unlikely(PyErr_Occurred())) {
- return NULL;
+}
+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+#if PY_VERSION_HEX >= 0x030C00A6
+ PyObject* exc_value;
+ exc_value = tstate->current_exception;
+ tstate->current_exception = 0;
+ *value = exc_value;
+ *type = NULL;
+ *tb = NULL;
+ if (exc_value) {
+ *type = (PyObject*) Py_TYPE(exc_value);
+ Py_INCREF(*type);
+ #if CYTHON_COMPILING_IN_CPYTHON
+ *tb = ((PyBaseExceptionObject*) exc_value)->traceback;
+ Py_XINCREF(*tb);
+ #else
+ *tb = PyException_GetTraceback(exc_value);
+ #endif
}
#else
- result = PyDict_GetItem(__pyx_d, name);
- __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
- if (likely(result)) {
- return __Pyx_NewRef(result);
- }
+ *type = tstate->curexc_type;
+ *value = tstate->curexc_value;
+ *tb = tstate->curexc_traceback;
+ tstate->curexc_type = 0;
+ tstate->curexc_value = 0;
+ tstate->curexc_traceback = 0;
#endif
-#else
- result = PyObject_GetItem(__pyx_d, name);
- __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
- if (likely(result)) {
- return __Pyx_NewRef(result);
- }
- PyErr_Clear();
+}
#endif
- return __Pyx_GetBuiltinName(name);
+
+/* PyObjectGetAttrStr */
+#if CYTHON_USE_TYPE_SLOTS
+static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
+ PyTypeObject* tp = Py_TYPE(obj);
+ if (likely(tp->tp_getattro))
+ return tp->tp_getattro(obj, attr_name);
+#if PY_MAJOR_VERSION < 3
+ if (likely(tp->tp_getattr))
+ return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
+#endif
+ return PyObject_GetAttr(obj, attr_name);
}
+#endif
-/* PyFunctionFastCall */
-#if CYTHON_FAST_PYCALL
-static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
- PyObject *globals) {
- PyFrameObject *f;
- PyThreadState *tstate = __Pyx_PyThreadState_Current;
- PyObject **fastlocals;
- Py_ssize_t i;
- PyObject *result;
- assert(globals != NULL);
- /* XXX Perhaps we should create a specialized
- PyFrame_New() that doesn't take locals, but does
- take builtins without sanity checking them.
- */
- assert(tstate != NULL);
- f = PyFrame_New(tstate, co, globals, NULL);
- if (f == NULL) {
- return NULL;
- }
- fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
- for (i = 0; i < na; i++) {
- Py_INCREF(*args);
- fastlocals[i] = *args++;
- }
- result = PyEval_EvalFrameEx(f,0);
- ++tstate->recursion_depth;
- Py_DECREF(f);
- --tstate->recursion_depth;
- return result;
+/* PyObjectGetAttrStrNoError */
+#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1
+static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
+ __Pyx_PyErr_Clear();
}
-#if 1 || PY_VERSION_HEX < 0x030600B1
-static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) {
- PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
- PyObject *globals = PyFunction_GET_GLOBALS(func);
- PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
- PyObject *closure;
-#if PY_MAJOR_VERSION >= 3
- PyObject *kwdefs;
#endif
- PyObject *kwtuple, **k;
- PyObject **d;
- Py_ssize_t nd;
- Py_ssize_t nk;
+static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) {
PyObject *result;
- assert(kwargs == NULL || PyDict_Check(kwargs));
- nk = kwargs ? PyDict_Size(kwargs) : 0;
- if (Py_EnterRecursiveCall((char*)" while calling a Python object")) {
- return NULL;
+#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
+ (void) PyObject_GetOptionalAttr(obj, attr_name, &result);
+ return result;
+#else
+#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1
+ PyTypeObject* tp = Py_TYPE(obj);
+ if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) {
+ return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1);
}
- if (
-#if PY_MAJOR_VERSION >= 3
- co->co_kwonlyargcount == 0 &&
#endif
- likely(kwargs == NULL || nk == 0) &&
- co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {
- if (argdefs == NULL && co->co_argcount == nargs) {
- result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals);
- goto done;
- }
- else if (nargs == 0 && argdefs != NULL
- && co->co_argcount == Py_SIZE(argdefs)) {
- /* function called with no arguments, but all parameters have
- a default value: use default values as arguments .*/
- args = &PyTuple_GET_ITEM(argdefs, 0);
- result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals);
- goto done;
- }
- }
- if (kwargs != NULL) {
- Py_ssize_t pos, i;
- kwtuple = PyTuple_New(2 * nk);
- if (kwtuple == NULL) {
- result = NULL;
- goto done;
- }
- k = &PyTuple_GET_ITEM(kwtuple, 0);
- pos = i = 0;
- while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) {
- Py_INCREF(k[i]);
- Py_INCREF(k[i+1]);
- i += 2;
- }
- nk = i / 2;
- }
- else {
- kwtuple = NULL;
- k = NULL;
+ result = __Pyx_PyObject_GetAttrStr(obj, attr_name);
+ if (unlikely(!result)) {
+ __Pyx_PyObject_GetAttrStr_ClearAttributeError();
}
- closure = PyFunction_GET_CLOSURE(func);
-#if PY_MAJOR_VERSION >= 3
- kwdefs = PyFunction_GET_KW_DEFAULTS(func);
+ return result;
#endif
- if (argdefs != NULL) {
- d = &PyTuple_GET_ITEM(argdefs, 0);
- nd = Py_SIZE(argdefs);
- }
- else {
- d = NULL;
- nd = 0;
- }
+}
+
+/* GetBuiltinName */
+static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
+ PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name);
+ if (unlikely(!result) && !PyErr_Occurred()) {
+ PyErr_Format(PyExc_NameError,
#if PY_MAJOR_VERSION >= 3
- result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL,
- args, (int)nargs,
- k, (int)nk,
- d, (int)nd, kwdefs, closure);
+ "name '%U' is not defined", name);
#else
- result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL,
- args, (int)nargs,
- k, (int)nk,
- d, (int)nd, closure);
+ "name '%.200s' is not defined", PyString_AS_STRING(name));
#endif
- Py_XDECREF(kwtuple);
-done:
- Py_LeaveRecursiveCall();
+ }
return result;
}
-#endif
-#endif
-/* PyObjectCall */
+/* TupleAndListFromArray */
#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
- PyObject *result;
- ternaryfunc call = Py_TYPE(func)->tp_call;
- if (unlikely(!call))
- return PyObject_Call(func, arg, kw);
- if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
- return NULL;
- result = (*call)(func, arg, kw);
- Py_LeaveRecursiveCall();
- if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
- PyErr_SetString(
- PyExc_SystemError,
- "NULL result without error in PyObject_Call");
+static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) {
+ PyObject *v;
+ Py_ssize_t i;
+ for (i = 0; i < length; i++) {
+ v = dest[i] = src[i];
+ Py_INCREF(v);
}
- return result;
+}
+static CYTHON_INLINE PyObject *
+__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n)
+{
+ PyObject *res;
+ if (n <= 0) {
+ Py_INCREF(__pyx_empty_tuple);
+ return __pyx_empty_tuple;
+ }
+ res = PyTuple_New(n);
+ if (unlikely(res == NULL)) return NULL;
+ __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n);
+ return res;
+}
+static CYTHON_INLINE PyObject *
+__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n)
+{
+ PyObject *res;
+ if (n <= 0) {
+ return PyList_New(0);
+ }
+ res = PyList_New(n);
+ if (unlikely(res == NULL)) return NULL;
+ __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n);
+ return res;
}
#endif
-/* PyObjectCallMethO */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
- PyObject *self, *result;
- PyCFunction cfunc;
- cfunc = PyCFunction_GET_FUNCTION(func);
- self = PyCFunction_GET_SELF(func);
- if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
- return NULL;
- result = cfunc(self, arg);
- Py_LeaveRecursiveCall();
- if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
- PyErr_SetString(
- PyExc_SystemError,
- "NULL result without error in PyObject_Call");
+/* BytesEquals */
+static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
+#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API
+ return PyObject_RichCompareBool(s1, s2, equals);
+#else
+ if (s1 == s2) {
+ return (equals == Py_EQ);
+ } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
+ const char *ps1, *ps2;
+ Py_ssize_t length = PyBytes_GET_SIZE(s1);
+ if (length != PyBytes_GET_SIZE(s2))
+ return (equals == Py_NE);
+ ps1 = PyBytes_AS_STRING(s1);
+ ps2 = PyBytes_AS_STRING(s2);
+ if (ps1[0] != ps2[0]) {
+ return (equals == Py_NE);
+ } else if (length == 1) {
+ return (equals == Py_EQ);
+ } else {
+ int result;
+#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000)
+ Py_hash_t hash1, hash2;
+ hash1 = ((PyBytesObject*)s1)->ob_shash;
+ hash2 = ((PyBytesObject*)s2)->ob_shash;
+ if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
+ return (equals == Py_NE);
+ }
+#endif
+ result = memcmp(ps1, ps2, (size_t)length);
+ return (equals == Py_EQ) ? (result == 0) : (result != 0);
+ }
+ } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
+ return (equals == Py_NE);
+ } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
+ return (equals == Py_NE);
+ } else {
+ int result;
+ PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
+ if (!py_result)
+ return -1;
+ result = __Pyx_PyObject_IsTrue(py_result);
+ Py_DECREF(py_result);
+ return result;
}
- return result;
-}
#endif
+}
-/* PyObjectCallNoArg */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
-#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(func)) {
- return __Pyx_PyFunction_FastCall(func, NULL, 0);
+/* UnicodeEquals */
+static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
+#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API
+ return PyObject_RichCompareBool(s1, s2, equals);
+#else
+#if PY_MAJOR_VERSION < 3
+ PyObject* owned_ref = NULL;
+#endif
+ int s1_is_unicode, s2_is_unicode;
+ if (s1 == s2) {
+ goto return_eq;
+ }
+ s1_is_unicode = PyUnicode_CheckExact(s1);
+ s2_is_unicode = PyUnicode_CheckExact(s2);
+#if PY_MAJOR_VERSION < 3
+ if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) {
+ owned_ref = PyUnicode_FromObject(s2);
+ if (unlikely(!owned_ref))
+ return -1;
+ s2 = owned_ref;
+ s2_is_unicode = 1;
+ } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) {
+ owned_ref = PyUnicode_FromObject(s1);
+ if (unlikely(!owned_ref))
+ return -1;
+ s1 = owned_ref;
+ s1_is_unicode = 1;
+ } else if (((!s2_is_unicode) & (!s1_is_unicode))) {
+ return __Pyx_PyBytes_Equals(s1, s2, equals);
}
#endif
-#ifdef __Pyx_CyFunction_USED
- if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func)))
-#else
- if (likely(PyCFunction_Check(func)))
+ if (s1_is_unicode & s2_is_unicode) {
+ Py_ssize_t length;
+ int kind;
+ void *data1, *data2;
+ if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
+ return -1;
+ length = __Pyx_PyUnicode_GET_LENGTH(s1);
+ if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) {
+ goto return_ne;
+ }
+#if CYTHON_USE_UNICODE_INTERNALS
+ {
+ Py_hash_t hash1, hash2;
+ #if CYTHON_PEP393_ENABLED
+ hash1 = ((PyASCIIObject*)s1)->hash;
+ hash2 = ((PyASCIIObject*)s2)->hash;
+ #else
+ hash1 = ((PyUnicodeObject*)s1)->hash;
+ hash2 = ((PyUnicodeObject*)s2)->hash;
+ #endif
+ if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
+ goto return_ne;
+ }
+ }
#endif
- {
- if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
- return __Pyx_PyObject_CallMethO(func, NULL);
+ kind = __Pyx_PyUnicode_KIND(s1);
+ if (kind != __Pyx_PyUnicode_KIND(s2)) {
+ goto return_ne;
}
- }
- return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);
-}
-#endif
-
-/* PyCFunctionFastCall */
-#if CYTHON_FAST_PYCCALL
-static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
- PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
- PyCFunction meth = PyCFunction_GET_FUNCTION(func);
- PyObject *self = PyCFunction_GET_SELF(func);
- int flags = PyCFunction_GET_FLAGS(func);
- assert(PyCFunction_Check(func));
- assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
- assert(nargs >= 0);
- assert(nargs == 0 || args != NULL);
- /* _PyCFunction_FastCallDict() must not be called with an exception set,
- because it may clear it (directly or indirectly) and so the
- caller loses its exception */
- assert(!PyErr_Occurred());
- if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
- return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
+ data1 = __Pyx_PyUnicode_DATA(s1);
+ data2 = __Pyx_PyUnicode_DATA(s2);
+ if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
+ goto return_ne;
+ } else if (length == 1) {
+ goto return_eq;
+ } else {
+ int result = memcmp(data1, data2, (size_t)(length * kind));
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
+ return (equals == Py_EQ) ? (result == 0) : (result != 0);
+ }
+ } else if ((s1 == Py_None) & s2_is_unicode) {
+ goto return_ne;
+ } else if ((s2 == Py_None) & s1_is_unicode) {
+ goto return_ne;
} else {
- return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
+ int result;
+ PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
+ if (!py_result)
+ return -1;
+ result = __Pyx_PyObject_IsTrue(py_result);
+ Py_DECREF(py_result);
+ return result;
}
-}
+return_eq:
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
+ return (equals == Py_EQ);
+return_ne:
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
+ return (equals == Py_NE);
#endif
+}
-/* PyObjectCallOneArg */
-#if CYTHON_COMPILING_IN_CPYTHON
-static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
- PyObject *result;
- PyObject *args = PyTuple_New(1);
- if (unlikely(!args)) return NULL;
- Py_INCREF(arg);
- PyTuple_SET_ITEM(args, 0, arg);
- result = __Pyx_PyObject_Call(func, args, NULL);
- Py_DECREF(args);
- return result;
+/* fastcall */
+#if CYTHON_METH_FASTCALL
+static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s)
+{
+ Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames);
+ for (i = 0; i < n; i++)
+ {
+ if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i];
+ }
+ for (i = 0; i < n; i++)
+ {
+ int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ);
+ if (unlikely(eq != 0)) {
+ if (unlikely(eq < 0)) return NULL;
+ return kwvalues[i];
+ }
+ }
+ return NULL;
}
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
-#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(func)) {
- return __Pyx_PyFunction_FastCall(func, &arg, 1);
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
+CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) {
+ Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames);
+ PyObject *dict;
+ dict = PyDict_New();
+ if (unlikely(!dict))
+ return NULL;
+ for (i=0; itp_dict;
+ return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
}
+static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
+ PyObject **dictptr = NULL;
+ Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
+ if (offset) {
+#if CYTHON_COMPILING_IN_CPYTHON
+ dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
#else
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
- PyObject *result;
- PyObject *args = PyTuple_Pack(1, arg);
- if (unlikely(!args)) return NULL;
- result = __Pyx_PyObject_Call(func, args, NULL);
- Py_DECREF(args);
- return result;
+ dictptr = _PyObject_GetDictPtr(obj);
+#endif
+ }
+ return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
+}
+static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
+ PyObject *dict = Py_TYPE(obj)->tp_dict;
+ if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
+ return 0;
+ return obj_dict_version == __Pyx_get_object_dict_version(obj);
}
#endif
-/* PyObjectCall2Args */
-static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
- PyObject *args, *result = NULL;
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(function)) {
- PyObject *args[2] = {arg1, arg2};
- return __Pyx_PyFunction_FastCall(function, args, 2);
+/* GetModuleGlobalName */
+#if CYTHON_USE_DICT_VERSIONS
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
+#else
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
+#endif
+{
+ PyObject *result;
+#if !CYTHON_AVOID_BORROWED_REFS
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000
+ result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
+ if (likely(result)) {
+ return __Pyx_NewRef(result);
+ } else if (unlikely(PyErr_Occurred())) {
+ return NULL;
}
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(function)) {
- PyObject *args[2] = {arg1, arg2};
- return __Pyx_PyCFunction_FastCall(function, args, 2);
+#elif CYTHON_COMPILING_IN_LIMITED_API
+ if (unlikely(!__pyx_m)) {
+ return NULL;
}
- #endif
- args = PyTuple_New(2);
- if (unlikely(!args)) goto done;
- Py_INCREF(arg1);
- PyTuple_SET_ITEM(args, 0, arg1);
- Py_INCREF(arg2);
- PyTuple_SET_ITEM(args, 1, arg2);
- Py_INCREF(function);
- result = __Pyx_PyObject_Call(function, args, NULL);
- Py_DECREF(args);
- Py_DECREF(function);
-done:
- return result;
-}
-
-/* PyIntBinop */
-#if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) {
- (void)inplace;
- (void)zerodivision_check;
- #if PY_MAJOR_VERSION < 3
- if (likely(PyInt_CheckExact(op1))) {
- const long b = intval;
- long x;
- long a = PyInt_AS_LONG(op1);
- x = (long)((unsigned long)a + b);
- if (likely((x^a) >= 0 || (x^b) >= 0))
- return PyInt_FromLong(x);
- return PyLong_Type.tp_as_number->nb_add(op1, op2);
+ result = PyObject_GetAttr(__pyx_m, name);
+ if (likely(result)) {
+ return result;
+ }
+#else
+ result = PyDict_GetItem(__pyx_d, name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
+ if (likely(result)) {
+ return __Pyx_NewRef(result);
}
- #endif
- #if CYTHON_USE_PYLONG_INTERNALS
- if (likely(PyLong_CheckExact(op1))) {
- const long b = intval;
- long a, x;
-#ifdef HAVE_LONG_LONG
- const PY_LONG_LONG llb = intval;
- PY_LONG_LONG lla, llx;
#endif
- const digit* digits = ((PyLongObject*)op1)->ob_digit;
- const Py_ssize_t size = Py_SIZE(op1);
- if (likely(__Pyx_sst_abs(size) <= 1)) {
- a = likely(size) ? digits[0] : 0;
- if (size == -1) a = -a;
- } else {
- switch (size) {
- case -2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
+#else
+ result = PyObject_GetItem(__pyx_d, name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
+ if (likely(result)) {
+ return __Pyx_NewRef(result);
+ }
+ PyErr_Clear();
+#endif
+ return __Pyx_GetBuiltinName(name);
+}
+
+/* PyFunctionFastCall */
+#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL
+static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
+ PyObject *globals) {
+ PyFrameObject *f;
+ PyThreadState *tstate = __Pyx_PyThreadState_Current;
+ PyObject **fastlocals;
+ Py_ssize_t i;
+ PyObject *result;
+ assert(globals != NULL);
+ /* XXX Perhaps we should create a specialized
+ PyFrame_New() that doesn't take locals, but does
+ take builtins without sanity checking them.
+ */
+ assert(tstate != NULL);
+ f = PyFrame_New(tstate, co, globals, NULL);
+ if (f == NULL) {
+ return NULL;
+ }
+ fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
+ for (i = 0; i < na; i++) {
+ Py_INCREF(*args);
+ fastlocals[i] = *args++;
+ }
+ result = PyEval_EvalFrameEx(f,0);
+ ++tstate->recursion_depth;
+ Py_DECREF(f);
+ --tstate->recursion_depth;
+ return result;
+}
+static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) {
+ PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
+ PyObject *globals = PyFunction_GET_GLOBALS(func);
+ PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
+ PyObject *closure;
+#if PY_MAJOR_VERSION >= 3
+ PyObject *kwdefs;
+#endif
+ PyObject *kwtuple, **k;
+ PyObject **d;
+ Py_ssize_t nd;
+ Py_ssize_t nk;
+ PyObject *result;
+ assert(kwargs == NULL || PyDict_Check(kwargs));
+ nk = kwargs ? PyDict_Size(kwargs) : 0;
+ #if PY_MAJOR_VERSION < 3
+ if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) {
+ return NULL;
+ }
+ #else
+ if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) {
+ return NULL;
+ }
+ #endif
+ if (
+#if PY_MAJOR_VERSION >= 3
+ co->co_kwonlyargcount == 0 &&
+#endif
+ likely(kwargs == NULL || nk == 0) &&
+ co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {
+ if (argdefs == NULL && co->co_argcount == nargs) {
+ result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals);
+ goto done;
+ }
+ else if (nargs == 0 && argdefs != NULL
+ && co->co_argcount == Py_SIZE(argdefs)) {
+ /* function called with no arguments, but all parameters have
+ a default value: use default values as arguments .*/
+ args = &PyTuple_GET_ITEM(argdefs, 0);
+ result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals);
+ goto done;
+ }
+ }
+ if (kwargs != NULL) {
+ Py_ssize_t pos, i;
+ kwtuple = PyTuple_New(2 * nk);
+ if (kwtuple == NULL) {
+ result = NULL;
+ goto done;
+ }
+ k = &PyTuple_GET_ITEM(kwtuple, 0);
+ pos = i = 0;
+ while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) {
+ Py_INCREF(k[i]);
+ Py_INCREF(k[i+1]);
+ i += 2;
+ }
+ nk = i / 2;
+ }
+ else {
+ kwtuple = NULL;
+ k = NULL;
+ }
+ closure = PyFunction_GET_CLOSURE(func);
+#if PY_MAJOR_VERSION >= 3
+ kwdefs = PyFunction_GET_KW_DEFAULTS(func);
+#endif
+ if (argdefs != NULL) {
+ d = &PyTuple_GET_ITEM(argdefs, 0);
+ nd = Py_SIZE(argdefs);
+ }
+ else {
+ d = NULL;
+ nd = 0;
+ }
+#if PY_MAJOR_VERSION >= 3
+ result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL,
+ args, (int)nargs,
+ k, (int)nk,
+ d, (int)nd, kwdefs, closure);
+#else
+ result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL,
+ args, (int)nargs,
+ k, (int)nk,
+ d, (int)nd, closure);
+#endif
+ Py_XDECREF(kwtuple);
+done:
+ Py_LeaveRecursiveCall();
+ return result;
+}
+#endif
+
+/* PyObjectCall */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
+ PyObject *result;
+ ternaryfunc call = Py_TYPE(func)->tp_call;
+ if (unlikely(!call))
+ return PyObject_Call(func, arg, kw);
+ #if PY_MAJOR_VERSION < 3
+ if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
+ return NULL;
+ #else
+ if (unlikely(Py_EnterRecursiveCall(" while calling a Python object")))
+ return NULL;
+ #endif
+ result = (*call)(func, arg, kw);
+ Py_LeaveRecursiveCall();
+ if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
+ PyErr_SetString(
+ PyExc_SystemError,
+ "NULL result without error in PyObject_Call");
+ }
+ return result;
+}
+#endif
+
+/* PyObjectCallMethO */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
+ PyObject *self, *result;
+ PyCFunction cfunc;
+ cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func);
+ self = __Pyx_CyOrPyCFunction_GET_SELF(func);
+ #if PY_MAJOR_VERSION < 3
+ if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
+ return NULL;
+ #else
+ if (unlikely(Py_EnterRecursiveCall(" while calling a Python object")))
+ return NULL;
+ #endif
+ result = cfunc(self, arg);
+ Py_LeaveRecursiveCall();
+ if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
+ PyErr_SetString(
+ PyExc_SystemError,
+ "NULL result without error in PyObject_Call");
+ }
+ return result;
+}
+#endif
+
+/* PyObjectFastCall */
+#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API
+static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) {
+ PyObject *argstuple;
+ PyObject *result = 0;
+ size_t i;
+ argstuple = PyTuple_New((Py_ssize_t)nargs);
+ if (unlikely(!argstuple)) return NULL;
+ for (i = 0; i < nargs; i++) {
+ Py_INCREF(args[i]);
+ if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) < 0) goto bad;
+ }
+ result = __Pyx_PyObject_Call(func, argstuple, kwargs);
+ bad:
+ Py_DECREF(argstuple);
+ return result;
+}
+#endif
+static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) {
+ Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs);
+#if CYTHON_COMPILING_IN_CPYTHON
+ if (nargs == 0 && kwargs == NULL) {
+ if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS))
+ return __Pyx_PyObject_CallMethO(func, NULL);
+ }
+ else if (nargs == 1 && kwargs == NULL) {
+ if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O))
+ return __Pyx_PyObject_CallMethO(func, args[0]);
+ }
+#endif
+ #if PY_VERSION_HEX < 0x030800B1
+ #if CYTHON_FAST_PYCCALL
+ if (PyCFunction_Check(func)) {
+ if (kwargs) {
+ return _PyCFunction_FastCallDict(func, args, nargs, kwargs);
+ } else {
+ return _PyCFunction_FastCallKeywords(func, args, nargs, NULL);
+ }
+ }
+ #if PY_VERSION_HEX >= 0x030700A1
+ if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) {
+ return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL);
+ }
+ #endif
+ #endif
+ #if CYTHON_FAST_PYCALL
+ if (PyFunction_Check(func)) {
+ return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs);
+ }
+ #endif
+ #endif
+ if (kwargs == NULL) {
+ #if CYTHON_VECTORCALL
+ #if PY_VERSION_HEX < 0x03090000
+ vectorcallfunc f = _PyVectorcall_Function(func);
+ #else
+ vectorcallfunc f = PyVectorcall_Function(func);
+ #endif
+ if (f) {
+ return f(func, args, (size_t)nargs, NULL);
+ }
+ #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL
+ if (__Pyx_CyFunction_CheckExact(func)) {
+ __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func);
+ if (f) return f(func, args, (size_t)nargs, NULL);
+ }
+ #endif
+ }
+ if (nargs == 0) {
+ return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs);
+ }
+ #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API
+ return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs);
+ #else
+ return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs);
+ #endif
+}
+
+/* RaiseException */
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+ __Pyx_PyThreadState_declare
+ CYTHON_UNUSED_VAR(cause);
+ Py_XINCREF(type);
+ if (!value || value == Py_None)
+ value = NULL;
+ else
+ Py_INCREF(value);
+ if (!tb || tb == Py_None)
+ tb = NULL;
+ else {
+ Py_INCREF(tb);
+ if (!PyTraceBack_Check(tb)) {
+ PyErr_SetString(PyExc_TypeError,
+ "raise: arg 3 must be a traceback or None");
+ goto raise_error;
+ }
+ }
+ if (PyType_Check(type)) {
+#if CYTHON_COMPILING_IN_PYPY
+ if (!value) {
+ Py_INCREF(Py_None);
+ value = Py_None;
+ }
+#endif
+ PyErr_NormalizeException(&type, &value, &tb);
+ } else {
+ if (value) {
+ PyErr_SetString(PyExc_TypeError,
+ "instance exception may not have a separate value");
+ goto raise_error;
+ }
+ value = type;
+ type = (PyObject*) Py_TYPE(type);
+ Py_INCREF(type);
+ if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+ PyErr_SetString(PyExc_TypeError,
+ "raise: exception class must be a subclass of BaseException");
+ goto raise_error;
+ }
+ }
+ __Pyx_PyThreadState_assign
+ __Pyx_ErrRestore(type, value, tb);
+ return;
+raise_error:
+ Py_XDECREF(value);
+ Py_XDECREF(type);
+ Py_XDECREF(tb);
+ return;
+}
+#else
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+ PyObject* owned_instance = NULL;
+ if (tb == Py_None) {
+ tb = 0;
+ } else if (tb && !PyTraceBack_Check(tb)) {
+ PyErr_SetString(PyExc_TypeError,
+ "raise: arg 3 must be a traceback or None");
+ goto bad;
+ }
+ if (value == Py_None)
+ value = 0;
+ if (PyExceptionInstance_Check(type)) {
+ if (value) {
+ PyErr_SetString(PyExc_TypeError,
+ "instance exception may not have a separate value");
+ goto bad;
+ }
+ value = type;
+ type = (PyObject*) Py_TYPE(value);
+ } else if (PyExceptionClass_Check(type)) {
+ PyObject *instance_class = NULL;
+ if (value && PyExceptionInstance_Check(value)) {
+ instance_class = (PyObject*) Py_TYPE(value);
+ if (instance_class != type) {
+ int is_subclass = PyObject_IsSubclass(instance_class, type);
+ if (!is_subclass) {
+ instance_class = NULL;
+ } else if (unlikely(is_subclass == -1)) {
+ goto bad;
+ } else {
+ type = instance_class;
+ }
+ }
+ }
+ if (!instance_class) {
+ PyObject *args;
+ if (!value)
+ args = PyTuple_New(0);
+ else if (PyTuple_Check(value)) {
+ Py_INCREF(value);
+ args = value;
+ } else
+ args = PyTuple_Pack(1, value);
+ if (!args)
+ goto bad;
+ owned_instance = PyObject_Call(type, args, NULL);
+ Py_DECREF(args);
+ if (!owned_instance)
+ goto bad;
+ value = owned_instance;
+ if (!PyExceptionInstance_Check(value)) {
+ PyErr_Format(PyExc_TypeError,
+ "calling %R should have returned an instance of "
+ "BaseException, not %R",
+ type, Py_TYPE(value));
+ goto bad;
+ }
+ }
+ } else {
+ PyErr_SetString(PyExc_TypeError,
+ "raise: exception class must be a subclass of BaseException");
+ goto bad;
+ }
+ if (cause) {
+ PyObject *fixed_cause;
+ if (cause == Py_None) {
+ fixed_cause = NULL;
+ } else if (PyExceptionClass_Check(cause)) {
+ fixed_cause = PyObject_CallObject(cause, NULL);
+ if (fixed_cause == NULL)
+ goto bad;
+ } else if (PyExceptionInstance_Check(cause)) {
+ fixed_cause = cause;
+ Py_INCREF(fixed_cause);
+ } else {
+ PyErr_SetString(PyExc_TypeError,
+ "exception causes must derive from "
+ "BaseException");
+ goto bad;
+ }
+ PyException_SetCause(value, fixed_cause);
+ }
+ PyErr_SetObject(type, value);
+ if (tb) {
+ #if PY_VERSION_HEX >= 0x030C00A6
+ PyException_SetTraceback(value, tb);
+ #elif CYTHON_FAST_THREAD_STATE
+ PyThreadState *tstate = __Pyx_PyThreadState_Current;
+ PyObject* tmp_tb = tstate->curexc_traceback;
+ if (tb != tmp_tb) {
+ Py_INCREF(tb);
+ tstate->curexc_traceback = tb;
+ Py_XDECREF(tmp_tb);
+ }
+#else
+ PyObject *tmp_type, *tmp_value, *tmp_tb;
+ PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
+ Py_INCREF(tb);
+ PyErr_Restore(tmp_type, tmp_value, tb);
+ Py_XDECREF(tmp_tb);
+#endif
+ }
+bad:
+ Py_XDECREF(owned_instance);
+ return;
+}
+#endif
+
+/* PyIntBinop */
+#if !CYTHON_COMPILING_IN_PYPY
+static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
+ CYTHON_MAYBE_UNUSED_VAR(intval);
+ CYTHON_MAYBE_UNUSED_VAR(inplace);
+ CYTHON_UNUSED_VAR(zerodivision_check);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(PyInt_CheckExact(op1))) {
+ const long b = intval;
+ long x;
+ long a = PyInt_AS_LONG(op1);
+
+ x = (long)((unsigned long)a + (unsigned long)b);
+ if (likely((x^a) >= 0 || (x^b) >= 0))
+ return PyInt_FromLong(x);
+ return PyLong_Type.tp_as_number->nb_add(op1, op2);
+ }
+ #endif
+ #if CYTHON_USE_PYLONG_INTERNALS
+ if (likely(PyLong_CheckExact(op1))) {
+ const long b = intval;
+ long a, x;
#ifdef HAVE_LONG_LONG
+ const PY_LONG_LONG llb = intval;
+ PY_LONG_LONG lla, llx;
+#endif
+ if (unlikely(__Pyx_PyLong_IsZero(op1))) {
+ return __Pyx_NewRef(op2);
+ }
+ if (likely(__Pyx_PyLong_IsCompact(op1))) {
+ a = __Pyx_PyLong_CompactValue(op1);
+ } else {
+ const digit* digits = __Pyx_PyLong_Digits(op1);
+ const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1);
+ switch (size) {
+ case -2:
+ if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+ a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+ break;
+ #ifdef HAVE_LONG_LONG
} else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
goto long_long;
-#endif
+ #endif
}
CYTHON_FALLTHROUGH;
case 2:
if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
break;
-#ifdef HAVE_LONG_LONG
+ #ifdef HAVE_LONG_LONG
} else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
goto long_long;
-#endif
+ #endif
}
CYTHON_FALLTHROUGH;
case -3:
if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
break;
-#ifdef HAVE_LONG_LONG
+ #ifdef HAVE_LONG_LONG
} else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
goto long_long;
-#endif
+ #endif
}
CYTHON_FALLTHROUGH;
case 3:
if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
break;
-#ifdef HAVE_LONG_LONG
+ #ifdef HAVE_LONG_LONG
} else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
goto long_long;
-#endif
+ #endif
}
CYTHON_FALLTHROUGH;
case -4:
if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
break;
-#ifdef HAVE_LONG_LONG
+ #ifdef HAVE_LONG_LONG
} else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
goto long_long;
-#endif
+ #endif
}
CYTHON_FALLTHROUGH;
case 4:
if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
break;
-#ifdef HAVE_LONG_LONG
+ #ifdef HAVE_LONG_LONG
} else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
goto long_long;
-#endif
+ #endif
}
CYTHON_FALLTHROUGH;
default: return PyLong_Type.tp_as_number->nb_add(op1, op2);
@@ -17711,8 +21693,13 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
#endif
if (PyFloat_CheckExact(op1)) {
const long b = intval;
+#if CYTHON_COMPILING_IN_LIMITED_API
+ double a = __pyx_PyFloat_AsDouble(op1);
+#else
double a = PyFloat_AS_DOUBLE(op1);
+#endif
double result;
+
PyFPE_START_PROTECT("add", return NULL)
result = ((double)a) + (double)b;
PyFPE_END_PROTECT(result)
@@ -17726,7 +21713,8 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj,
Py_ssize_t cstart, Py_ssize_t cstop,
PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
- int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
+ int has_cstart, int has_cstop, int wraparound) {
+ __Pyx_TypeName obj_type_name;
#if CYTHON_USE_TYPE_SLOTS
PyMappingMethods* mp;
#if PY_MAJOR_VERSION < 3
@@ -17765,9 +21753,13 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj,
}
return ms->sq_slice(obj, cstart, cstop);
}
+#else
+ CYTHON_UNUSED_VAR(wraparound);
#endif
mp = Py_TYPE(obj)->tp_as_mapping;
if (likely(mp && mp->mp_subscript))
+#else
+ CYTHON_UNUSED_VAR(wraparound);
#endif
{
PyObject* result;
@@ -17806,1670 +21798,3147 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj,
#if CYTHON_USE_TYPE_SLOTS
result = mp->mp_subscript(obj, py_slice);
#else
- result = PyObject_GetItem(obj, py_slice);
+ result = PyObject_GetItem(obj, py_slice);
+#endif
+ if (!_py_slice) {
+ Py_DECREF(py_slice);
+ }
+ return result;
+ }
+ obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
+ PyErr_Format(PyExc_TypeError,
+ "'" __Pyx_FMT_TYPENAME "' object is unsliceable", obj_type_name);
+ __Pyx_DECREF_TypeName(obj_type_name);
+bad:
+ return NULL;
+}
+
+/* GetAttr3 */
+#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1
+static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
+ return NULL;
+ __Pyx_PyErr_Clear();
+ Py_INCREF(d);
+ return d;
+}
+#endif
+static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) {
+ PyObject *r;
+#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
+ int res = PyObject_GetOptionalAttr(o, n, &r);
+ return (res != 0) ? r : __Pyx_NewRef(d);
+#else
+ #if CYTHON_USE_TYPE_SLOTS
+ if (likely(PyString_Check(n))) {
+ r = __Pyx_PyObject_GetAttrStrNoError(o, n);
+ if (unlikely(!r) && likely(!PyErr_Occurred())) {
+ r = __Pyx_NewRef(d);
+ }
+ return r;
+ }
+ #endif
+ r = PyObject_GetAttr(o, n);
+ return (likely(r)) ? r : __Pyx_GetAttr3Default(d);
+#endif
+}
+
+/* PyObjectCallNoArg */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
+ PyObject *arg[2] = {NULL, NULL};
+ return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
+}
+
+/* GetTopmostException */
+#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE
+static _PyErr_StackItem *
+__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
+{
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) &&
+ exc_info->previous_item != NULL)
+ {
+ exc_info = exc_info->previous_item;
+ }
+ return exc_info;
+}
+#endif
+
+/* SaveResetException */
+#if CYTHON_FAST_THREAD_STATE
+static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+ #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
+ _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
+ PyObject *exc_value = exc_info->exc_value;
+ if (exc_value == NULL || exc_value == Py_None) {
+ *value = NULL;
+ *type = NULL;
+ *tb = NULL;
+ } else {
+ *value = exc_value;
+ Py_INCREF(*value);
+ *type = (PyObject*) Py_TYPE(exc_value);
+ Py_INCREF(*type);
+ *tb = PyException_GetTraceback(exc_value);
+ }
+ #elif CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
+ *type = exc_info->exc_type;
+ *value = exc_info->exc_value;
+ *tb = exc_info->exc_traceback;
+ Py_XINCREF(*type);
+ Py_XINCREF(*value);
+ Py_XINCREF(*tb);
+ #else
+ *type = tstate->exc_type;
+ *value = tstate->exc_value;
+ *tb = tstate->exc_traceback;
+ Py_XINCREF(*type);
+ Py_XINCREF(*value);
+ Py_XINCREF(*tb);
+ #endif
+}
+static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
+ #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ PyObject *tmp_value = exc_info->exc_value;
+ exc_info->exc_value = value;
+ Py_XDECREF(tmp_value);
+ Py_XDECREF(type);
+ Py_XDECREF(tb);
+ #else
+ PyObject *tmp_type, *tmp_value, *tmp_tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = type;
+ exc_info->exc_value = value;
+ exc_info->exc_traceback = tb;
+ #else
+ tmp_type = tstate->exc_type;
+ tmp_value = tstate->exc_value;
+ tmp_tb = tstate->exc_traceback;
+ tstate->exc_type = type;
+ tstate->exc_value = value;
+ tstate->exc_traceback = tb;
+ #endif
+ Py_XDECREF(tmp_type);
+ Py_XDECREF(tmp_value);
+ Py_XDECREF(tmp_tb);
+ #endif
+}
+#endif
+
+/* GetException */
+#if CYTHON_FAST_THREAD_STATE
+static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
+#else
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
+#endif
+{
+ PyObject *local_type = NULL, *local_value, *local_tb = NULL;
+#if CYTHON_FAST_THREAD_STATE
+ PyObject *tmp_type, *tmp_value, *tmp_tb;
+ #if PY_VERSION_HEX >= 0x030C00A6
+ local_value = tstate->current_exception;
+ tstate->current_exception = 0;
+ if (likely(local_value)) {
+ local_type = (PyObject*) Py_TYPE(local_value);
+ Py_INCREF(local_type);
+ local_tb = PyException_GetTraceback(local_value);
+ }
+ #else
+ local_type = tstate->curexc_type;
+ local_value = tstate->curexc_value;
+ local_tb = tstate->curexc_traceback;
+ tstate->curexc_type = 0;
+ tstate->curexc_value = 0;
+ tstate->curexc_traceback = 0;
+ #endif
+#else
+ PyErr_Fetch(&local_type, &local_value, &local_tb);
+#endif
+ PyErr_NormalizeException(&local_type, &local_value, &local_tb);
+#if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6
+ if (unlikely(tstate->current_exception))
+#elif CYTHON_FAST_THREAD_STATE
+ if (unlikely(tstate->curexc_type))
+#else
+ if (unlikely(PyErr_Occurred()))
+#endif
+ goto bad;
+ #if PY_MAJOR_VERSION >= 3
+ if (local_tb) {
+ if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
+ goto bad;
+ }
+ #endif
+ Py_XINCREF(local_tb);
+ Py_XINCREF(local_type);
+ Py_XINCREF(local_value);
+ *type = local_type;
+ *value = local_value;
+ *tb = local_tb;
+#if CYTHON_FAST_THREAD_STATE
+ #if CYTHON_USE_EXC_INFO_STACK
+ {
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ #if PY_VERSION_HEX >= 0x030B00a4
+ tmp_value = exc_info->exc_value;
+ exc_info->exc_value = local_value;
+ tmp_type = NULL;
+ tmp_tb = NULL;
+ Py_XDECREF(local_type);
+ Py_XDECREF(local_tb);
+ #else
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = local_type;
+ exc_info->exc_value = local_value;
+ exc_info->exc_traceback = local_tb;
+ #endif
+ }
+ #else
+ tmp_type = tstate->exc_type;
+ tmp_value = tstate->exc_value;
+ tmp_tb = tstate->exc_traceback;
+ tstate->exc_type = local_type;
+ tstate->exc_value = local_value;
+ tstate->exc_traceback = local_tb;
+ #endif
+ Py_XDECREF(tmp_type);
+ Py_XDECREF(tmp_value);
+ Py_XDECREF(tmp_tb);
+#else
+ PyErr_SetExcInfo(local_type, local_value, local_tb);
+#endif
+ return 0;
+bad:
+ *type = 0;
+ *value = 0;
+ *tb = 0;
+ Py_XDECREF(local_type);
+ Py_XDECREF(local_value);
+ Py_XDECREF(local_tb);
+ return -1;
+}
+
+/* PyObjectLookupSpecial */
+#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error) {
+ PyObject *res;
+ PyTypeObject *tp = Py_TYPE(obj);
+#if PY_MAJOR_VERSION < 3
+ if (unlikely(PyInstance_Check(obj)))
+ return with_error ? __Pyx_PyObject_GetAttrStr(obj, attr_name) : __Pyx_PyObject_GetAttrStrNoError(obj, attr_name);
+#endif
+ res = _PyType_Lookup(tp, attr_name);
+ if (likely(res)) {
+ descrgetfunc f = Py_TYPE(res)->tp_descr_get;
+ if (!f) {
+ Py_INCREF(res);
+ } else {
+ res = f(res, obj, (PyObject *)tp);
+ }
+ } else if (with_error) {
+ PyErr_SetObject(PyExc_AttributeError, attr_name);
+ }
+ return res;
+}
+#endif
+
+/* PyObjectSetAttrStr */
+#if CYTHON_USE_TYPE_SLOTS
+static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
+ PyTypeObject* tp = Py_TYPE(obj);
+ if (likely(tp->tp_setattro))
+ return tp->tp_setattro(obj, attr_name, value);
+#if PY_MAJOR_VERSION < 3
+ if (likely(tp->tp_setattr))
+ return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value);
+#endif
+ return PyObject_SetAttr(obj, attr_name, value);
+}
+#endif
+
+/* RaiseUnboundLocalError */
+static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
+ PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
+}
+
+/* ExtTypeTest */
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+ __Pyx_TypeName obj_type_name;
+ __Pyx_TypeName type_name;
+ if (unlikely(!type)) {
+ PyErr_SetString(PyExc_SystemError, "Missing type object");
+ return 0;
+ }
+ if (likely(__Pyx_TypeCheck(obj, type)))
+ return 1;
+ obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
+ type_name = __Pyx_PyType_GetName(type);
+ PyErr_Format(PyExc_TypeError,
+ "Cannot convert " __Pyx_FMT_TYPENAME " to " __Pyx_FMT_TYPENAME,
+ obj_type_name, type_name);
+ __Pyx_DECREF_TypeName(obj_type_name);
+ __Pyx_DECREF_TypeName(type_name);
+ return 0;
+}
+
+/* SwapException */
+#if CYTHON_FAST_THREAD_STATE
+static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+ PyObject *tmp_type, *tmp_value, *tmp_tb;
+ #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_value = exc_info->exc_value;
+ exc_info->exc_value = *value;
+ if (tmp_value == NULL || tmp_value == Py_None) {
+ Py_XDECREF(tmp_value);
+ tmp_value = NULL;
+ tmp_type = NULL;
+ tmp_tb = NULL;
+ } else {
+ tmp_type = (PyObject*) Py_TYPE(tmp_value);
+ Py_INCREF(tmp_type);
+ #if CYTHON_COMPILING_IN_CPYTHON
+ tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback;
+ Py_XINCREF(tmp_tb);
+ #else
+ tmp_tb = PyException_GetTraceback(tmp_value);
+ #endif
+ }
+ #elif CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = *type;
+ exc_info->exc_value = *value;
+ exc_info->exc_traceback = *tb;
+ #else
+ tmp_type = tstate->exc_type;
+ tmp_value = tstate->exc_value;
+ tmp_tb = tstate->exc_traceback;
+ tstate->exc_type = *type;
+ tstate->exc_value = *value;
+ tstate->exc_traceback = *tb;
+ #endif
+ *type = tmp_type;
+ *value = tmp_value;
+ *tb = tmp_tb;
+}
+#else
+static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
+ PyObject *tmp_type, *tmp_value, *tmp_tb;
+ PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
+ PyErr_SetExcInfo(*type, *value, *tb);
+ *type = tmp_type;
+ *value = tmp_value;
+ *tb = tmp_tb;
+}
#endif
- if (!_py_slice) {
- Py_DECREF(py_slice);
- }
- return result;
+
+/* RaiseArgTupleInvalid */
+static void __Pyx_RaiseArgtupleInvalid(
+ const char* func_name,
+ int exact,
+ Py_ssize_t num_min,
+ Py_ssize_t num_max,
+ Py_ssize_t num_found)
+{
+ Py_ssize_t num_expected;
+ const char *more_or_less;
+ if (num_found < num_min) {
+ num_expected = num_min;
+ more_or_less = "at least";
+ } else {
+ num_expected = num_max;
+ more_or_less = "at most";
+ }
+ if (exact) {
+ more_or_less = "exactly";
}
PyErr_Format(PyExc_TypeError,
- "'%.200s' object is unsliceable", Py_TYPE(obj)->tp_name);
-bad:
- return NULL;
+ "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
+ func_name, more_or_less, num_expected,
+ (num_expected == 1) ? "" : "s", num_found);
}
-/* BytesEquals */
-static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
+/* KeywordStringCheck */
+static int __Pyx_CheckKeywordStrings(
+ PyObject *kw,
+ const char* function_name,
+ int kw_allowed)
+{
+ PyObject* key = 0;
+ Py_ssize_t pos = 0;
#if CYTHON_COMPILING_IN_PYPY
- return PyObject_RichCompareBool(s1, s2, equals);
+ if (!kw_allowed && PyDict_Next(kw, &pos, &key, 0))
+ goto invalid_keyword;
+ return 1;
#else
- if (s1 == s2) {
- return (equals == Py_EQ);
- } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
- const char *ps1, *ps2;
- Py_ssize_t length = PyBytes_GET_SIZE(s1);
- if (length != PyBytes_GET_SIZE(s2))
- return (equals == Py_NE);
- ps1 = PyBytes_AS_STRING(s1);
- ps2 = PyBytes_AS_STRING(s2);
- if (ps1[0] != ps2[0]) {
- return (equals == Py_NE);
- } else if (length == 1) {
- return (equals == Py_EQ);
- } else {
- int result;
-#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000)
- Py_hash_t hash1, hash2;
- hash1 = ((PyBytesObject*)s1)->ob_shash;
- hash2 = ((PyBytesObject*)s2)->ob_shash;
- if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
- return (equals == Py_NE);
- }
+ if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kw))) {
+ Py_ssize_t kwsize;
+#if CYTHON_ASSUME_SAFE_MACROS
+ kwsize = PyTuple_GET_SIZE(kw);
+#else
+ kwsize = PyTuple_Size(kw);
+ if (kwsize < 0) return 0;
#endif
- result = memcmp(ps1, ps2, (size_t)length);
- return (equals == Py_EQ) ? (result == 0) : (result != 0);
+ if (unlikely(kwsize == 0))
+ return 1;
+ if (!kw_allowed) {
+#if CYTHON_ASSUME_SAFE_MACROS
+ key = PyTuple_GET_ITEM(kw, 0);
+#else
+ key = PyTuple_GetItem(kw, pos);
+ if (!key) return 0;
+#endif
+ goto invalid_keyword;
}
- } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
- return (equals == Py_NE);
- } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
- return (equals == Py_NE);
- } else {
- int result;
- PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
- if (!py_result)
- return -1;
- result = __Pyx_PyObject_IsTrue(py_result);
- Py_DECREF(py_result);
- return result;
+#if PY_VERSION_HEX < 0x03090000
+ for (pos = 0; pos < kwsize; pos++) {
+#if CYTHON_ASSUME_SAFE_MACROS
+ key = PyTuple_GET_ITEM(kw, pos);
+#else
+ key = PyTuple_GetItem(kw, pos);
+ if (!key) return 0;
+#endif
+ if (unlikely(!PyUnicode_Check(key)))
+ goto invalid_keyword_type;
+ }
+#endif
+ return 1;
+ }
+ while (PyDict_Next(kw, &pos, &key, 0)) {
+ #if PY_MAJOR_VERSION < 3
+ if (unlikely(!PyString_Check(key)))
+ #endif
+ if (unlikely(!PyUnicode_Check(key)))
+ goto invalid_keyword_type;
}
+ if (!kw_allowed && unlikely(key))
+ goto invalid_keyword;
+ return 1;
+invalid_keyword_type:
+ PyErr_Format(PyExc_TypeError,
+ "%.200s() keywords must be strings", function_name);
+ return 0;
#endif
+invalid_keyword:
+ #if PY_MAJOR_VERSION < 3
+ PyErr_Format(PyExc_TypeError,
+ "%.200s() got an unexpected keyword argument '%.200s'",
+ function_name, PyString_AsString(key));
+ #else
+ PyErr_Format(PyExc_TypeError,
+ "%s() got an unexpected keyword argument '%U'",
+ function_name, key);
+ #endif
+ return 0;
}
-/* UnicodeEquals */
-static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
-#if CYTHON_COMPILING_IN_PYPY
- return PyObject_RichCompareBool(s1, s2, equals);
+/* RaiseDoubleKeywords */
+static void __Pyx_RaiseDoubleKeywordsError(
+ const char* func_name,
+ PyObject* kw_name)
+{
+ PyErr_Format(PyExc_TypeError,
+ #if PY_MAJOR_VERSION >= 3
+ "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
+ #else
+ "%s() got multiple values for keyword argument '%s'", func_name,
+ PyString_AsString(kw_name));
+ #endif
+}
+
+/* ParseKeywords */
+static int __Pyx_ParseOptionalKeywords(
+ PyObject *kwds,
+ PyObject *const *kwvalues,
+ PyObject **argnames[],
+ PyObject *kwds2,
+ PyObject *values[],
+ Py_ssize_t num_pos_args,
+ const char* function_name)
+{
+ PyObject *key = 0, *value = 0;
+ Py_ssize_t pos = 0;
+ PyObject*** name;
+ PyObject*** first_kw_arg = argnames + num_pos_args;
+ int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds));
+ while (1) {
+ Py_XDECREF(key); key = NULL;
+ Py_XDECREF(value); value = NULL;
+ if (kwds_is_tuple) {
+ Py_ssize_t size;
+#if CYTHON_ASSUME_SAFE_MACROS
+ size = PyTuple_GET_SIZE(kwds);
#else
-#if PY_MAJOR_VERSION < 3
- PyObject* owned_ref = NULL;
+ size = PyTuple_Size(kwds);
+ if (size < 0) goto bad;
#endif
- int s1_is_unicode, s2_is_unicode;
- if (s1 == s2) {
- goto return_eq;
- }
- s1_is_unicode = PyUnicode_CheckExact(s1);
- s2_is_unicode = PyUnicode_CheckExact(s2);
-#if PY_MAJOR_VERSION < 3
- if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) {
- owned_ref = PyUnicode_FromObject(s2);
- if (unlikely(!owned_ref))
- return -1;
- s2 = owned_ref;
- s2_is_unicode = 1;
- } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) {
- owned_ref = PyUnicode_FromObject(s1);
- if (unlikely(!owned_ref))
- return -1;
- s1 = owned_ref;
- s1_is_unicode = 1;
- } else if (((!s2_is_unicode) & (!s1_is_unicode))) {
- return __Pyx_PyBytes_Equals(s1, s2, equals);
- }
+ if (pos >= size) break;
+#if CYTHON_AVOID_BORROWED_REFS
+ key = __Pyx_PySequence_ITEM(kwds, pos);
+ if (!key) goto bad;
+#elif CYTHON_ASSUME_SAFE_MACROS
+ key = PyTuple_GET_ITEM(kwds, pos);
+#else
+ key = PyTuple_GetItem(kwds, pos);
+ if (!key) goto bad;
#endif
- if (s1_is_unicode & s2_is_unicode) {
- Py_ssize_t length;
- int kind;
- void *data1, *data2;
- if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
- return -1;
- length = __Pyx_PyUnicode_GET_LENGTH(s1);
- if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) {
- goto return_ne;
+ value = kwvalues[pos];
+ pos++;
}
-#if CYTHON_USE_UNICODE_INTERNALS
+ else
{
- Py_hash_t hash1, hash2;
- #if CYTHON_PEP393_ENABLED
- hash1 = ((PyASCIIObject*)s1)->hash;
- hash2 = ((PyASCIIObject*)s2)->hash;
- #else
- hash1 = ((PyUnicodeObject*)s1)->hash;
- hash2 = ((PyUnicodeObject*)s2)->hash;
- #endif
- if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
- goto return_ne;
+ if (!PyDict_Next(kwds, &pos, &key, &value)) break;
+#if CYTHON_AVOID_BORROWED_REFS
+ Py_INCREF(key);
+#endif
+ }
+ name = first_kw_arg;
+ while (*name && (**name != key)) name++;
+ if (*name) {
+ values[name-argnames] = value;
+#if CYTHON_AVOID_BORROWED_REFS
+ Py_INCREF(value);
+ Py_DECREF(key);
+#endif
+ key = NULL;
+ value = NULL;
+ continue;
+ }
+#if !CYTHON_AVOID_BORROWED_REFS
+ Py_INCREF(key);
+#endif
+ Py_INCREF(value);
+ name = first_kw_arg;
+ #if PY_MAJOR_VERSION < 3
+ if (likely(PyString_Check(key))) {
+ while (*name) {
+ if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
+ && _PyString_Eq(**name, key)) {
+ values[name-argnames] = value;
+#if CYTHON_AVOID_BORROWED_REFS
+ value = NULL;
+#endif
+ break;
+ }
+ name++;
+ }
+ if (*name) continue;
+ else {
+ PyObject*** argname = argnames;
+ while (argname != first_kw_arg) {
+ if ((**argname == key) || (
+ (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
+ && _PyString_Eq(**argname, key))) {
+ goto arg_passed_twice;
+ }
+ argname++;
+ }
}
- }
+ } else
+ #endif
+ if (likely(PyUnicode_Check(key))) {
+ while (*name) {
+ int cmp = (
+ #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+ (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
+ #endif
+ PyUnicode_Compare(**name, key)
+ );
+ if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+ if (cmp == 0) {
+ values[name-argnames] = value;
+#if CYTHON_AVOID_BORROWED_REFS
+ value = NULL;
#endif
- kind = __Pyx_PyUnicode_KIND(s1);
- if (kind != __Pyx_PyUnicode_KIND(s2)) {
- goto return_ne;
- }
- data1 = __Pyx_PyUnicode_DATA(s1);
- data2 = __Pyx_PyUnicode_DATA(s2);
- if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
- goto return_ne;
- } else if (length == 1) {
- goto return_eq;
+ break;
+ }
+ name++;
+ }
+ if (*name) continue;
+ else {
+ PyObject*** argname = argnames;
+ while (argname != first_kw_arg) {
+ int cmp = (**argname == key) ? 0 :
+ #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+ (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
+ #endif
+ PyUnicode_Compare(**argname, key);
+ if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+ if (cmp == 0) goto arg_passed_twice;
+ argname++;
+ }
+ }
+ } else
+ goto invalid_keyword_type;
+ if (kwds2) {
+ if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
} else {
- int result = memcmp(data1, data2, (size_t)(length * kind));
- #if PY_MAJOR_VERSION < 3
- Py_XDECREF(owned_ref);
- #endif
- return (equals == Py_EQ) ? (result == 0) : (result != 0);
+ goto invalid_keyword;
}
- } else if ((s1 == Py_None) & s2_is_unicode) {
- goto return_ne;
- } else if ((s2 == Py_None) & s1_is_unicode) {
- goto return_ne;
- } else {
- int result;
- PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
- #if PY_MAJOR_VERSION < 3
- Py_XDECREF(owned_ref);
- #endif
- if (!py_result)
- return -1;
- result = __Pyx_PyObject_IsTrue(py_result);
- Py_DECREF(py_result);
- return result;
}
-return_eq:
- #if PY_MAJOR_VERSION < 3
- Py_XDECREF(owned_ref);
- #endif
- return (equals == Py_EQ);
-return_ne:
+ Py_XDECREF(key);
+ Py_XDECREF(value);
+ return 0;
+arg_passed_twice:
+ __Pyx_RaiseDoubleKeywordsError(function_name, key);
+ goto bad;
+invalid_keyword_type:
+ PyErr_Format(PyExc_TypeError,
+ "%.200s() keywords must be strings", function_name);
+ goto bad;
+invalid_keyword:
#if PY_MAJOR_VERSION < 3
- Py_XDECREF(owned_ref);
+ PyErr_Format(PyExc_TypeError,
+ "%.200s() got an unexpected keyword argument '%.200s'",
+ function_name, PyString_AsString(key));
+ #else
+ PyErr_Format(PyExc_TypeError,
+ "%s() got an unexpected keyword argument '%U'",
+ function_name, key);
#endif
- return (equals == Py_NE);
-#endif
+bad:
+ Py_XDECREF(key);
+ Py_XDECREF(value);
+ return -1;
}
-/* PyErrExceptionMatches */
-#if CYTHON_FAST_THREAD_STATE
-static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
- Py_ssize_t i, n;
- n = PyTuple_GET_SIZE(tuple);
-#if PY_MAJOR_VERSION >= 3
- for (i=0; icurexc_type;
- if (exc_type == err) return 1;
- if (unlikely(!exc_type)) return 0;
- if (unlikely(PyTuple_Check(err)))
- return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
- return __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
-}
-#endif
-/* PyErrFetchRestore */
-#if CYTHON_FAST_THREAD_STATE
-static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
- PyObject *tmp_type, *tmp_value, *tmp_tb;
- tmp_type = tstate->curexc_type;
- tmp_value = tstate->curexc_value;
- tmp_tb = tstate->curexc_traceback;
- tstate->curexc_type = type;
- tstate->curexc_value = value;
- tstate->curexc_traceback = tb;
- Py_XDECREF(tmp_type);
- Py_XDECREF(tmp_value);
- Py_XDECREF(tmp_tb);
-}
-static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
- *type = tstate->curexc_type;
- *value = tstate->curexc_value;
- *tb = tstate->curexc_traceback;
- tstate->curexc_type = 0;
- tstate->curexc_value = 0;
- tstate->curexc_traceback = 0;
+/* DictGetItem */
+#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
+static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
+ PyObject *value;
+ value = PyDict_GetItemWithError(d, key);
+ if (unlikely(!value)) {
+ if (!PyErr_Occurred()) {
+ if (unlikely(PyTuple_Check(key))) {
+ PyObject* args = PyTuple_Pack(1, key);
+ if (likely(args)) {
+ PyErr_SetObject(PyExc_KeyError, args);
+ Py_DECREF(args);
+ }
+ } else {
+ PyErr_SetObject(PyExc_KeyError, key);
+ }
+ }
+ return NULL;
+ }
+ Py_INCREF(value);
+ return value;
}
#endif
-/* GetAttr */
-static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
-#if CYTHON_USE_TYPE_SLOTS
-#if PY_MAJOR_VERSION >= 3
- if (likely(PyUnicode_Check(n)))
+/* GetItemInt */
+static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+ PyObject *r;
+ if (unlikely(!j)) return NULL;
+ r = PyObject_GetItem(o, j);
+ Py_DECREF(j);
+ return r;
+}
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
+ CYTHON_NCP_UNUSED int wraparound,
+ CYTHON_NCP_UNUSED int boundscheck) {
+#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ Py_ssize_t wrapped_i = i;
+ if (wraparound & unlikely(i < 0)) {
+ wrapped_i += PyList_GET_SIZE(o);
+ }
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
+ PyObject *r = PyList_GET_ITEM(o, wrapped_i);
+ Py_INCREF(r);
+ return r;
+ }
+ return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
#else
- if (likely(PyString_Check(n)))
-#endif
- return __Pyx_PyObject_GetAttrStr(o, n);
+ return PySequence_GetItem(o, i);
#endif
- return PyObject_GetAttr(o, n);
-}
-
-/* GetAttr3 */
-static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
- return NULL;
- __Pyx_PyErr_Clear();
- Py_INCREF(d);
- return d;
}
-static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) {
- PyObject *r = __Pyx_GetAttr(o, n);
- return (likely(r)) ? r : __Pyx_GetAttr3Default(d);
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
+ CYTHON_NCP_UNUSED int wraparound,
+ CYTHON_NCP_UNUSED int boundscheck) {
+#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ Py_ssize_t wrapped_i = i;
+ if (wraparound & unlikely(i < 0)) {
+ wrapped_i += PyTuple_GET_SIZE(o);
+ }
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
+ PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
+ Py_INCREF(r);
+ return r;
+ }
+ return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+#else
+ return PySequence_GetItem(o, i);
+#endif
}
-
-/* RaiseException */
-#if PY_MAJOR_VERSION < 3
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
- CYTHON_UNUSED PyObject *cause) {
- __Pyx_PyThreadState_declare
- Py_XINCREF(type);
- if (!value || value == Py_None)
- value = NULL;
- else
- Py_INCREF(value);
- if (!tb || tb == Py_None)
- tb = NULL;
- else {
- Py_INCREF(tb);
- if (!PyTraceBack_Check(tb)) {
- PyErr_SetString(PyExc_TypeError,
- "raise: arg 3 must be a traceback or None");
- goto raise_error;
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
+ CYTHON_NCP_UNUSED int wraparound,
+ CYTHON_NCP_UNUSED int boundscheck) {
+#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
+ if (is_list || PyList_CheckExact(o)) {
+ Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
+ if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
+ PyObject *r = PyList_GET_ITEM(o, n);
+ Py_INCREF(r);
+ return r;
}
}
- if (PyType_Check(type)) {
-#if CYTHON_COMPILING_IN_PYPY
- if (!value) {
- Py_INCREF(Py_None);
- value = Py_None;
+ else if (PyTuple_CheckExact(o)) {
+ Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
+ PyObject *r = PyTuple_GET_ITEM(o, n);
+ Py_INCREF(r);
+ return r;
}
-#endif
- PyErr_NormalizeException(&type, &value, &tb);
} else {
- if (value) {
- PyErr_SetString(PyExc_TypeError,
- "instance exception may not have a separate value");
- goto raise_error;
- }
- value = type;
- type = (PyObject*) Py_TYPE(type);
- Py_INCREF(type);
- if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
- PyErr_SetString(PyExc_TypeError,
- "raise: exception class must be a subclass of BaseException");
- goto raise_error;
- }
- }
- __Pyx_PyThreadState_assign
- __Pyx_ErrRestore(type, value, tb);
- return;
-raise_error:
- Py_XDECREF(value);
- Py_XDECREF(type);
- Py_XDECREF(tb);
- return;
-}
-#else
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
- PyObject* owned_instance = NULL;
- if (tb == Py_None) {
- tb = 0;
- } else if (tb && !PyTraceBack_Check(tb)) {
- PyErr_SetString(PyExc_TypeError,
- "raise: arg 3 must be a traceback or None");
- goto bad;
- }
- if (value == Py_None)
- value = 0;
- if (PyExceptionInstance_Check(type)) {
- if (value) {
- PyErr_SetString(PyExc_TypeError,
- "instance exception may not have a separate value");
- goto bad;
+ PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping;
+ PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence;
+ if (mm && mm->mp_subscript) {
+ PyObject *r, *key = PyInt_FromSsize_t(i);
+ if (unlikely(!key)) return NULL;
+ r = mm->mp_subscript(o, key);
+ Py_DECREF(key);
+ return r;
}
- value = type;
- type = (PyObject*) Py_TYPE(value);
- } else if (PyExceptionClass_Check(type)) {
- PyObject *instance_class = NULL;
- if (value && PyExceptionInstance_Check(value)) {
- instance_class = (PyObject*) Py_TYPE(value);
- if (instance_class != type) {
- int is_subclass = PyObject_IsSubclass(instance_class, type);
- if (!is_subclass) {
- instance_class = NULL;
- } else if (unlikely(is_subclass == -1)) {
- goto bad;
+ if (likely(sm && sm->sq_item)) {
+ if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) {
+ Py_ssize_t l = sm->sq_length(o);
+ if (likely(l >= 0)) {
+ i += l;
} else {
- type = instance_class;
+ if (!PyErr_ExceptionMatches(PyExc_OverflowError))
+ return NULL;
+ PyErr_Clear();
}
}
+ return sm->sq_item(o, i);
}
- if (!instance_class) {
- PyObject *args;
- if (!value)
- args = PyTuple_New(0);
- else if (PyTuple_Check(value)) {
- Py_INCREF(value);
- args = value;
- } else
- args = PyTuple_Pack(1, value);
- if (!args)
- goto bad;
- owned_instance = PyObject_Call(type, args, NULL);
- Py_DECREF(args);
- if (!owned_instance)
- goto bad;
- value = owned_instance;
- if (!PyExceptionInstance_Check(value)) {
- PyErr_Format(PyExc_TypeError,
- "calling %R should have returned an instance of "
- "BaseException, not %R",
- type, Py_TYPE(value));
- goto bad;
- }
- }
- } else {
- PyErr_SetString(PyExc_TypeError,
- "raise: exception class must be a subclass of BaseException");
- goto bad;
- }
- if (cause) {
- PyObject *fixed_cause;
- if (cause == Py_None) {
- fixed_cause = NULL;
- } else if (PyExceptionClass_Check(cause)) {
- fixed_cause = PyObject_CallObject(cause, NULL);
- if (fixed_cause == NULL)
- goto bad;
- } else if (PyExceptionInstance_Check(cause)) {
- fixed_cause = cause;
- Py_INCREF(fixed_cause);
- } else {
- PyErr_SetString(PyExc_TypeError,
- "exception causes must derive from "
- "BaseException");
- goto bad;
- }
- PyException_SetCause(value, fixed_cause);
}
- PyErr_SetObject(type, value);
- if (tb) {
-#if CYTHON_COMPILING_IN_PYPY
- PyObject *tmp_type, *tmp_value, *tmp_tb;
- PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
- Py_INCREF(tb);
- PyErr_Restore(tmp_type, tmp_value, tb);
- Py_XDECREF(tmp_tb);
#else
- PyThreadState *tstate = __Pyx_PyThreadState_Current;
- PyObject* tmp_tb = tstate->curexc_traceback;
- if (tb != tmp_tb) {
- Py_INCREF(tb);
- tstate->curexc_traceback = tb;
- Py_XDECREF(tmp_tb);
- }
-#endif
+ if (is_list || !PyMapping_Check(o)) {
+ return PySequence_GetItem(o, i);
}
-bad:
- Py_XDECREF(owned_instance);
- return;
-}
#endif
+ return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+}
-/* GetTopmostException */
-#if CYTHON_USE_EXC_INFO_STACK
-static _PyErr_StackItem *
-__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
-{
- _PyErr_StackItem *exc_info = tstate->exc_info;
- while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
- exc_info->previous_item != NULL)
- {
- exc_info = exc_info->previous_item;
+/* RaiseTooManyValuesToUnpack */
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
+ PyErr_Format(PyExc_ValueError,
+ "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
+}
+
+/* RaiseNeedMoreValuesToUnpack */
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+ PyErr_Format(PyExc_ValueError,
+ "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
+ index, (index == 1) ? "" : "s");
+}
+
+/* IterFinish */
+static CYTHON_INLINE int __Pyx_IterFinish(void) {
+ PyObject* exc_type;
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ exc_type = __Pyx_PyErr_CurrentExceptionType();
+ if (unlikely(exc_type)) {
+ if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))
+ return -1;
+ __Pyx_PyErr_Clear();
+ return 0;
}
- return exc_info;
+ return 0;
}
-#endif
-/* SaveResetException */
-#if CYTHON_FAST_THREAD_STATE
-static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
- #if CYTHON_USE_EXC_INFO_STACK
- _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
- *type = exc_info->exc_type;
- *value = exc_info->exc_value;
- *tb = exc_info->exc_traceback;
- #else
- *type = tstate->exc_type;
- *value = tstate->exc_value;
- *tb = tstate->exc_traceback;
- #endif
- Py_XINCREF(*type);
- Py_XINCREF(*value);
- Py_XINCREF(*tb);
+/* UnpackItemEndCheck */
+static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
+ if (unlikely(retval)) {
+ Py_DECREF(retval);
+ __Pyx_RaiseTooManyValuesError(expected);
+ return -1;
+ }
+ return __Pyx_IterFinish();
}
-static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
- PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if CYTHON_USE_EXC_INFO_STACK
- _PyErr_StackItem *exc_info = tstate->exc_info;
- tmp_type = exc_info->exc_type;
- tmp_value = exc_info->exc_value;
- tmp_tb = exc_info->exc_traceback;
- exc_info->exc_type = type;
- exc_info->exc_value = value;
- exc_info->exc_traceback = tb;
- #else
- tmp_type = tstate->exc_type;
- tmp_value = tstate->exc_value;
- tmp_tb = tstate->exc_traceback;
- tstate->exc_type = type;
- tstate->exc_value = value;
- tstate->exc_traceback = tb;
- #endif
- Py_XDECREF(tmp_type);
- Py_XDECREF(tmp_value);
- Py_XDECREF(tmp_tb);
+
+/* PyObjectCallOneArg */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
+ PyObject *args[2] = {NULL, arg};
+ return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
}
-#endif
-/* GetException */
-#if CYTHON_FAST_THREAD_STATE
-static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
+/* PyObjectGetMethod */
+static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) {
+ PyObject *attr;
+#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP
+ __Pyx_TypeName type_name;
+ PyTypeObject *tp = Py_TYPE(obj);
+ PyObject *descr;
+ descrgetfunc f = NULL;
+ PyObject **dictptr, *dict;
+ int meth_found = 0;
+ assert (*method == NULL);
+ if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) {
+ attr = __Pyx_PyObject_GetAttrStr(obj, name);
+ goto try_unpack;
+ }
+ if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) {
+ return 0;
+ }
+ descr = _PyType_Lookup(tp, name);
+ if (likely(descr != NULL)) {
+ Py_INCREF(descr);
+#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR
+ if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR))
+#elif PY_MAJOR_VERSION >= 3
+ #ifdef __Pyx_CyFunction_USED
+ if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr)))
+ #else
+ if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type)))
+ #endif
#else
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
+ #ifdef __Pyx_CyFunction_USED
+ if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr)))
+ #else
+ if (likely(PyFunction_Check(descr)))
+ #endif
#endif
-{
- PyObject *local_type, *local_value, *local_tb;
-#if CYTHON_FAST_THREAD_STATE
- PyObject *tmp_type, *tmp_value, *tmp_tb;
- local_type = tstate->curexc_type;
- local_value = tstate->curexc_value;
- local_tb = tstate->curexc_traceback;
- tstate->curexc_type = 0;
- tstate->curexc_value = 0;
- tstate->curexc_traceback = 0;
+ {
+ meth_found = 1;
+ } else {
+ f = Py_TYPE(descr)->tp_descr_get;
+ if (f != NULL && PyDescr_IsData(descr)) {
+ attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
+ Py_DECREF(descr);
+ goto try_unpack;
+ }
+ }
+ }
+ dictptr = _PyObject_GetDictPtr(obj);
+ if (dictptr != NULL && (dict = *dictptr) != NULL) {
+ Py_INCREF(dict);
+ attr = __Pyx_PyDict_GetItemStr(dict, name);
+ if (attr != NULL) {
+ Py_INCREF(attr);
+ Py_DECREF(dict);
+ Py_XDECREF(descr);
+ goto try_unpack;
+ }
+ Py_DECREF(dict);
+ }
+ if (meth_found) {
+ *method = descr;
+ return 1;
+ }
+ if (f != NULL) {
+ attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
+ Py_DECREF(descr);
+ goto try_unpack;
+ }
+ if (likely(descr != NULL)) {
+ *method = descr;
+ return 0;
+ }
+ type_name = __Pyx_PyType_GetName(tp);
+ PyErr_Format(PyExc_AttributeError,
+#if PY_MAJOR_VERSION >= 3
+ "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'",
+ type_name, name);
#else
- PyErr_Fetch(&local_type, &local_value, &local_tb);
+ "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'",
+ type_name, PyString_AS_STRING(name));
#endif
- PyErr_NormalizeException(&local_type, &local_value, &local_tb);
-#if CYTHON_FAST_THREAD_STATE
- if (unlikely(tstate->curexc_type))
+ __Pyx_DECREF_TypeName(type_name);
+ return 0;
#else
- if (unlikely(PyErr_Occurred()))
+ attr = __Pyx_PyObject_GetAttrStr(obj, name);
+ goto try_unpack;
#endif
- goto bad;
- #if PY_MAJOR_VERSION >= 3
- if (local_tb) {
- if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
- goto bad;
- }
- #endif
- Py_XINCREF(local_tb);
- Py_XINCREF(local_type);
- Py_XINCREF(local_value);
- *type = local_type;
- *value = local_value;
- *tb = local_tb;
-#if CYTHON_FAST_THREAD_STATE
- #if CYTHON_USE_EXC_INFO_STACK
- {
- _PyErr_StackItem *exc_info = tstate->exc_info;
- tmp_type = exc_info->exc_type;
- tmp_value = exc_info->exc_value;
- tmp_tb = exc_info->exc_traceback;
- exc_info->exc_type = local_type;
- exc_info->exc_value = local_value;
- exc_info->exc_traceback = local_tb;
+try_unpack:
+#if CYTHON_UNPACK_METHODS
+ if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) {
+ PyObject *function = PyMethod_GET_FUNCTION(attr);
+ Py_INCREF(function);
+ Py_DECREF(attr);
+ *method = function;
+ return 1;
}
- #else
- tmp_type = tstate->exc_type;
- tmp_value = tstate->exc_value;
- tmp_tb = tstate->exc_traceback;
- tstate->exc_type = local_type;
- tstate->exc_value = local_value;
- tstate->exc_traceback = local_tb;
- #endif
- Py_XDECREF(tmp_type);
- Py_XDECREF(tmp_value);
- Py_XDECREF(tmp_tb);
-#else
- PyErr_SetExcInfo(local_type, local_value, local_tb);
#endif
+ *method = attr;
return 0;
-bad:
- *type = 0;
- *value = 0;
- *tb = 0;
- Py_XDECREF(local_type);
- Py_XDECREF(local_value);
- Py_XDECREF(local_tb);
- return -1;
}
-/* PyObjectSetAttrStr */
-#if CYTHON_USE_TYPE_SLOTS
-static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
- PyTypeObject* tp = Py_TYPE(obj);
- if (likely(tp->tp_setattro))
- return tp->tp_setattro(obj, attr_name, value);
-#if PY_MAJOR_VERSION < 3
- if (likely(tp->tp_setattr))
- return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value);
-#endif
- return PyObject_SetAttr(obj, attr_name, value);
+/* PyObjectCallMethod0 */
+static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
+ PyObject *method = NULL, *result = NULL;
+ int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
+ if (likely(is_method)) {
+ result = __Pyx_PyObject_CallOneArg(method, obj);
+ Py_DECREF(method);
+ return result;
+ }
+ if (unlikely(!method)) goto bad;
+ result = __Pyx_PyObject_CallNoArg(method);
+ Py_DECREF(method);
+bad:
+ return result;
}
-#endif
-/* None */
-static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
- PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
+/* RaiseNoneIterError */
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}
-/* ExtTypeTest */
-static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
- if (unlikely(!type)) {
- PyErr_SetString(PyExc_SystemError, "Missing type object");
- return 0;
+/* UnpackTupleError */
+static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
+ if (t == Py_None) {
+ __Pyx_RaiseNoneNotIterableError();
+ } else if (PyTuple_GET_SIZE(t) < index) {
+ __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t));
+ } else {
+ __Pyx_RaiseTooManyValuesError(index);
}
- if (likely(__Pyx_TypeCheck(obj, type)))
- return 1;
- PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
- Py_TYPE(obj)->tp_name, type->tp_name);
- return 0;
}
-/* SwapException */
-#if CYTHON_FAST_THREAD_STATE
-static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
- PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if CYTHON_USE_EXC_INFO_STACK
- _PyErr_StackItem *exc_info = tstate->exc_info;
- tmp_type = exc_info->exc_type;
- tmp_value = exc_info->exc_value;
- tmp_tb = exc_info->exc_traceback;
- exc_info->exc_type = *type;
- exc_info->exc_value = *value;
- exc_info->exc_traceback = *tb;
- #else
- tmp_type = tstate->exc_type;
- tmp_value = tstate->exc_value;
- tmp_tb = tstate->exc_traceback;
- tstate->exc_type = *type;
- tstate->exc_value = *value;
- tstate->exc_traceback = *tb;
- #endif
- *type = tmp_type;
- *value = tmp_value;
- *tb = tmp_tb;
-}
+/* UnpackTuple2 */
+static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
+ PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) {
+ PyObject *value1 = NULL, *value2 = NULL;
+#if CYTHON_COMPILING_IN_PYPY
+ value1 = PySequence_ITEM(tuple, 0); if (unlikely(!value1)) goto bad;
+ value2 = PySequence_ITEM(tuple, 1); if (unlikely(!value2)) goto bad;
#else
-static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
- PyObject *tmp_type, *tmp_value, *tmp_tb;
- PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
- PyErr_SetExcInfo(*type, *value, *tb);
- *type = tmp_type;
- *value = tmp_value;
- *tb = tmp_tb;
+ value1 = PyTuple_GET_ITEM(tuple, 0); Py_INCREF(value1);
+ value2 = PyTuple_GET_ITEM(tuple, 1); Py_INCREF(value2);
+#endif
+ if (decref_tuple) {
+ Py_DECREF(tuple);
+ }
+ *pvalue1 = value1;
+ *pvalue2 = value2;
+ return 0;
+#if CYTHON_COMPILING_IN_PYPY
+bad:
+ Py_XDECREF(value1);
+ Py_XDECREF(value2);
+ if (decref_tuple) { Py_XDECREF(tuple); }
+ return -1;
+#endif
+}
+static int __Pyx_unpack_tuple2_generic(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2,
+ int has_known_size, int decref_tuple) {
+ Py_ssize_t index;
+ PyObject *value1 = NULL, *value2 = NULL, *iter = NULL;
+ iternextfunc iternext;
+ iter = PyObject_GetIter(tuple);
+ if (unlikely(!iter)) goto bad;
+ if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; }
+ iternext = __Pyx_PyObject_GetIterNextFunc(iter);
+ value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; }
+ value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; }
+ if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad;
+ Py_DECREF(iter);
+ *pvalue1 = value1;
+ *pvalue2 = value2;
+ return 0;
+unpacking_failed:
+ if (!has_known_size && __Pyx_IterFinish() == 0)
+ __Pyx_RaiseNeedMoreValuesError(index);
+bad:
+ Py_XDECREF(iter);
+ Py_XDECREF(value1);
+ Py_XDECREF(value2);
+ if (decref_tuple) { Py_XDECREF(tuple); }
+ return -1;
}
+
+/* dict_iter */
+#if CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+#include
+#endif
+static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
+ Py_ssize_t* p_orig_length, int* p_source_is_dict) {
+ is_dict = is_dict || likely(PyDict_CheckExact(iterable));
+ *p_source_is_dict = is_dict;
+ if (is_dict) {
+#if !CYTHON_COMPILING_IN_PYPY
+ *p_orig_length = PyDict_Size(iterable);
+ Py_INCREF(iterable);
+ return iterable;
+#elif PY_MAJOR_VERSION >= 3
+ static PyObject *py_items = NULL, *py_keys = NULL, *py_values = NULL;
+ PyObject **pp = NULL;
+ if (method_name) {
+ const char *name = PyUnicode_AsUTF8(method_name);
+ if (strcmp(name, "iteritems") == 0) pp = &py_items;
+ else if (strcmp(name, "iterkeys") == 0) pp = &py_keys;
+ else if (strcmp(name, "itervalues") == 0) pp = &py_values;
+ if (pp) {
+ if (!*pp) {
+ *pp = PyUnicode_FromString(name + 4);
+ if (!*pp)
+ return NULL;
+ }
+ method_name = *pp;
+ }
+ }
#endif
-
-/* RaiseArgTupleInvalid */
-static void __Pyx_RaiseArgtupleInvalid(
- const char* func_name,
- int exact,
- Py_ssize_t num_min,
- Py_ssize_t num_max,
- Py_ssize_t num_found)
-{
- Py_ssize_t num_expected;
- const char *more_or_less;
- if (num_found < num_min) {
- num_expected = num_min;
- more_or_less = "at least";
- } else {
- num_expected = num_max;
- more_or_less = "at most";
}
- if (exact) {
- more_or_less = "exactly";
+ *p_orig_length = 0;
+ if (method_name) {
+ PyObject* iter;
+ iterable = __Pyx_PyObject_CallMethod0(iterable, method_name);
+ if (!iterable)
+ return NULL;
+#if !CYTHON_COMPILING_IN_PYPY
+ if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable))
+ return iterable;
+#endif
+ iter = PyObject_GetIter(iterable);
+ Py_DECREF(iterable);
+ return iter;
}
- PyErr_Format(PyExc_TypeError,
- "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
- func_name, more_or_less, num_expected,
- (num_expected == 1) ? "" : "s", num_found);
+ return PyObject_GetIter(iterable);
}
-
-/* KeywordStringCheck */
-static int __Pyx_CheckKeywordStrings(
- PyObject *kwdict,
- const char* function_name,
- int kw_allowed)
-{
- PyObject* key = 0;
- Py_ssize_t pos = 0;
-#if CYTHON_COMPILING_IN_PYPY
- if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0))
- goto invalid_keyword;
- return 1;
-#else
- while (PyDict_Next(kwdict, &pos, &key, 0)) {
- #if PY_MAJOR_VERSION < 3
- if (unlikely(!PyString_Check(key)))
- #endif
- if (unlikely(!PyUnicode_Check(key)))
- goto invalid_keyword_type;
+static CYTHON_INLINE int __Pyx_dict_iter_next(
+ PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos,
+ PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) {
+ PyObject* next_item;
+#if !CYTHON_COMPILING_IN_PYPY
+ if (source_is_dict) {
+ PyObject *key, *value;
+ if (unlikely(orig_length != PyDict_Size(iter_obj))) {
+ PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration");
+ return -1;
+ }
+ if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) {
+ return 0;
+ }
+ if (pitem) {
+ PyObject* tuple = PyTuple_New(2);
+ if (unlikely(!tuple)) {
+ return -1;
+ }
+ Py_INCREF(key);
+ Py_INCREF(value);
+ PyTuple_SET_ITEM(tuple, 0, key);
+ PyTuple_SET_ITEM(tuple, 1, value);
+ *pitem = tuple;
+ } else {
+ if (pkey) {
+ Py_INCREF(key);
+ *pkey = key;
+ }
+ if (pvalue) {
+ Py_INCREF(value);
+ *pvalue = value;
+ }
+ }
+ return 1;
+ } else if (PyTuple_CheckExact(iter_obj)) {
+ Py_ssize_t pos = *ppos;
+ if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0;
+ *ppos = pos + 1;
+ next_item = PyTuple_GET_ITEM(iter_obj, pos);
+ Py_INCREF(next_item);
+ } else if (PyList_CheckExact(iter_obj)) {
+ Py_ssize_t pos = *ppos;
+ if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0;
+ *ppos = pos + 1;
+ next_item = PyList_GET_ITEM(iter_obj, pos);
+ Py_INCREF(next_item);
+ } else
+#endif
+ {
+ next_item = PyIter_Next(iter_obj);
+ if (unlikely(!next_item)) {
+ return __Pyx_IterFinish();
+ }
+ }
+ if (pitem) {
+ *pitem = next_item;
+ } else if (pkey && pvalue) {
+ if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1))
+ return -1;
+ } else if (pkey) {
+ *pkey = next_item;
+ } else {
+ *pvalue = next_item;
}
- if ((!kw_allowed) && unlikely(key))
- goto invalid_keyword;
return 1;
-invalid_keyword_type:
- PyErr_Format(PyExc_TypeError,
- "%.200s() keywords must be strings", function_name);
- return 0;
-#endif
-invalid_keyword:
- PyErr_Format(PyExc_TypeError,
- #if PY_MAJOR_VERSION < 3
- "%.200s() got an unexpected keyword argument '%.200s'",
- function_name, PyString_AsString(key));
- #else
- "%s() got an unexpected keyword argument '%U'",
- function_name, key);
- #endif
- return 0;
}
-/* RaiseDoubleKeywords */
-static void __Pyx_RaiseDoubleKeywordsError(
- const char* func_name,
- PyObject* kw_name)
-{
- PyErr_Format(PyExc_TypeError,
+/* Import */
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+ PyObject *module = 0;
+ PyObject *empty_dict = 0;
+ PyObject *empty_list = 0;
+ #if PY_MAJOR_VERSION < 3
+ PyObject *py_import;
+ py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
+ if (unlikely(!py_import))
+ goto bad;
+ if (!from_list) {
+ empty_list = PyList_New(0);
+ if (unlikely(!empty_list))
+ goto bad;
+ from_list = empty_list;
+ }
+ #endif
+ empty_dict = PyDict_New();
+ if (unlikely(!empty_dict))
+ goto bad;
+ {
#if PY_MAJOR_VERSION >= 3
- "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
- #else
- "%s() got multiple values for keyword argument '%s'", func_name,
- PyString_AsString(kw_name));
- #endif
-}
-
-/* ParseKeywords */
-static int __Pyx_ParseOptionalKeywords(
- PyObject *kwds,
- PyObject **argnames[],
- PyObject *kwds2,
- PyObject *values[],
- Py_ssize_t num_pos_args,
- const char* function_name)
-{
- PyObject *key = 0, *value = 0;
- Py_ssize_t pos = 0;
- PyObject*** name;
- PyObject*** first_kw_arg = argnames + num_pos_args;
- while (PyDict_Next(kwds, &pos, &key, &value)) {
- name = first_kw_arg;
- while (*name && (**name != key)) name++;
- if (*name) {
- values[name-argnames] = value;
- continue;
- }
- name = first_kw_arg;
- #if PY_MAJOR_VERSION < 3
- if (likely(PyString_Check(key))) {
- while (*name) {
- if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
- && _PyString_Eq(**name, key)) {
- values[name-argnames] = value;
- break;
- }
- name++;
- }
- if (*name) continue;
- else {
- PyObject*** argname = argnames;
- while (argname != first_kw_arg) {
- if ((**argname == key) || (
- (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
- && _PyString_Eq(**argname, key))) {
- goto arg_passed_twice;
- }
- argname++;
+ if (level == -1) {
+ if (strchr(__Pyx_MODULE_NAME, '.') != NULL) {
+ module = PyImport_ImportModuleLevelObject(
+ name, __pyx_d, empty_dict, from_list, 1);
+ if (unlikely(!module)) {
+ if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError)))
+ goto bad;
+ PyErr_Clear();
}
}
- } else
+ level = 0;
+ }
#endif
- if (likely(PyUnicode_Check(key))) {
- while (*name) {
- int cmp = (**name == key) ? 0 :
- #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
- (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
- #endif
- PyUnicode_Compare(**name, key);
- if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
- if (cmp == 0) {
- values[name-argnames] = value;
- break;
- }
- name++;
- }
- if (*name) continue;
- else {
- PyObject*** argname = argnames;
- while (argname != first_kw_arg) {
- int cmp = (**argname == key) ? 0 :
- #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
- (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
- #endif
- PyUnicode_Compare(**argname, key);
- if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
- if (cmp == 0) goto arg_passed_twice;
- argname++;
- }
- }
- } else
- goto invalid_keyword_type;
- if (kwds2) {
- if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
- } else {
- goto invalid_keyword;
+ if (!module) {
+ #if PY_MAJOR_VERSION < 3
+ PyObject *py_level = PyInt_FromLong(level);
+ if (unlikely(!py_level))
+ goto bad;
+ module = PyObject_CallFunctionObjArgs(py_import,
+ name, __pyx_d, empty_dict, from_list, py_level, (PyObject *)NULL);
+ Py_DECREF(py_level);
+ #else
+ module = PyImport_ImportModuleLevelObject(
+ name, __pyx_d, empty_dict, from_list, level);
+ #endif
}
}
- return 0;
-arg_passed_twice:
- __Pyx_RaiseDoubleKeywordsError(function_name, key);
- goto bad;
-invalid_keyword_type:
- PyErr_Format(PyExc_TypeError,
- "%.200s() keywords must be strings", function_name);
- goto bad;
-invalid_keyword:
- PyErr_Format(PyExc_TypeError,
+bad:
+ Py_XDECREF(empty_dict);
+ Py_XDECREF(empty_list);
#if PY_MAJOR_VERSION < 3
- "%.200s() got an unexpected keyword argument '%.200s'",
- function_name, PyString_AsString(key));
- #else
- "%s() got an unexpected keyword argument '%U'",
- function_name, key);
+ Py_XDECREF(py_import);
#endif
-bad:
- return -1;
+ return module;
}
-/* ArgTypeTest */
-static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
-{
- if (unlikely(!type)) {
- PyErr_SetString(PyExc_SystemError, "Missing type object");
- return 0;
+/* ImportFrom */
+static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
+ PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
+ if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
+ const char* module_name_str = 0;
+ PyObject* module_name = 0;
+ PyObject* module_dot = 0;
+ PyObject* full_name = 0;
+ PyErr_Clear();
+ module_name_str = PyModule_GetName(module);
+ if (unlikely(!module_name_str)) { goto modbad; }
+ module_name = PyUnicode_FromString(module_name_str);
+ if (unlikely(!module_name)) { goto modbad; }
+ module_dot = PyUnicode_Concat(module_name, __pyx_kp_u__3);
+ if (unlikely(!module_dot)) { goto modbad; }
+ full_name = PyUnicode_Concat(module_dot, name);
+ if (unlikely(!full_name)) { goto modbad; }
+ #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400)
+ {
+ PyObject *modules = PyImport_GetModuleDict();
+ if (unlikely(!modules))
+ goto modbad;
+ value = PyObject_GetItem(modules, full_name);
+ }
+ #else
+ value = PyImport_GetModule(full_name);
+ #endif
+ modbad:
+ Py_XDECREF(full_name);
+ Py_XDECREF(module_dot);
+ Py_XDECREF(module_name);
}
- else if (exact) {
- #if PY_MAJOR_VERSION == 2
- if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
+ if (unlikely(!value)) {
+ PyErr_Format(PyExc_ImportError,
+ #if PY_MAJOR_VERSION < 3
+ "cannot import name %.230s", PyString_AS_STRING(name));
+ #else
+ "cannot import name %S", name);
#endif
}
- else {
- if (likely(__Pyx_TypeCheck(obj, type))) return 1;
+ return value;
+}
+
+/* GetAttr */
+static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
+#if CYTHON_USE_TYPE_SLOTS
+#if PY_MAJOR_VERSION >= 3
+ if (likely(PyUnicode_Check(n)))
+#else
+ if (likely(PyString_Check(n)))
+#endif
+ return __Pyx_PyObject_GetAttrStr(o, n);
+#endif
+ return PyObject_GetAttr(o, n);
+}
+
+/* HasAttr */
+#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1
+static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
+ PyObject *r;
+ if (unlikely(!__Pyx_PyBaseString_Check(n))) {
+ PyErr_SetString(PyExc_TypeError,
+ "hasattr(): attribute name must be string");
+ return -1;
+ }
+ r = __Pyx_GetAttr(o, n);
+ if (!r) {
+ PyErr_Clear();
+ return 0;
+ } else {
+ Py_DECREF(r);
+ return 1;
}
- PyErr_Format(PyExc_TypeError,
- "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)",
- name, type->tp_name, Py_TYPE(obj)->tp_name);
- return 0;
}
+#endif
-/* DictGetItem */
-#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
-static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
- PyObject *value;
- value = PyDict_GetItemWithError(d, key);
- if (unlikely(!value)) {
- if (!PyErr_Occurred()) {
- if (unlikely(PyTuple_Check(key))) {
- PyObject* args = PyTuple_Pack(1, key);
- if (likely(args)) {
- PyErr_SetObject(PyExc_KeyError, args);
- Py_DECREF(args);
+/* FixUpExtensionType */
+#if CYTHON_USE_TYPE_SPECS
+static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) {
+#if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
+ CYTHON_UNUSED_VAR(spec);
+ CYTHON_UNUSED_VAR(type);
+#else
+ const PyType_Slot *slot = spec->slots;
+ while (slot && slot->slot && slot->slot != Py_tp_members)
+ slot++;
+ if (slot && slot->slot == Py_tp_members) {
+ int changed = 0;
+#if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON)
+ const
+#endif
+ PyMemberDef *memb = (PyMemberDef*) slot->pfunc;
+ while (memb && memb->name) {
+ if (memb->name[0] == '_' && memb->name[1] == '_') {
+#if PY_VERSION_HEX < 0x030900b1
+ if (strcmp(memb->name, "__weaklistoffset__") == 0) {
+ assert(memb->type == T_PYSSIZET);
+ assert(memb->flags == READONLY);
+ type->tp_weaklistoffset = memb->offset;
+ changed = 1;
}
- } else {
- PyErr_SetObject(PyExc_KeyError, key);
+ else if (strcmp(memb->name, "__dictoffset__") == 0) {
+ assert(memb->type == T_PYSSIZET);
+ assert(memb->flags == READONLY);
+ type->tp_dictoffset = memb->offset;
+ changed = 1;
+ }
+#if CYTHON_METH_FASTCALL
+ else if (strcmp(memb->name, "__vectorcalloffset__") == 0) {
+ assert(memb->type == T_PYSSIZET);
+ assert(memb->flags == READONLY);
+#if PY_VERSION_HEX >= 0x030800b4
+ type->tp_vectorcall_offset = memb->offset;
+#else
+ type->tp_print = (printfunc) memb->offset;
+#endif
+ changed = 1;
+ }
+#endif
+#else
+ if ((0));
+#endif
+#if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON
+ else if (strcmp(memb->name, "__module__") == 0) {
+ PyObject *descr;
+ assert(memb->type == T_OBJECT);
+ assert(memb->flags == 0 || memb->flags == READONLY);
+ descr = PyDescr_NewMember(type, memb);
+ if (unlikely(!descr))
+ return -1;
+ if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) {
+ Py_DECREF(descr);
+ return -1;
+ }
+ Py_DECREF(descr);
+ changed = 1;
+ }
+#endif
}
+ memb++;
}
- return NULL;
+ if (changed)
+ PyType_Modified(type);
}
- Py_INCREF(value);
- return value;
+#endif
+ return 0;
}
#endif
-/* GetItemInt */
-static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
- PyObject *r;
- if (!j) return NULL;
- r = PyObject_GetItem(o, j);
- Py_DECREF(j);
- return r;
-}
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
- CYTHON_NCP_UNUSED int wraparound,
- CYTHON_NCP_UNUSED int boundscheck) {
-#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- Py_ssize_t wrapped_i = i;
- if (wraparound & unlikely(i < 0)) {
- wrapped_i += PyList_GET_SIZE(o);
- }
- if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
- PyObject *r = PyList_GET_ITEM(o, wrapped_i);
- Py_INCREF(r);
- return r;
- }
- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+/* ValidateBasesTuple */
+#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS
+static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) {
+ Py_ssize_t i, n;
+#if CYTHON_ASSUME_SAFE_MACROS
+ n = PyTuple_GET_SIZE(bases);
#else
- return PySequence_GetItem(o, i);
+ n = PyTuple_Size(bases);
+ if (n < 0) return -1;
#endif
-}
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
- CYTHON_NCP_UNUSED int wraparound,
- CYTHON_NCP_UNUSED int boundscheck) {
-#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- Py_ssize_t wrapped_i = i;
- if (wraparound & unlikely(i < 0)) {
- wrapped_i += PyTuple_GET_SIZE(o);
- }
- if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
- PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
- Py_INCREF(r);
- return r;
- }
- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+ for (i = 1; i < n; i++)
+ {
+#if CYTHON_AVOID_BORROWED_REFS
+ PyObject *b0 = PySequence_GetItem(bases, i);
+ if (!b0) return -1;
+#elif CYTHON_ASSUME_SAFE_MACROS
+ PyObject *b0 = PyTuple_GET_ITEM(bases, i);
#else
- return PySequence_GetItem(o, i);
+ PyObject *b0 = PyTuple_GetItem(bases, i);
+ if (!b0) return -1;
#endif
-}
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
- CYTHON_NCP_UNUSED int wraparound,
- CYTHON_NCP_UNUSED int boundscheck) {
-#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
- if (is_list || PyList_CheckExact(o)) {
- Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
- if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
- PyObject *r = PyList_GET_ITEM(o, n);
- Py_INCREF(r);
- return r;
+ PyTypeObject *b;
+#if PY_MAJOR_VERSION < 3
+ if (PyClass_Check(b0))
+ {
+ PyErr_Format(PyExc_TypeError, "base class '%.200s' is an old-style class",
+ PyString_AS_STRING(((PyClassObject*)b0)->cl_name));
+#if CYTHON_AVOID_BORROWED_REFS
+ Py_DECREF(b0);
+#endif
+ return -1;
}
- }
- else if (PyTuple_CheckExact(o)) {
- Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
- if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
- PyObject *r = PyTuple_GET_ITEM(o, n);
- Py_INCREF(r);
- return r;
+#endif
+ b = (PyTypeObject*) b0;
+ if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE))
+ {
+ __Pyx_TypeName b_name = __Pyx_PyType_GetName(b);
+ PyErr_Format(PyExc_TypeError,
+ "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name);
+ __Pyx_DECREF_TypeName(b_name);
+#if CYTHON_AVOID_BORROWED_REFS
+ Py_DECREF(b0);
+#endif
+ return -1;
}
- } else {
- PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
- if (likely(m && m->sq_item)) {
- if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
- Py_ssize_t l = m->sq_length(o);
- if (likely(l >= 0)) {
- i += l;
- } else {
- if (!PyErr_ExceptionMatches(PyExc_OverflowError))
- return NULL;
- PyErr_Clear();
+ if (dictoffset == 0)
+ {
+ Py_ssize_t b_dictoffset = 0;
+#if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
+ b_dictoffset = b->tp_dictoffset;
+#else
+ PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__");
+ if (!py_b_dictoffset) goto dictoffset_return;
+ b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset);
+ Py_DECREF(py_b_dictoffset);
+ if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return;
+#endif
+ if (b_dictoffset) {
+ {
+ __Pyx_TypeName b_name = __Pyx_PyType_GetName(b);
+ PyErr_Format(PyExc_TypeError,
+ "extension type '%.200s' has no __dict__ slot, "
+ "but base type '" __Pyx_FMT_TYPENAME "' has: "
+ "either add 'cdef dict __dict__' to the extension type "
+ "or add '__slots__ = [...]' to the base type",
+ type_name, b_name);
+ __Pyx_DECREF_TypeName(b_name);
}
+#if !(CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY)
+ dictoffset_return:
+#endif
+#if CYTHON_AVOID_BORROWED_REFS
+ Py_DECREF(b0);
+#endif
+ return -1;
+ }
+ }
+#if CYTHON_AVOID_BORROWED_REFS
+ Py_DECREF(b0);
+#endif
+ }
+ return 0;
+}
+#endif
+
+/* PyType_Ready */
+static int __Pyx_PyType_Ready(PyTypeObject *t) {
+#if CYTHON_USE_TYPE_SPECS || !(CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API) || defined(PYSTON_MAJOR_VERSION)
+ (void)__Pyx_PyObject_CallMethod0;
+#if CYTHON_USE_TYPE_SPECS
+ (void)__Pyx_validate_bases_tuple;
+#endif
+ return PyType_Ready(t);
+#else
+ int r;
+ PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*);
+ if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1))
+ return -1;
+#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION)
+ {
+ int gc_was_enabled;
+ #if PY_VERSION_HEX >= 0x030A00b1
+ gc_was_enabled = PyGC_Disable();
+ (void)__Pyx_PyObject_CallMethod0;
+ #else
+ PyObject *ret, *py_status;
+ PyObject *gc = NULL;
+ #if PY_VERSION_HEX >= 0x030700a1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400)
+ gc = PyImport_GetModule(__pyx_kp_u_gc);
+ #endif
+ if (unlikely(!gc)) gc = PyImport_Import(__pyx_kp_u_gc);
+ if (unlikely(!gc)) return -1;
+ py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_isenabled);
+ if (unlikely(!py_status)) {
+ Py_DECREF(gc);
+ return -1;
+ }
+ gc_was_enabled = __Pyx_PyObject_IsTrue(py_status);
+ Py_DECREF(py_status);
+ if (gc_was_enabled > 0) {
+ ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_disable);
+ if (unlikely(!ret)) {
+ Py_DECREF(gc);
+ return -1;
+ }
+ Py_DECREF(ret);
+ } else if (unlikely(gc_was_enabled == -1)) {
+ Py_DECREF(gc);
+ return -1;
+ }
+ #endif
+ t->tp_flags |= Py_TPFLAGS_HEAPTYPE;
+#if PY_VERSION_HEX >= 0x030A0000
+ t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE;
+#endif
+#else
+ (void)__Pyx_PyObject_CallMethod0;
+#endif
+ r = PyType_Ready(t);
+#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION)
+ t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE;
+ #if PY_VERSION_HEX >= 0x030A00b1
+ if (gc_was_enabled)
+ PyGC_Enable();
+ #else
+ if (gc_was_enabled) {
+ PyObject *tp, *v, *tb;
+ PyErr_Fetch(&tp, &v, &tb);
+ ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_enable);
+ if (likely(ret || r == -1)) {
+ Py_XDECREF(ret);
+ PyErr_Restore(tp, v, tb);
+ } else {
+ Py_XDECREF(tp);
+ Py_XDECREF(v);
+ Py_XDECREF(tb);
+ r = -1;
}
- return m->sq_item(o, i);
+ }
+ Py_DECREF(gc);
+ #endif
+ }
+#endif
+ return r;
+#endif
+}
+
+/* PyObject_GenericGetAttrNoDict */
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
+ __Pyx_TypeName type_name = __Pyx_PyType_GetName(tp);
+ PyErr_Format(PyExc_AttributeError,
+#if PY_MAJOR_VERSION >= 3
+ "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'",
+ type_name, attr_name);
+#else
+ "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'",
+ type_name, PyString_AS_STRING(attr_name));
+#endif
+ __Pyx_DECREF_TypeName(type_name);
+ return NULL;
+}
+static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) {
+ PyObject *descr;
+ PyTypeObject *tp = Py_TYPE(obj);
+ if (unlikely(!PyString_Check(attr_name))) {
+ return PyObject_GenericGetAttr(obj, attr_name);
+ }
+ assert(!tp->tp_dictoffset);
+ descr = _PyType_Lookup(tp, attr_name);
+ if (unlikely(!descr)) {
+ return __Pyx_RaiseGenericGetAttributeError(tp, attr_name);
+ }
+ Py_INCREF(descr);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS)))
+ #endif
+ {
+ descrgetfunc f = Py_TYPE(descr)->tp_descr_get;
+ if (unlikely(f)) {
+ PyObject *res = f(descr, obj, (PyObject *)tp);
+ Py_DECREF(descr);
+ return res;
}
}
-#else
- if (is_list || PySequence_Check(o)) {
- return PySequence_GetItem(o, i);
- }
+ return descr;
+}
#endif
- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+
+/* PyObject_GenericGetAttr */
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
+ if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
+ return PyObject_GenericGetAttr(obj, attr_name);
+ }
+ return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name);
}
+#endif
-/* RaiseTooManyValuesToUnpack */
-static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
- PyErr_Format(PyExc_ValueError,
- "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
+/* SetVTable */
+static int __Pyx_SetVtable(PyTypeObject *type, void *vtable) {
+ PyObject *ob = PyCapsule_New(vtable, 0, 0);
+ if (unlikely(!ob))
+ goto bad;
+#if CYTHON_COMPILING_IN_LIMITED_API
+ if (unlikely(PyObject_SetAttr((PyObject *) type, __pyx_n_s_pyx_vtable, ob) < 0))
+#else
+ if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_n_s_pyx_vtable, ob) < 0))
+#endif
+ goto bad;
+ Py_DECREF(ob);
+ return 0;
+bad:
+ Py_XDECREF(ob);
+ return -1;
}
-/* RaiseNeedMoreValuesToUnpack */
-static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
- PyErr_Format(PyExc_ValueError,
- "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
- index, (index == 1) ? "" : "s");
+/* GetVTable */
+static void* __Pyx_GetVtable(PyTypeObject *type) {
+ void* ptr;
+#if CYTHON_COMPILING_IN_LIMITED_API
+ PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_n_s_pyx_vtable);
+#else
+ PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_n_s_pyx_vtable);
+#endif
+ if (!ob)
+ goto bad;
+ ptr = PyCapsule_GetPointer(ob, 0);
+ if (!ptr && !PyErr_Occurred())
+ PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type");
+ Py_DECREF(ob);
+ return ptr;
+bad:
+ Py_XDECREF(ob);
+ return NULL;
}
-/* IterFinish */
-static CYTHON_INLINE int __Pyx_IterFinish(void) {
-#if CYTHON_FAST_THREAD_STATE
- PyThreadState *tstate = __Pyx_PyThreadState_Current;
- PyObject* exc_type = tstate->curexc_type;
- if (unlikely(exc_type)) {
- if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) {
- PyObject *exc_value, *exc_tb;
- exc_value = tstate->curexc_value;
- exc_tb = tstate->curexc_traceback;
- tstate->curexc_type = 0;
- tstate->curexc_value = 0;
- tstate->curexc_traceback = 0;
- Py_DECREF(exc_type);
- Py_XDECREF(exc_value);
- Py_XDECREF(exc_tb);
- return 0;
- } else {
- return -1;
+/* MergeVTables */
+#if !CYTHON_COMPILING_IN_LIMITED_API
+static int __Pyx_MergeVtables(PyTypeObject *type) {
+ int i;
+ void** base_vtables;
+ __Pyx_TypeName tp_base_name;
+ __Pyx_TypeName base_name;
+ void* unknown = (void*)-1;
+ PyObject* bases = type->tp_bases;
+ int base_depth = 0;
+ {
+ PyTypeObject* base = type->tp_base;
+ while (base) {
+ base_depth += 1;
+ base = base->tp_base;
}
}
- return 0;
-#else
- if (unlikely(PyErr_Occurred())) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {
- PyErr_Clear();
- return 0;
- } else {
- return -1;
+ base_vtables = (void**) malloc(sizeof(void*) * (size_t)(base_depth + 1));
+ base_vtables[0] = unknown;
+ for (i = 1; i < PyTuple_GET_SIZE(bases); i++) {
+ void* base_vtable = __Pyx_GetVtable(((PyTypeObject*)PyTuple_GET_ITEM(bases, i)));
+ if (base_vtable != NULL) {
+ int j;
+ PyTypeObject* base = type->tp_base;
+ for (j = 0; j < base_depth; j++) {
+ if (base_vtables[j] == unknown) {
+ base_vtables[j] = __Pyx_GetVtable(base);
+ base_vtables[j + 1] = unknown;
+ }
+ if (base_vtables[j] == base_vtable) {
+ break;
+ } else if (base_vtables[j] == NULL) {
+ goto bad;
+ }
+ base = base->tp_base;
+ }
}
}
+ PyErr_Clear();
+ free(base_vtables);
return 0;
-#endif
+bad:
+ tp_base_name = __Pyx_PyType_GetName(type->tp_base);
+ base_name = __Pyx_PyType_GetName((PyTypeObject*)PyTuple_GET_ITEM(bases, i));
+ PyErr_Format(PyExc_TypeError,
+ "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name);
+ __Pyx_DECREF_TypeName(tp_base_name);
+ __Pyx_DECREF_TypeName(base_name);
+ free(base_vtables);
+ return -1;
}
+#endif
-/* UnpackItemEndCheck */
-static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
- if (unlikely(retval)) {
- Py_DECREF(retval);
- __Pyx_RaiseTooManyValuesError(expected);
- return -1;
- } else {
- return __Pyx_IterFinish();
- }
- return 0;
+/* SetupReduce */
+#if !CYTHON_COMPILING_IN_LIMITED_API
+static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
+ int ret;
+ PyObject *name_attr;
+ name_attr = __Pyx_PyObject_GetAttrStrNoError(meth, __pyx_n_s_name);
+ if (likely(name_attr)) {
+ ret = PyObject_RichCompareBool(name_attr, name, Py_EQ);
+ } else {
+ ret = -1;
+ }
+ if (unlikely(ret < 0)) {
+ PyErr_Clear();
+ ret = 0;
+ }
+ Py_XDECREF(name_attr);
+ return ret;
}
-
-/* PyObjectGetMethod */
-static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) {
- PyObject *attr;
-#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP
- PyTypeObject *tp = Py_TYPE(obj);
- PyObject *descr;
- descrgetfunc f = NULL;
- PyObject **dictptr, *dict;
- int meth_found = 0;
- assert (*method == NULL);
- if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) {
- attr = __Pyx_PyObject_GetAttrStr(obj, name);
- goto try_unpack;
+static int __Pyx_setup_reduce(PyObject* type_obj) {
+ int ret = 0;
+ PyObject *object_reduce = NULL;
+ PyObject *object_getstate = NULL;
+ PyObject *object_reduce_ex = NULL;
+ PyObject *reduce = NULL;
+ PyObject *reduce_ex = NULL;
+ PyObject *reduce_cython = NULL;
+ PyObject *setstate = NULL;
+ PyObject *setstate_cython = NULL;
+ PyObject *getstate = NULL;
+#if CYTHON_USE_PYTYPE_LOOKUP
+ getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate);
+#else
+ getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_getstate);
+ if (!getstate && PyErr_Occurred()) {
+ goto __PYX_BAD;
}
- if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) {
- return 0;
+#endif
+ if (getstate) {
+#if CYTHON_USE_PYTYPE_LOOKUP
+ object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_getstate);
+#else
+ object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_n_s_getstate);
+ if (!object_getstate && PyErr_Occurred()) {
+ goto __PYX_BAD;
+ }
+#endif
+ if (object_getstate != getstate) {
+ goto __PYX_GOOD;
+ }
}
- descr = _PyType_Lookup(tp, name);
- if (likely(descr != NULL)) {
- Py_INCREF(descr);
-#if PY_MAJOR_VERSION >= 3
- #ifdef __Pyx_CyFunction_USED
- if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr)))
- #else
- if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type)))
- #endif
+#if CYTHON_USE_PYTYPE_LOOKUP
+ object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
#else
- #ifdef __Pyx_CyFunction_USED
- if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr)))
- #else
- if (likely(PyFunction_Check(descr)))
- #endif
+ object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
#endif
- {
- meth_found = 1;
- } else {
- f = Py_TYPE(descr)->tp_descr_get;
- if (f != NULL && PyDescr_IsData(descr)) {
- attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
- Py_DECREF(descr);
- goto try_unpack;
+ reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD;
+ if (reduce_ex == object_reduce_ex) {
+#if CYTHON_USE_PYTYPE_LOOKUP
+ object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD;
+#else
+ object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD;
+#endif
+ reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD;
+ if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) {
+ reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython);
+ if (likely(reduce_cython)) {
+ ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
+ ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
+ } else if (reduce == object_reduce || PyErr_Occurred()) {
+ goto __PYX_BAD;
+ }
+ setstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate);
+ if (!setstate) PyErr_Clear();
+ if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) {
+ setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython);
+ if (likely(setstate_cython)) {
+ ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
+ ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
+ } else if (!setstate || PyErr_Occurred()) {
+ goto __PYX_BAD;
+ }
}
+ PyType_Modified((PyTypeObject*)type_obj);
}
}
- dictptr = _PyObject_GetDictPtr(obj);
- if (dictptr != NULL && (dict = *dictptr) != NULL) {
- Py_INCREF(dict);
- attr = __Pyx_PyDict_GetItemStr(dict, name);
- if (attr != NULL) {
- Py_INCREF(attr);
- Py_DECREF(dict);
- Py_XDECREF(descr);
- goto try_unpack;
+ goto __PYX_GOOD;
+__PYX_BAD:
+ if (!PyErr_Occurred()) {
+ __Pyx_TypeName type_obj_name =
+ __Pyx_PyType_GetName((PyTypeObject*)type_obj);
+ PyErr_Format(PyExc_RuntimeError,
+ "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name);
+ __Pyx_DECREF_TypeName(type_obj_name);
+ }
+ ret = -1;
+__PYX_GOOD:
+#if !CYTHON_USE_PYTYPE_LOOKUP
+ Py_XDECREF(object_reduce);
+ Py_XDECREF(object_reduce_ex);
+ Py_XDECREF(object_getstate);
+ Py_XDECREF(getstate);
+#endif
+ Py_XDECREF(reduce);
+ Py_XDECREF(reduce_ex);
+ Py_XDECREF(reduce_cython);
+ Py_XDECREF(setstate);
+ Py_XDECREF(setstate_cython);
+ return ret;
+}
+#endif
+
+/* TypeImport */
+#ifndef __PYX_HAVE_RT_ImportType_3_0_10
+#define __PYX_HAVE_RT_ImportType_3_0_10
+static PyTypeObject *__Pyx_ImportType_3_0_10(PyObject *module, const char *module_name, const char *class_name,
+ size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_10 check_size)
+{
+ PyObject *result = 0;
+ char warning[200];
+ Py_ssize_t basicsize;
+ Py_ssize_t itemsize;
+#if CYTHON_COMPILING_IN_LIMITED_API
+ PyObject *py_basicsize;
+ PyObject *py_itemsize;
+#endif
+ result = PyObject_GetAttrString(module, class_name);
+ if (!result)
+ goto bad;
+ if (!PyType_Check(result)) {
+ PyErr_Format(PyExc_TypeError,
+ "%.200s.%.200s is not a type object",
+ module_name, class_name);
+ goto bad;
+ }
+#if !CYTHON_COMPILING_IN_LIMITED_API
+ basicsize = ((PyTypeObject *)result)->tp_basicsize;
+ itemsize = ((PyTypeObject *)result)->tp_itemsize;
+#else
+ py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+ if (!py_basicsize)
+ goto bad;
+ basicsize = PyLong_AsSsize_t(py_basicsize);
+ Py_DECREF(py_basicsize);
+ py_basicsize = 0;
+ if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+ goto bad;
+ py_itemsize = PyObject_GetAttrString(result, "__itemsize__");
+ if (!py_itemsize)
+ goto bad;
+ itemsize = PyLong_AsSsize_t(py_itemsize);
+ Py_DECREF(py_itemsize);
+ py_itemsize = 0;
+ if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred())
+ goto bad;
+#endif
+ if (itemsize) {
+ if (size % alignment) {
+ alignment = size % alignment;
}
- Py_DECREF(dict);
+ if (itemsize < (Py_ssize_t)alignment)
+ itemsize = (Py_ssize_t)alignment;
+ }
+ if ((size_t)(basicsize + itemsize) < size) {
+ PyErr_Format(PyExc_ValueError,
+ "%.200s.%.200s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd from PyObject",
+ module_name, class_name, size, basicsize+itemsize);
+ goto bad;
}
- if (meth_found) {
- *method = descr;
- return 1;
+ if (check_size == __Pyx_ImportType_CheckSize_Error_3_0_10 &&
+ ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) {
+ PyErr_Format(PyExc_ValueError,
+ "%.200s.%.200s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd-%zd from PyObject",
+ module_name, class_name, size, basicsize, basicsize+itemsize);
+ goto bad;
}
- if (f != NULL) {
- attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
- Py_DECREF(descr);
- goto try_unpack;
+ else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_0_10 && (size_t)basicsize > size) {
+ PyOS_snprintf(warning, sizeof(warning),
+ "%s.%s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd from PyObject",
+ module_name, class_name, size, basicsize);
+ if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
}
- if (descr != NULL) {
- *method = descr;
- return 0;
+ return (PyTypeObject *)result;
+bad:
+ Py_XDECREF(result);
+ return NULL;
+}
+#endif
+
+/* ImportDottedModule */
+#if PY_MAJOR_VERSION >= 3
+static PyObject *__Pyx__ImportDottedModule_Error(PyObject *name, PyObject *parts_tuple, Py_ssize_t count) {
+ PyObject *partial_name = NULL, *slice = NULL, *sep = NULL;
+ if (unlikely(PyErr_Occurred())) {
+ PyErr_Clear();
}
- PyErr_Format(PyExc_AttributeError,
+ if (likely(PyTuple_GET_SIZE(parts_tuple) == count)) {
+ partial_name = name;
+ } else {
+ slice = PySequence_GetSlice(parts_tuple, 0, count);
+ if (unlikely(!slice))
+ goto bad;
+ sep = PyUnicode_FromStringAndSize(".", 1);
+ if (unlikely(!sep))
+ goto bad;
+ partial_name = PyUnicode_Join(sep, slice);
+ }
+ PyErr_Format(
+#if PY_MAJOR_VERSION < 3
+ PyExc_ImportError,
+ "No module named '%s'", PyString_AS_STRING(partial_name));
+#else
+#if PY_VERSION_HEX >= 0x030600B1
+ PyExc_ModuleNotFoundError,
+#else
+ PyExc_ImportError,
+#endif
+ "No module named '%U'", partial_name);
+#endif
+bad:
+ Py_XDECREF(sep);
+ Py_XDECREF(slice);
+ Py_XDECREF(partial_name);
+ return NULL;
+}
+#endif
#if PY_MAJOR_VERSION >= 3
- "'%.50s' object has no attribute '%U'",
- tp->tp_name, name);
+static PyObject *__Pyx__ImportDottedModule_Lookup(PyObject *name) {
+ PyObject *imported_module;
+#if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400)
+ PyObject *modules = PyImport_GetModuleDict();
+ if (unlikely(!modules))
+ return NULL;
+ imported_module = __Pyx_PyDict_GetItemStr(modules, name);
+ Py_XINCREF(imported_module);
#else
- "'%.50s' object has no attribute '%.400s'",
- tp->tp_name, PyString_AS_STRING(name));
+ imported_module = PyImport_GetModule(name);
#endif
- return 0;
+ return imported_module;
+}
+#endif
+#if PY_MAJOR_VERSION >= 3
+static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple) {
+ Py_ssize_t i, nparts;
+ nparts = PyTuple_GET_SIZE(parts_tuple);
+ for (i=1; i < nparts && module; i++) {
+ PyObject *part, *submodule;
+#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ part = PyTuple_GET_ITEM(parts_tuple, i);
#else
- attr = __Pyx_PyObject_GetAttrStr(obj, name);
- goto try_unpack;
+ part = PySequence_ITEM(parts_tuple, i);
#endif
-try_unpack:
-#if CYTHON_UNPACK_METHODS
- if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) {
- PyObject *function = PyMethod_GET_FUNCTION(attr);
- Py_INCREF(function);
- Py_DECREF(attr);
- *method = function;
- return 1;
+ submodule = __Pyx_PyObject_GetAttrStrNoError(module, part);
+#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
+ Py_DECREF(part);
+#endif
+ Py_DECREF(module);
+ module = submodule;
+ }
+ if (unlikely(!module)) {
+ return __Pyx__ImportDottedModule_Error(name, parts_tuple, i);
+ }
+ return module;
+}
+#endif
+static PyObject *__Pyx__ImportDottedModule(PyObject *name, PyObject *parts_tuple) {
+#if PY_MAJOR_VERSION < 3
+ PyObject *module, *from_list, *star = __pyx_n_s__10;
+ CYTHON_UNUSED_VAR(parts_tuple);
+ from_list = PyList_New(1);
+ if (unlikely(!from_list))
+ return NULL;
+ Py_INCREF(star);
+ PyList_SET_ITEM(from_list, 0, star);
+ module = __Pyx_Import(name, from_list, 0);
+ Py_DECREF(from_list);
+ return module;
+#else
+ PyObject *imported_module;
+ PyObject *module = __Pyx_Import(name, NULL, 0);
+ if (!parts_tuple || unlikely(!module))
+ return module;
+ imported_module = __Pyx__ImportDottedModule_Lookup(name);
+ if (likely(imported_module)) {
+ Py_DECREF(module);
+ return imported_module;
}
+ PyErr_Clear();
+ return __Pyx_ImportDottedModule_WalkParts(module, name, parts_tuple);
#endif
- *method = attr;
- return 0;
}
-
-/* PyObjectCallMethod0 */
-static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
- PyObject *method = NULL, *result = NULL;
- int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
- if (likely(is_method)) {
- result = __Pyx_PyObject_CallOneArg(method, obj);
- Py_DECREF(method);
- return result;
+static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple) {
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030400B1
+ PyObject *module = __Pyx__ImportDottedModule_Lookup(name);
+ if (likely(module)) {
+ PyObject *spec = __Pyx_PyObject_GetAttrStrNoError(module, __pyx_n_s_spec);
+ if (likely(spec)) {
+ PyObject *unsafe = __Pyx_PyObject_GetAttrStrNoError(spec, __pyx_n_s_initializing);
+ if (likely(!unsafe || !__Pyx_PyObject_IsTrue(unsafe))) {
+ Py_DECREF(spec);
+ spec = NULL;
+ }
+ Py_XDECREF(unsafe);
+ }
+ if (likely(!spec)) {
+ PyErr_Clear();
+ return module;
+ }
+ Py_DECREF(spec);
+ Py_DECREF(module);
+ } else if (PyErr_Occurred()) {
+ PyErr_Clear();
}
- if (unlikely(!method)) goto bad;
- result = __Pyx_PyObject_CallNoArg(method);
- Py_DECREF(method);
-bad:
- return result;
+#endif
+ return __Pyx__ImportDottedModule(name, parts_tuple);
}
-/* RaiseNoneIterError */
-static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+/* FetchSharedCythonModule */
+static PyObject *__Pyx_FetchSharedCythonABIModule(void) {
+ return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME);
}
-/* UnpackTupleError */
-static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
- if (t == Py_None) {
- __Pyx_RaiseNoneNotIterableError();
- } else if (PyTuple_GET_SIZE(t) < index) {
- __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t));
- } else {
- __Pyx_RaiseTooManyValuesError(index);
+/* FetchCommonType */
+static int __Pyx_VerifyCachedType(PyObject *cached_type,
+ const char *name,
+ Py_ssize_t basicsize,
+ Py_ssize_t expected_basicsize) {
+ if (!PyType_Check(cached_type)) {
+ PyErr_Format(PyExc_TypeError,
+ "Shared Cython type %.200s is not a type object", name);
+ return -1;
+ }
+ if (basicsize != expected_basicsize) {
+ PyErr_Format(PyExc_TypeError,
+ "Shared Cython type %.200s has the wrong size, try recompiling",
+ name);
+ return -1;
}
+ return 0;
+}
+#if !CYTHON_USE_TYPE_SPECS
+static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
+ PyObject* abi_module;
+ const char* object_name;
+ PyTypeObject *cached_type = NULL;
+ abi_module = __Pyx_FetchSharedCythonABIModule();
+ if (!abi_module) return NULL;
+ object_name = strrchr(type->tp_name, '.');
+ object_name = object_name ? object_name+1 : type->tp_name;
+ cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name);
+ if (cached_type) {
+ if (__Pyx_VerifyCachedType(
+ (PyObject *)cached_type,
+ object_name,
+ cached_type->tp_basicsize,
+ type->tp_basicsize) < 0) {
+ goto bad;
+ }
+ goto done;
+ }
+ if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
+ PyErr_Clear();
+ if (PyType_Ready(type) < 0) goto bad;
+ if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0)
+ goto bad;
+ Py_INCREF(type);
+ cached_type = type;
+done:
+ Py_DECREF(abi_module);
+ return cached_type;
+bad:
+ Py_XDECREF(cached_type);
+ cached_type = NULL;
+ goto done;
}
-
-/* UnpackTuple2 */
-static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
- PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) {
- PyObject *value1 = NULL, *value2 = NULL;
-#if CYTHON_COMPILING_IN_PYPY
- value1 = PySequence_ITEM(tuple, 0); if (unlikely(!value1)) goto bad;
- value2 = PySequence_ITEM(tuple, 1); if (unlikely(!value2)) goto bad;
#else
- value1 = PyTuple_GET_ITEM(tuple, 0); Py_INCREF(value1);
- value2 = PyTuple_GET_ITEM(tuple, 1); Py_INCREF(value2);
+static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) {
+ PyObject *abi_module, *cached_type = NULL;
+ const char* object_name = strrchr(spec->name, '.');
+ object_name = object_name ? object_name+1 : spec->name;
+ abi_module = __Pyx_FetchSharedCythonABIModule();
+ if (!abi_module) return NULL;
+ cached_type = PyObject_GetAttrString(abi_module, object_name);
+ if (cached_type) {
+ Py_ssize_t basicsize;
+#if CYTHON_COMPILING_IN_LIMITED_API
+ PyObject *py_basicsize;
+ py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__");
+ if (unlikely(!py_basicsize)) goto bad;
+ basicsize = PyLong_AsSsize_t(py_basicsize);
+ Py_DECREF(py_basicsize);
+ py_basicsize = 0;
+ if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
+#else
+ basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1;
#endif
- if (decref_tuple) {
- Py_DECREF(tuple);
+ if (__Pyx_VerifyCachedType(
+ cached_type,
+ object_name,
+ basicsize,
+ spec->basicsize) < 0) {
+ goto bad;
+ }
+ goto done;
}
- *pvalue1 = value1;
- *pvalue2 = value2;
- return 0;
-#if CYTHON_COMPILING_IN_PYPY
+ if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
+ PyErr_Clear();
+ CYTHON_UNUSED_VAR(module);
+ cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases);
+ if (unlikely(!cached_type)) goto bad;
+ if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad;
+ if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad;
+done:
+ Py_DECREF(abi_module);
+ assert(cached_type == NULL || PyType_Check(cached_type));
+ return (PyTypeObject *) cached_type;
bad:
- Py_XDECREF(value1);
- Py_XDECREF(value2);
- if (decref_tuple) { Py_XDECREF(tuple); }
- return -1;
+ Py_XDECREF(cached_type);
+ cached_type = NULL;
+ goto done;
+}
#endif
+
+/* PyVectorcallFastCallDict */
+#if CYTHON_METH_FASTCALL
+static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
+{
+ PyObject *res = NULL;
+ PyObject *kwnames;
+ PyObject **newargs;
+ PyObject **kwvalues;
+ Py_ssize_t i, pos;
+ size_t j;
+ PyObject *key, *value;
+ unsigned long keys_are_strings;
+ Py_ssize_t nkw = PyDict_GET_SIZE(kw);
+ newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0]));
+ if (unlikely(newargs == NULL)) {
+ PyErr_NoMemory();
+ return NULL;
+ }
+ for (j = 0; j < nargs; j++) newargs[j] = args[j];
+ kwnames = PyTuple_New(nkw);
+ if (unlikely(kwnames == NULL)) {
+ PyMem_Free(newargs);
+ return NULL;
+ }
+ kwvalues = newargs + nargs;
+ pos = i = 0;
+ keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS;
+ while (PyDict_Next(kw, &pos, &key, &value)) {
+ keys_are_strings &= Py_TYPE(key)->tp_flags;
+ Py_INCREF(key);
+ Py_INCREF(value);
+ PyTuple_SET_ITEM(kwnames, i, key);
+ kwvalues[i] = value;
+ i++;
+ }
+ if (unlikely(!keys_are_strings)) {
+ PyErr_SetString(PyExc_TypeError, "keywords must be strings");
+ goto cleanup;
+ }
+ res = vc(func, newargs, nargs, kwnames);
+cleanup:
+ Py_DECREF(kwnames);
+ for (i = 0; i < nkw; i++)
+ Py_DECREF(kwvalues[i]);
+ PyMem_Free(newargs);
+ return res;
}
-static int __Pyx_unpack_tuple2_generic(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2,
- int has_known_size, int decref_tuple) {
- Py_ssize_t index;
- PyObject *value1 = NULL, *value2 = NULL, *iter = NULL;
- iternextfunc iternext;
- iter = PyObject_GetIter(tuple);
- if (unlikely(!iter)) goto bad;
- if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; }
- iternext = Py_TYPE(iter)->tp_iternext;
- value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; }
- value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; }
- if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad;
- Py_DECREF(iter);
- *pvalue1 = value1;
- *pvalue2 = value2;
- return 0;
-unpacking_failed:
- if (!has_known_size && __Pyx_IterFinish() == 0)
- __Pyx_RaiseNeedMoreValuesError(index);
-bad:
- Py_XDECREF(iter);
- Py_XDECREF(value1);
- Py_XDECREF(value2);
- if (decref_tuple) { Py_XDECREF(tuple); }
- return -1;
+static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
+{
+ if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) {
+ return vc(func, args, nargs, NULL);
+ }
+ return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw);
}
-
-/* dict_iter */
-static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
- Py_ssize_t* p_orig_length, int* p_source_is_dict) {
- is_dict = is_dict || likely(PyDict_CheckExact(iterable));
- *p_source_is_dict = is_dict;
- if (is_dict) {
-#if !CYTHON_COMPILING_IN_PYPY
- *p_orig_length = PyDict_Size(iterable);
- Py_INCREF(iterable);
- return iterable;
-#elif PY_MAJOR_VERSION >= 3
- static PyObject *py_items = NULL, *py_keys = NULL, *py_values = NULL;
- PyObject **pp = NULL;
- if (method_name) {
- const char *name = PyUnicode_AsUTF8(method_name);
- if (strcmp(name, "iteritems") == 0) pp = &py_items;
- else if (strcmp(name, "iterkeys") == 0) pp = &py_keys;
- else if (strcmp(name, "itervalues") == 0) pp = &py_values;
- if (pp) {
- if (!*pp) {
- *pp = PyUnicode_FromString(name + 4);
- if (!*pp)
- return NULL;
- }
- method_name = *pp;
- }
- }
#endif
+
+/* CythonFunctionShared */
+#if CYTHON_COMPILING_IN_LIMITED_API
+static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) {
+ if (__Pyx_CyFunction_Check(func)) {
+ return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc;
+ } else if (PyCFunction_Check(func)) {
+ return PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
}
- *p_orig_length = 0;
- if (method_name) {
- PyObject* iter;
- iterable = __Pyx_PyObject_CallMethod0(iterable, method_name);
- if (!iterable)
- return NULL;
-#if !CYTHON_COMPILING_IN_PYPY
- if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable))
- return iterable;
+ return 0;
+}
+#else
+static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) {
+ return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
+}
+#endif
+static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) {
+#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
+ __Pyx_Py_XDECREF_SET(
+ __Pyx_CyFunction_GetClassObj(f),
+ ((classobj) ? __Pyx_NewRef(classobj) : NULL));
+#else
+ __Pyx_Py_XDECREF_SET(
+ ((PyCMethodObject *) (f))->mm_class,
+ (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL));
#endif
- iter = PyObject_GetIter(iterable);
- Py_DECREF(iterable);
- return iter;
- }
- return PyObject_GetIter(iterable);
}
-static CYTHON_INLINE int __Pyx_dict_iter_next(
- PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos,
- PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) {
- PyObject* next_item;
-#if !CYTHON_COMPILING_IN_PYPY
- if (source_is_dict) {
- PyObject *key, *value;
- if (unlikely(orig_length != PyDict_Size(iter_obj))) {
- PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration");
- return -1;
- }
- if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) {
- return 0;
- }
- if (pitem) {
- PyObject* tuple = PyTuple_New(2);
- if (unlikely(!tuple)) {
- return -1;
- }
- Py_INCREF(key);
- Py_INCREF(value);
- PyTuple_SET_ITEM(tuple, 0, key);
- PyTuple_SET_ITEM(tuple, 1, value);
- *pitem = tuple;
+static PyObject *
+__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure)
+{
+ CYTHON_UNUSED_VAR(closure);
+ if (unlikely(op->func_doc == NULL)) {
+#if CYTHON_COMPILING_IN_LIMITED_API
+ op->func_doc = PyObject_GetAttrString(op->func, "__doc__");
+ if (unlikely(!op->func_doc)) return NULL;
+#else
+ if (((PyCFunctionObject*)op)->m_ml->ml_doc) {
+#if PY_MAJOR_VERSION >= 3
+ op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc);
+#else
+ op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc);
+#endif
+ if (unlikely(op->func_doc == NULL))
+ return NULL;
} else {
- if (pkey) {
- Py_INCREF(key);
- *pkey = key;
- }
- if (pvalue) {
- Py_INCREF(value);
- *pvalue = value;
- }
+ Py_INCREF(Py_None);
+ return Py_None;
}
- return 1;
- } else if (PyTuple_CheckExact(iter_obj)) {
- Py_ssize_t pos = *ppos;
- if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0;
- *ppos = pos + 1;
- next_item = PyTuple_GET_ITEM(iter_obj, pos);
- Py_INCREF(next_item);
- } else if (PyList_CheckExact(iter_obj)) {
- Py_ssize_t pos = *ppos;
- if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0;
- *ppos = pos + 1;
- next_item = PyList_GET_ITEM(iter_obj, pos);
- Py_INCREF(next_item);
- } else
#endif
- {
- next_item = PyIter_Next(iter_obj);
- if (unlikely(!next_item)) {
- return __Pyx_IterFinish();
- }
}
- if (pitem) {
- *pitem = next_item;
- } else if (pkey && pvalue) {
- if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1))
- return -1;
- } else if (pkey) {
- *pkey = next_item;
- } else {
- *pvalue = next_item;
+ Py_INCREF(op->func_doc);
+ return op->func_doc;
+}
+static int
+__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context)
+{
+ CYTHON_UNUSED_VAR(context);
+ if (value == NULL) {
+ value = Py_None;
}
- return 1;
+ Py_INCREF(value);
+ __Pyx_Py_XDECREF_SET(op->func_doc, value);
+ return 0;
}
-
-/* WriteUnraisableException */
-static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
- CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
- int full_traceback, CYTHON_UNUSED int nogil) {
- PyObject *old_exc, *old_val, *old_tb;
- PyObject *ctx;
- __Pyx_PyThreadState_declare
-#ifdef WITH_THREAD
- PyGILState_STATE state;
- if (nogil)
- state = PyGILState_Ensure();
-#ifdef _MSC_VER
- else state = (PyGILState_STATE)-1;
-#endif
+static PyObject *
+__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context)
+{
+ CYTHON_UNUSED_VAR(context);
+ if (unlikely(op->func_name == NULL)) {
+#if CYTHON_COMPILING_IN_LIMITED_API
+ op->func_name = PyObject_GetAttrString(op->func, "__name__");
+#elif PY_MAJOR_VERSION >= 3
+ op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name);
+#else
+ op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name);
#endif
- __Pyx_PyThreadState_assign
- __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
- if (full_traceback) {
- Py_XINCREF(old_exc);
- Py_XINCREF(old_val);
- Py_XINCREF(old_tb);
- __Pyx_ErrRestore(old_exc, old_val, old_tb);
- PyErr_PrintEx(1);
+ if (unlikely(op->func_name == NULL))
+ return NULL;
}
- #if PY_MAJOR_VERSION < 3
- ctx = PyString_FromString(name);
- #else
- ctx = PyUnicode_FromString(name);
- #endif
- __Pyx_ErrRestore(old_exc, old_val, old_tb);
- if (!ctx) {
- PyErr_WriteUnraisable(Py_None);
- } else {
- PyErr_WriteUnraisable(ctx);
- Py_DECREF(ctx);
+ Py_INCREF(op->func_name);
+ return op->func_name;
+}
+static int
+__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context)
+{
+ CYTHON_UNUSED_VAR(context);
+#if PY_MAJOR_VERSION >= 3
+ if (unlikely(value == NULL || !PyUnicode_Check(value)))
+#else
+ if (unlikely(value == NULL || !PyString_Check(value)))
+#endif
+ {
+ PyErr_SetString(PyExc_TypeError,
+ "__name__ must be set to a string object");
+ return -1;
}
-#ifdef WITH_THREAD
- if (nogil)
- PyGILState_Release(state);
+ Py_INCREF(value);
+ __Pyx_Py_XDECREF_SET(op->func_name, value);
+ return 0;
+}
+static PyObject *
+__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context)
+{
+ CYTHON_UNUSED_VAR(context);
+ Py_INCREF(op->func_qualname);
+ return op->func_qualname;
+}
+static int
+__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context)
+{
+ CYTHON_UNUSED_VAR(context);
+#if PY_MAJOR_VERSION >= 3
+ if (unlikely(value == NULL || !PyUnicode_Check(value)))
+#else
+ if (unlikely(value == NULL || !PyString_Check(value)))
#endif
+ {
+ PyErr_SetString(PyExc_TypeError,
+ "__qualname__ must be set to a string object");
+ return -1;
+ }
+ Py_INCREF(value);
+ __Pyx_Py_XDECREF_SET(op->func_qualname, value);
+ return 0;
}
-
-/* Import */
-static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
- PyObject *empty_list = 0;
- PyObject *module = 0;
- PyObject *global_dict = 0;
- PyObject *empty_dict = 0;
- PyObject *list;
- #if PY_MAJOR_VERSION < 3
- PyObject *py_import;
- py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
- if (!py_import)
- goto bad;
- #endif
- if (from_list)
- list = from_list;
+static PyObject *
+__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context)
+{
+ CYTHON_UNUSED_VAR(context);
+ if (unlikely(op->func_dict == NULL)) {
+ op->func_dict = PyDict_New();
+ if (unlikely(op->func_dict == NULL))
+ return NULL;
+ }
+ Py_INCREF(op->func_dict);
+ return op->func_dict;
+}
+static int
+__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context)
+{
+ CYTHON_UNUSED_VAR(context);
+ if (unlikely(value == NULL)) {
+ PyErr_SetString(PyExc_TypeError,
+ "function's dictionary may not be deleted");
+ return -1;
+ }
+ if (unlikely(!PyDict_Check(value))) {
+ PyErr_SetString(PyExc_TypeError,
+ "setting function's dictionary to a non-dict");
+ return -1;
+ }
+ Py_INCREF(value);
+ __Pyx_Py_XDECREF_SET(op->func_dict, value);
+ return 0;
+}
+static PyObject *
+__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context)
+{
+ CYTHON_UNUSED_VAR(context);
+ Py_INCREF(op->func_globals);
+ return op->func_globals;
+}
+static PyObject *
+__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context)
+{
+ CYTHON_UNUSED_VAR(op);
+ CYTHON_UNUSED_VAR(context);
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+static PyObject *
+__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context)
+{
+ PyObject* result = (op->func_code) ? op->func_code : Py_None;
+ CYTHON_UNUSED_VAR(context);
+ Py_INCREF(result);
+ return result;
+}
+static int
+__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
+ int result = 0;
+ PyObject *res = op->defaults_getter((PyObject *) op);
+ if (unlikely(!res))
+ return -1;
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ op->defaults_tuple = PyTuple_GET_ITEM(res, 0);
+ Py_INCREF(op->defaults_tuple);
+ op->defaults_kwdict = PyTuple_GET_ITEM(res, 1);
+ Py_INCREF(op->defaults_kwdict);
+ #else
+ op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0);
+ if (unlikely(!op->defaults_tuple)) result = -1;
else {
- empty_list = PyList_New(0);
- if (!empty_list)
- goto bad;
- list = empty_list;
+ op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1);
+ if (unlikely(!op->defaults_kwdict)) result = -1;
}
- global_dict = PyModule_GetDict(__pyx_m);
- if (!global_dict)
- goto bad;
- empty_dict = PyDict_New();
- if (!empty_dict)
- goto bad;
- {
- #if PY_MAJOR_VERSION >= 3
- if (level == -1) {
- if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) {
- module = PyImport_ImportModuleLevelObject(
- name, global_dict, empty_dict, list, 1);
- if (!module) {
- if (!PyErr_ExceptionMatches(PyExc_ImportError))
- goto bad;
- PyErr_Clear();
- }
- }
- level = 0;
- }
- #endif
- if (!module) {
- #if PY_MAJOR_VERSION < 3
- PyObject *py_level = PyInt_FromLong(level);
- if (!py_level)
- goto bad;
- module = PyObject_CallFunctionObjArgs(py_import,
- name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
- Py_DECREF(py_level);
- #else
- module = PyImport_ImportModuleLevelObject(
- name, global_dict, empty_dict, list, level);
- #endif
+ #endif
+ Py_DECREF(res);
+ return result;
+}
+static int
+__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
+ CYTHON_UNUSED_VAR(context);
+ if (!value) {
+ value = Py_None;
+ } else if (unlikely(value != Py_None && !PyTuple_Check(value))) {
+ PyErr_SetString(PyExc_TypeError,
+ "__defaults__ must be set to a tuple object");
+ return -1;
+ }
+ PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not "
+ "currently affect the values used in function calls", 1);
+ Py_INCREF(value);
+ __Pyx_Py_XDECREF_SET(op->defaults_tuple, value);
+ return 0;
+}
+static PyObject *
+__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) {
+ PyObject* result = op->defaults_tuple;
+ CYTHON_UNUSED_VAR(context);
+ if (unlikely(!result)) {
+ if (op->defaults_getter) {
+ if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL;
+ result = op->defaults_tuple;
+ } else {
+ result = Py_None;
}
}
-bad:
- #if PY_MAJOR_VERSION < 3
- Py_XDECREF(py_import);
- #endif
- Py_XDECREF(empty_list);
- Py_XDECREF(empty_dict);
- return module;
+ Py_INCREF(result);
+ return result;
}
-
-/* ImportFrom */
-static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
- PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
- if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
- PyErr_Format(PyExc_ImportError,
- #if PY_MAJOR_VERSION < 3
- "cannot import name %.230s", PyString_AS_STRING(name));
- #else
- "cannot import name %S", name);
- #endif
+static int
+__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
+ CYTHON_UNUSED_VAR(context);
+ if (!value) {
+ value = Py_None;
+ } else if (unlikely(value != Py_None && !PyDict_Check(value))) {
+ PyErr_SetString(PyExc_TypeError,
+ "__kwdefaults__ must be set to a dict object");
+ return -1;
}
- return value;
+ PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not "
+ "currently affect the values used in function calls", 1);
+ Py_INCREF(value);
+ __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value);
+ return 0;
}
-
-/* HasAttr */
-static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
- PyObject *r;
- if (unlikely(!__Pyx_PyBaseString_Check(n))) {
+static PyObject *
+__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) {
+ PyObject* result = op->defaults_kwdict;
+ CYTHON_UNUSED_VAR(context);
+ if (unlikely(!result)) {
+ if (op->defaults_getter) {
+ if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL;
+ result = op->defaults_kwdict;
+ } else {
+ result = Py_None;
+ }
+ }
+ Py_INCREF(result);
+ return result;
+}
+static int
+__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
+ CYTHON_UNUSED_VAR(context);
+ if (!value || value == Py_None) {
+ value = NULL;
+ } else if (unlikely(!PyDict_Check(value))) {
PyErr_SetString(PyExc_TypeError,
- "hasattr(): attribute name must be string");
+ "__annotations__ must be set to a dict object");
return -1;
}
- r = __Pyx_GetAttr(o, n);
- if (unlikely(!r)) {
- PyErr_Clear();
- return 0;
- } else {
- Py_DECREF(r);
- return 1;
+ Py_XINCREF(value);
+ __Pyx_Py_XDECREF_SET(op->func_annotations, value);
+ return 0;
+}
+static PyObject *
+__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) {
+ PyObject* result = op->func_annotations;
+ CYTHON_UNUSED_VAR(context);
+ if (unlikely(!result)) {
+ result = PyDict_New();
+ if (unlikely(!result)) return NULL;
+ op->func_annotations = result;
}
+ Py_INCREF(result);
+ return result;
}
-
-/* PyObject_GenericGetAttrNoDict */
-#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
-static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
- PyErr_Format(PyExc_AttributeError,
-#if PY_MAJOR_VERSION >= 3
- "'%.50s' object has no attribute '%U'",
- tp->tp_name, attr_name);
+static PyObject *
+__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) {
+ int is_coroutine;
+ CYTHON_UNUSED_VAR(context);
+ if (op->func_is_coroutine) {
+ return __Pyx_NewRef(op->func_is_coroutine);
+ }
+ is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE;
+#if PY_VERSION_HEX >= 0x03050000
+ if (is_coroutine) {
+ PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine;
+ fromlist = PyList_New(1);
+ if (unlikely(!fromlist)) return NULL;
+ Py_INCREF(marker);
+#if CYTHON_ASSUME_SAFE_MACROS
+ PyList_SET_ITEM(fromlist, 0, marker);
#else
- "'%.50s' object has no attribute '%.400s'",
- tp->tp_name, PyString_AS_STRING(attr_name));
+ if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) {
+ Py_DECREF(marker);
+ Py_DECREF(fromlist);
+ return NULL;
+ }
#endif
- return NULL;
-}
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) {
- PyObject *descr;
- PyTypeObject *tp = Py_TYPE(obj);
- if (unlikely(!PyString_Check(attr_name))) {
- return PyObject_GenericGetAttr(obj, attr_name);
- }
- assert(!tp->tp_dictoffset);
- descr = _PyType_Lookup(tp, attr_name);
- if (unlikely(!descr)) {
- return __Pyx_RaiseGenericGetAttributeError(tp, attr_name);
- }
- Py_INCREF(descr);
- #if PY_MAJOR_VERSION < 3
- if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS)))
- #endif
- {
- descrgetfunc f = Py_TYPE(descr)->tp_descr_get;
- if (unlikely(f)) {
- PyObject *res = f(descr, obj, (PyObject *)tp);
- Py_DECREF(descr);
- return res;
+ module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0);
+ Py_DECREF(fromlist);
+ if (unlikely(!module)) goto ignore;
+ op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker);
+ Py_DECREF(module);
+ if (likely(op->func_is_coroutine)) {
+ return __Pyx_NewRef(op->func_is_coroutine);
}
+ignore:
+ PyErr_Clear();
}
- return descr;
+#endif
+ op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine);
+ return __Pyx_NewRef(op->func_is_coroutine);
+}
+#if CYTHON_COMPILING_IN_LIMITED_API
+static PyObject *
+__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) {
+ CYTHON_UNUSED_VAR(context);
+ return PyObject_GetAttrString(op->func, "__module__");
+}
+static int
+__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
+ CYTHON_UNUSED_VAR(context);
+ return PyObject_SetAttrString(op->func, "__module__", value);
+}
+#endif
+static PyGetSetDef __pyx_CyFunction_getsets[] = {
+ {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
+ {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
+ {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
+ {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
+ {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
+ {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
+ {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
+ {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
+ {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
+ {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
+ {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
+ {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
+ {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
+ {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
+ {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
+ {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
+ {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
+ {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0},
+#if CYTHON_COMPILING_IN_LIMITED_API
+ {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0},
+#endif
+ {0, 0, 0, 0, 0}
+};
+static PyMemberDef __pyx_CyFunction_members[] = {
+#if !CYTHON_COMPILING_IN_LIMITED_API
+ {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0},
+#endif
+#if CYTHON_USE_TYPE_SPECS
+ {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0},
+#if CYTHON_METH_FASTCALL
+#if CYTHON_BACKPORT_VECTORCALL
+ {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0},
+#else
+#if !CYTHON_COMPILING_IN_LIMITED_API
+ {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0},
+#endif
+#endif
+#endif
+#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
+ {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0},
+#else
+ {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0},
+#endif
+#endif
+ {0, 0, 0, 0, 0}
+};
+static PyObject *
+__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args)
+{
+ CYTHON_UNUSED_VAR(args);
+#if PY_MAJOR_VERSION >= 3
+ Py_INCREF(m->func_qualname);
+ return m->func_qualname;
+#else
+ return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name);
+#endif
}
+static PyMethodDef __pyx_CyFunction_methods[] = {
+ {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},
+ {0, 0, 0, 0}
+};
+#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
+#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist)
+#else
+#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist)
+#endif
+static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname,
+ PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
+#if !CYTHON_COMPILING_IN_LIMITED_API
+ PyCFunctionObject *cf = (PyCFunctionObject*) op;
+#endif
+ if (unlikely(op == NULL))
+ return NULL;
+#if CYTHON_COMPILING_IN_LIMITED_API
+ op->func = PyCFunction_NewEx(ml, (PyObject*)op, module);
+ if (unlikely(!op->func)) return NULL;
#endif
-
-/* PyObject_GenericGetAttr */
-#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
-static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
- if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
- return PyObject_GenericGetAttr(obj, attr_name);
+ op->flags = flags;
+ __Pyx_CyFunction_weakreflist(op) = NULL;
+#if !CYTHON_COMPILING_IN_LIMITED_API
+ cf->m_ml = ml;
+ cf->m_self = (PyObject *) op;
+#endif
+ Py_XINCREF(closure);
+ op->func_closure = closure;
+#if !CYTHON_COMPILING_IN_LIMITED_API
+ Py_XINCREF(module);
+ cf->m_module = module;
+#endif
+ op->func_dict = NULL;
+ op->func_name = NULL;
+ Py_INCREF(qualname);
+ op->func_qualname = qualname;
+ op->func_doc = NULL;
+#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
+ op->func_classobj = NULL;
+#else
+ ((PyCMethodObject*)op)->mm_class = NULL;
+#endif
+ op->func_globals = globals;
+ Py_INCREF(op->func_globals);
+ Py_XINCREF(code);
+ op->func_code = code;
+ op->defaults_pyobjects = 0;
+ op->defaults_size = 0;
+ op->defaults = NULL;
+ op->defaults_tuple = NULL;
+ op->defaults_kwdict = NULL;
+ op->defaults_getter = NULL;
+ op->func_annotations = NULL;
+ op->func_is_coroutine = NULL;
+#if CYTHON_METH_FASTCALL
+ switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) {
+ case METH_NOARGS:
+ __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS;
+ break;
+ case METH_O:
+ __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O;
+ break;
+ case METH_METHOD | METH_FASTCALL | METH_KEYWORDS:
+ __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD;
+ break;
+ case METH_FASTCALL | METH_KEYWORDS:
+ __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS;
+ break;
+ case METH_VARARGS | METH_KEYWORDS:
+ __Pyx_CyFunction_func_vectorcall(op) = NULL;
+ break;
+ default:
+ PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
+ Py_DECREF(op);
+ return NULL;
}
- return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name);
+#endif
+ return (PyObject *) op;
}
+static int
+__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
+{
+ Py_CLEAR(m->func_closure);
+#if CYTHON_COMPILING_IN_LIMITED_API
+ Py_CLEAR(m->func);
+#else
+ Py_CLEAR(((PyCFunctionObject*)m)->m_module);
#endif
-
-/* SetVTable */
-static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
-#if PY_VERSION_HEX >= 0x02070000
- PyObject *ob = PyCapsule_New(vtable, 0, 0);
+ Py_CLEAR(m->func_dict);
+ Py_CLEAR(m->func_name);
+ Py_CLEAR(m->func_qualname);
+ Py_CLEAR(m->func_doc);
+ Py_CLEAR(m->func_globals);
+ Py_CLEAR(m->func_code);
+#if !CYTHON_COMPILING_IN_LIMITED_API
+#if PY_VERSION_HEX < 0x030900B1
+ Py_CLEAR(__Pyx_CyFunction_GetClassObj(m));
#else
- PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
+ {
+ PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class;
+ ((PyCMethodObject *) (m))->mm_class = NULL;
+ Py_XDECREF(cls);
+ }
#endif
- if (!ob)
- goto bad;
- if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0)
- goto bad;
- Py_DECREF(ob);
+#endif
+ Py_CLEAR(m->defaults_tuple);
+ Py_CLEAR(m->defaults_kwdict);
+ Py_CLEAR(m->func_annotations);
+ Py_CLEAR(m->func_is_coroutine);
+ if (m->defaults) {
+ PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
+ int i;
+ for (i = 0; i < m->defaults_pyobjects; i++)
+ Py_XDECREF(pydefaults[i]);
+ PyObject_Free(m->defaults);
+ m->defaults = NULL;
+ }
return 0;
-bad:
- Py_XDECREF(ob);
- return -1;
}
-
-/* PyObjectGetAttrStrNoError */
-static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) {
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
- __Pyx_PyErr_Clear();
+static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m)
+{
+ if (__Pyx_CyFunction_weakreflist(m) != NULL)
+ PyObject_ClearWeakRefs((PyObject *) m);
+ __Pyx_CyFunction_clear(m);
+ __Pyx_PyHeapTypeObject_GC_Del(m);
}
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) {
- PyObject *result;
-#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1
- PyTypeObject* tp = Py_TYPE(obj);
- if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) {
- return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1);
- }
+static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
+{
+ PyObject_GC_UnTrack(m);
+ __Pyx__CyFunction_dealloc(m);
+}
+static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)
+{
+ Py_VISIT(m->func_closure);
+#if CYTHON_COMPILING_IN_LIMITED_API
+ Py_VISIT(m->func);
+#else
+ Py_VISIT(((PyCFunctionObject*)m)->m_module);
#endif
- result = __Pyx_PyObject_GetAttrStr(obj, attr_name);
- if (unlikely(!result)) {
- __Pyx_PyObject_GetAttrStr_ClearAttributeError();
+ Py_VISIT(m->func_dict);
+ Py_VISIT(m->func_name);
+ Py_VISIT(m->func_qualname);
+ Py_VISIT(m->func_doc);
+ Py_VISIT(m->func_globals);
+ Py_VISIT(m->func_code);
+#if !CYTHON_COMPILING_IN_LIMITED_API
+ Py_VISIT(__Pyx_CyFunction_GetClassObj(m));
+#endif
+ Py_VISIT(m->defaults_tuple);
+ Py_VISIT(m->defaults_kwdict);
+ Py_VISIT(m->func_is_coroutine);
+ if (m->defaults) {
+ PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
+ int i;
+ for (i = 0; i < m->defaults_pyobjects; i++)
+ Py_VISIT(pydefaults[i]);
}
- return result;
+ return 0;
}
-
-/* SetupReduce */
-static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
- int ret;
- PyObject *name_attr;
- name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name);
- if (likely(name_attr)) {
- ret = PyObject_RichCompareBool(name_attr, name, Py_EQ);
- } else {
- ret = -1;
- }
- if (unlikely(ret < 0)) {
- PyErr_Clear();
- ret = 0;
- }
- Py_XDECREF(name_attr);
- return ret;
+static PyObject*
+__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
+{
+#if PY_MAJOR_VERSION >= 3
+ return PyUnicode_FromFormat("",
+ op->func_qualname, (void *)op);
+#else
+ return PyString_FromFormat("",
+ PyString_AsString(op->func_qualname), (void *)op);
+#endif
}
-static int __Pyx_setup_reduce(PyObject* type_obj) {
- int ret = 0;
- PyObject *object_reduce = NULL;
- PyObject *object_getstate = NULL;
- PyObject *object_reduce_ex = NULL;
- PyObject *reduce = NULL;
- PyObject *reduce_ex = NULL;
- PyObject *reduce_cython = NULL;
- PyObject *setstate = NULL;
- PyObject *setstate_cython = NULL;
- PyObject *getstate = NULL;
-#if CYTHON_USE_PYTYPE_LOOKUP
- getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate);
+static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) {
+#if CYTHON_COMPILING_IN_LIMITED_API
+ PyObject *f = ((__pyx_CyFunctionObject*)func)->func;
+ PyObject *py_name = NULL;
+ PyCFunction meth;
+ int flags;
+ meth = PyCFunction_GetFunction(f);
+ if (unlikely(!meth)) return NULL;
+ flags = PyCFunction_GetFlags(f);
+ if (unlikely(flags < 0)) return NULL;
#else
- getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_getstate);
- if (!getstate && PyErr_Occurred()) {
- goto __PYX_BAD;
- }
+ PyCFunctionObject* f = (PyCFunctionObject*)func;
+ PyCFunction meth = f->m_ml->ml_meth;
+ int flags = f->m_ml->ml_flags;
#endif
- if (getstate) {
-#if CYTHON_USE_PYTYPE_LOOKUP
- object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_getstate);
+ Py_ssize_t size;
+ switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) {
+ case METH_VARARGS:
+ if (likely(kw == NULL || PyDict_Size(kw) == 0))
+ return (*meth)(self, arg);
+ break;
+ case METH_VARARGS | METH_KEYWORDS:
+ return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw);
+ case METH_NOARGS:
+ if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
+#if CYTHON_ASSUME_SAFE_MACROS
+ size = PyTuple_GET_SIZE(arg);
#else
- object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_n_s_getstate);
- if (!object_getstate && PyErr_Occurred()) {
- goto __PYX_BAD;
+ size = PyTuple_Size(arg);
+ if (unlikely(size < 0)) return NULL;
+#endif
+ if (likely(size == 0))
+ return (*meth)(self, NULL);
+#if CYTHON_COMPILING_IN_LIMITED_API
+ py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
+ if (!py_name) return NULL;
+ PyErr_Format(PyExc_TypeError,
+ "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
+ py_name, size);
+ Py_DECREF(py_name);
+#else
+ PyErr_Format(PyExc_TypeError,
+ "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
+ f->m_ml->ml_name, size);
+#endif
+ return NULL;
}
+ break;
+ case METH_O:
+ if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
+#if CYTHON_ASSUME_SAFE_MACROS
+ size = PyTuple_GET_SIZE(arg);
+#else
+ size = PyTuple_Size(arg);
+ if (unlikely(size < 0)) return NULL;
#endif
- if (object_getstate != getstate) {
- goto __PYX_GOOD;
+ if (likely(size == 1)) {
+ PyObject *result, *arg0;
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ arg0 = PyTuple_GET_ITEM(arg, 0);
+ #else
+ arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL;
+ #endif
+ result = (*meth)(self, arg0);
+ #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
+ Py_DECREF(arg0);
+ #endif
+ return result;
+ }
+#if CYTHON_COMPILING_IN_LIMITED_API
+ py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
+ if (!py_name) return NULL;
+ PyErr_Format(PyExc_TypeError,
+ "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
+ py_name, size);
+ Py_DECREF(py_name);
+#else
+ PyErr_Format(PyExc_TypeError,
+ "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
+ f->m_ml->ml_name, size);
+#endif
+ return NULL;
}
+ break;
+ default:
+ PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
+ return NULL;
}
-#if CYTHON_USE_PYTYPE_LOOKUP
- object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
+#if CYTHON_COMPILING_IN_LIMITED_API
+ py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
+ if (!py_name) return NULL;
+ PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments",
+ py_name);
+ Py_DECREF(py_name);
#else
- object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
+ PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",
+ f->m_ml->ml_name);
#endif
- reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD;
- if (reduce_ex == object_reduce_ex) {
-#if CYTHON_USE_PYTYPE_LOOKUP
- object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD;
+ return NULL;
+}
+static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
+ PyObject *self, *result;
+#if CYTHON_COMPILING_IN_LIMITED_API
+ self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func);
+ if (unlikely(!self) && PyErr_Occurred()) return NULL;
#else
- object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD;
+ self = ((PyCFunctionObject*)func)->m_self;
+#endif
+ result = __Pyx_CyFunction_CallMethod(func, self, arg, kw);
+ return result;
+}
+static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) {
+ PyObject *result;
+ __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func;
+#if CYTHON_METH_FASTCALL
+ __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc);
+ if (vc) {
+#if CYTHON_ASSUME_SAFE_MACROS
+ return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw);
+#else
+ (void) &__Pyx_PyVectorcall_FastCallDict;
+ return PyVectorcall_Call(func, args, kw);
#endif
- reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD;
- if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) {
- reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython);
- if (likely(reduce_cython)) {
- ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
- ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
- } else if (reduce == object_reduce || PyErr_Occurred()) {
- goto __PYX_BAD;
- }
- setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate);
- if (!setstate) PyErr_Clear();
- if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) {
- setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython);
- if (likely(setstate_cython)) {
- ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
- ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
- } else if (!setstate || PyErr_Occurred()) {
- goto __PYX_BAD;
- }
- }
- PyType_Modified((PyTypeObject*)type_obj);
- }
}
- goto __PYX_GOOD;
-__PYX_BAD:
- if (!PyErr_Occurred())
- PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for %s", ((PyTypeObject*)type_obj)->tp_name);
- ret = -1;
-__PYX_GOOD:
-#if !CYTHON_USE_PYTYPE_LOOKUP
- Py_XDECREF(object_reduce);
- Py_XDECREF(object_reduce_ex);
- Py_XDECREF(object_getstate);
- Py_XDECREF(getstate);
#endif
- Py_XDECREF(reduce);
- Py_XDECREF(reduce_ex);
- Py_XDECREF(reduce_cython);
- Py_XDECREF(setstate);
- Py_XDECREF(setstate_cython);
+ if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
+ Py_ssize_t argc;
+ PyObject *new_args;
+ PyObject *self;
+#if CYTHON_ASSUME_SAFE_MACROS
+ argc = PyTuple_GET_SIZE(args);
+#else
+ argc = PyTuple_Size(args);
+ if (unlikely(!argc) < 0) return NULL;
+#endif
+ new_args = PyTuple_GetSlice(args, 1, argc);
+ if (unlikely(!new_args))
+ return NULL;
+ self = PyTuple_GetItem(args, 0);
+ if (unlikely(!self)) {
+ Py_DECREF(new_args);
+#if PY_MAJOR_VERSION > 2
+ PyErr_Format(PyExc_TypeError,
+ "unbound method %.200S() needs an argument",
+ cyfunc->func_qualname);
+#else
+ PyErr_SetString(PyExc_TypeError,
+ "unbound method needs an argument");
+#endif
+ return NULL;
+ }
+ result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw);
+ Py_DECREF(new_args);
+ } else {
+ result = __Pyx_CyFunction_Call(func, args, kw);
+ }
+ return result;
+}
+#if CYTHON_METH_FASTCALL
+static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames)
+{
+ int ret = 0;
+ if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
+ if (unlikely(nargs < 1)) {
+ PyErr_Format(PyExc_TypeError, "%.200s() needs an argument",
+ ((PyCFunctionObject*)cyfunc)->m_ml->ml_name);
+ return -1;
+ }
+ ret = 1;
+ }
+ if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) {
+ PyErr_Format(PyExc_TypeError,
+ "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name);
+ return -1;
+ }
return ret;
}
-
-/* TypeImport */
-#ifndef __PYX_HAVE_RT_ImportType
-#define __PYX_HAVE_RT_ImportType
-static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name,
- size_t size, enum __Pyx_ImportType_CheckSize check_size)
+static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
- PyObject *result = 0;
- char warning[200];
- Py_ssize_t basicsize;
-#ifdef Py_LIMITED_API
- PyObject *py_basicsize;
+ __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
+ PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
+#if CYTHON_BACKPORT_VECTORCALL
+ Py_ssize_t nargs = (Py_ssize_t)nargsf;
+#else
+ Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
#endif
- result = PyObject_GetAttrString(module, class_name);
- if (!result)
- goto bad;
- if (!PyType_Check(result)) {
+ PyObject *self;
+ switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) {
+ case 1:
+ self = args[0];
+ args += 1;
+ nargs -= 1;
+ break;
+ case 0:
+ self = ((PyCFunctionObject*)cyfunc)->m_self;
+ break;
+ default:
+ return NULL;
+ }
+ if (unlikely(nargs != 0)) {
PyErr_Format(PyExc_TypeError,
- "%.200s.%.200s is not a type object",
- module_name, class_name);
- goto bad;
+ "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
+ def->ml_name, nargs);
+ return NULL;
}
-#ifndef Py_LIMITED_API
- basicsize = ((PyTypeObject *)result)->tp_basicsize;
+ return def->ml_meth(self, NULL);
+}
+static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
+{
+ __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
+ PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
+#if CYTHON_BACKPORT_VECTORCALL
+ Py_ssize_t nargs = (Py_ssize_t)nargsf;
+#else
+ Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
+#endif
+ PyObject *self;
+ switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) {
+ case 1:
+ self = args[0];
+ args += 1;
+ nargs -= 1;
+ break;
+ case 0:
+ self = ((PyCFunctionObject*)cyfunc)->m_self;
+ break;
+ default:
+ return NULL;
+ }
+ if (unlikely(nargs != 1)) {
+ PyErr_Format(PyExc_TypeError,
+ "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
+ def->ml_name, nargs);
+ return NULL;
+ }
+ return def->ml_meth(self, args[0]);
+}
+static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
+{
+ __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
+ PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
+#if CYTHON_BACKPORT_VECTORCALL
+ Py_ssize_t nargs = (Py_ssize_t)nargsf;
+#else
+ Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
+#endif
+ PyObject *self;
+ switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) {
+ case 1:
+ self = args[0];
+ args += 1;
+ nargs -= 1;
+ break;
+ case 0:
+ self = ((PyCFunctionObject*)cyfunc)->m_self;
+ break;
+ default:
+ return NULL;
+ }
+ return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames);
+}
+static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
+{
+ __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
+ PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
+ PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc);
+#if CYTHON_BACKPORT_VECTORCALL
+ Py_ssize_t nargs = (Py_ssize_t)nargsf;
+#else
+ Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
+#endif
+ PyObject *self;
+ switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) {
+ case 1:
+ self = args[0];
+ args += 1;
+ nargs -= 1;
+ break;
+ case 0:
+ self = ((PyCFunctionObject*)cyfunc)->m_self;
+ break;
+ default:
+ return NULL;
+ }
+ return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames);
+}
+#endif
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_CyFunctionType_slots[] = {
+ {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc},
+ {Py_tp_repr, (void *)__Pyx_CyFunction_repr},
+ {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod},
+ {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse},
+ {Py_tp_clear, (void *)__Pyx_CyFunction_clear},
+ {Py_tp_methods, (void *)__pyx_CyFunction_methods},
+ {Py_tp_members, (void *)__pyx_CyFunction_members},
+ {Py_tp_getset, (void *)__pyx_CyFunction_getsets},
+ {Py_tp_descr_get, (void *)__Pyx_PyMethod_New},
+ {0, 0},
+};
+static PyType_Spec __pyx_CyFunctionType_spec = {
+ __PYX_TYPE_MODULE_PREFIX "cython_function_or_method",
+ sizeof(__pyx_CyFunctionObject),
+ 0,
+#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR
+ Py_TPFLAGS_METHOD_DESCRIPTOR |
+#endif
+#if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL)
+ _Py_TPFLAGS_HAVE_VECTORCALL |
+#endif
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
+ __pyx_CyFunctionType_slots
+};
+#else
+static PyTypeObject __pyx_CyFunctionType_type = {
+ PyVarObject_HEAD_INIT(0, 0)
+ __PYX_TYPE_MODULE_PREFIX "cython_function_or_method",
+ sizeof(__pyx_CyFunctionObject),
+ 0,
+ (destructor) __Pyx_CyFunction_dealloc,
+#if !CYTHON_METH_FASTCALL
+ 0,
+#elif CYTHON_BACKPORT_VECTORCALL
+ (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall),
+#else
+ offsetof(PyCFunctionObject, vectorcall),
+#endif
+ 0,
+ 0,
+#if PY_MAJOR_VERSION < 3
+ 0,
+#else
+ 0,
+#endif
+ (reprfunc) __Pyx_CyFunction_repr,
+ 0,
+ 0,
+ 0,
+ 0,
+ __Pyx_CyFunction_CallAsMethod,
+ 0,
+ 0,
+ 0,
+ 0,
+#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR
+ Py_TPFLAGS_METHOD_DESCRIPTOR |
+#endif
+#if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL
+ _Py_TPFLAGS_HAVE_VECTORCALL |
+#endif
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
+ 0,
+ (traverseproc) __Pyx_CyFunction_traverse,
+ (inquiry) __Pyx_CyFunction_clear,
+ 0,
+#if PY_VERSION_HEX < 0x030500A0
+ offsetof(__pyx_CyFunctionObject, func_weakreflist),
#else
- py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
- if (!py_basicsize)
- goto bad;
- basicsize = PyLong_AsSsize_t(py_basicsize);
- Py_DECREF(py_basicsize);
- py_basicsize = 0;
- if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
- goto bad;
+ offsetof(PyCFunctionObject, m_weakreflist),
#endif
- if ((size_t)basicsize < size) {
- PyErr_Format(PyExc_ValueError,
- "%.200s.%.200s size changed, may indicate binary incompatibility. "
- "Expected %zd from C header, got %zd from PyObject",
- module_name, class_name, size, basicsize);
- goto bad;
- }
- if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) {
- PyErr_Format(PyExc_ValueError,
- "%.200s.%.200s size changed, may indicate binary incompatibility. "
- "Expected %zd from C header, got %zd from PyObject",
- module_name, class_name, size, basicsize);
- goto bad;
+ 0,
+ 0,
+ __pyx_CyFunction_methods,
+ __pyx_CyFunction_members,
+ __pyx_CyFunction_getsets,
+ 0,
+ 0,
+ __Pyx_PyMethod_New,
+ 0,
+ offsetof(__pyx_CyFunctionObject, func_dict),
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+#if PY_VERSION_HEX >= 0x030400a1
+ 0,
+#endif
+#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0,
+#endif
+#if __PYX_NEED_TP_PRINT_SLOT
+ 0,
+#endif
+#if PY_VERSION_HEX >= 0x030C0000
+ 0,
+#endif
+#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
+ 0,
+#endif
+};
+#endif
+static int __pyx_CyFunction_init(PyObject *module) {
+#if CYTHON_USE_TYPE_SPECS
+ __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL);
+#else
+ CYTHON_UNUSED_VAR(module);
+ __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type);
+#endif
+ if (unlikely(__pyx_CyFunctionType == NULL)) {
+ return -1;
}
- else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) {
- PyOS_snprintf(warning, sizeof(warning),
- "%s.%s size changed, may indicate binary incompatibility. "
- "Expected %zd from C header, got %zd from PyObject",
- module_name, class_name, size, basicsize);
- if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+ return 0;
+}
+static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) {
+ __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
+ m->defaults = PyObject_Malloc(size);
+ if (unlikely(!m->defaults))
+ return PyErr_NoMemory();
+ memset(m->defaults, 0, size);
+ m->defaults_pyobjects = pyobjects;
+ m->defaults_size = size;
+ return m->defaults;
+}
+static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {
+ __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
+ m->defaults_tuple = tuple;
+ Py_INCREF(tuple);
+}
+static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) {
+ __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
+ m->defaults_kwdict = dict;
+ Py_INCREF(dict);
+}
+static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) {
+ __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
+ m->func_annotations = dict;
+ Py_INCREF(dict);
+}
+
+/* CythonFunction */
+static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname,
+ PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
+ PyObject *op = __Pyx_CyFunction_Init(
+ PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType),
+ ml, flags, qualname, closure, module, globals, code
+ );
+ if (likely(op)) {
+ PyObject_GC_Track(op);
}
- return (PyTypeObject *)result;
-bad:
- Py_XDECREF(result);
- return NULL;
+ return op;
}
-#endif
/* CLineInTraceback */
#ifndef CYTHON_CLINE_IN_TRACEBACK
-static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) {
+static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
PyObject *use_cline;
PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
PyObject **cython_runtime_dict;
#endif
+ CYTHON_MAYBE_UNUSED_VAR(tstate);
if (unlikely(!__pyx_cython_runtime)) {
return c_line;
}
@@ -19483,7 +24952,7 @@ static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int
} else
#endif
{
- PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback);
+ PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback);
if (use_cline_obj) {
use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True;
Py_DECREF(use_cline_obj);
@@ -19505,6 +24974,7 @@ static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int
#endif
/* CodeObjectCache */
+#if !CYTHON_COMPILING_IN_LIMITED_API
static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
int start = 0, mid = 0, end = count - 1;
if (end >= 0 && code_line > entries[end].code_line) {
@@ -19583,17 +25053,101 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
__pyx_code_cache.count++;
Py_INCREF(code_object);
}
+#endif
/* AddTraceback */
#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
-#if PY_VERSION_HEX >= 0x030b00a6
+#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API
#ifndef Py_BUILD_CORE
#define Py_BUILD_CORE 1
#endif
#include "internal/pycore_frame.h"
#endif
+#if CYTHON_COMPILING_IN_LIMITED_API
+static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict,
+ PyObject *firstlineno, PyObject *name) {
+ PyObject *replace = NULL;
+ if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL;
+ if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL;
+ replace = PyObject_GetAttrString(code, "replace");
+ if (likely(replace)) {
+ PyObject *result;
+ result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict);
+ Py_DECREF(replace);
+ return result;
+ }
+ PyErr_Clear();
+ #if __PYX_LIMITED_VERSION_HEX < 0x030780000
+ {
+ PyObject *compiled = NULL, *result = NULL;
+ if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL;
+ if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL;
+ compiled = Py_CompileString(
+ "out = type(code)(\n"
+ " code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n"
+ " code.co_flags, code.co_code, code.co_consts, code.co_names,\n"
+ " code.co_varnames, code.co_filename, co_name, co_firstlineno,\n"
+ " code.co_lnotab)\n", "", Py_file_input);
+ if (!compiled) return NULL;
+ result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict);
+ Py_DECREF(compiled);
+ if (!result) PyErr_Print();
+ Py_DECREF(result);
+ result = PyDict_GetItemString(scratch_dict, "out");
+ if (result) Py_INCREF(result);
+ return result;
+ }
+ #else
+ return NULL;
+ #endif
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+ int py_line, const char *filename) {
+ PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL;
+ PyObject *replace = NULL, *getframe = NULL, *frame = NULL;
+ PyObject *exc_type, *exc_value, *exc_traceback;
+ int success = 0;
+ if (c_line) {
+ (void) __pyx_cfilenm;
+ (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line);
+ }
+ PyErr_Fetch(&exc_type, &exc_value, &exc_traceback);
+ code_object = Py_CompileString("_getframe()", filename, Py_eval_input);
+ if (unlikely(!code_object)) goto bad;
+ py_py_line = PyLong_FromLong(py_line);
+ if (unlikely(!py_py_line)) goto bad;
+ py_funcname = PyUnicode_FromString(funcname);
+ if (unlikely(!py_funcname)) goto bad;
+ dict = PyDict_New();
+ if (unlikely(!dict)) goto bad;
+ {
+ PyObject *old_code_object = code_object;
+ code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname);
+ Py_DECREF(old_code_object);
+ }
+ if (unlikely(!code_object)) goto bad;
+ getframe = PySys_GetObject("_getframe");
+ if (unlikely(!getframe)) goto bad;
+ if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad;
+ frame = PyEval_EvalCode(code_object, dict, dict);
+ if (unlikely(!frame) || frame == Py_None) goto bad;
+ success = 1;
+ bad:
+ PyErr_Restore(exc_type, exc_value, exc_traceback);
+ Py_XDECREF(code_object);
+ Py_XDECREF(py_py_line);
+ Py_XDECREF(py_funcname);
+ Py_XDECREF(dict);
+ Py_XDECREF(replace);
+ if (success) {
+ PyTraceBack_Here(
+ (struct _frame*)frame);
+ }
+ Py_XDECREF(frame);
+}
+#else
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
const char *funcname, int c_line,
int py_line, const char *filename) {
@@ -19628,6 +25182,7 @@ static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
0,
0,
0,
+ 0,
__pyx_empty_bytes, /*PyObject *code,*/
__pyx_empty_tuple, /*PyObject *consts,*/
__pyx_empty_tuple, /*PyObject *names,*/
@@ -19643,7 +25198,7 @@ static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
#else
py_code = PyCode_NewEmpty(filename, funcname, py_line);
#endif
- Py_XDECREF(py_funcname); // XDECREF since it's only set on Py3 if cline
+ Py_XDECREF(py_funcname);
return py_code;
bad:
Py_XDECREF(py_funcname);
@@ -19690,6 +25245,7 @@ static void __Pyx_AddTraceback(const char *funcname, int c_line,
Py_XDECREF(py_code);
Py_XDECREF(py_frame);
}
+#endif
/* CIntFromPyVerify */
#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
@@ -19746,8 +25302,34 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
{
int one = 1; int little = (int)*(unsigned char *)&one;
unsigned char *bytes = (unsigned char *)&value;
+#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
return _PyLong_FromByteArray(bytes, sizeof(int),
little, !is_unsigned);
+#else
+ PyObject *from_bytes, *result = NULL;
+ PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
+ from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
+ if (!from_bytes) return NULL;
+ py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int));
+ if (!py_bytes) goto limited_bad;
+ order_str = PyUnicode_FromString(little ? "little" : "big");
+ if (!order_str) goto limited_bad;
+ arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
+ if (!arg_tuple) goto limited_bad;
+ if (!is_unsigned) {
+ kwds = PyDict_New();
+ if (!kwds) goto limited_bad;
+ if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
+ }
+ result = PyObject_Call(from_bytes, arg_tuple, kwds);
+ limited_bad:
+ Py_XDECREF(kwds);
+ Py_XDECREF(arg_tuple);
+ Py_XDECREF(order_str);
+ Py_XDECREF(py_bytes);
+ Py_XDECREF(from_bytes);
+ return result;
+#endif
}
}
@@ -19764,7 +25346,7 @@ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
- if (sizeof(int) < sizeof(long)) {
+ if ((sizeof(int) < sizeof(long))) {
__PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
} else {
long val = PyInt_AS_LONG(x);
@@ -19778,40 +25360,45 @@ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
if (likely(PyLong_Check(x))) {
if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
- const digit* digits = ((PyLongObject*)x)->ob_digit;
- switch (Py_SIZE(x)) {
- case 0: return (int) 0;
- case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0])
- case 2:
- if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) {
- return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
+ if (unlikely(__Pyx_PyLong_IsNeg(x))) {
+ goto raise_neg_overflow;
+ } else if (__Pyx_PyLong_IsCompact(x)) {
+ __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
+ } else {
+ const digit* digits = __Pyx_PyLong_Digits(x);
+ assert(__Pyx_PyLong_DigitCount(x) > 1);
+ switch (__Pyx_PyLong_DigitCount(x)) {
+ case 2:
+ if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) {
+ if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+ __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) {
+ return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
+ }
}
- }
- break;
- case 3:
- if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) {
- return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
+ break;
+ case 3:
+ if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) {
+ if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+ __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) {
+ return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
+ }
}
- }
- break;
- case 4:
- if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) {
- return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
+ break;
+ case 4:
+ if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) {
+ if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+ __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) {
+ return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
+ }
}
- }
- break;
+ break;
+ }
}
#endif
-#if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
if (unlikely(Py_SIZE(x) < 0)) {
goto raise_neg_overflow;
}
@@ -19824,109 +25411,181 @@ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
goto raise_neg_overflow;
}
#endif
- if (sizeof(int) <= sizeof(unsigned long)) {
+ if ((sizeof(int) <= sizeof(unsigned long))) {
__PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
- } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
+ } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) {
__PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
}
} else {
#if CYTHON_USE_PYLONG_INTERNALS
- const digit* digits = ((PyLongObject*)x)->ob_digit;
- switch (Py_SIZE(x)) {
- case 0: return (int) 0;
- case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0]))
- case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0])
- case -2:
- if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
- return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+ if (__Pyx_PyLong_IsCompact(x)) {
+ __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
+ } else {
+ const digit* digits = __Pyx_PyLong_Digits(x);
+ assert(__Pyx_PyLong_DigitCount(x) > 1);
+ switch (__Pyx_PyLong_SignedDigitCount(x)) {
+ case -2:
+ if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) {
+ if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+ __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
+ return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+ }
}
- }
- break;
- case 2:
- if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
- return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+ break;
+ case 2:
+ if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) {
+ if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+ __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
+ return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+ }
}
- }
- break;
- case -3:
- if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
- return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+ break;
+ case -3:
+ if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
+ if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+ __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
+ return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+ }
}
- }
- break;
- case 3:
- if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
- return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+ break;
+ case 3:
+ if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) {
+ if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+ __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
+ return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+ }
}
- }
- break;
- case -4:
- if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
- return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+ break;
+ case -4:
+ if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
+ if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+ __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) {
+ return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+ }
}
- }
- break;
- case 4:
- if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
- return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+ break;
+ case 4:
+ if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) {
+ if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+ __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) {
+ return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+ }
}
- }
- break;
+ break;
+ }
}
#endif
- if (sizeof(int) <= sizeof(long)) {
+ if ((sizeof(int) <= sizeof(long))) {
__PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
- } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
+ } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) {
__PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
}
}
{
-#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
- PyErr_SetString(PyExc_RuntimeError,
- "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
-#else
int val;
PyObject *v = __Pyx_PyNumber_IntOrLong(x);
- #if PY_MAJOR_VERSION < 3
+#if PY_MAJOR_VERSION < 3
if (likely(v) && !PyLong_Check(v)) {
PyObject *tmp = v;
v = PyNumber_Long(tmp);
Py_DECREF(tmp);
}
- #endif
+#endif
if (likely(v)) {
+ int ret = -1;
+#if PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
int one = 1; int is_little = (int)*(unsigned char *)&one;
unsigned char *bytes = (unsigned char *)&val;
- int ret = _PyLong_AsByteArray((PyLongObject *)v,
- bytes, sizeof(val),
- is_little, !is_unsigned);
+ ret = _PyLong_AsByteArray((PyLongObject *)v,
+ bytes, sizeof(val),
+ is_little, !is_unsigned);
+#else
+ PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
+ int bits, remaining_bits, is_negative = 0;
+ long idigit;
+ int chunk_size = (sizeof(long) < 8) ? 30 : 62;
+ if (unlikely(!PyLong_CheckExact(v))) {
+ PyObject *tmp = v;
+ v = PyNumber_Long(v);
+ assert(PyLong_CheckExact(v));
+ Py_DECREF(tmp);
+ if (unlikely(!v)) return (int) -1;
+ }
+#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
+ if (Py_SIZE(x) == 0)
+ return (int) 0;
+ is_negative = Py_SIZE(x) < 0;
+#else
+ {
+ int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+ if (unlikely(result < 0))
+ return (int) -1;
+ is_negative = result == 1;
+ }
+#endif
+ if (is_unsigned && unlikely(is_negative)) {
+ goto raise_neg_overflow;
+ } else if (is_negative) {
+ stepval = PyNumber_Invert(v);
+ if (unlikely(!stepval))
+ return (int) -1;
+ } else {
+ stepval = __Pyx_NewRef(v);
+ }
+ val = (int) 0;
+ mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
+ shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
+ for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) {
+ PyObject *tmp, *digit;
+ digit = PyNumber_And(stepval, mask);
+ if (unlikely(!digit)) goto done;
+ idigit = PyLong_AsLong(digit);
+ Py_DECREF(digit);
+ if (unlikely(idigit < 0)) goto done;
+ tmp = PyNumber_Rshift(stepval, shift);
+ if (unlikely(!tmp)) goto done;
+ Py_DECREF(stepval); stepval = tmp;
+ val |= ((int) idigit) << bits;
+ #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
+ if (Py_SIZE(stepval) == 0)
+ goto unpacking_done;
+ #endif
+ }
+ idigit = PyLong_AsLong(stepval);
+ if (unlikely(idigit < 0)) goto done;
+ remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1);
+ if (unlikely(idigit >= (1L << remaining_bits)))
+ goto raise_overflow;
+ val |= ((int) idigit) << bits;
+ #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
+ unpacking_done:
+ #endif
+ if (!is_unsigned) {
+ if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1))))
+ goto raise_overflow;
+ if (is_negative)
+ val = ~val;
+ }
+ ret = 0;
+ done:
+ Py_XDECREF(shift);
+ Py_XDECREF(mask);
+ Py_XDECREF(stepval);
+#endif
Py_DECREF(v);
if (likely(!ret))
return val;
}
-#endif
return (int) -1;
}
} else {
@@ -19960,7 +25619,7 @@ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
- if (sizeof(long) < sizeof(long)) {
+ if ((sizeof(long) < sizeof(long))) {
__PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
} else {
long val = PyInt_AS_LONG(x);
@@ -19974,40 +25633,45 @@ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
if (likely(PyLong_Check(x))) {
if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
- const digit* digits = ((PyLongObject*)x)->ob_digit;
- switch (Py_SIZE(x)) {
- case 0: return (long) 0;
- case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0])
- case 2:
- if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) {
- return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
+ if (unlikely(__Pyx_PyLong_IsNeg(x))) {
+ goto raise_neg_overflow;
+ } else if (__Pyx_PyLong_IsCompact(x)) {
+ __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
+ } else {
+ const digit* digits = __Pyx_PyLong_Digits(x);
+ assert(__Pyx_PyLong_DigitCount(x) > 1);
+ switch (__Pyx_PyLong_DigitCount(x)) {
+ case 2:
+ if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) {
+ if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+ __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) {
+ return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
+ }
}
- }
- break;
- case 3:
- if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) {
- return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
+ break;
+ case 3:
+ if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) {
+ if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+ __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) {
+ return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
+ }
}
- }
- break;
- case 4:
- if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) {
- return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
+ break;
+ case 4:
+ if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) {
+ if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+ __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) {
+ return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
+ }
}
- }
- break;
+ break;
+ }
}
#endif
-#if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
if (unlikely(Py_SIZE(x) < 0)) {
goto raise_neg_overflow;
}
@@ -20020,109 +25684,181 @@ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
goto raise_neg_overflow;
}
#endif
- if (sizeof(long) <= sizeof(unsigned long)) {
+ if ((sizeof(long) <= sizeof(unsigned long))) {
__PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
- } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
+ } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) {
__PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
}
} else {
#if CYTHON_USE_PYLONG_INTERNALS
- const digit* digits = ((PyLongObject*)x)->ob_digit;
- switch (Py_SIZE(x)) {
- case 0: return (long) 0;
- case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0]))
- case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0])
- case -2:
- if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+ if (__Pyx_PyLong_IsCompact(x)) {
+ __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
+ } else {
+ const digit* digits = __Pyx_PyLong_Digits(x);
+ assert(__Pyx_PyLong_DigitCount(x) > 1);
+ switch (__Pyx_PyLong_SignedDigitCount(x)) {
+ case -2:
+ if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) {
+ if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+ __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
+ return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+ }
}
- }
- break;
- case 2:
- if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+ break;
+ case 2:
+ if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) {
+ if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+ __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
+ return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+ }
}
- }
- break;
- case -3:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+ break;
+ case -3:
+ if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
+ if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+ __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
+ return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+ }
}
- }
- break;
- case 3:
- if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+ break;
+ case 3:
+ if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) {
+ if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+ __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
+ return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+ }
}
- }
- break;
- case -4:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+ break;
+ case -4:
+ if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
+ if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+ __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) {
+ return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+ }
}
- }
- break;
- case 4:
- if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+ break;
+ case 4:
+ if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) {
+ if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+ __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) {
+ return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+ }
}
- }
- break;
+ break;
+ }
}
#endif
- if (sizeof(long) <= sizeof(long)) {
+ if ((sizeof(long) <= sizeof(long))) {
__PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
- } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
+ } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) {
__PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
}
}
{
-#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
- PyErr_SetString(PyExc_RuntimeError,
- "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
-#else
long val;
PyObject *v = __Pyx_PyNumber_IntOrLong(x);
- #if PY_MAJOR_VERSION < 3
+#if PY_MAJOR_VERSION < 3
if (likely(v) && !PyLong_Check(v)) {
PyObject *tmp = v;
v = PyNumber_Long(tmp);
Py_DECREF(tmp);
}
- #endif
+#endif
if (likely(v)) {
+ int ret = -1;
+#if PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
int one = 1; int is_little = (int)*(unsigned char *)&one;
unsigned char *bytes = (unsigned char *)&val;
- int ret = _PyLong_AsByteArray((PyLongObject *)v,
- bytes, sizeof(val),
- is_little, !is_unsigned);
+ ret = _PyLong_AsByteArray((PyLongObject *)v,
+ bytes, sizeof(val),
+ is_little, !is_unsigned);
+#else
+ PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
+ int bits, remaining_bits, is_negative = 0;
+ long idigit;
+ int chunk_size = (sizeof(long) < 8) ? 30 : 62;
+ if (unlikely(!PyLong_CheckExact(v))) {
+ PyObject *tmp = v;
+ v = PyNumber_Long(v);
+ assert(PyLong_CheckExact(v));
+ Py_DECREF(tmp);
+ if (unlikely(!v)) return (long) -1;
+ }
+#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
+ if (Py_SIZE(x) == 0)
+ return (long) 0;
+ is_negative = Py_SIZE(x) < 0;
+#else
+ {
+ int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+ if (unlikely(result < 0))
+ return (long) -1;
+ is_negative = result == 1;
+ }
+#endif
+ if (is_unsigned && unlikely(is_negative)) {
+ goto raise_neg_overflow;
+ } else if (is_negative) {
+ stepval = PyNumber_Invert(v);
+ if (unlikely(!stepval))
+ return (long) -1;
+ } else {
+ stepval = __Pyx_NewRef(v);
+ }
+ val = (long) 0;
+ mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
+ shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
+ for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) {
+ PyObject *tmp, *digit;
+ digit = PyNumber_And(stepval, mask);
+ if (unlikely(!digit)) goto done;
+ idigit = PyLong_AsLong(digit);
+ Py_DECREF(digit);
+ if (unlikely(idigit < 0)) goto done;
+ tmp = PyNumber_Rshift(stepval, shift);
+ if (unlikely(!tmp)) goto done;
+ Py_DECREF(stepval); stepval = tmp;
+ val |= ((long) idigit) << bits;
+ #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
+ if (Py_SIZE(stepval) == 0)
+ goto unpacking_done;
+ #endif
+ }
+ idigit = PyLong_AsLong(stepval);
+ if (unlikely(idigit < 0)) goto done;
+ remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1);
+ if (unlikely(idigit >= (1L << remaining_bits)))
+ goto raise_overflow;
+ val |= ((long) idigit) << bits;
+ #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
+ unpacking_done:
+ #endif
+ if (!is_unsigned) {
+ if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1))))
+ goto raise_overflow;
+ if (is_negative)
+ val = ~val;
+ }
+ ret = 0;
+ done:
+ Py_XDECREF(shift);
+ Py_XDECREF(mask);
+ Py_XDECREF(stepval);
+#endif
Py_DECREF(v);
if (likely(!ret))
return val;
}
-#endif
return (long) -1;
}
} else {
@@ -20176,16 +25912,58 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
{
int one = 1; int little = (int)*(unsigned char *)&one;
unsigned char *bytes = (unsigned char *)&value;
+#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
return _PyLong_FromByteArray(bytes, sizeof(long),
little, !is_unsigned);
+#else
+ PyObject *from_bytes, *result = NULL;
+ PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
+ from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
+ if (!from_bytes) return NULL;
+ py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long));
+ if (!py_bytes) goto limited_bad;
+ order_str = PyUnicode_FromString(little ? "little" : "big");
+ if (!order_str) goto limited_bad;
+ arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
+ if (!arg_tuple) goto limited_bad;
+ if (!is_unsigned) {
+ kwds = PyDict_New();
+ if (!kwds) goto limited_bad;
+ if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
+ }
+ result = PyObject_Call(from_bytes, arg_tuple, kwds);
+ limited_bad:
+ Py_XDECREF(kwds);
+ Py_XDECREF(arg_tuple);
+ Py_XDECREF(order_str);
+ Py_XDECREF(py_bytes);
+ Py_XDECREF(from_bytes);
+ return result;
+#endif
+ }
+}
+
+/* FormatTypeName */
+#if CYTHON_COMPILING_IN_LIMITED_API
+static __Pyx_TypeName
+__Pyx_PyType_GetName(PyTypeObject* tp)
+{
+ PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp,
+ __pyx_n_s_name);
+ if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) {
+ PyErr_Clear();
+ Py_XDECREF(name);
+ name = __Pyx_NewRef(__pyx_n_s__47);
}
+ return name;
}
+#endif
/* FastTypeChecks */
#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
while (a) {
- a = a->tp_base;
+ a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*);
if (a == b)
return 1;
}
@@ -20206,6 +25984,22 @@ static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {
}
return __Pyx_InBases(a, b);
}
+static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) {
+ PyObject *mro;
+ if (cls == a || cls == b) return 1;
+ mro = cls->tp_mro;
+ if (likely(mro)) {
+ Py_ssize_t i, n;
+ n = PyTuple_GET_SIZE(mro);
+ for (i = 0; i < n; i++) {
+ PyObject *base = PyTuple_GET_ITEM(mro, i);
+ if (base == (PyObject *)a || base == (PyObject *)b)
+ return 1;
+ }
+ return 0;
+ }
+ return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b);
+}
#if PY_MAJOR_VERSION == 2
static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) {
PyObject *exception, *value, *tb;
@@ -20230,11 +26024,11 @@ static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc
}
#else
static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {
- int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0;
- if (!res) {
- res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
+ if (exc_type1) {
+ return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2);
+ } else {
+ return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
}
- return res;
}
#endif
static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
@@ -20282,47 +26076,78 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
#endif
/* CheckBinaryVersion */
-static int __Pyx_check_binary_version(void) {
- char ctversion[5];
- int same=1, i, found_dot;
- const char* rt_from_call = Py_GetVersion();
- PyOS_snprintf(ctversion, 5, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
- found_dot = 0;
- for (i = 0; i < 4; i++) {
- if (!ctversion[i]) {
- same = (rt_from_call[i] < '0' || rt_from_call[i] > '9');
- break;
+static unsigned long __Pyx_get_runtime_version(void) {
+#if __PYX_LIMITED_VERSION_HEX >= 0x030B00A4
+ return Py_Version & ~0xFFUL;
+#else
+ const char* rt_version = Py_GetVersion();
+ unsigned long version = 0;
+ unsigned long factor = 0x01000000UL;
+ unsigned int digit = 0;
+ int i = 0;
+ while (factor) {
+ while ('0' <= rt_version[i] && rt_version[i] <= '9') {
+ digit = digit * 10 + (unsigned int) (rt_version[i] - '0');
+ ++i;
}
- if (rt_from_call[i] != ctversion[i]) {
- same = 0;
+ version += factor * digit;
+ if (rt_version[i] != '.')
break;
- }
+ digit = 0;
+ factor >>= 8;
+ ++i;
}
- if (!same) {
- char rtversion[5] = {'\0'};
+ return version;
+#endif
+}
+static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) {
+ const unsigned long MAJOR_MINOR = 0xFFFF0000UL;
+ if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR))
+ return 0;
+ if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR)))
+ return 1;
+ {
char message[200];
- for (i=0; i<4; ++i) {
- if (rt_from_call[i] == '.') {
- if (found_dot) break;
- found_dot = 1;
- } else if (rt_from_call[i] < '0' || rt_from_call[i] > '9') {
- break;
- }
- rtversion[i] = rt_from_call[i];
- }
PyOS_snprintf(message, sizeof(message),
- "compiletime version %s of module '%.100s' "
- "does not match runtime version %s",
- ctversion, __Pyx_MODULE_NAME, rtversion);
+ "compile time Python version %d.%d "
+ "of module '%.100s' "
+ "%s "
+ "runtime version %d.%d",
+ (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF),
+ __Pyx_MODULE_NAME,
+ (allow_newer) ? "was newer than" : "does not match",
+ (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF)
+ );
return PyErr_WarnEx(NULL, message, 1);
}
- return 0;
}
/* InitStrings */
+#if PY_MAJOR_VERSION >= 3
+static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) {
+ if (t.is_unicode | t.is_str) {
+ if (t.intern) {
+ *str = PyUnicode_InternFromString(t.s);
+ } else if (t.encoding) {
+ *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL);
+ } else {
+ *str = PyUnicode_FromStringAndSize(t.s, t.n - 1);
+ }
+ } else {
+ *str = PyBytes_FromStringAndSize(t.s, t.n - 1);
+ }
+ if (!*str)
+ return -1;
+ if (PyObject_Hash(*str) == -1)
+ return -1;
+ return 0;
+}
+#endif
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
while (t->p) {
- #if PY_MAJOR_VERSION < 3
+ #if PY_MAJOR_VERSION >= 3
+ __Pyx_InitString(*t, t->p);
+ #else
if (t->is_unicode) {
*t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
} else if (t->intern) {
@@ -20330,30 +26155,34 @@ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
} else {
*t->p = PyString_FromStringAndSize(t->s, t->n - 1);
}
- #else
- if (t->is_unicode | t->is_str) {
- if (t->intern) {
- *t->p = PyUnicode_InternFromString(t->s);
- } else if (t->encoding) {
- *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
- } else {
- *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
- }
- } else {
- *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
- }
- #endif
if (!*t->p)
return -1;
if (PyObject_Hash(*t->p) == -1)
return -1;
+ #endif
++t;
}
return 0;
}
+#include
+static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) {
+ size_t len = strlen(s);
+ if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) {
+ PyErr_SetString(PyExc_OverflowError, "byte string is too long");
+ return -1;
+ }
+ return (Py_ssize_t) len;
+}
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
- return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));
+ Py_ssize_t len = __Pyx_ssize_strlen(c_str);
+ if (unlikely(len < 0)) return NULL;
+ return __Pyx_PyUnicode_FromStringAndSize(c_str, len);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) {
+ Py_ssize_t len = __Pyx_ssize_strlen(c_str);
+ if (unlikely(len < 0)) return NULL;
+ return PyByteArray_FromStringAndSize(c_str, len);
}
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
Py_ssize_t ignore;
@@ -20408,7 +26237,7 @@ static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_
return __Pyx_PyUnicode_AsStringAndSize(o, length);
} else
#endif
-#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
+#if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
if (PyByteArray_Check(o)) {
*length = PyByteArray_GET_SIZE(o);
return PyByteArray_AS_STRING(o);
@@ -20437,22 +26266,26 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
return retval;
}
static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
+ __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result));
#if PY_MAJOR_VERSION >= 3
if (PyLong_Check(result)) {
if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
- "__int__ returned non-int (type %.200s). "
- "The ability to return an instance of a strict subclass of int "
- "is deprecated, and may be removed in a future version of Python.",
- Py_TYPE(result)->tp_name)) {
+ "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). "
+ "The ability to return an instance of a strict subclass of int is deprecated, "
+ "and may be removed in a future version of Python.",
+ result_type_name)) {
+ __Pyx_DECREF_TypeName(result_type_name);
Py_DECREF(result);
return NULL;
}
+ __Pyx_DECREF_TypeName(result_type_name);
return result;
}
#endif
PyErr_Format(PyExc_TypeError,
- "__%.4s__ returned non-%.4s (type %.200s)",
- type_name, type_name, Py_TYPE(result)->tp_name);
+ "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")",
+ type_name, type_name, result_type_name);
+ __Pyx_DECREF_TypeName(result_type_name);
Py_DECREF(result);
return NULL;
}
@@ -20518,13 +26351,11 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
#endif
if (likely(PyLong_CheckExact(b))) {
#if CYTHON_USE_PYLONG_INTERNALS
- const digit* digits = ((PyLongObject*)b)->ob_digit;
- const Py_ssize_t size = Py_SIZE(b);
- if (likely(__Pyx_sst_abs(size) <= 1)) {
- ival = likely(size) ? digits[0] : 0;
- if (size == -1) ival = -ival;
- return ival;
+ if (likely(__Pyx_PyLong_IsCompact(b))) {
+ return __Pyx_PyLong_CompactValue(b);
} else {
+ const digit* digits = __Pyx_PyLong_Digits(b);
+ const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b);
switch (size) {
case 2:
if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
@@ -20592,4 +26423,12 @@ static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
}
+/* #### Code section: utility_code_pragmas_end ### */
+#ifdef _MSC_VER
+#pragma warning( pop )
+#endif
+
+
+
+/* #### Code section: end ### */
#endif /* Py_PYTHON_H */
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py
index 7b34cd50c..a14f999bd 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py
@@ -18,7 +18,7 @@ def set_trace_func(self, trace_func):
def update_globals_dict(globals_dict):
- new_globals = {'_pydev_stop_at_break': _pydev_stop_at_break}
+ new_globals = {"_pydev_stop_at_break": _pydev_stop_at_break}
globals_dict.update(new_globals)
@@ -50,9 +50,9 @@ def _pydev_stop_at_break(line):
return
pydev_log.debug("Setting f_trace due to frame eval mode in file: %s on line %s", frame.f_code.co_filename, line)
- additional_info.trace_suspend_type = 'frame_eval'
+ additional_info.trace_suspend_type = "frame_eval"
- pydevd_frame_eval_cython_wrapper = sys.modules['_pydevd_frame_eval.pydevd_frame_eval_cython_wrapper']
+ pydevd_frame_eval_cython_wrapper = sys.modules["_pydevd_frame_eval.pydevd_frame_eval_cython_wrapper"]
thread_info = pydevd_frame_eval_cython_wrapper.get_thread_info_py()
if thread_info.thread_trace_func is not None:
frame.f_trace = thread_info.thread_trace_func
@@ -63,7 +63,7 @@ def _pydev_stop_at_break(line):
def _pydev_needs_stop_at_break(line):
- '''
+ """
We separate the functionality into 2 functions so that we can generate a bytecode which
generates a spurious line change so that we can do:
@@ -72,7 +72,7 @@ def _pydev_needs_stop_at_break(line):
_pydev_stop_at_break()
# then, proceed to go to the current line
# (which will then trigger a line event).
- '''
+ """
t = threading.current_thread()
try:
additional_info = t.additional_info
@@ -119,4 +119,3 @@ def _pydev_needs_stop_at_break(line):
additional_info.is_tracing -= 1
return False
-
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py
index 7e7635850..8c9dabb03 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py
@@ -14,43 +14,42 @@
class DebugHelper(object):
-
def __init__(self):
- self._debug_dir = os.path.join(os.path.dirname(__file__), 'debug_info')
+ self._debug_dir = os.path.join(os.path.dirname(__file__), "debug_info")
try:
os.makedirs(self._debug_dir)
except:
pass
self._next = partial(next, itertools.count(0))
- def _get_filename(self, op_number=None, prefix=''):
+ def _get_filename(self, op_number=None, prefix=""):
if op_number is None:
op_number = self._next()
- name = '%03d_before.txt' % op_number
+ name = "%03d_before.txt" % op_number
else:
- name = '%03d_change.txt' % op_number
+ name = "%03d_change.txt" % op_number
filename = os.path.join(self._debug_dir, prefix + name)
return filename, op_number
- def write_bytecode(self, b, op_number=None, prefix=''):
+ def write_bytecode(self, b, op_number=None, prefix=""):
filename, op_number = self._get_filename(op_number, prefix)
- with open(filename, 'w') as stream:
+ with open(filename, "w") as stream:
bytecode.dump_bytecode(b, stream=stream, lineno=True)
return op_number
- def write_dis(self, code_to_modify, op_number=None, prefix=''):
+ def write_dis(self, code_to_modify, op_number=None, prefix=""):
filename, op_number = self._get_filename(op_number, prefix)
- with open(filename, 'w') as stream:
- stream.write('-------- ')
- stream.write('-------- ')
- stream.write('id(code_to_modify): %s' % id(code_to_modify))
- stream.write('\n\n')
+ with open(filename, "w") as stream:
+ stream.write("-------- ")
+ stream.write("-------- ")
+ stream.write("id(code_to_modify): %s" % id(code_to_modify))
+ stream.write("\n\n")
dis.dis(code_to_modify, file=stream)
return op_number
-_CodeLineInfo = namedtuple('_CodeLineInfo', 'line_to_offset, first_line, last_line')
+_CodeLineInfo = namedtuple("_CodeLineInfo", "line_to_offset, first_line, last_line")
# Note: this method has a version in cython too (that one is usually used, this is just for tests).
@@ -72,19 +71,15 @@ def _get_code_line_info(code_obj):
debug_helper = DebugHelper()
-def get_instructions_to_add(
- stop_at_line,
- _pydev_stop_at_break=_pydev_stop_at_break,
- _pydev_needs_stop_at_break=_pydev_needs_stop_at_break
- ):
- '''
+def get_instructions_to_add(stop_at_line, _pydev_stop_at_break=_pydev_stop_at_break, _pydev_needs_stop_at_break=_pydev_needs_stop_at_break):
+ """
This is the bytecode for something as:
if _pydev_needs_stop_at_break():
_pydev_stop_at_break()
but with some special handling for lines.
- '''
+ """
# Good reference to how things work regarding line numbers and jumps:
# https://github.com/python/cpython/blob/3.6/Objects/lnotab_notes.txt
@@ -100,7 +95,6 @@ def get_instructions_to_add(
Instr("LOAD_CONST", stop_at_line, lineno=stop_at_line),
Instr("CALL_FUNCTION", 1, lineno=stop_at_line),
Instr("POP_JUMP_IF_FALSE", label, lineno=stop_at_line),
-
# -- _pydev_stop_at_break()
#
# Note that this has line numbers -1 so that when the NOP just below
@@ -109,7 +103,6 @@ def get_instructions_to_add(
Instr("LOAD_CONST", stop_at_line, lineno=spurious_line),
Instr("CALL_FUNCTION", 1, lineno=spurious_line),
Instr("POP_TOP", lineno=spurious_line),
-
# Reason for the NOP: Python will give us a 'line' trace event whenever we forward jump to
# the first instruction of a line, so, in the case where we haven't added a programmatic
# breakpoint (either because we didn't hit a breakpoint anymore or because it was already
@@ -122,7 +115,6 @@ def get_instructions_to_add(
class _Node(object):
-
def __init__(self, data):
self.prev = None
self.next = None
@@ -158,11 +150,11 @@ def prepend(self, data):
class _HelperBytecodeList(object):
- '''
+ """
A helper double-linked list to make the manipulation a bit easier (so that we don't need
to keep track of indices that change) and performant (because adding multiple items to
the middle of a regular list isn't ideal).
- '''
+ """
def __init__(self, lst=None):
self._head = None
@@ -206,16 +198,24 @@ def __iter__(self):
_PREDICT_TABLE = {
- 'LIST_APPEND': ('JUMP_ABSOLUTE',),
- 'SET_ADD': ('JUMP_ABSOLUTE',),
- 'GET_ANEXT': ('LOAD_CONST',),
- 'GET_AWAITABLE': ('LOAD_CONST',),
- 'DICT_MERGE': ('CALL_FUNCTION_EX',),
- 'MAP_ADD': ('JUMP_ABSOLUTE',),
- 'COMPARE_OP': ('POP_JUMP_IF_FALSE', 'POP_JUMP_IF_TRUE',),
- 'IS_OP': ('POP_JUMP_IF_FALSE', 'POP_JUMP_IF_TRUE',),
- 'CONTAINS_OP': ('POP_JUMP_IF_FALSE', 'POP_JUMP_IF_TRUE',),
-
+ "LIST_APPEND": ("JUMP_ABSOLUTE",),
+ "SET_ADD": ("JUMP_ABSOLUTE",),
+ "GET_ANEXT": ("LOAD_CONST",),
+ "GET_AWAITABLE": ("LOAD_CONST",),
+ "DICT_MERGE": ("CALL_FUNCTION_EX",),
+ "MAP_ADD": ("JUMP_ABSOLUTE",),
+ "COMPARE_OP": (
+ "POP_JUMP_IF_FALSE",
+ "POP_JUMP_IF_TRUE",
+ ),
+ "IS_OP": (
+ "POP_JUMP_IF_FALSE",
+ "POP_JUMP_IF_TRUE",
+ ),
+ "CONTAINS_OP": (
+ "POP_JUMP_IF_FALSE",
+ "POP_JUMP_IF_TRUE",
+ ),
# Note: there are some others with PREDICT on ceval, but they have more logic
# and it needs more experimentation to know how it behaves in the static generated
# code (and it's only an issue for us if there's actually a line change between
@@ -236,12 +236,12 @@ def __iter__(self):
def insert_pydevd_breaks(
- code_to_modify,
- breakpoint_lines,
- code_line_info=None,
- _pydev_stop_at_break=_pydev_stop_at_break,
- _pydev_needs_stop_at_break=_pydev_needs_stop_at_break,
- ):
+ code_to_modify,
+ breakpoint_lines,
+ code_line_info=None,
+ _pydev_stop_at_break=_pydev_stop_at_break,
+ _pydev_needs_stop_at_break=_pydev_needs_stop_at_break,
+):
"""
Inserts pydevd programmatic breaks into the code (at the given lines).
@@ -268,14 +268,14 @@ def insert_pydevd_breaks(
for line in breakpoint_lines:
if line <= 0:
# The first line is line 1, so, a break at line 0 is not valid.
- pydev_log.info('Trying to add breakpoint in invalid line: %s', line)
+ pydev_log.info("Trying to add breakpoint in invalid line: %s", line)
return False, code_to_modify
try:
b = bytecode.Bytecode.from_code(code_to_modify)
if DEBUG:
- op_number_bytecode = debug_helper.write_bytecode(b, prefix='bytecode.')
+ op_number_bytecode = debug_helper.write_bytecode(b, prefix="bytecode.")
helper_list = _HelperBytecodeList(b)
@@ -286,8 +286,8 @@ def insert_pydevd_breaks(
last_lineno = None
while curr_node is not None:
instruction = curr_node.data
- instruction_lineno = getattr(instruction, 'lineno', None)
- curr_name = getattr(instruction, 'name', None)
+ instruction_lineno = getattr(instruction, "lineno", None)
+ curr_name = getattr(instruction, "name", None)
if FIX_PREDICT:
predict_targets = _PREDICT_TABLE.get(curr_name)
@@ -297,9 +297,9 @@ def insert_pydevd_breaks(
# that it does things the way that ceval actually interprets it.
# See: https://mail.python.org/archives/list/python-dev@python.org/thread/CP2PTFCMTK57KM3M3DLJNWGO66R5RVPB/
next_instruction = curr_node.next.data
- next_name = getattr(next_instruction, 'name', None)
+ next_name = getattr(next_instruction, "name", None)
if next_name in predict_targets:
- next_instruction_lineno = getattr(next_instruction, 'lineno', None)
+ next_instruction_lineno = getattr(next_instruction, "lineno", None)
if next_instruction_lineno:
next_instruction.lineno = None
@@ -323,9 +323,7 @@ def insert_pydevd_breaks(
if instruction_lineno in modified_breakpoint_lines:
added_breaks_in_lines.add(instruction_lineno)
- if curr_node.prev is not None and curr_node.prev.data.__class__ == Label \
- and curr_name == 'POP_TOP':
-
+ if curr_node.prev is not None and curr_node.prev.data.__class__ == Label and curr_name == "POP_TOP":
# If we have a SETUP_FINALLY where the target is a POP_TOP, we can't change
# the target to be the breakpoint instruction (this can crash the interpreter).
@@ -333,7 +331,7 @@ def insert_pydevd_breaks(
instruction_lineno,
_pydev_stop_at_break=_pydev_stop_at_break,
_pydev_needs_stop_at_break=_pydev_needs_stop_at_break,
- ):
+ ):
curr_node = curr_node.append(new_instruction)
else:
@@ -341,7 +339,7 @@ def insert_pydevd_breaks(
instruction_lineno,
_pydev_stop_at_break=_pydev_stop_at_break,
_pydev_needs_stop_at_break=_pydev_needs_stop_at_break,
- ):
+ ):
curr_node.prepend(new_instruction)
curr_node = curr_node.next
@@ -349,12 +347,12 @@ def insert_pydevd_breaks(
b[:] = helper_list
if DEBUG:
- debug_helper.write_bytecode(b, op_number_bytecode, prefix='bytecode.')
+ debug_helper.write_bytecode(b, op_number_bytecode, prefix="bytecode.")
new_code = b.to_code()
except:
- pydev_log.exception('Error inserting pydevd breaks.')
+ pydev_log.exception("Error inserting pydevd breaks.")
return False, code_to_modify
if DEBUG:
@@ -362,4 +360,3 @@ def insert_pydevd_breaks(
debug_helper.write_dis(new_code, op_number)
return True, new_code
-
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py
index f970fbc00..a68ddcc63 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py
@@ -37,6 +37,7 @@
from _pydevd_frame_eval.vendored.bytecode.cfg import BasicBlock, ControlFlowGraph # noqa
import sys
+
def dump_bytecode(bytecode, *, lineno=False, stream=sys.stdout):
def format_line(index, line):
nonlocal cur_lineno, prev_lineno
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py
index ca4d0ace5..868065942 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py
@@ -176,9 +176,7 @@ def __iter__(self):
def _check_instr(self, instr):
if not isinstance(instr, (Label, SetLineno, Instr)):
raise ValueError(
- "Bytecode must only contain Label, "
- "SetLineno, and Instr objects, "
- "but %s was found" % type(instr).__name__
+ "Bytecode must only contain Label, " "SetLineno, and Instr objects, " "but %s was found" % type(instr).__name__
)
def _copy_attr_from(self, bytecode):
@@ -188,6 +186,8 @@ def _copy_attr_from(self, bytecode):
@staticmethod
def from_code(code):
+ if sys.version_info[:2] >= (3, 11):
+ raise RuntimeError("This is not updated for Python 3.11 onwards, use only up to Python 3.10!!")
concrete = _bytecode.ConcreteBytecode.from_code(code)
return concrete.to_bytecode()
@@ -195,9 +195,7 @@ def compute_stacksize(self, *, check_pre_and_post=True):
cfg = _bytecode.ControlFlowGraph.from_bytecode(self)
return cfg.compute_stacksize(check_pre_and_post=check_pre_and_post)
- def to_code(
- self, compute_jumps_passes=None, stacksize=None, *, check_pre_and_post=True
- ):
+ def to_code(self, compute_jumps_passes=None, stacksize=None, *, check_pre_and_post=True):
# Prevent reconverting the concrete bytecode to bytecode and cfg to do the
# calculation if we need to do it.
if stacksize is None:
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py
index 5e2f32290..6024c4f1c 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py
@@ -21,16 +21,11 @@ def __iter__(self):
index += 1
if not isinstance(instr, (SetLineno, Instr)):
- raise ValueError(
- "BasicBlock must only contain SetLineno and Instr objects, "
- "but %s was found" % instr.__class__.__name__
- )
+ raise ValueError("BasicBlock must only contain SetLineno and Instr objects, " "but %s was found" % instr.__class__.__name__)
if isinstance(instr, Instr) and instr.has_jump():
if index < len(self):
- raise ValueError(
- "Only the last instruction of a basic " "block can be a jump"
- )
+ raise ValueError("Only the last instruction of a basic " "block can be a jump")
if not isinstance(instr.arg, BasicBlock):
raise ValueError(
@@ -135,7 +130,6 @@ def update_size(pre_delta, post_delta, size, maxsize):
block.startsize = size
for instr in block:
-
# Ignore SetLineno
if isinstance(instr, SetLineno):
continue
@@ -143,11 +137,7 @@ def update_size(pre_delta, post_delta, size, maxsize):
# For instructions with a jump first compute the stacksize required when the
# jump is taken.
if instr.has_jump():
- effect = (
- instr.pre_and_post_stack_effect(jump=True)
- if check_pre_and_post
- else (instr.stack_effect(jump=True), 0)
- )
+ effect = instr.pre_and_post_stack_effect(jump=True) if check_pre_and_post else (instr.stack_effect(jump=True), 0)
taken_size, maxsize = update_size(*effect, size, maxsize)
# Yield the parameters required to compute the stacksize required
# by the block to which the jumnp points to and resume when we now
@@ -161,11 +151,7 @@ def update_size(pre_delta, post_delta, size, maxsize):
yield maxsize
# jump=False: non-taken path of jumps, or any non-jump
- effect = (
- instr.pre_and_post_stack_effect(jump=False)
- if check_pre_and_post
- else (instr.stack_effect(jump=False), 0)
- )
+ effect = instr.pre_and_post_stack_effect(jump=False) if check_pre_and_post else (instr.stack_effect(jump=False), 0)
size, maxsize = update_size(*effect, size, maxsize)
if block.next_block:
@@ -225,17 +211,11 @@ def compute_stacksize(self, *, check_pre_and_post=True):
# Starting with Python 3.10, generator and coroutines start with one object
# on the stack (None, anything is an error).
initial_stack_size = 0
- if sys.version_info >= (3, 10) and self.flags & (
- CompilerFlags.GENERATOR
- | CompilerFlags.COROUTINE
- | CompilerFlags.ASYNC_GENERATOR
- ):
+ if sys.version_info >= (3, 10) and self.flags & (CompilerFlags.GENERATOR | CompilerFlags.COROUTINE | CompilerFlags.ASYNC_GENERATOR):
initial_stack_size = 1
# Create a generator/coroutine responsible of dealing with the first block
- coro = _compute_stack_size(
- self[0], initial_stack_size, 0, check_pre_and_post=check_pre_and_post
- )
+ coro = _compute_stack_size(self[0], initial_stack_size, 0, check_pre_and_post=check_pre_and_post)
# Create a list of generator that have not yet been exhausted
coroutines = []
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py
index bd756cba7..f62ac503d 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py
@@ -138,9 +138,7 @@ def __iter__(self):
def _check_instr(self, instr):
if not isinstance(instr, (ConcreteInstr, SetLineno)):
raise ValueError(
- "ConcreteBytecode must only contain "
- "ConcreteInstr and SetLineno objects, "
- "but %s was found" % type(instr).__name__
+ "ConcreteBytecode must only contain " "ConcreteInstr and SetLineno objects, " "but %s was found" % type(instr).__name__
)
def _copy_attr_from(self, bytecode):
@@ -236,9 +234,7 @@ def _assemble_code(self):
for lineno, instr in self._normalize_lineno(self, self.first_lineno):
code_str.append(instr.assemble())
i_size = instr.size
- linenos.append(
- ((offset * 2) if OFFSET_AS_INSTRUCTION else offset, i_size, lineno)
- )
+ linenos.append(((offset * 2) if OFFSET_AS_INSTRUCTION else offset, i_size, lineno))
offset += (i_size // 2) if OFFSET_AS_INSTRUCTION else i_size
code_str = b"".join(code_str)
return (code_str, linenos)
@@ -254,9 +250,7 @@ def _assemble_lnotab(first_lineno, linenos):
continue
# FIXME: be kind, force monotonic line numbers? add an option?
if dlineno < 0 and sys.version_info < (3, 6):
- raise ValueError(
- "negative line number delta is not supported " "on Python < 3.6"
- )
+ raise ValueError("negative line number delta is not supported " "on Python < 3.6")
old_lineno = lineno
doff = offset - old_offset
@@ -285,7 +279,6 @@ def _assemble_lnotab(first_lineno, linenos):
@staticmethod
def _pack_linetable(doff, dlineno, linetable):
-
while dlineno < -127:
linetable.append(struct.pack("Bb", 0, -127))
dlineno -= -127
@@ -309,16 +302,15 @@ def _pack_linetable(doff, dlineno, linetable):
assert 0 <= doff <= 254
assert -127 <= dlineno <= 127
-
def _assemble_linestable(self, first_lineno, linenos):
if not linenos:
return b""
linetable = []
old_offset = 0
-
+
iter_in = iter(linenos)
-
+
offset, i_size, old_lineno = next(iter_in)
old_dlineno = old_lineno - first_lineno
for offset, i_size, lineno in iter_in:
@@ -442,7 +434,6 @@ def to_code(self, stacksize=None, *, check_pre_and_post=True):
)
def to_bytecode(self):
-
# Copy instruction and remove extended args if any (in-place)
c_instructions = self[:]
self._remove_extended_args(c_instructions)
@@ -527,7 +518,6 @@ def to_bytecode(self):
class _ConvertBytecodeToConcrete:
-
# Default number of passes of compute_jumps() before giving up. Refer to
# assemble_jump_offsets() in compile.c for background.
_compute_jumps_passes = 10
@@ -631,9 +621,7 @@ def compute_jumps(self):
if instr.opcode in _opcode.hasjrel:
instr_offset = offsets[index]
- target_offset -= instr_offset + (
- instr.size // 2 if OFFSET_AS_INSTRUCTION else instr.size
- )
+ target_offset -= instr_offset + (instr.size // 2 if OFFSET_AS_INSTRUCTION else instr.size)
old_size = instr.size
# FIXME: better error report if target_offset is negative
@@ -659,9 +647,7 @@ def to_concrete_bytecode(self, compute_jumps_passes=None):
if not modified:
break
else:
- raise RuntimeError(
- "compute_jumps() failed to converge after" " %d passes" % (pas + 1)
- )
+ raise RuntimeError("compute_jumps() failed to converge after" " %d passes" % (pas + 1))
concrete = ConcreteBytecode(
self.instructions,
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py
index b0c5239cd..ea72f9e74 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py
@@ -62,22 +62,11 @@ def infer_flags(bytecode, is_async=None):
bytecode,
(_bytecode.Bytecode, _bytecode.ConcreteBytecode, _bytecode.ControlFlowGraph),
):
- msg = (
- "Expected a Bytecode, ConcreteBytecode or ControlFlowGraph "
- "instance not %s"
- )
+ msg = "Expected a Bytecode, ConcreteBytecode or ControlFlowGraph " "instance not %s"
raise ValueError(msg % bytecode)
- instructions = (
- bytecode.get_instructions()
- if isinstance(bytecode, _bytecode.ControlFlowGraph)
- else bytecode
- )
- instr_names = {
- i.name
- for i in instructions
- if not isinstance(i, (_bytecode.SetLineno, _bytecode.Label))
- }
+ instructions = bytecode.get_instructions() if isinstance(bytecode, _bytecode.ControlFlowGraph) else bytecode
+ instr_names = {i.name for i in instructions if not isinstance(i, (_bytecode.SetLineno, _bytecode.Label))}
# Identify optimized code
if not (instr_names & {"STORE_NAME", "LOAD_NAME", "DELETE_NAME"}):
@@ -97,12 +86,7 @@ def infer_flags(bytecode, is_async=None):
flags |= CompilerFlags.NOFREE
# Copy flags for which we cannot infer the right value
- flags |= bytecode.flags & (
- CompilerFlags.NEWLOCALS
- | CompilerFlags.VARARGS
- | CompilerFlags.VARKEYWORDS
- | CompilerFlags.NESTED
- )
+ flags |= bytecode.flags & (CompilerFlags.NEWLOCALS | CompilerFlags.VARARGS | CompilerFlags.VARKEYWORDS | CompilerFlags.NESTED)
sure_generator = instr_names & {"YIELD_VALUE"}
maybe_generator = instr_names & {"YIELD_VALUE", "YIELD_FROM"}
@@ -119,7 +103,6 @@ def infer_flags(bytecode, is_async=None):
# If performing inference or forcing an async behavior, first inspect
# the flags since this is the only way to identify iterable coroutines
if is_async in (None, True):
-
if bytecode.flags & CompilerFlags.COROUTINE:
if sure_generator:
flags |= CompilerFlags.ASYNC_GENERATOR
@@ -168,9 +151,7 @@ def infer_flags(bytecode, is_async=None):
else:
if sure_async:
raise ValueError(
- "The is_async argument is False but bytecodes "
- "that can only be used in async functions have "
- "been detected."
+ "The is_async argument is False but bytecodes " "that can only be used in async functions have " "been detected."
)
if maybe_generator:
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py
index 9247a5495..a25bea82a 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py
@@ -123,15 +123,10 @@ class FreeVar(_Variable):
def _check_arg_int(name, arg):
if not isinstance(arg, int):
- raise TypeError(
- "operation %s argument must be an int, "
- "got %s" % (name, type(arg).__name__)
- )
+ raise TypeError("operation %s argument must be an int, " "got %s" % (name, type(arg).__name__))
if not (0 <= arg <= 2147483647):
- raise ValueError(
- "operation %s argument must be in " "the range 0..2,147,483,647" % name
- )
+ raise ValueError("operation %s argument must be in " "the range 0..2,147,483,647" % name)
if sys.version_info < (3, 8):
@@ -174,8 +169,7 @@ def __init__(self, name, arg=UNSET, *, lineno=None, offset=None):
def _check_arg(self, name, opcode, arg):
if name == "EXTENDED_ARG":
raise ValueError(
- "only concrete instruction can contain EXTENDED_ARG, "
- "highlevel instruction can represent arbitrary argument without it"
+ "only concrete instruction can contain EXTENDED_ARG, " "highlevel instruction can represent arbitrary argument without it"
)
if opcode >= _opcode.HAVE_ARGUMENT:
@@ -187,41 +181,25 @@ def _check_arg(self, name, opcode, arg):
if self._has_jump(opcode):
if not isinstance(arg, (Label, _bytecode.BasicBlock)):
- raise TypeError(
- "operation %s argument type must be "
- "Label or BasicBlock, got %s" % (name, type(arg).__name__)
- )
+ raise TypeError("operation %s argument type must be " "Label or BasicBlock, got %s" % (name, type(arg).__name__))
elif opcode in _opcode.hasfree:
if not isinstance(arg, (CellVar, FreeVar)):
- raise TypeError(
- "operation %s argument must be CellVar "
- "or FreeVar, got %s" % (name, type(arg).__name__)
- )
+ raise TypeError("operation %s argument must be CellVar " "or FreeVar, got %s" % (name, type(arg).__name__))
elif opcode in _opcode.haslocal or opcode in _opcode.hasname:
if not isinstance(arg, str):
- raise TypeError(
- "operation %s argument must be a str, "
- "got %s" % (name, type(arg).__name__)
- )
+ raise TypeError("operation %s argument must be a str, " "got %s" % (name, type(arg).__name__))
elif opcode in _opcode.hasconst:
if isinstance(arg, Label):
- raise ValueError(
- "label argument cannot be used " "in %s operation" % name
- )
+ raise ValueError("label argument cannot be used " "in %s operation" % name)
if isinstance(arg, _bytecode.BasicBlock):
- raise ValueError(
- "block argument cannot be used " "in %s operation" % name
- )
+ raise ValueError("block argument cannot be used " "in %s operation" % name)
elif opcode in _opcode.hascompare:
if not isinstance(arg, Compare):
- raise TypeError(
- "operation %s argument type must be "
- "Compare, got %s" % (name, type(arg).__name__)
- )
+ raise TypeError("operation %s argument type must be " "Compare, got %s" % (name, type(arg).__name__))
elif opcode >= _opcode.HAVE_ARGUMENT:
_check_arg_int(name, arg)
@@ -340,9 +318,7 @@ def pre_and_post_stack_effect(self, jump=None):
return -1, 2
if _opname == "ROT_N":
return (-self._arg, self._arg)
- return {"ROT_TWO": (-2, 2), "ROT_THREE": (-3, 3), "ROT_FOUR": (-4, 4)}.get(
- _opname, (_effect, 0)
- )
+ return {"ROT_TWO": (-2, 2), "ROT_THREE": (-3, 3), "ROT_FOUR": (-4, 4)}.get(_opname, (_effect, 0))
def copy(self):
return self.__class__(self._name, self._arg, lineno=self._lineno, offset=self.offset)
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py
index 9ece96bf0..4ed147f45 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py
@@ -483,9 +483,6 @@ class CodeTransformer:
def code_transformer(self, code, context):
if sys.flags.verbose:
- print(
- "Optimize %s:%s: %s"
- % (code.co_filename, code.co_firstlineno, code.co_name)
- )
+ print("Optimize %s:%s: %s" % (code.co_filename, code.co_firstlineno, code.co_name))
optimizer = PeepholeOptimizer()
return optimizer.optimize(code)
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py
index ee0f7d1b5..cc33b30a4 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py
@@ -129,9 +129,7 @@ def get_code(source, *, filename="", function=False):
source = textwrap.dedent(source).strip()
code = compile(source, filename, "exec")
if function:
- sub_code = [
- const for const in code.co_consts if isinstance(const, types.CodeType)
- ]
+ sub_code = [const for const in code.co_consts if isinstance(const, types.CodeType)]
if len(sub_code) != 1:
raise ValueError("unable to find function code")
code = sub_code[0]
@@ -149,6 +147,4 @@ def assertBlocksEqual(self, code, *expected_blocks):
for block1, block2 in zip(code, expected_blocks):
block_index = code.get_block_index(block1)
- self.assertListEqual(
- list(block1), block2, "Block #%s is different" % block_index
- )
+ self.assertListEqual(list(block1), block2, "Block #%s is different" % block_index)
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py
index c629f75e9..e219643f1 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py
@@ -1,8 +1,8 @@
-
import pytest
from tests_python.debugger_unittest import IS_PY36_OR_GREATER, IS_CPYTHON
from tests_python.debug_constants import TEST_CYTHON
-pytestmark = pytest.mark.skipif(not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, reason='Requires CPython >= 3.6')
+
+pytestmark = pytest.mark.skipif(not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, reason="Requires CPython >= 3.6")
#!/usr/bin/env python3
import sys
import textwrap
@@ -90,9 +90,7 @@ def test_slice(self):
"freevars",
"argnames",
):
- self.assertEqual(
- getattr(code, name, None), getattr(sliced_code, name, None)
- )
+ self.assertEqual(getattr(code, name, None), getattr(sliced_code, name, None))
def test_copy(self):
code = Bytecode()
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py
index 9b5b07b1c..6cc731a0e 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py
@@ -1,8 +1,8 @@
-
import pytest
from tests_python.debugger_unittest import IS_PY36_OR_GREATER, IS_CPYTHON
from tests_python.debug_constants import TEST_CYTHON
-pytestmark = pytest.mark.skipif(not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, reason='Requires CPython >= 3.6')
+
+pytestmark = pytest.mark.skipif(not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, reason="Requires CPython >= 3.6")
#!/usr/bin/env python3
import io
import sys
@@ -21,24 +21,16 @@
from _pydevd_frame_eval.vendored.bytecode.tests import disassemble as _disassemble, TestCase
-def disassemble(
- source, *, filename="", function=False, remove_last_return_none=False
-):
+def disassemble(source, *, filename="", function=False, remove_last_return_none=False):
code = _disassemble(source, filename=filename, function=function)
blocks = ControlFlowGraph.from_bytecode(code)
if remove_last_return_none:
# drop LOAD_CONST+RETURN_VALUE to only keep 2 instructions,
# to make unit tests shorter
block = blocks[-1]
- test = (
- block[-2].name == "LOAD_CONST"
- and block[-2].arg is None
- and block[-1].name == "RETURN_VALUE"
- )
+ test = block[-2].name == "LOAD_CONST" and block[-2].arg is None and block[-1].name == "RETURN_VALUE"
if not test:
- raise ValueError(
- "unable to find implicit RETURN_VALUE : %s" % block[-2:]
- )
+ raise ValueError("unable to find implicit RETURN_VALUE : %s" % block[-2:])
del block[-2:]
return blocks
@@ -458,9 +450,7 @@ def test_delitem(self):
def sample_code(self):
code = disassemble("x = 1", remove_last_return_none=True)
- self.assertBlocksEqual(
- code, [Instr("LOAD_CONST", 1, lineno=1), Instr("STORE_NAME", "x", lineno=1)]
- )
+ self.assertBlocksEqual(code, [Instr("LOAD_CONST", 1, lineno=1), Instr("STORE_NAME", "x", lineno=1)])
return code
def test_split_block(self):
@@ -522,9 +512,7 @@ def test_split_block_dont_split(self):
# FIXME: is it really useful to support that?
block = code.split_block(code[0], 0)
self.assertIs(block, code[0])
- self.assertBlocksEqual(
- code, [Instr("LOAD_CONST", 1, lineno=1), Instr("STORE_NAME", "x", lineno=1)]
- )
+ self.assertBlocksEqual(code, [Instr("LOAD_CONST", 1, lineno=1), Instr("STORE_NAME", "x", lineno=1)])
def test_split_block_error(self):
code = self.sample_code()
@@ -555,9 +543,7 @@ def test_to_code(self):
Instr("POP_JUMP_IF_FALSE", block2, lineno=4),
]
)
- block1.extend(
- [Instr("LOAD_FAST", "arg", lineno=5), Instr("STORE_FAST", "x", lineno=5)]
- )
+ block1.extend([Instr("LOAD_FAST", "arg", lineno=5), Instr("STORE_FAST", "x", lineno=5)])
block2.extend(
[
Instr("LOAD_CONST", 3, lineno=6),
@@ -569,13 +555,9 @@ def test_to_code(self):
if OFFSET_AS_INSTRUCTION:
# The argument of the jump is divided by 2
- expected = (
- b"|\x05" b"r\x04" b"|\x00" b"}\x05" b"d\x01" b"}\x05" b"|\x05" b"S\x00"
- )
+ expected = b"|\x05" b"r\x04" b"|\x00" b"}\x05" b"d\x01" b"}\x05" b"|\x05" b"S\x00"
else:
- expected = (
- b"|\x05" b"r\x08" b"|\x00" b"}\x05" b"d\x01" b"}\x05" b"|\x05" b"S\x00"
- )
+ expected = b"|\x05" b"r\x08" b"|\x00" b"}\x05" b"d\x01" b"}\x05" b"|\x05" b"S\x00"
code = bytecode.to_code()
self.assertEqual(code.co_consts, (None, 3))
@@ -589,9 +571,7 @@ def test_to_code(self):
self.assertEqual(code.co_flags, 0x43)
self.assertEqual(code.co_code, expected)
self.assertEqual(code.co_names, ())
- self.assertEqual(
- code.co_varnames, ("arg", "arg2", "arg3", "kwonly", "kwonly2", "x")
- )
+ self.assertEqual(code.co_varnames, ("arg", "arg2", "arg3", "kwonly", "kwonly2", "x"))
self.assertEqual(code.co_filename, "hello.py")
self.assertEqual(code.co_name, "func")
self.assertEqual(code.co_firstlineno, 3)
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py
index 6938bd1bf..4820e875d 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py
@@ -1,8 +1,8 @@
-
import pytest
from tests_python.debugger_unittest import IS_PY36_OR_GREATER, IS_CPYTHON
from tests_python.debug_constants import TEST_CYTHON
-pytestmark = pytest.mark.skipif(not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, reason='Requires CPython >= 3.6')
+
+pytestmark = pytest.mark.skipif(not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, reason="Requires CPython >= 3.6")
import unittest
from _pydevd_frame_eval.vendored.bytecode import ConcreteBytecode, Bytecode, ControlFlowGraph
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py
index 510f6cd55..f1fe5e6b7 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py
@@ -1,8 +1,8 @@
-
import pytest
from tests_python.debugger_unittest import IS_PY36_OR_GREATER, IS_CPYTHON
from tests_python.debug_constants import TEST_CYTHON
-pytestmark = pytest.mark.skipif(not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, reason='Requires CPython >= 3.6')
+
+pytestmark = pytest.mark.skipif(not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, reason="Requires CPython >= 3.6")
#!/usr/bin/env python3
import opcode
import sys
@@ -167,9 +167,7 @@ def test_get_jump_target(self):
self.assertEqual(jump_abs.get_jump_target(100), 3)
jump_forward = ConcreteInstr("JUMP_FORWARD", 5)
- self.assertEqual(
- jump_forward.get_jump_target(10), 16 if OFFSET_AS_INSTRUCTION else 17
- )
+ self.assertEqual(jump_forward.get_jump_target(10), 16 if OFFSET_AS_INSTRUCTION else 17)
class ConcreteBytecodeTests(TestCase):
@@ -241,7 +239,6 @@ def test_invalid_types(self):
ConcreteBytecode([Label()])
def test_to_code_lnotab(self):
-
# We use an actual function for the simple case to
# ensure we get lnotab right
def f():
@@ -454,9 +451,7 @@ def test_load_classderef(self):
concrete = ConcreteBytecode()
concrete.cellvars = ["__class__"]
concrete.freevars = ["__class__"]
- concrete.extend(
- [ConcreteInstr("LOAD_CLASSDEREF", 1), ConcreteInstr("STORE_DEREF", 1)]
- )
+ concrete.extend([ConcreteInstr("LOAD_CLASSDEREF", 1), ConcreteInstr("STORE_DEREF", 1)])
bytecode = concrete.to_bytecode()
self.assertEqual(bytecode.freevars, ["__class__"])
@@ -582,11 +577,7 @@ def test_extended_arg(self):
# Create a code object from arbitrary bytecode
co_code = b"\x90\x12\x904\x90\xabd\xcd"
code = get_code("x=1")
- args = (
- (code.co_argcount,)
- if sys.version_info < (3, 8)
- else (code.co_argcount, code.co_posonlyargcount)
- )
+ args = (code.co_argcount,) if sys.version_info < (3, 8) else (code.co_argcount, code.co_posonlyargcount)
args += (
code.co_kwonlyargcount,
code.co_nlocals,
@@ -608,9 +599,7 @@ def test_extended_arg(self):
# without EXTENDED_ARG opcode
bytecode = ConcreteBytecode.from_code(code)
- self.assertListEqual(
- list(bytecode), [ConcreteInstr("LOAD_CONST", 0x1234ABCD, lineno=1)]
- )
+ self.assertListEqual(list(bytecode), [ConcreteInstr("LOAD_CONST", 0x1234ABCD, lineno=1)])
# with EXTENDED_ARG opcode
bytecode = ConcreteBytecode.from_code(code, extended_arg=True)
@@ -655,10 +644,7 @@ def foo(x: int, y: int):
ConcreteInstr("LOAD_NAME", 0, lineno=1),
ConcreteInstr("BUILD_TUPLE", 4, lineno=1),
]
- elif (
- sys.version_info >= (3, 7)
- and concrete.flags & CompilerFlags.FUTURE_ANNOTATIONS
- ):
+ elif sys.version_info >= (3, 7) and concrete.flags & CompilerFlags.FUTURE_ANNOTATIONS:
func_code = concrete.consts[2]
names = ["foo"]
consts = ["int", ("x", "y"), func_code, "foo", None]
@@ -726,9 +712,7 @@ def test():
return q, r, s, t
cpython_stacksize = test.__code__.co_stacksize
- test.__code__ = ConcreteBytecode.from_code(
- test.__code__, extended_arg=True
- ).to_code()
+ test.__code__ = ConcreteBytecode.from_code(test.__code__, extended_arg=True).to_code()
self.assertEqual(test.__code__.co_stacksize, cpython_stacksize)
self.assertEqual(test(), (1, 2, [3, 4, 5], 6))
@@ -997,9 +981,7 @@ def test():
return var
- test.__code__ = ConcreteBytecode.from_code(
- test.__code__, extended_arg=True
- ).to_code()
+ test.__code__ = ConcreteBytecode.from_code(test.__code__, extended_arg=True).to_code()
self.assertEqual(test.__code__.co_stacksize, 1)
self.assertEqual(test(), 259)
@@ -1130,9 +1112,7 @@ def test_label2(self):
concrete = bytecode.to_concrete_bytecode()
expected = [
ConcreteInstr("LOAD_NAME", 0, lineno=1),
- ConcreteInstr(
- "POP_JUMP_IF_FALSE", 7 if OFFSET_AS_INSTRUCTION else 14, lineno=1
- ),
+ ConcreteInstr("POP_JUMP_IF_FALSE", 7 if OFFSET_AS_INSTRUCTION else 14, lineno=1),
ConcreteInstr("LOAD_CONST", 0, lineno=2),
ConcreteInstr("STORE_NAME", 1, lineno=2),
ConcreteInstr("JUMP_FORWARD", 2 if OFFSET_AS_INSTRUCTION else 4, lineno=2),
@@ -1205,9 +1185,7 @@ def func(x):
self.assertEqual(func(18), -1)
# Ensure that we properly round trip in such cases
- self.assertEqual(
- ConcreteBytecode.from_code(code).to_code().co_code, code.co_code
- )
+ self.assertEqual(ConcreteBytecode.from_code(code).to_code().co_code, code.co_code)
def test_setlineno(self):
# x = 7
@@ -1259,7 +1237,7 @@ def assemble(self):
# (invalid) code using jumps > 0xffff to test extended arg
label = Label()
- nb_nop = 2 ** 16
+ nb_nop = 2**16
code = Bytecode(
[
Instr("JUMP_ABSOLUTE", label),
@@ -1304,9 +1282,7 @@ def test_jumps(self):
code = code.to_concrete_bytecode()
expected = [
ConcreteInstr("LOAD_NAME", 0, lineno=1),
- ConcreteInstr(
- "POP_JUMP_IF_FALSE", 5 if OFFSET_AS_INSTRUCTION else 10, lineno=1
- ),
+ ConcreteInstr("POP_JUMP_IF_FALSE", 5 if OFFSET_AS_INSTRUCTION else 10, lineno=1),
ConcreteInstr("LOAD_CONST", 0, lineno=2),
ConcreteInstr("STORE_NAME", 1, lineno=2),
ConcreteInstr("JUMP_FORWARD", 2 if OFFSET_AS_INSTRUCTION else 4, lineno=2),
@@ -1448,10 +1424,7 @@ def test_extreme_compute_jumps_convergence(self):
labels = [Label() for x in range(0, 3 * N)]
code = Bytecode()
- code.extend(
- Instr("JUMP_FORWARD", labels[len(labels) - x - 1])
- for x in range(0, len(labels))
- )
+ code.extend(Instr("JUMP_FORWARD", labels[len(labels) - x - 1]) for x in range(0, len(labels)))
end_of_jumps = len(code)
code.extend(Instr(nop) for x in range(0, N))
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py
index b7744fbd0..08c7cb264 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py
@@ -1,8 +1,8 @@
-
import pytest
from tests_python.debugger_unittest import IS_PY36_OR_GREATER, IS_CPYTHON
from tests_python.debug_constants import TEST_CYTHON
-pytestmark = pytest.mark.skipif(not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, reason='Requires CPython >= 3.6')
+
+pytestmark = pytest.mark.skipif(not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, reason="Requires CPython >= 3.6")
#!/usr/bin/env python3
import unittest
from _pydevd_frame_eval.vendored.bytecode import (
@@ -21,7 +21,6 @@ def test_type_validation_on_inference(self):
infer_flags(1)
def test_flag_inference(self):
-
# Check no loss of non-infered flags
code = ControlFlowGraph()
code.flags |= (
@@ -122,7 +121,6 @@ def test_async_gen_flags(self):
# Test inference in the presence of pre-existing flags
for is_async in (None, True):
-
# Infer generator
code = ConcreteBytecode()
code.append(ConcreteInstr("YIELD_VALUE"))
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py
index ca4a66a73..bc5db5257 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py
@@ -1,8 +1,8 @@
-
import pytest
from tests_python.debugger_unittest import IS_PY36_OR_GREATER, IS_CPYTHON
from tests_python.debug_constants import TEST_CYTHON
-pytestmark = pytest.mark.skipif(not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, reason='Requires CPython >= 3.6')
+
+pytestmark = pytest.mark.skipif(not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, reason="Requires CPython >= 3.6")
#!/usr/bin/env python3
import opcode
import unittest
@@ -78,7 +78,6 @@ def test_constructor(self):
Instr("xxx")
def test_repr(self):
-
# No arg
r = repr(Instr("NOP", lineno=10))
self.assertIn("NOP", r)
@@ -253,9 +252,7 @@ def test_const_key_equal(self):
self.assertNotEqual(Instr("LOAD_CONST", 0), Instr("LOAD_CONST", 0.0))
# float: -0.0 == +0.0
- self.assertNotEqual(
- Instr("LOAD_CONST", neg_zero), Instr("LOAD_CONST", pos_zero)
- )
+ self.assertNotEqual(Instr("LOAD_CONST", neg_zero), Instr("LOAD_CONST", pos_zero))
# complex
self.assertNotEqual(
@@ -273,14 +270,10 @@ def test_const_key_equal(self):
nested_tuple1 = (nested_tuple1,)
nested_tuple2 = (0.0,)
nested_tuple2 = (nested_tuple2,)
- self.assertNotEqual(
- Instr("LOAD_CONST", nested_tuple1), Instr("LOAD_CONST", nested_tuple2)
- )
+ self.assertNotEqual(Instr("LOAD_CONST", nested_tuple1), Instr("LOAD_CONST", nested_tuple2))
# frozenset
- self.assertNotEqual(
- Instr("LOAD_CONST", frozenset({0})), Instr("LOAD_CONST", frozenset({0.0}))
- )
+ self.assertNotEqual(Instr("LOAD_CONST", frozenset({0})), Instr("LOAD_CONST", frozenset({0.0})))
def test_stack_effects(self):
# Verify all opcodes are handled and that "jump=None" really returns
@@ -322,7 +315,7 @@ def check(instr):
# (As a result we can calculate stack_effect for
# any LOAD_CONST instructions, even for large integers)
- for arg in 2 ** 31, 2 ** 32, 2 ** 63, 2 ** 64, -1:
+ for arg in 2**31, 2**32, 2**63, 2**64, -1:
self.assertEqual(Instr("LOAD_CONST", arg).stack_effect(), 1)
def test_code_object_containing_mutable_data(self):
@@ -340,11 +333,7 @@ def g():
mutable_datum = [4, 2]
for each in f_code:
- if (
- isinstance(each, Instr)
- and each.name == "LOAD_CONST"
- and isinstance(each.arg, CodeType)
- ):
+ if isinstance(each, Instr) and each.name == "LOAD_CONST" and isinstance(each.arg, CodeType):
instr_load_code = each
break
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py
index 5f4c0636a..6a700e931 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py
@@ -1,8 +1,8 @@
-
import pytest
from tests_python.debugger_unittest import IS_PY36_OR_GREATER, IS_CPYTHON
from tests_python.debug_constants import TEST_CYTHON
-pytestmark = pytest.mark.skipif(not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, reason='Requires CPython >= 3.6')
+
+pytestmark = pytest.mark.skipif(not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, reason="Requires CPython >= 3.6")
#!/usr/bin/env python3
import contextlib
import io
@@ -62,11 +62,7 @@ def func(test):
LOAD_CONST 3
RETURN_VALUE
- """[
- 1:
- ].rstrip(
- " "
- )
+ """[1:].rstrip(" ")
self.check_dump_bytecode(code, expected)
# with line numbers
@@ -90,11 +86,7 @@ def func(test):
L. 6 14: LOAD_CONST 3
15: RETURN_VALUE
- """[
- 1:
- ].rstrip(
- " "
- )
+ """[1:].rstrip(" ")
self.check_dump_bytecode(code, expected, lineno=True)
def test_bytecode_broken_label(self):
@@ -225,9 +217,7 @@ def func(test):
22 RETURN_VALUE
24 LOAD_CONST 3
26 RETURN_VALUE
-""".lstrip(
- "\n"
- )
+""".lstrip("\n")
self.check_dump_bytecode(code, expected)
# with line numbers
@@ -246,9 +236,7 @@ def func(test):
22: RETURN_VALUE
L. 6 24: LOAD_CONST 3
26: RETURN_VALUE
-""".lstrip(
- "\n"
- )
+""".lstrip("\n")
self.check_dump_bytecode(code, expected, lineno=True)
def test_type_validation(self):
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py
index 387a7829f..4689b28fd 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py
@@ -1,8 +1,8 @@
-
import pytest
from tests_python.debugger_unittest import IS_PY36_OR_GREATER, IS_CPYTHON
from tests_python.debug_constants import TEST_CYTHON
-pytestmark = pytest.mark.skipif(not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, reason='Requires CPython >= 3.6')
+
+pytestmark = pytest.mark.skipif(not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, reason="Requires CPython >= 3.6")
import sys
import unittest
from _pydevd_frame_eval.vendored.bytecode import Label, Instr, Compare, Bytecode, ControlFlowGraph
@@ -12,7 +12,6 @@
class Tests(TestCase):
-
maxDiff = 80 * 100
def optimize_blocks(self, code):
@@ -51,9 +50,7 @@ def check_dont_optimize(self, code):
def test_unary_op(self):
def check_unary_op(op, value, result):
- code = Bytecode(
- [Instr("LOAD_CONST", value), Instr(op), Instr("STORE_NAME", "x")]
- )
+ code = Bytecode([Instr("LOAD_CONST", value), Instr(op), Instr("STORE_NAME", "x")])
self.check(code, Instr("LOAD_CONST", result), Instr("STORE_NAME", "x"))
check_unary_op("UNARY_POSITIVE", 2, 2)
@@ -520,9 +517,7 @@ def test_return_value(self):
]
)
code = ControlFlowGraph.from_bytecode(code)
- self.check(
- code, Instr("LOAD_CONST", 4, lineno=2), Instr("RETURN_VALUE", lineno=2)
- )
+ self.check(code, Instr("LOAD_CONST", 4, lineno=2), Instr("RETURN_VALUE", lineno=2))
# return+return + return+return: remove second and fourth return
#
@@ -544,9 +539,7 @@ def test_return_value(self):
]
)
code = ControlFlowGraph.from_bytecode(code)
- self.check(
- code, Instr("LOAD_CONST", 4, lineno=2), Instr("RETURN_VALUE", lineno=2)
- )
+ self.check(code, Instr("LOAD_CONST", 4, lineno=2), Instr("RETURN_VALUE", lineno=2))
# return + JUMP_ABSOLUTE: remove JUMP_ABSOLUTE
# while 1:
@@ -594,9 +587,7 @@ def test_return_value(self):
)
code = ControlFlowGraph.from_bytecode(code)
- self.check(
- code, Instr("LOAD_CONST", 7, lineno=3), Instr("RETURN_VALUE", lineno=3)
- )
+ self.check(code, Instr("LOAD_CONST", 7, lineno=3), Instr("RETURN_VALUE", lineno=3))
def test_not_jump_if_false(self):
# Replace UNARY_NOT+POP_JUMP_IF_FALSE with POP_JUMP_IF_TRUE
@@ -905,9 +896,7 @@ def test_jump_if_false_to_jump_if_false(self):
)
def test_nop(self):
- code = Bytecode(
- [Instr("LOAD_NAME", "x"), Instr("NOP"), Instr("STORE_NAME", "test")]
- )
+ code = Bytecode([Instr("LOAD_NAME", "x"), Instr("NOP"), Instr("STORE_NAME", "test")])
self.check(code, Instr("LOAD_NAME", "x"), Instr("STORE_NAME", "test"))
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/util_annotation.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/util_annotation.py
index b64754346..4d6be6c59 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/util_annotation.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/util_annotation.py
@@ -8,9 +8,7 @@ def get_code(source, *, filename="", function=False):
source = textwrap.dedent(source).strip()
code = compile(source, filename, "exec")
if function:
- sub_code = [
- const for const in code.co_consts if isinstance(const, types.CodeType)
- ]
+ sub_code = [const for const in code.co_consts if isinstance(const, types.CodeType)]
if len(sub_code) != 1:
raise ValueError("unable to find function code")
code = sub_code[0]
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py
index 6b3d87ff8..73a7c79bf 100644
--- a/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py
+++ b/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py
@@ -1,27 +1,21 @@
def _fix_contents(filename, contents):
import re
- contents = re.sub(
- r"from bytecode", r'from _pydevd_frame_eval.vendored.bytecode', contents, flags=re.MULTILINE
- )
+ contents = re.sub(r"from bytecode", r"from _pydevd_frame_eval.vendored.bytecode", contents, flags=re.MULTILINE)
- contents = re.sub(
- r"import bytecode", r'from _pydevd_frame_eval.vendored import bytecode', contents, flags=re.MULTILINE
- )
+ contents = re.sub(r"import bytecode", r"from _pydevd_frame_eval.vendored import bytecode", contents, flags=re.MULTILINE)
# This test will import the wrong setup (we're not interested in it).
- contents = re.sub(
- r"def test_version\(self\):", r'def skip_test_version(self):', contents, flags=re.MULTILINE
- )
+ contents = re.sub(r"def test_version\(self\):", r"def skip_test_version(self):", contents, flags=re.MULTILINE)
- if filename.startswith('test_'):
- if 'pytestmark' not in contents:
- pytest_mark = '''
+ if filename.startswith("test_"):
+ if "pytestmark" not in contents:
+ pytest_mark = """
import pytest
from tests_python.debugger_unittest import IS_PY36_OR_GREATER, IS_CPYTHON
from tests_python.debug_constants import TEST_CYTHON
pytestmark = pytest.mark.skipif(not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, reason='Requires CPython >= 3.6')
-'''
+"""
contents = pytest_mark + contents
return contents
@@ -33,18 +27,19 @@ def main():
for root, dirs, files in os.walk(os.path.dirname(__file__)):
path = root.split(os.sep)
for filename in files:
- if filename.endswith('.py') and filename != 'pydevd_fix_code.py':
- with open(os.path.join(root, filename), 'r') as stream:
+ if filename.endswith(".py") and filename != "pydevd_fix_code.py":
+ with open(os.path.join(root, filename), "r") as stream:
contents = stream.read()
new_contents = _fix_contents(filename, contents)
if contents != new_contents:
- print('fixed ', os.path.join(root, filename))
- with open(os.path.join(root, filename), 'w') as stream:
+ print("fixed ", os.path.join(root, filename))
+ with open(os.path.join(root, filename), "w") as stream:
stream.write(new_contents)
+
# print(len(path) * '---', filename)
-if __name__ == '__main__':
- main()
\ No newline at end of file
+if __name__ == "__main__":
+ main()
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring.py b/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring.py
new file mode 100644
index 000000000..ec7adff8d
--- /dev/null
+++ b/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring.py
@@ -0,0 +1,1927 @@
+# Copyright: Brainwy Software
+#
+# License: EPL
+
+from collections import namedtuple
+import dis
+import os
+import re
+import sys
+from _pydev_bundle._pydev_saved_modules import threading
+from types import CodeType, FrameType
+from typing import Dict, Optional, Tuple, Any
+from os.path import basename, splitext
+
+from _pydev_bundle import pydev_log
+from _pydevd_bundle import pydevd_dont_trace
+from _pydevd_bundle.pydevd_constants import (
+ GlobalDebuggerHolder,
+ ForkSafeLock,
+ PYDEVD_IPYTHON_CONTEXT,
+ EXCEPTION_TYPE_USER_UNHANDLED,
+ RETURN_VALUES_DICT,
+ PYTHON_SUSPEND,
+)
+from _pydevd_bundle.pydevd_frame_utils import short_tb, flag_as_unwinding, short_frame
+from pydevd_file_utils import (
+ NORM_PATHS_AND_BASE_CONTAINER,
+ get_abs_path_real_path_and_base_from_file,
+ get_abs_path_real_path_and_base_from_frame,
+)
+from _pydevd_bundle.pydevd_trace_dispatch import should_stop_on_exception, handle_exception
+from _pydevd_bundle.pydevd_constants import EXCEPTION_TYPE_HANDLED
+from _pydevd_bundle.pydevd_trace_dispatch import is_unhandled_exception
+from _pydevd_bundle.pydevd_breakpoints import stop_on_unhandled_exception
+from _pydevd_bundle.pydevd_utils import get_clsname_for_code
+
+# fmt: off
+# IFDEF CYTHON
+# import cython
+# from _pydevd_bundle.pydevd_cython cimport set_additional_thread_info, any_thread_stepping, PyDBAdditionalThreadInfo
+# ELSE
+from _pydevd_bundle.pydevd_additional_thread_info import set_additional_thread_info, any_thread_stepping, PyDBAdditionalThreadInfo
+# ENDIF
+# fmt: on
+
+try:
+ from _pydevd_bundle.pydevd_bytecode_utils import get_smart_step_into_variant_from_frame_offset
+except ImportError:
+
+ def get_smart_step_into_variant_from_frame_offset(*args, **kwargs):
+ return None
+
+
+if hasattr(sys, "monitoring"):
+ DEBUGGER_ID = sys.monitoring.DEBUGGER_ID
+ monitor = sys.monitoring
+
+_thread_local_info = threading.local()
+_get_ident = threading.get_ident
+_thread_active = threading._active # noqa
+
+STATE_SUSPEND: int = 2
+CMD_STEP_INTO: int = 107
+CMD_STEP_OVER: int = 108
+CMD_STEP_OVER_MY_CODE: int = 159
+CMD_STEP_INTO_MY_CODE: int = 144
+CMD_STEP_INTO_COROUTINE: int = 206
+CMD_SMART_STEP_INTO: int = 128
+can_skip: bool = True
+CMD_STEP_RETURN: int = 109
+CMD_STEP_OVER_MY_CODE: int = 159
+CMD_STEP_RETURN_MY_CODE: int = 160
+CMD_SET_BREAK: int = 111
+CMD_SET_FUNCTION_BREAK: int = 208
+STATE_RUN: int = 1
+STATE_SUSPEND: int = 2
+
+IGNORE_EXCEPTION_TAG = re.compile("[^#]*#.*@IgnoreException")
+DEBUG_START = ("pydevd.py", "run")
+DEBUG_START_PY3K = ("_pydev_execfile.py", "execfile")
+TRACE_PROPERTY = "pydevd_traceproperty.py"
+
+_global_notify_skipped_step_in = False
+_global_notify_skipped_step_in_lock = ForkSafeLock()
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _notify_skipped_step_in_because_of_filters(py_db, frame):
+# ELSE
+def _notify_skipped_step_in_because_of_filters(py_db, frame):
+# ENDIF
+# fmt: on
+ global _global_notify_skipped_step_in
+
+ with _global_notify_skipped_step_in_lock:
+ if _global_notify_skipped_step_in:
+ # Check with lock in place (callers should actually have checked
+ # before without the lock in place due to performance).
+ return
+ _global_notify_skipped_step_in = True
+ py_db.notify_skipped_step_in_because_of_filters(frame)
+
+
+# Easy for cython: always get the one at level 0 as that's the caller frame
+# (on Python we have to control the depth to get the first user frame).
+# fmt: off
+# IFDEF CYTHON
+# @cython.cfunc
+# def _getframe(depth=0):
+# return sys._getframe()
+# ELSE
+_getframe = sys._getframe
+# ENDIF
+# fmt: on
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _get_bootstrap_frame(depth):
+# ELSE
+def _get_bootstrap_frame(depth: int) -> Tuple[Optional[FrameType], bool]:
+# ENDIF
+# fmt: on
+ try:
+ return _thread_local_info.f_bootstrap, _thread_local_info.is_bootstrap_frame_internal
+ except:
+ frame = _getframe(depth)
+ f_bootstrap = frame
+ # print('called at', f_bootstrap.f_code.co_name, f_bootstrap.f_code.co_filename, f_bootstrap.f_code.co_firstlineno)
+ is_bootstrap_frame_internal = False
+ while f_bootstrap is not None:
+ filename = f_bootstrap.f_code.co_filename
+ name = splitext(basename(filename))[0]
+
+ if name == "threading":
+ if f_bootstrap.f_code.co_name in ("__bootstrap", "_bootstrap"):
+ # We need __bootstrap_inner, not __bootstrap.
+ return None, False
+
+ elif f_bootstrap.f_code.co_name in ("__bootstrap_inner", "_bootstrap_inner", "is_alive"):
+ # Note: be careful not to use threading.current_thread to avoid creating a dummy thread.
+ is_bootstrap_frame_internal = True
+ break
+
+ elif name == "pydev_monkey":
+ if f_bootstrap.f_code.co_name == "__call__":
+ is_bootstrap_frame_internal = True
+ break
+
+ elif name == "pydevd":
+ if f_bootstrap.f_code.co_name in ("run", "main"):
+ # We need to get to _exec
+ return None, False
+
+ if f_bootstrap.f_code.co_name == "_exec":
+ is_bootstrap_frame_internal = True
+ break
+
+ elif f_bootstrap.f_back is None:
+ break
+
+ f_bootstrap = f_bootstrap.f_back
+
+ if f_bootstrap is not None:
+ _thread_local_info.is_bootstrap_frame_internal = is_bootstrap_frame_internal
+ _thread_local_info.f_bootstrap = f_bootstrap
+ return _thread_local_info.f_bootstrap, _thread_local_info.is_bootstrap_frame_internal
+
+ return f_bootstrap, is_bootstrap_frame_internal
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _is_user_frame(frame: FrameType):
+# ELSE
+def _is_user_frame(frame: FrameType) -> bool:
+# ENDIF
+# fmt: on
+ if frame is None:
+ return False
+
+ filename = frame.f_code.co_filename
+ name = splitext(basename(filename))[0]
+
+ # When the frame is the bootstrap it is not a user frame.
+ if name == "threading":
+ if frame.f_code.co_name in ("__bootstrap", "_bootstrap", "__bootstrap_inner", "_bootstrap_inner", "run"):
+ return False
+
+ elif name == "pydev_monkey":
+ if frame.f_code.co_name == "__call__":
+ return False
+
+ elif name == "pydevd":
+ if frame.f_code.co_name in ("_exec", "run", "main"):
+ return False
+
+ elif name == "pydevd_runpy":
+ if frame.f_code.co_name.startswith(("run", "_run")):
+ return False
+
+ elif filename == "":
+ if frame.f_code.co_name.startswith(("run", "_run")):
+ return False
+
+ elif name == 'runpy':
+ if frame.f_code.co_name.startswith(("run", "_run")):
+ return False
+
+ return True
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _is_last_user_frame(frame: FrameType):
+# ELSE
+def _is_last_user_frame(frame: FrameType) -> bool:
+# ENDIF
+# fmt: on
+ # If this frame is not a user frame, then it can't be the last one
+ if not _is_user_frame(frame):
+ return False
+
+ # If this frame is the last frame, then it is the last one
+ if frame.f_back is None:
+ return True
+
+ # If the next frame is not a user frame, then this frame is the last one
+ if not _is_user_frame(frame.f_back):
+ return True
+
+ # Otherwise if the next frame is a user frame, then this frame is not the last one
+ return False
+
+# fmt: off
+# IFDEF CYTHON
+# cdef class ThreadInfo:
+# cdef unsigned long thread_ident
+# cdef PyDBAdditionalThreadInfo additional_info
+# thread: threading.Thread
+# trace: bool
+# ELSE
+class ThreadInfo:
+ additional_info: PyDBAdditionalThreadInfo
+ thread_ident: int
+ thread: threading.Thread
+ trace: bool
+# ENDIF
+# fmt: on
+
+ # fmt: off
+ # IFDEF CYTHON
+ # def __init__(self, thread, unsigned long thread_ident, bint trace, PyDBAdditionalThreadInfo additional_info):
+ # ELSE
+ def __init__(self, thread: threading.Thread, thread_ident: int, trace: bool, additional_info: PyDBAdditionalThreadInfo):
+ # ENDIF
+ # fmt: on
+ self.thread = thread
+ self.thread_ident = thread_ident
+ self.additional_info = additional_info
+ self.trace = trace
+
+
+class _DeleteDummyThreadOnDel:
+ """
+ Helper class to remove a dummy thread from threading._active on __del__.
+ """
+
+ def __init__(self, dummy_thread):
+ self._dummy_thread = dummy_thread
+ self._tident = dummy_thread.ident
+ # Put the thread on a thread local variable so that when
+ # the related thread finishes this instance is collected.
+ #
+ # Note: no other references to this instance may be created.
+ # If any client code creates a reference to this instance,
+ # the related _DummyThread will be kept forever!
+ _thread_local_info._track_dummy_thread_ref = self
+
+ def __del__(self):
+ with threading._active_limbo_lock:
+ if _thread_active.get(self._tident) is self._dummy_thread:
+ _thread_active.pop(self._tident, None)
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _create_thread_info(depth):
+# cdef unsigned long thread_ident
+# ELSE
+def _create_thread_info(depth):
+# ENDIF
+# fmt: on
+ # Don't call threading.currentThread because if we're too early in the process
+ # we may create a dummy thread.
+ thread_ident = _get_ident()
+
+ f_bootstrap_frame, is_bootstrap_frame_internal = _get_bootstrap_frame(depth + 1)
+ if f_bootstrap_frame is None:
+ return None # Case for threading when it's still in bootstrap or early in pydevd.
+
+ if is_bootstrap_frame_internal:
+ t = None
+ if f_bootstrap_frame.f_code.co_name in ("__bootstrap_inner", "_bootstrap_inner", "is_alive"):
+ # Note: be careful not to use threading.current_thread to avoid creating a dummy thread.
+ t = f_bootstrap_frame.f_locals.get("self")
+ if not isinstance(t, threading.Thread):
+ t = None
+
+ elif f_bootstrap_frame.f_code.co_name in ("_exec", "__call__"):
+ # Note: be careful not to use threading.current_thread to avoid creating a dummy thread.
+ t = f_bootstrap_frame.f_locals.get("t")
+ if not isinstance(t, threading.Thread):
+ t = None
+
+ else:
+ # This means that the first frame is not in threading nor in pydevd.
+ # In practice this means it's some unmanaged thread, so, creating
+ # a dummy thread is ok in this use-case.
+ t = threading.current_thread()
+
+ if t is None:
+ t = _thread_active.get(thread_ident)
+
+ if isinstance(t, threading._DummyThread):
+ _thread_local_info._ref = _DeleteDummyThreadOnDel(t)
+
+ if t is None:
+ return None
+
+ if getattr(t, "is_pydev_daemon_thread", False):
+ return ThreadInfo(t, thread_ident, False, None)
+ else:
+ try:
+ additional_info = t.additional_info
+ if additional_info is None:
+ raise AttributeError()
+ except:
+ additional_info = set_additional_thread_info(t)
+ return ThreadInfo(t, thread_ident, True, additional_info)
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef class FuncCodeInfo:
+# cdef str co_filename
+# cdef str canonical_normalized_filename
+# cdef str abs_path_filename
+# cdef bint always_skip_code
+# cdef bint breakpoint_found
+# cdef bint function_breakpoint_found
+# cdef bint plugin_line_breakpoint_found
+# cdef bint plugin_call_breakpoint_found
+# cdef bint plugin_line_stepping
+# cdef bint plugin_call_stepping
+# cdef bint plugin_return_stepping
+# cdef int pydb_mtime
+# cdef dict bp_line_to_breakpoint
+# cdef object function_breakpoint
+# cdef bint always_filtered_out
+# cdef bint filtered_out_force_checked
+# cdef object try_except_container_obj
+# cdef object code_obj
+# cdef str co_name
+# ELSE
+class FuncCodeInfo:
+# ENDIF
+# fmt: on
+ def __init__(self):
+ self.co_filename: str = ""
+ self.canonical_normalized_filename: str = ""
+ self.abs_path_filename: str = ""
+
+ # These is never seen and we never stop, even if it's a callback coming
+ # from user code (these are completely invisible to the debugging tracing).
+ self.always_skip_code: bool = False
+
+ self.breakpoint_found: bool = False
+ self.function_breakpoint_found: bool = False
+
+ # A plugin can choose whether to stop on function calls or line events.
+ self.plugin_line_breakpoint_found: bool = False
+ self.plugin_call_breakpoint_found: bool = False
+
+ self.plugin_line_stepping: bool = False
+ self.plugin_call_stepping: bool = False
+ self.plugin_return_stepping: bool = False
+
+ # When pydb_mtime != PyDb.mtime the validity of breakpoints have
+ # to be re-evaluated (if invalid a new FuncCodeInfo must be created and
+ # tracing can't be disabled for the related frames).
+ self.pydb_mtime: int = -1
+
+ self.bp_line_to_breakpoint: Dict[int, Any] = {}
+ self.function_breakpoint = None
+
+ # This means some file is globally filtered out during debugging. Note
+ # that we may still need to pause in it (in a step return to user code,
+ # we may need to track this one).
+ self.always_filtered_out: bool = False
+
+ # This should be used to filter code in a CMD_STEP_INTO_MY_CODE
+ # (and other XXX_MY_CODE variants).
+ self.filtered_out_force_checked: bool = False
+
+ self.try_except_container_obj: Optional[_TryExceptContainerObj] = None
+ self.code_obj: CodeType = None
+ self.co_name: str = ""
+
+ def get_line_of_offset(self, offset):
+ for start, end, line in self.code_obj.co_lines():
+ if offset >= start and offset <= end:
+ return line
+ return -1
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _get_thread_info(bint create, int depth):
+# ELSE
+def _get_thread_info(create: bool, depth: int) -> Optional[ThreadInfo]:
+# ENDIF
+# fmt: on
+ """
+ Provides thread-related info.
+
+ May return None if the thread is still not active.
+ """
+ try:
+ # Note: changing to a `dict[thread.ident] = thread_info` had almost no
+ # effect in the performance.
+ return _thread_local_info.thread_info
+ except:
+ if not create:
+ return None
+ thread_info = _create_thread_info(depth + 1)
+ if thread_info is None:
+ return None
+
+ _thread_local_info.thread_info = thread_info
+ return _thread_local_info.thread_info
+
+
+_CodeLineInfo = namedtuple("_CodeLineInfo", "line_to_offset, first_line, last_line")
+
+
+# Note: this method has a version in cython too
+# fmt: off
+# IFDEF CYTHON
+# cdef _get_code_line_info(code_obj, _cache={}):
+# ELSE
+def _get_code_line_info(code_obj, _cache={}):
+# ENDIF
+# fmt: on
+ try:
+ return _cache[code_obj]
+ except:
+ line_to_offset = {}
+ first_line = None
+ last_line = None
+
+ for offset, line in dis.findlinestarts(code_obj):
+ line_to_offset[line] = offset
+
+ if line_to_offset:
+ first_line = min(line_to_offset)
+ last_line = max(line_to_offset)
+ ret = _CodeLineInfo(line_to_offset, first_line, last_line)
+ _cache[code_obj] = ret
+ return ret
+
+
+_code_to_func_code_info_cache: Dict[CodeType, "FuncCodeInfo"] = {}
+
+
+# fmt: off
+# IFDEF CYTHON
+# cpdef FuncCodeInfo _get_func_code_info(code_obj, frame_or_depth):
+# cdef FuncCodeInfo func_code_info
+# ELSE
+def _get_func_code_info(code_obj, frame_or_depth) -> FuncCodeInfo:
+# ENDIF
+# fmt: on
+ """
+ Provides code-object related info.
+
+ Note that it contains informations on the breakpoints for a given function.
+ If breakpoints change a new FuncCodeInfo instance will be created.
+
+ Note that this can be called by any thread.
+ """
+ py_db = GlobalDebuggerHolder.global_dbg
+ if py_db is None:
+ return None
+
+ func_code_info = _code_to_func_code_info_cache.get(code_obj)
+ if func_code_info is not None:
+ if func_code_info.pydb_mtime == py_db.mtime:
+ # if DEBUG:
+ # print('_get_func_code_info: matched mtime', key, code_obj)
+ return func_code_info
+
+ # fmt: off
+ # IFDEF CYTHON
+ # cdef dict cache_file_type
+ # cdef tuple cache_file_type_key
+ # cdef PyCodeObject * code
+ # cdef str co_filename
+ # cdef str co_name
+ # code = code_obj
+ # co_filename = code.co_filename
+ # co_name = code.co_name
+ # ELSE
+ cache_file_type: dict
+ cache_file_type_key: tuple
+ code = code_obj
+ co_filename: str = code.co_filename
+ co_name: str = code.co_name
+ # ENDIF
+ # fmt: on
+
+ # print('_get_func_code_info: new (mtime did not match)', key, code_obj)
+
+ func_code_info = FuncCodeInfo()
+ func_code_info.code_obj = code_obj
+ code_line_info = _get_code_line_info(code_obj)
+ line_to_offset = code_line_info.line_to_offset
+ func_code_info.pydb_mtime = py_db.mtime
+
+ func_code_info.co_filename = co_filename
+ func_code_info.co_name = co_name
+
+ # Compute whether to always skip this.
+ try:
+ abs_path_real_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[co_filename]
+ except:
+ abs_path_real_path_and_base = get_abs_path_real_path_and_base_from_file(co_filename)
+
+ func_code_info.abs_path_filename = abs_path_real_path_and_base[0]
+ func_code_info.canonical_normalized_filename = abs_path_real_path_and_base[1]
+
+ frame = None
+ cache_file_type = py_db.get_cache_file_type()
+ # Note: this cache key must be the same from PyDB.get_file_type() -- see it for comments
+ # on the cache.
+ cache_file_type_key = (code.co_firstlineno, abs_path_real_path_and_base[0], code_obj)
+ try:
+ file_type = cache_file_type[cache_file_type_key] # Make it faster
+ except:
+ if frame is None:
+ if frame_or_depth.__class__ == int:
+ frame = _getframe(frame_or_depth + 1)
+ else:
+ frame = frame_or_depth
+ assert frame.f_code is code_obj, "%s != %s" % (frame.f_code, code_obj)
+
+ file_type = py_db.get_file_type(frame, abs_path_real_path_and_base) # we don't want to debug anything related to pydevd
+
+ if file_type is not None:
+ func_code_info.always_skip_code = True
+ func_code_info.always_filtered_out = True
+ _code_to_func_code_info_cache[code_obj] = func_code_info
+ return func_code_info
+
+ # still not set, check for dont trace comments.
+ if pydevd_dont_trace.should_trace_hook is not None:
+ # I.e.: cache the result skip (no need to evaluate the same frame multiple times).
+ # Note that on a code reload, we won't re-evaluate this because in practice, the frame.f_code
+ # Which will be handled by this frame is read-only, so, we can cache it safely.
+ if not pydevd_dont_trace.should_trace_hook(code_obj, func_code_info.abs_path_filename):
+ if frame is None:
+ if frame_or_depth.__class__ == int:
+ frame = _getframe(frame_or_depth + 1)
+ else:
+ frame = frame_or_depth
+ assert frame.f_code is code_obj
+
+ func_code_info.always_filtered_out = True
+ _code_to_func_code_info_cache[code_obj] = func_code_info
+ return func_code_info
+
+ if frame is None:
+ if frame_or_depth.__class__ == int:
+ frame = _getframe(frame_or_depth + 1)
+ else:
+ frame = frame_or_depth
+ assert frame.f_code is code_obj
+
+ func_code_info.filtered_out_force_checked = py_db.apply_files_filter(frame, func_code_info.abs_path_filename, True)
+
+ if py_db.is_files_filter_enabled:
+ func_code_info.always_filtered_out = func_code_info.filtered_out_force_checked
+ if func_code_info.always_filtered_out:
+ _code_to_func_code_info_cache[code_obj] = func_code_info
+ return func_code_info
+
+ else:
+ func_code_info.always_filtered_out = False
+
+ # Handle regular breakpoints
+ breakpoints: dict = py_db.breakpoints.get(func_code_info.canonical_normalized_filename)
+ function_breakpoint: object = py_db.function_breakpoint_name_to_breakpoint.get(func_code_info.co_name)
+ # print('\n---')
+ # print(py_db.breakpoints)
+ # print(func_code_info.canonical_normalized_filename)
+ # print(py_db.breakpoints.get(func_code_info.canonical_normalized_filename))
+ if function_breakpoint:
+ # Go directly into tracing mode
+ func_code_info.function_breakpoint_found = True
+ func_code_info.function_breakpoint = function_breakpoint
+
+ if breakpoints:
+ # if DEBUG:
+ # print('found breakpoints', code_obj_py.co_name, breakpoints)
+
+ bp_line_to_breakpoint = {}
+
+ for breakpoint_line, bp in breakpoints.items():
+ if breakpoint_line in line_to_offset:
+ bp_line_to_breakpoint[breakpoint_line] = bp
+
+ func_code_info.breakpoint_found = bool(bp_line_to_breakpoint)
+ func_code_info.bp_line_to_breakpoint = bp_line_to_breakpoint
+
+ if py_db.plugin:
+ plugin_manager = py_db.plugin
+ is_tracked_frame = plugin_manager.is_tracked_frame(frame)
+
+ if is_tracked_frame:
+ if py_db.has_plugin_line_breaks:
+ required_events_breakpoint = plugin_manager.required_events_breakpoint()
+ func_code_info.plugin_line_breakpoint_found = "line" in required_events_breakpoint
+ func_code_info.plugin_call_breakpoint_found = "call" in required_events_breakpoint
+
+ required_events_stepping = plugin_manager.required_events_stepping()
+ func_code_info.plugin_line_stepping: bool = "line" in required_events_stepping
+ func_code_info.plugin_call_stepping: bool = "call" in required_events_stepping
+ func_code_info.plugin_return_stepping: bool = "return" in required_events_stepping
+
+ _code_to_func_code_info_cache[code_obj] = func_code_info
+ return func_code_info
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _enable_line_tracing(code):
+# ELSE
+def _enable_line_tracing(code):
+# ENDIF
+# fmt: on
+ # print('enable line tracing', code)
+ _ensure_monitoring()
+ events = monitor.get_local_events(DEBUGGER_ID, code)
+ monitor.set_local_events(DEBUGGER_ID, code, events | monitor.events.LINE | monitor.events.JUMP)
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _enable_return_tracing(code):
+# ELSE
+def _enable_return_tracing(code):
+# ENDIF
+# fmt: on
+ # print('enable return tracing', code)
+ _ensure_monitoring()
+ events = monitor.get_local_events(DEBUGGER_ID, code)
+ monitor.set_local_events(DEBUGGER_ID, code, events | monitor.events.PY_RETURN)
+
+
+# fmt: off
+# IFDEF CYTHON
+# cpdef disable_code_tracing(code):
+# ELSE
+def disable_code_tracing(code):
+# ENDIF
+# fmt: on
+ _ensure_monitoring()
+ monitor.set_local_events(DEBUGGER_ID, code, 0)
+
+
+# fmt: off
+# IFDEF CYTHON
+# cpdef enable_code_tracing(unsigned long thread_ident, code, frame):
+# ELSE
+def enable_code_tracing(thread_ident: Optional[int], code, frame) -> bool:
+# ENDIF
+# fmt: on
+ """
+ Note: this must enable code tracing for the given code/frame.
+
+ The frame can be from any thread!
+
+ :return: Whether code tracing was added in this function to the given code.
+ """
+ # DEBUG = False # 'my_code.py' in code.co_filename or 'other.py' in code.co_filename
+ # if DEBUG:
+ # print('==== enable code tracing', code.co_filename[-30:], code.co_name)
+ py_db: object = GlobalDebuggerHolder.global_dbg
+ if py_db is None or py_db.pydb_disposed:
+ return False
+
+ func_code_info: FuncCodeInfo = _get_func_code_info(code, frame)
+ if func_code_info.always_skip_code:
+ # if DEBUG:
+ # print('disable (always skip)')
+ return False
+
+ try:
+ thread = threading._active.get(thread_ident)
+ if thread is None:
+ return False
+ additional_info = set_additional_thread_info(thread)
+ except:
+ # Cannot set based on stepping
+ return False
+
+ return _enable_code_tracing(py_db, additional_info, func_code_info, code, frame, False)
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef bint _enable_code_tracing(py_db, PyDBAdditionalThreadInfo additional_info, FuncCodeInfo func_code_info, code, frame, bint warn_on_filtered_out):
+# cdef int step_cmd
+# cdef bint is_stepping
+# cdef bint code_tracing_added
+# ELSE
+def _enable_code_tracing(py_db, additional_info, func_code_info: FuncCodeInfo, code, frame, warn_on_filtered_out) -> bool:
+# ENDIF
+# fmt: on
+ """
+ :return: Whether code tracing was added in this function to the given code.
+ """
+ # DEBUG = False # 'my_code.py' in code.co_filename or 'other.py' in code.co_filename
+ step_cmd = additional_info.pydev_step_cmd
+ is_stepping = step_cmd != -1
+ code_tracing_added = False
+
+ if func_code_info.always_filtered_out:
+ # if DEBUG:
+ # print('disable (always filtered out)')
+ if (
+ warn_on_filtered_out
+ and is_stepping
+ and additional_info.pydev_original_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE)
+ and not _global_notify_skipped_step_in
+ ):
+ _notify_skipped_step_in_because_of_filters(py_db, frame)
+
+ if is_stepping:
+ # Tracing may be needed for return value
+ _enable_step_tracing(py_db, code, step_cmd, additional_info, frame)
+ code_tracing_added = True
+ return code_tracing_added
+
+ if func_code_info.breakpoint_found or func_code_info.plugin_line_breakpoint_found:
+ _enable_line_tracing(code)
+ code_tracing_added = True
+
+ if is_stepping:
+ _enable_step_tracing(py_db, code, step_cmd, additional_info, frame)
+ code_tracing_added = True
+
+ return code_tracing_added
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _enable_step_tracing(py_db, code, step_cmd, PyDBAdditionalThreadInfo info, frame):
+# ELSE
+def _enable_step_tracing(py_db, code, step_cmd, info, frame):
+# ENDIF
+# fmt: on
+ if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO):
+ # Stepping (must have line/return tracing enabled).
+ _enable_line_tracing(code)
+ _enable_return_tracing(code)
+
+ elif step_cmd in (CMD_STEP_RETURN, CMD_STEP_RETURN_MY_CODE) and _is_same_frame(info, info.pydev_step_stop, frame):
+ _enable_return_tracing(code)
+
+ elif step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE):
+ if _is_same_frame(info, info.pydev_step_stop, frame):
+ _enable_line_tracing(code)
+
+ # Wee need to enable return tracing because if we have a return during a step over
+ # we need to stop too.
+ _enable_return_tracing(code)
+ elif py_db.show_return_values and _is_same_frame(info, info.pydev_step_stop, frame.f_back):
+ # Show return values on step over.
+ _enable_return_tracing(code)
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef class _TryExceptContainerObj:
+# cdef list try_except_infos
+# ELSE
+class _TryExceptContainerObj:
+# ENDIF
+# fmt: on
+ """
+ A dumb container object just to contain the try..except info when needed. Meant to be
+ persistent among multiple PyDBFrames to the same code object.
+ """
+
+ # fmt: off
+ # IFDEF CYTHON
+ # def __init__(self, list try_except_infos):
+ # self.try_except_infos = try_except_infos
+ # ELSE
+ def __init__(self, try_except_infos):
+ self.try_except_infos = try_except_infos
+
+ # ENDIF
+ # fmt: on
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _unwind_event(code, instruction, exc):
+# cdef ThreadInfo thread_info
+# cdef FuncCodeInfo func_code_info
+# ELSE
+def _unwind_event(code, instruction, exc):
+# ENDIF
+# fmt: on
+ try:
+ thread_info = _thread_local_info.thread_info
+ except:
+ thread_info = _get_thread_info(True, 1)
+ if thread_info is None:
+ return
+
+ frame = _getframe(1)
+ arg = (type(exc), exc, exc.__traceback__)
+
+ py_db: object = GlobalDebuggerHolder.global_dbg
+ if py_db is None or py_db.pydb_disposed:
+ return
+
+ if not thread_info.trace or thread_info.thread._is_stopped:
+ # For thread-related stuff we can't disable the code tracing because other
+ # threads may still want it...
+ return
+
+ func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ if func_code_info.always_skip_code:
+ return
+
+ # print('_unwind_event', code, exc)
+
+ has_caught_exception_breakpoint_in_pydb = (
+ py_db.break_on_caught_exceptions or py_db.break_on_user_uncaught_exceptions or py_db.has_plugin_exception_breaks
+ )
+
+
+ if has_caught_exception_breakpoint_in_pydb:
+ _should_stop, frame, user_uncaught_exc_info = should_stop_on_exception(
+ py_db, thread_info.additional_info, frame, thread_info.thread, arg, None
+ )
+ if user_uncaught_exc_info:
+ # TODO: Check: this may no longer be needed as in the unwind we know it's
+ # an exception bubbling up (wait for all tests to pass to check it).
+ if func_code_info.try_except_container_obj is None:
+ container_obj = _TryExceptContainerObj(py_db.collect_try_except_info(frame.f_code))
+ func_code_info.try_except_container_obj = container_obj
+
+ is_unhandled = is_unhandled_exception(
+ func_code_info.try_except_container_obj, py_db, frame, user_uncaught_exc_info[1], user_uncaught_exc_info[2]
+ )
+
+ if is_unhandled:
+ # print('stop in user uncaught')
+ handle_exception(py_db, thread_info.thread, frame, user_uncaught_exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
+ return
+
+ break_on_uncaught_exceptions = py_db.break_on_uncaught_exceptions
+ if break_on_uncaught_exceptions and _is_last_user_frame(frame):
+ stop_on_unhandled_exception(py_db, thread_info.thread, thread_info.additional_info, arg)
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _raise_event(code, instruction, exc):
+# cdef ThreadInfo thread_info
+# cdef FuncCodeInfo func_code_info
+# ELSE
+def _raise_event(code, instruction, exc):
+# ENDIF
+# fmt: on
+ """
+ The way this should work is the following: when the user is using
+ pydevd to do the launch and we're on a managed stack, we should consider
+ unhandled only if it gets into a pydevd. If it's a thread, if it stops
+ inside the threading and if it's an unmanaged thread (i.e.: QThread)
+ then stop if it doesn't have a back frame.
+
+ Note: unlike other events, this one is global and not per-code (so,
+ it cannot be individually enabled/disabled for a given code object).
+ """
+ try:
+ thread_info = _thread_local_info.thread_info
+ except:
+ thread_info = _get_thread_info(True, 1)
+ if thread_info is None:
+ return
+
+ frame = _getframe(1)
+ arg = (type(exc), exc, exc.__traceback__)
+
+ py_db: object = GlobalDebuggerHolder.global_dbg
+ if py_db is None or py_db.pydb_disposed:
+ return
+
+ if not thread_info.trace or thread_info.thread._is_stopped:
+ # For thread-related stuff we can't disable the code tracing because other
+ # threads may still want it...
+ return
+
+ func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ if func_code_info.always_skip_code:
+ return
+
+ # print('_raise_event --- ', code, exc)
+
+ # Compute the previous exception info (if any). We use it to check if the exception
+ # should be stopped
+ prev_exc_info = _thread_local_info._user_uncaught_exc_info if hasattr(_thread_local_info, "_user_uncaught_exc_info") else None
+ should_stop, frame, _user_uncaught_exc_info = should_stop_on_exception(
+ py_db, thread_info.additional_info, frame, thread_info.thread, arg, prev_exc_info
+ )
+
+ # Save the current exception info for the next raise event.
+ _thread_local_info._user_uncaught_exc_info = _user_uncaught_exc_info
+
+ # print('!!!! should_stop (in raise)', should_stop)
+ if should_stop:
+ handle_exception(py_db, thread_info.thread, frame, arg, EXCEPTION_TYPE_HANDLED)
+
+ # Once we leave the raise event, we are no longer in the state of 'just_raised', so
+ # indicate that this traceback is for an exception in the unwinding state
+ flag_as_unwinding(exc.__traceback__)
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef str get_func_name(frame):
+# cdef str func_name
+# ELSE
+def get_func_name(frame):
+# ENDIF
+# fmt: on
+ code_obj = frame.f_code
+ func_name = code_obj.co_name
+ try:
+ cls_name = get_clsname_for_code(code_obj, frame)
+ if cls_name is not None:
+ return "%s.%s" % (cls_name, func_name)
+ else:
+ return func_name
+ except:
+ pydev_log.exception()
+ return func_name
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _show_return_values(frame, arg):
+# ELSE
+def _show_return_values(frame, arg):
+# ENDIF
+# fmt: on
+ try:
+ try:
+ f_locals_back = getattr(frame.f_back, "f_locals", None)
+ if f_locals_back is not None:
+ return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None)
+ if return_values_dict is None:
+ return_values_dict = {}
+ f_locals_back[RETURN_VALUES_DICT] = return_values_dict
+ name = get_func_name(frame)
+ return_values_dict[name] = arg
+ except:
+ pydev_log.exception()
+ finally:
+ f_locals_back = None
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _remove_return_values(py_db, frame):
+# ELSE
+def _remove_return_values(py_db, frame):
+# ENDIF
+# fmt: on
+ try:
+ try:
+ # Showing return values was turned off, we should remove them from locals dict.
+ # The values can be in the current frame or in the back one
+ frame.f_locals.pop(RETURN_VALUES_DICT, None)
+
+ f_locals_back = getattr(frame.f_back, "f_locals", None)
+ if f_locals_back is not None:
+ f_locals_back.pop(RETURN_VALUES_DICT, None)
+ except:
+ pydev_log.exception()
+ finally:
+ f_locals_back = None
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _return_event(code, instruction, retval):
+# cdef ThreadInfo thread_info
+# cdef FuncCodeInfo func_code_info
+# cdef PyDBAdditionalThreadInfo info
+# cdef int step_cmd
+# ELSE
+def _return_event(code, instruction, retval):
+# ENDIF
+# fmt: on
+ try:
+ thread_info = _thread_local_info.thread_info
+ except:
+ thread_info = _get_thread_info(True, 1)
+ if thread_info is None:
+ return
+
+ py_db: object = GlobalDebuggerHolder.global_dbg
+ if py_db is None or py_db.pydb_disposed:
+ return monitor.DISABLE
+
+ if not thread_info.trace or thread_info.thread._is_stopped:
+ # For thread-related stuff we can't disable the code tracing because other
+ # threads may still want it...
+ return
+
+ func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ if func_code_info.always_skip_code:
+ return monitor.DISABLE
+
+ info = thread_info.additional_info
+
+ # We know the frame depth.
+ frame = _getframe(1)
+
+ step_cmd = info.pydev_step_cmd
+ if step_cmd == -1:
+ return
+
+ if info.suspend_type != PYTHON_SUSPEND:
+ # Plugin stepping
+ if func_code_info.plugin_return_stepping:
+ _plugin_stepping(py_db, step_cmd, "return", frame, thread_info)
+ return
+
+ # Python line stepping
+ stop_frame = info.pydev_step_stop
+ if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE):
+ force_check_project_scope = step_cmd == CMD_STEP_INTO_MY_CODE
+ if frame.f_back is not None and not info.pydev_use_scoped_step_frame:
+ back_func_code_info = _get_func_code_info(frame.f_back.f_code, frame.f_back)
+ if (
+ # Not filtered out.
+ not back_func_code_info.always_skip_code
+ and not back_func_code_info.always_filtered_out
+ and not (force_check_project_scope and back_func_code_info.filtered_out_force_checked)
+ # Prevent stopping in a return to the same location we were initially
+ # (i.e.: double-stop at the same place due to some filtering).
+ and info.step_in_initial_location != (frame.f_back, frame.f_back.f_lineno)
+ ):
+ if py_db.show_return_values:
+ _show_return_values(frame, retval)
+
+ _stop_on_return(py_db, thread_info, info, step_cmd, frame, retval)
+ return
+
+ if step_cmd in (CMD_STEP_RETURN, CMD_STEP_RETURN_MY_CODE) and _is_same_frame(info, stop_frame, frame):
+ if py_db.show_return_values:
+ _show_return_values(frame, retval)
+
+ _stop_on_return(py_db, thread_info, info, step_cmd, frame, retval)
+ return
+
+ elif (
+ step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE)
+ and not info.pydev_use_scoped_step_frame
+ and _is_same_frame(info, stop_frame, frame)
+ ):
+ # This isn't in the sys.settrace version: on a step over, if we return and the return is valid, show
+ # as a step return instead of going back to step into mode (but if the back frame is not valid, then
+ # go to step into mode).
+ f_back = frame.f_back
+ if f_back is not None:
+ back_func_code_info = _get_func_code_info(f_back.f_code, 2)
+ force_check_project_scope = step_cmd == CMD_STEP_OVER_MY_CODE
+
+ if (
+ back_func_code_info is not None
+ and not back_func_code_info.always_skip_code
+ and not back_func_code_info.always_filtered_out
+ and not (force_check_project_scope and back_func_code_info.filtered_out_force_checked)
+ ):
+ if py_db.show_return_values:
+ _show_return_values(frame, retval)
+
+ _stop_on_return(py_db, thread_info, info, step_cmd, frame, retval)
+ return
+
+ elif step_cmd == CMD_SMART_STEP_INTO:
+ if _is_same_frame(info, stop_frame, frame):
+ # We're exiting the smart step into initial frame (so, we probably didn't find our target).
+ if py_db.show_return_values:
+ _show_return_values(frame, retval)
+
+ _stop_on_return(py_db, thread_info, info, step_cmd, frame, retval)
+ return
+
+ if py_db.show_return_values:
+ if (
+ (
+ info.pydev_step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE, CMD_SMART_STEP_INTO)
+ and (_is_same_frame(info, stop_frame, frame.f_back))
+ )
+ or (info.pydev_step_cmd in (CMD_STEP_RETURN, CMD_STEP_RETURN_MY_CODE) and (info, _is_same_frame(info, stop_frame, frame)))
+ or (info.pydev_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_COROUTINE))
+ or (
+ info.pydev_step_cmd == CMD_STEP_INTO_MY_CODE
+ and frame.f_back is not None
+ and not py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)
+ )
+ ):
+ _show_return_values(frame, retval)
+
+ if step_cmd in (CMD_STEP_OVER, CMD_STEP_RETURN, CMD_STEP_OVER_MY_CODE, CMD_STEP_RETURN_MY_CODE, CMD_SMART_STEP_INTO):
+ # If we are in single step mode and something causes us to exit the current frame, we need to make sure we break
+ # eventually. Force the step mode to step into and the step stop frame to None.
+ # I.e.: F6 in the end of a function should stop in the next possible position (instead of forcing the user
+ # to make a step in or step over at that location).
+ # Note: this is especially troublesome when we're skipping code with the
+ # @DontTrace comment.
+ stop_frame = info.pydev_step_stop
+ if stop_frame is frame and not info.pydev_use_scoped_step_frame:
+ if step_cmd in (CMD_STEP_OVER, CMD_STEP_RETURN, CMD_SMART_STEP_INTO):
+ info.pydev_step_cmd = CMD_STEP_INTO
+ else:
+ info.pydev_step_cmd = CMD_STEP_INTO_MY_CODE
+ info.pydev_step_stop = None
+ _enable_code_tracing_for_frame_and_parents(thread_info, stop_frame.f_back)
+ if py_db.show_return_values:
+ _show_return_values(frame, retval)
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _enable_code_tracing_for_frame_and_parents(ThreadInfo thread_info, frame):
+# cdef FuncCodeInfo func_code_info
+# ELSE
+def _enable_code_tracing_for_frame_and_parents(thread_info, frame):
+# ENDIF
+# fmt: on
+ py_db: object = GlobalDebuggerHolder.global_dbg
+ if py_db is None or py_db.pydb_disposed:
+ return
+
+ while frame is not None:
+ func_code_info: FuncCodeInfo = _get_func_code_info(frame.f_code, frame)
+ if func_code_info.always_skip_code:
+ frame = frame.f_back
+ continue
+
+ _enable_code_tracing(py_db, thread_info.additional_info, func_code_info, frame.f_code, frame, False)
+ frame = frame.f_back
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _stop_on_return(py_db, ThreadInfo thread_info, PyDBAdditionalThreadInfo info, int step_cmd, frame, retval):
+# ELSE
+def _stop_on_return(py_db, thread_info, info, step_cmd, frame, retval):
+# ENDIF
+# fmt: on
+ back = frame.f_back
+ if back is not None:
+ # When we get to the pydevd run function, the debugging has actually finished for the main thread
+ # (note that it can still go on for other threads, but for this one, we just make it finish)
+ # So, just setting it to None should be OK
+ back_absolute_filename, _, base = get_abs_path_real_path_and_base_from_frame(back)
+ if (base, back.f_code.co_name) in (DEBUG_START, DEBUG_START_PY3K):
+ back = None
+
+ elif base == TRACE_PROPERTY:
+ # We dont want to trace the return event of pydevd_traceproperty (custom property for debugging)
+ # if we're in a return, we want it to appear to the user in the previous frame!
+ return
+
+ elif pydevd_dont_trace.should_trace_hook is not None:
+ if not pydevd_dont_trace.should_trace_hook(back.f_code, back_absolute_filename):
+ # In this case, we'll have to skip the previous one because it shouldn't be traced.
+ # Also, we have to reset the tracing, because if the parent's parent (or some
+ # other parent) has to be traced and it's not currently, we wouldn't stop where
+ # we should anymore (so, a step in/over/return may not stop anywhere if no parent is traced).
+ # Related test: _debugger_case17a.py
+ py_db.set_trace_for_frame_and_parents(thread_info.thread_ident, back)
+ return
+
+ if back is not None:
+ # if we're in a return, we want it to appear to the user in the previous frame!
+ py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ _do_wait_suspend(py_db, thread_info, back, "return", retval)
+ else:
+ # in jython we may not have a back frame
+ info.pydev_step_stop = None
+ info.pydev_original_step_cmd = -1
+ info.pydev_step_cmd = -1
+ info.pydev_state = STATE_RUN
+ info.update_stepping_info()
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _stop_on_breakpoint(py_db, ThreadInfo thread_info, int stop_reason, bp, frame, new_frame, bint stop, bint stop_on_plugin_breakpoint, str bp_type):
+# cdef PyDBAdditionalThreadInfo additional_info
+# ELSE
+def _stop_on_breakpoint(
+ py_db, thread_info: ThreadInfo, stop_reason: int, bp, frame, new_frame, stop: bool, stop_on_plugin_breakpoint: bool, bp_type: str
+):
+# ENDIF
+# fmt: on
+ """
+ :param bp: the breakpoint hit (additional conditions will be checked now).
+ :param frame: the actual frame
+ :param new_frame: either the actual frame or the frame provided by the plugins.
+ :param stop: whether we should do a regular line breakpoint.
+ :param stop_on_plugin_breakpoint: whether we should stop in a plugin breakpoint.
+
+ :return:
+ True if the breakpoint was suspended inside this function and False otherwise.
+ Note that even if False is returned, it's still possible
+ """
+ additional_info = thread_info.additional_info
+ # ok, hit breakpoint, now, we have to discover if it is a conditional breakpoint
+ # lets do the conditional stuff here
+ if bp.expression is not None:
+ # If it has an expression, it's always handled even if we don't stop.
+ py_db.handle_breakpoint_expression(bp, additional_info, new_frame)
+
+ if stop or stop_on_plugin_breakpoint:
+ if bp.has_condition:
+ eval_result = py_db.handle_breakpoint_condition(additional_info, bp, new_frame)
+ if not eval_result:
+ stop = False
+ stop_on_plugin_breakpoint = False
+
+ # Handle logpoint (on a logpoint we should never stop).
+ if (stop or stop_on_plugin_breakpoint) and bp.is_logpoint:
+ stop = False
+ stop_on_plugin_breakpoint = False
+
+ if additional_info.pydev_message is not None and len(additional_info.pydev_message) > 0:
+ cmd = py_db.cmd_factory.make_io_message(additional_info.pydev_message + os.linesep, "1")
+ py_db.writer.add_command(cmd)
+
+ if stop:
+ py_db.set_suspend(
+ thread_info.thread,
+ stop_reason,
+ suspend_other_threads=bp and bp.suspend_policy == "ALL",
+ )
+ # print('suspend on breakpoint...')
+ _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ return True
+
+ elif stop_on_plugin_breakpoint:
+ stop_at_frame = py_db.plugin.suspend(py_db, thread_info.thread, frame, bp_type)
+ if stop_at_frame and thread_info.additional_info.pydev_state == STATE_SUSPEND:
+ _do_wait_suspend(py_db, thread_info, stop_at_frame, "line", None)
+ return
+
+ return False
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _plugin_stepping(py_db, int step_cmd, event, frame, ThreadInfo thread_info):
+# cdef bint stop
+# cdef dict stop_info
+# ELSE
+def _plugin_stepping(py_db, step_cmd, event, frame, thread_info):
+# ENDIF
+# fmt: on
+ plugin_manager = py_db.plugin
+ # Step return makes no sense for plugins (I guess?!?), so, just handle as step into.
+ if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or step_cmd in (
+ CMD_STEP_RETURN,
+ CMD_STEP_RETURN_MY_CODE,
+ ):
+ stop_info = {}
+ stop = False
+ result = plugin_manager.cmd_step_into(py_db, frame, event, thread_info.additional_info, thread_info.thread, stop_info, stop)
+ if result:
+ stop, plugin_stop = result
+ if plugin_stop:
+ plugin_manager.stop(py_db, frame, event, thread_info.thread, stop_info, None, step_cmd)
+ return
+
+ elif step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE):
+ if plugin_manager is not None:
+ stop_info = {}
+ stop = False
+ result = plugin_manager.cmd_step_over(py_db, frame, event, thread_info.additional_info, thread_info.thread, stop_info, stop)
+ if result:
+ stop, plugin_stop = result
+ if plugin_stop:
+ plugin_manager.stop(py_db, frame, event, thread_info.thread, stop_info, None, step_cmd)
+ return
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _jump_event(code, int from_offset, int to_offset):
+# cdef ThreadInfo thread_info
+# cdef FuncCodeInfo func_code_info
+# cdef int from_line
+# cdef int to_line
+# ELSE
+def _jump_event(code, from_offset, to_offset):
+# ENDIF
+# fmt: on
+ # A bunch of things have to be repeated especially because in the sys.monitoring
+ # everything is global, yet, when we start tracing something for stepping that
+ # needs to be per-thread.
+ try:
+ thread_info = _thread_local_info.thread_info
+ except:
+ thread_info = _get_thread_info(True, 1)
+ if thread_info is None:
+ return
+
+ py_db: object = GlobalDebuggerHolder.global_dbg
+ if py_db is None or py_db.pydb_disposed:
+ return monitor.DISABLE
+
+ if not thread_info.trace or thread_info.thread._is_stopped:
+ # For thread-related stuff we can't disable the code tracing because other
+ # threads may still want it...
+ return
+
+ func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ if func_code_info.always_skip_code or func_code_info.always_filtered_out:
+ return monitor.DISABLE
+
+ # Same logic as "sys_trace_jump_func" in https://github.com/python/cpython/blob/main/Python/legacy_tracing.c
+
+ # Ignore forward jump.
+ # print('jump event', code.co_name, 'from offset', from_offset, 'to offset', to_offset)
+ if to_offset > from_offset:
+ return monitor.DISABLE
+
+ from_line = func_code_info.get_line_of_offset(from_offset)
+ to_line = func_code_info.get_line_of_offset(to_offset)
+ # print('jump event', code.co_name, 'from line', from_line, 'to line', to_line)
+
+ if from_line != to_line:
+ # I.e.: use case: "yield from [j for j in a if j % 2 == 0]"
+ return monitor.DISABLE
+
+ # We know the frame depth.
+ frame = _getframe(1)
+
+ # Disable the next line event as we're jumping to a line. The line event will be redundant.
+ _thread_local_info.f_disable_next_line_if_match = frame.f_lineno
+
+ return _internal_line_event(func_code_info, frame, frame.f_lineno)
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _line_event(code, int line):
+# cdef ThreadInfo thread_info
+# cdef FuncCodeInfo func_code_info
+# ELSE
+def _line_event(code, line):
+# ENDIF
+# fmt: on
+
+ # A bunch of things have to be repeated especially because in the sys.monitoring
+ # everything is global, yet, when we start tracing something for stepping that
+ # needs to be per-thread.
+ try:
+ thread_info = _thread_local_info.thread_info
+ except:
+ thread_info = _get_thread_info(True, 1)
+ if thread_info is None:
+ return
+
+ py_db: object = GlobalDebuggerHolder.global_dbg
+ if py_db is None or py_db.pydb_disposed:
+ return monitor.DISABLE
+
+ if not thread_info.trace or thread_info.thread._is_stopped:
+ # For thread-related stuff we can't disable the code tracing because other
+ # threads may still want it...
+ return
+
+ if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
+ if _thread_local_info.f_disable_next_line_if_match is line:
+ # If we're in a jump, we should skip this line event. The jump would have
+ # been considered a line event for this same line and we don't want to
+ # stop twice.
+ del _thread_local_info.f_disable_next_line_if_match
+ return
+
+ func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ if func_code_info.always_skip_code or func_code_info.always_filtered_out:
+ return monitor.DISABLE
+
+ # print('line event', code.co_name, line)
+
+ # We know the frame depth.
+ frame = _getframe(1)
+ return _internal_line_event(func_code_info, frame, line)
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _internal_line_event(FuncCodeInfo func_code_info, frame, int line):
+# cdef ThreadInfo thread_info
+# cdef PyDBAdditionalThreadInfo info
+# cdef int step_cmd
+# cdef bint stop
+# cdef bint stop_on_plugin_breakpoint
+# cdef int stop_reason
+# cdef bint force_check_project_scope
+# ELSE
+def _internal_line_event(func_code_info, frame, line):
+# ENDIF
+# fmt: on
+ py_db: object = GlobalDebuggerHolder.global_dbg
+ thread_info = _thread_local_info.thread_info
+ info = thread_info.additional_info
+
+ step_cmd = info.pydev_step_cmd
+
+ # print('line event', info, id(info), thread_info.thread.name)
+ # print('line event', info.pydev_state, line, threading.current_thread(), code)
+ # If we reached here, it was not filtered out.
+
+ if func_code_info.breakpoint_found:
+ bp = None
+ stop = False
+ stop_on_plugin_breakpoint = False
+
+ stop_info = {}
+ stop_reason = CMD_SET_BREAK
+ bp_type = None
+
+ bp = func_code_info.bp_line_to_breakpoint.get(line)
+ if bp is not None:
+ new_frame = frame
+ stop = True
+
+ if bp:
+ if _stop_on_breakpoint(py_db, thread_info, stop_reason, bp, frame, new_frame, stop, stop_on_plugin_breakpoint, "python-line"):
+ return
+
+ if func_code_info.plugin_line_breakpoint_found:
+ result = py_db.plugin.get_breakpoint(py_db, frame, "line", info)
+ if result:
+ stop_reason = CMD_SET_BREAK
+ stop = False
+ stop_on_plugin_breakpoint = True
+ bp, new_frame, bp_type = result
+ _stop_on_breakpoint(py_db, thread_info, stop_reason, bp, frame, new_frame, stop, stop_on_plugin_breakpoint, bp_type)
+ return
+
+ if info.pydev_state == STATE_SUSPEND:
+ # Note: it's possible that it was suspended with a pause (and we'd stop here too).
+ # print('suspend (pause)...')
+ _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ return
+
+ # Ok, did not suspend due to a breakpoint, let's see if we're stepping.
+ stop_frame = info.pydev_step_stop
+ if step_cmd == -1:
+ if func_code_info.breakpoint_found or func_code_info.plugin_line_breakpoint_found or any_thread_stepping():
+ return None
+
+ return monitor.DISABLE
+
+ if info.suspend_type != PYTHON_SUSPEND:
+ # Plugin stepping
+ if func_code_info.plugin_line_stepping:
+ _plugin_stepping(py_db, step_cmd, "line", frame, thread_info)
+ return
+
+ # Python stepping now
+ if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE):
+ force_check_project_scope = step_cmd == CMD_STEP_INTO_MY_CODE
+ if not info.pydev_use_scoped_step_frame:
+ if func_code_info.always_filtered_out or (force_check_project_scope and func_code_info.filtered_out_force_checked):
+ return
+
+ py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ return
+ else:
+ # Make sure we check the filtering inside ipython calls too...
+ if func_code_info.always_filtered_out or (force_check_project_scope and func_code_info.filtered_out_force_checked):
+ return
+
+ stop = False
+ # We can only stop inside the ipython call.
+ filename = frame.f_code.co_filename
+ if filename.endswith(".pyc"):
+ filename = filename[:-1]
+
+ if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]):
+ f = frame.f_back
+ while f is not None:
+ if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
+ f2 = f.f_back
+ if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
+ pydev_log.debug("Stop inside ipython call")
+ py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ thread_info.additional_info.trace_suspend_type = "sys_monitor"
+ _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ break
+ f = f.f_back
+
+ del f
+
+ # In scoped mode if step in didn't work in this context it won't work
+ # afterwards anyways.
+ return
+
+ elif step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE):
+ # Note: when dealing with a step over my code it's the same as a step over (the
+ # difference is that when we return from a frame in one we go to regular step
+ # into and in the other we go to a step into my code).
+ if _is_same_frame(info, stop_frame, frame):
+ py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ return
+
+ elif step_cmd == CMD_SMART_STEP_INTO:
+ stop = False
+ back = frame.f_back
+ if _is_same_frame(info, stop_frame, back):
+ if info.pydev_smart_child_offset != -1:
+ # i.e.: in this case, we're not interested in the pause in the parent, rather
+ # we're interested in the pause in the child (when the parent is at the proper place).
+ stop = False
+
+ else:
+ pydev_smart_parent_offset = info.pydev_smart_parent_offset
+
+ pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+ if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants:
+ # Preferred mode (when the smart step into variants are available
+ # and the offset is set).
+ stop = get_smart_step_into_variant_from_frame_offset(
+ back.f_lasti, pydev_smart_step_into_variants
+ ) is get_smart_step_into_variant_from_frame_offset(pydev_smart_parent_offset, pydev_smart_step_into_variants)
+
+ else:
+ # Only the name/line is available, so, check that.
+ curr_func_name = frame.f_code.co_name
+
+ # global context is set with an empty name
+ if curr_func_name in ("?", "") or curr_func_name is None:
+ curr_func_name = ""
+ if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line:
+ stop = True
+
+ if not stop:
+ # In smart step into, if we didn't hit it in this frame once, that'll
+ # not be the case next time either, so, disable tracing for this frame.
+ return
+
+ elif back is not None and _is_same_frame(info, stop_frame, back.f_back):
+ # Ok, we have to track 2 stops at this point, the parent and the child offset.
+ # This happens when handling a step into which targets a function inside a list comprehension
+ # or generator (in which case an intermediary frame is created due to an internal function call).
+ pydev_smart_parent_offset = info.pydev_smart_parent_offset
+ pydev_smart_child_offset = info.pydev_smart_child_offset
+ # print('matched back frame', pydev_smart_parent_offset, pydev_smart_child_offset)
+ # print('parent f_lasti', back.f_back.f_lasti)
+ # print('child f_lasti', back.f_lasti)
+ stop = False
+ if pydev_smart_child_offset >= 0 and pydev_smart_child_offset >= 0:
+ pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+
+ if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants:
+ # Note that we don't really check the parent offset, only the offset of
+ # the child (because this is a generator, the parent may have moved forward
+ # already -- and that's ok, so, we just check that the parent frame
+ # matches in this case).
+ smart_step_into_variant = get_smart_step_into_variant_from_frame_offset(
+ pydev_smart_parent_offset, pydev_smart_step_into_variants
+ )
+ # print('matched parent offset', pydev_smart_parent_offset)
+ # Ok, now, check the child variant
+ children_variants = smart_step_into_variant.children_variants
+ stop = children_variants and (
+ get_smart_step_into_variant_from_frame_offset(back.f_lasti, children_variants)
+ is get_smart_step_into_variant_from_frame_offset(pydev_smart_child_offset, children_variants)
+ )
+ # print('stop at child', stop)
+
+ if not stop:
+ # In smart step into, if we didn't hit it in this frame once, that'll
+ # not be the case next time either, so, disable tracing for this frame.
+ return
+
+ if stop:
+ py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ return
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _start_method_event(code, instruction_offset):
+# cdef ThreadInfo thread_info
+# cdef FuncCodeInfo func_code_info
+# cdef bint stop
+# cdef int stop_reason
+# cdef bint stop_on_plugin_breakpoint
+# cdef PyDBAdditionalThreadInfo info
+# cdef int step_cmd
+# cdef bint code_tracing_added
+# ELSE
+def _start_method_event(code, instruction_offset):
+# ENDIF
+# fmt: on
+ try:
+ thread_info = _thread_local_info.thread_info
+ except:
+ thread_info = _get_thread_info(True, 1)
+ if thread_info is None:
+ return
+
+ py_db: object = GlobalDebuggerHolder.global_dbg
+ if py_db is None or py_db.pydb_disposed:
+ return monitor.DISABLE
+
+ if not thread_info.trace or thread_info.thread._is_stopped:
+ # For thread-related stuff we can't disable the code tracing because other
+ # threads may still want it...
+ return
+
+
+ frame = _getframe(1)
+ func_code_info = _get_func_code_info(code, frame)
+ if func_code_info.always_skip_code:
+ # if DEBUG:
+ # print('disable (always skip)')
+ return monitor.DISABLE
+
+ keep_enabled: bool = _enable_code_tracing(py_db, thread_info.additional_info, func_code_info, code, frame, True)
+
+ if func_code_info.function_breakpoint_found:
+ bp = func_code_info.function_breakpoint
+ stop = True
+ new_frame = frame
+ stop_reason = CMD_SET_FUNCTION_BREAK
+ stop_on_plugin_breakpoint = False
+
+ _stop_on_breakpoint(py_db, thread_info, stop_reason, bp, frame, new_frame, stop, stop_on_plugin_breakpoint, "python-function")
+ return
+
+ if py_db.plugin:
+ plugin_manager = py_db.plugin
+
+ # Check breaking on breakpoints in a 'call'
+ info = thread_info.additional_info
+ if func_code_info.plugin_call_breakpoint_found:
+ result = plugin_manager.get_breakpoint(py_db, frame, "call", info)
+ if result:
+ stop_reason = CMD_SET_BREAK
+ stop = False
+ stop_on_plugin_breakpoint = True
+ bp, new_frame, bp_type = result
+ _stop_on_breakpoint(py_db, thread_info, stop_reason, bp, frame, new_frame, stop, stop_on_plugin_breakpoint, bp_type)
+ return
+
+ keep_enabled = True
+
+ # Check breaking on line stepping in a 'call'
+ step_cmd = info.pydev_step_cmd
+ if step_cmd != -1 and func_code_info.plugin_call_stepping and info.suspend_type != PYTHON_SUSPEND:
+ _plugin_stepping(py_db, step_cmd, "call", frame, thread_info)
+ return
+
+ if keep_enabled or any_thread_stepping():
+ return None
+
+ return monitor.DISABLE
+
+# fmt: off
+# IFDEF CYTHON
+# cpdef _ensure_monitoring():
+# ELSE
+def _ensure_monitoring():
+# ENDIF
+# fmt: on
+ DEBUGGER_ID = monitor.DEBUGGER_ID
+ if not monitor.get_tool(DEBUGGER_ID):
+ monitor.use_tool_id(DEBUGGER_ID, "pydevd")
+ update_monitor_events()
+ restart_events()
+
+
+# fmt: off
+# IFDEF CYTHON
+# cpdef start_monitoring(bint all_threads=False):
+# cdef ThreadInfo thread_info
+# ELSE
+def start_monitoring(all_threads=False):
+# ENDIF
+# fmt: on
+ if all_threads:
+ # print('start monitoring, all_threads=', all_threads)
+ DEBUGGER_ID = monitor.DEBUGGER_ID
+ if not monitor.get_tool(DEBUGGER_ID):
+ monitor.use_tool_id(DEBUGGER_ID, "pydevd")
+ update_monitor_events()
+ restart_events()
+ else:
+ try:
+ thread_info = _thread_local_info.thread_info
+ except:
+ # code=None means we can already get the threading.current_thread.
+ thread_info = _get_thread_info(True, 1)
+ if thread_info is None:
+ # print('start monitoring, thread=', None)
+ return
+ # print('start monitoring, thread=', thread_info.thread)
+ thread_info.trace = True
+
+
+# fmt: off
+# IFDEF CYTHON
+# cpdef stop_monitoring(all_threads=False):
+# cdef ThreadInfo thread_info
+# ELSE
+def stop_monitoring(all_threads=False):
+# ENDIF
+# fmt: on
+ if all_threads:
+ # print('stop monitoring, all_threads=', all_threads)
+ if monitor.get_tool(monitor.DEBUGGER_ID) == "pydevd":
+ monitor.set_events(monitor.DEBUGGER_ID, 0)
+ monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, None)
+ monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, None)
+ monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, None)
+ monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, None)
+ monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, None)
+ monitor.register_callback(DEBUGGER_ID, monitor.events.RAISE, None)
+ monitor.free_tool_id(monitor.DEBUGGER_ID)
+ else:
+ try:
+ thread_info = _thread_local_info.thread_info
+ except:
+ thread_info = _get_thread_info(False, 1)
+ if thread_info is None:
+ return
+ # print('stop monitoring, thread=', thread_info.thread)
+ thread_info.trace = False
+
+
+def update_monitor_events(suspend_requested: Optional[bool] = None) -> None:
+ """
+ This should be called when breakpoints change.
+
+ :param suspend: means the user requested threads to be suspended
+ """
+ if monitor.get_tool(monitor.DEBUGGER_ID) != "pydevd":
+ # It is still not initialized.
+ return
+
+ # When breakpoints change we need to update what we want to track based
+ # on the breakpoints.
+ py_db = GlobalDebuggerHolder.global_dbg
+ if py_db is None:
+ return
+
+ if suspend_requested is None:
+ suspend_requested = False
+
+ for t in threading.enumerate():
+ if getattr(t, "pydev_do_not_trace", False):
+ continue
+ try:
+ additional_info = t.additional_info
+ if additional_info is None:
+ # i.e.: if we don't have it then it makes no sense to check if it was suspended or is stepping
+ continue
+ except AttributeError:
+ continue
+ if additional_info.pydev_step_cmd != -1 or additional_info.pydev_state == 2:
+ suspend_requested = True
+ break
+
+ required_events = 0
+
+ has_caught_exception_breakpoint_in_pydb = (
+ py_db.break_on_caught_exceptions or py_db.break_on_user_uncaught_exceptions or py_db.has_plugin_exception_breaks
+ )
+
+ break_on_uncaught_exceptions = py_db.break_on_uncaught_exceptions
+
+ if has_caught_exception_breakpoint_in_pydb:
+ required_events |= monitor.events.RAISE | monitor.events.PY_UNWIND
+ # print('track RAISE')
+ monitor.register_callback(DEBUGGER_ID, monitor.events.RAISE, _raise_event)
+ monitor.register_callback(DEBUGGER_ID, monitor.events.PY_UNWIND, _unwind_event)
+ else:
+ if break_on_uncaught_exceptions:
+ required_events |= monitor.events.PY_UNWIND
+ monitor.register_callback(DEBUGGER_ID, monitor.events.PY_UNWIND, _unwind_event)
+ else:
+ monitor.register_callback(DEBUGGER_ID, monitor.events.RAISE, None)
+ monitor.register_callback(DEBUGGER_ID, monitor.events.PY_UNWIND, None)
+
+ has_breaks = py_db.has_plugin_line_breaks
+ if not has_breaks:
+ if py_db.function_breakpoint_name_to_breakpoint:
+ has_breaks = True
+ else:
+ file_to_line_to_breakpoints = py_db.breakpoints
+ for line_to_breakpoints in file_to_line_to_breakpoints.values():
+ if line_to_breakpoints:
+ has_breaks = True
+ break
+
+ if has_breaks or suspend_requested:
+ # print('track PY_START|PY_RESUME, suspend_requested=', suspend_requested)
+ required_events |= monitor.events.PY_START | monitor.events.PY_RESUME
+
+ monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, _start_method_event)
+ # monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, _resume_method_event)
+ monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, _line_event)
+ monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, _jump_event)
+ monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, _return_event)
+
+ else:
+ monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, None)
+ monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, None)
+ monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, None)
+ monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, None)
+ monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, None)
+
+ monitor.set_events(DEBUGGER_ID, required_events)
+
+
+def restart_events() -> None:
+ # Note: if breakpoints change, update_monitor_events usually needs to be
+ # called first, then the line event tracing must be set for existing frames
+ # and then this function must be called at the end.
+ monitor.restart_events()
+
+
+# fmt: off
+# IFDEF CYTHON
+# cdef _is_same_frame(PyDBAdditionalThreadInfo info, target_frame, current_frame):
+# ELSE
+def _is_same_frame(info, target_frame, current_frame):
+# ENDIF
+# fmt: on
+ if target_frame is current_frame:
+ return True
+
+ if info.pydev_use_scoped_step_frame:
+ # If using scoped step we don't check the target, we just need to check
+ # if the current matches the same heuristic where the target was defined.
+ if target_frame is not None and current_frame is not None:
+ if target_frame.f_code.co_filename == current_frame.f_code.co_filename:
+ # The co_name may be different (it may include the line number), but
+ # the filename must still be the same.
+ f = current_frame.f_back
+ if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
+ f = f.f_back
+ if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
+ return True
+
+ return False
+
+
+# fmt: off
+# IFDEF CYTHON
+# def _do_wait_suspend(py_db, ThreadInfo thread_info, frame, event, arg):
+# ELSE
+def _do_wait_suspend(py_db, thread_info, frame, event, arg):
+# ENDIF
+# fmt: on
+ thread_info.additional_info.trace_suspend_type = "sys_monitor"
+ py_db.do_wait_suspend(thread_info.thread, frame, event, arg)
+
+
+# This can be used to diagnose exceptions inside of the debugger itself.
+#
+# import types
+# import functools
+#
+#
+# def safe_func(method):
+#
+# @functools.wraps(method)
+# def new_method(*args, **kwargs):
+# try:
+# return method(*args, **kwargs)
+# except:
+# import traceback;traceback.print_exc()
+# raise
+#
+# return new_method
+#
+#
+# for name, obj in list(globals().items()):
+# if name.endswith('_event'):
+# if isinstance(obj, types.FunctionType):
+# globals()[name] = safe_func(obj)
+#
+#
+# def _getframe(depth):
+# return sys._getframe(depth + 1)
diff --git a/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.c b/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.c
new file mode 100644
index 000000000..52382a23e
--- /dev/null
+++ b/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.c
@@ -0,0 +1,43058 @@
+/* Generated by Cython 3.0.11 */
+
+/* BEGIN: Cython Metadata
+{
+ "distutils": {
+ "depends": [],
+ "name": "_pydevd_sys_monitoring_cython",
+ "sources": [
+ "_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pyx"
+ ]
+ },
+ "module_name": "_pydevd_sys_monitoring_cython"
+}
+END: Cython Metadata */
+
+#ifndef PY_SSIZE_T_CLEAN
+#define PY_SSIZE_T_CLEAN
+#endif /* PY_SSIZE_T_CLEAN */
+#if defined(CYTHON_LIMITED_API) && 0
+ #ifndef Py_LIMITED_API
+ #if CYTHON_LIMITED_API+0 > 0x03030000
+ #define Py_LIMITED_API CYTHON_LIMITED_API
+ #else
+ #define Py_LIMITED_API 0x03030000
+ #endif
+ #endif
+#endif
+
+#include "Python.h"
+#if PY_VERSION_HEX >= 0x03090000
+#include "internal/pycore_gc.h"
+#include "internal/pycore_interp.h"
+#endif
+
+#ifndef Py_PYTHON_H
+ #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+ #error Cython requires Python 2.7+ or Python 3.3+.
+#else
+#if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API
+#define __PYX_EXTRA_ABI_MODULE_NAME "limited"
+#else
+#define __PYX_EXTRA_ABI_MODULE_NAME ""
+#endif
+#define CYTHON_ABI "3_0_11" __PYX_EXTRA_ABI_MODULE_NAME
+#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI
+#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "."
+#define CYTHON_HEX_VERSION 0x03000BF0
+#define CYTHON_FUTURE_DIVISION 1
+#include
+#ifndef offsetof
+ #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS)
+ #ifndef __stdcall
+ #define __stdcall
+ #endif
+ #ifndef __cdecl
+ #define __cdecl
+ #endif
+ #ifndef __fastcall
+ #define __fastcall
+ #endif
+#endif
+#ifndef DL_IMPORT
+ #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+ #define DL_EXPORT(t) t
+#endif
+#define __PYX_COMMA ,
+#ifndef HAVE_LONG_LONG
+ #define HAVE_LONG_LONG
+#endif
+#ifndef PY_LONG_LONG
+ #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+ #define Py_HUGE_VAL HUGE_VAL
+#endif
+#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX
+#if defined(GRAALVM_PYTHON)
+ /* For very preliminary testing purposes. Most variables are set the same as PyPy.
+ The existence of this section does not imply that anything works or is even tested */
+ #define CYTHON_COMPILING_IN_PYPY 0
+ #define CYTHON_COMPILING_IN_CPYTHON 0
+ #define CYTHON_COMPILING_IN_LIMITED_API 0
+ #define CYTHON_COMPILING_IN_GRAAL 1
+ #define CYTHON_COMPILING_IN_NOGIL 0
+ #undef CYTHON_USE_TYPE_SLOTS
+ #define CYTHON_USE_TYPE_SLOTS 0
+ #undef CYTHON_USE_TYPE_SPECS
+ #define CYTHON_USE_TYPE_SPECS 0
+ #undef CYTHON_USE_PYTYPE_LOOKUP
+ #define CYTHON_USE_PYTYPE_LOOKUP 0
+ #if PY_VERSION_HEX < 0x03050000
+ #undef CYTHON_USE_ASYNC_SLOTS
+ #define CYTHON_USE_ASYNC_SLOTS 0
+ #elif !defined(CYTHON_USE_ASYNC_SLOTS)
+ #define CYTHON_USE_ASYNC_SLOTS 1
+ #endif
+ #undef CYTHON_USE_PYLIST_INTERNALS
+ #define CYTHON_USE_PYLIST_INTERNALS 0
+ #undef CYTHON_USE_UNICODE_INTERNALS
+ #define CYTHON_USE_UNICODE_INTERNALS 0
+ #undef CYTHON_USE_UNICODE_WRITER
+ #define CYTHON_USE_UNICODE_WRITER 0
+ #undef CYTHON_USE_PYLONG_INTERNALS
+ #define CYTHON_USE_PYLONG_INTERNALS 0
+ #undef CYTHON_AVOID_BORROWED_REFS
+ #define CYTHON_AVOID_BORROWED_REFS 1
+ #undef CYTHON_ASSUME_SAFE_MACROS
+ #define CYTHON_ASSUME_SAFE_MACROS 0
+ #undef CYTHON_UNPACK_METHODS
+ #define CYTHON_UNPACK_METHODS 0
+ #undef CYTHON_FAST_THREAD_STATE
+ #define CYTHON_FAST_THREAD_STATE 0
+ #undef CYTHON_FAST_GIL
+ #define CYTHON_FAST_GIL 0
+ #undef CYTHON_METH_FASTCALL
+ #define CYTHON_METH_FASTCALL 0
+ #undef CYTHON_FAST_PYCALL
+ #define CYTHON_FAST_PYCALL 0
+ #ifndef CYTHON_PEP487_INIT_SUBCLASS
+ #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3)
+ #endif
+ #undef CYTHON_PEP489_MULTI_PHASE_INIT
+ #define CYTHON_PEP489_MULTI_PHASE_INIT 1
+ #undef CYTHON_USE_MODULE_STATE
+ #define CYTHON_USE_MODULE_STATE 0
+ #undef CYTHON_USE_TP_FINALIZE
+ #define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
+ #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
+ #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
+ #endif
+ #undef CYTHON_USE_FREELISTS
+ #define CYTHON_USE_FREELISTS 0
+#elif defined(PYPY_VERSION)
+ #define CYTHON_COMPILING_IN_PYPY 1
+ #define CYTHON_COMPILING_IN_CPYTHON 0
+ #define CYTHON_COMPILING_IN_LIMITED_API 0
+ #define CYTHON_COMPILING_IN_GRAAL 0
+ #define CYTHON_COMPILING_IN_NOGIL 0
+ #undef CYTHON_USE_TYPE_SLOTS
+ #define CYTHON_USE_TYPE_SLOTS 0
+ #ifndef CYTHON_USE_TYPE_SPECS
+ #define CYTHON_USE_TYPE_SPECS 0
+ #endif
+ #undef CYTHON_USE_PYTYPE_LOOKUP
+ #define CYTHON_USE_PYTYPE_LOOKUP 0
+ #if PY_VERSION_HEX < 0x03050000
+ #undef CYTHON_USE_ASYNC_SLOTS
+ #define CYTHON_USE_ASYNC_SLOTS 0
+ #elif !defined(CYTHON_USE_ASYNC_SLOTS)
+ #define CYTHON_USE_ASYNC_SLOTS 1
+ #endif
+ #undef CYTHON_USE_PYLIST_INTERNALS
+ #define CYTHON_USE_PYLIST_INTERNALS 0
+ #undef CYTHON_USE_UNICODE_INTERNALS
+ #define CYTHON_USE_UNICODE_INTERNALS 0
+ #undef CYTHON_USE_UNICODE_WRITER
+ #define CYTHON_USE_UNICODE_WRITER 0
+ #undef CYTHON_USE_PYLONG_INTERNALS
+ #define CYTHON_USE_PYLONG_INTERNALS 0
+ #undef CYTHON_AVOID_BORROWED_REFS
+ #define CYTHON_AVOID_BORROWED_REFS 1
+ #undef CYTHON_ASSUME_SAFE_MACROS
+ #define CYTHON_ASSUME_SAFE_MACROS 0
+ #undef CYTHON_UNPACK_METHODS
+ #define CYTHON_UNPACK_METHODS 0
+ #undef CYTHON_FAST_THREAD_STATE
+ #define CYTHON_FAST_THREAD_STATE 0
+ #undef CYTHON_FAST_GIL
+ #define CYTHON_FAST_GIL 0
+ #undef CYTHON_METH_FASTCALL
+ #define CYTHON_METH_FASTCALL 0
+ #undef CYTHON_FAST_PYCALL
+ #define CYTHON_FAST_PYCALL 0
+ #ifndef CYTHON_PEP487_INIT_SUBCLASS
+ #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3)
+ #endif
+ #if PY_VERSION_HEX < 0x03090000
+ #undef CYTHON_PEP489_MULTI_PHASE_INIT
+ #define CYTHON_PEP489_MULTI_PHASE_INIT 0
+ #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT)
+ #define CYTHON_PEP489_MULTI_PHASE_INIT 1
+ #endif
+ #undef CYTHON_USE_MODULE_STATE
+ #define CYTHON_USE_MODULE_STATE 0
+ #undef CYTHON_USE_TP_FINALIZE
+ #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00)
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
+ #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
+ #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
+ #endif
+ #undef CYTHON_USE_FREELISTS
+ #define CYTHON_USE_FREELISTS 0
+#elif defined(CYTHON_LIMITED_API)
+ #ifdef Py_LIMITED_API
+ #undef __PYX_LIMITED_VERSION_HEX
+ #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API
+ #endif
+ #define CYTHON_COMPILING_IN_PYPY 0
+ #define CYTHON_COMPILING_IN_CPYTHON 0
+ #define CYTHON_COMPILING_IN_LIMITED_API 1
+ #define CYTHON_COMPILING_IN_GRAAL 0
+ #define CYTHON_COMPILING_IN_NOGIL 0
+ #undef CYTHON_CLINE_IN_TRACEBACK
+ #define CYTHON_CLINE_IN_TRACEBACK 0
+ #undef CYTHON_USE_TYPE_SLOTS
+ #define CYTHON_USE_TYPE_SLOTS 0
+ #undef CYTHON_USE_TYPE_SPECS
+ #define CYTHON_USE_TYPE_SPECS 1
+ #undef CYTHON_USE_PYTYPE_LOOKUP
+ #define CYTHON_USE_PYTYPE_LOOKUP 0
+ #undef CYTHON_USE_ASYNC_SLOTS
+ #define CYTHON_USE_ASYNC_SLOTS 0
+ #undef CYTHON_USE_PYLIST_INTERNALS
+ #define CYTHON_USE_PYLIST_INTERNALS 0
+ #undef CYTHON_USE_UNICODE_INTERNALS
+ #define CYTHON_USE_UNICODE_INTERNALS 0
+ #ifndef CYTHON_USE_UNICODE_WRITER
+ #define CYTHON_USE_UNICODE_WRITER 0
+ #endif
+ #undef CYTHON_USE_PYLONG_INTERNALS
+ #define CYTHON_USE_PYLONG_INTERNALS 0
+ #ifndef CYTHON_AVOID_BORROWED_REFS
+ #define CYTHON_AVOID_BORROWED_REFS 0
+ #endif
+ #undef CYTHON_ASSUME_SAFE_MACROS
+ #define CYTHON_ASSUME_SAFE_MACROS 0
+ #undef CYTHON_UNPACK_METHODS
+ #define CYTHON_UNPACK_METHODS 0
+ #undef CYTHON_FAST_THREAD_STATE
+ #define CYTHON_FAST_THREAD_STATE 0
+ #undef CYTHON_FAST_GIL
+ #define CYTHON_FAST_GIL 0
+ #undef CYTHON_METH_FASTCALL
+ #define CYTHON_METH_FASTCALL 0
+ #undef CYTHON_FAST_PYCALL
+ #define CYTHON_FAST_PYCALL 0
+ #ifndef CYTHON_PEP487_INIT_SUBCLASS
+ #define CYTHON_PEP487_INIT_SUBCLASS 1
+ #endif
+ #undef CYTHON_PEP489_MULTI_PHASE_INIT
+ #define CYTHON_PEP489_MULTI_PHASE_INIT 0
+ #undef CYTHON_USE_MODULE_STATE
+ #define CYTHON_USE_MODULE_STATE 1
+ #ifndef CYTHON_USE_TP_FINALIZE
+ #define CYTHON_USE_TP_FINALIZE 0
+ #endif
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
+ #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
+ #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
+ #endif
+ #undef CYTHON_USE_FREELISTS
+ #define CYTHON_USE_FREELISTS 0
+#elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL)
+ #define CYTHON_COMPILING_IN_PYPY 0
+ #define CYTHON_COMPILING_IN_CPYTHON 0
+ #define CYTHON_COMPILING_IN_LIMITED_API 0
+ #define CYTHON_COMPILING_IN_GRAAL 0
+ #define CYTHON_COMPILING_IN_NOGIL 1
+ #ifndef CYTHON_USE_TYPE_SLOTS
+ #define CYTHON_USE_TYPE_SLOTS 1
+ #endif
+ #ifndef CYTHON_USE_TYPE_SPECS
+ #define CYTHON_USE_TYPE_SPECS 0
+ #endif
+ #undef CYTHON_USE_PYTYPE_LOOKUP
+ #define CYTHON_USE_PYTYPE_LOOKUP 0
+ #ifndef CYTHON_USE_ASYNC_SLOTS
+ #define CYTHON_USE_ASYNC_SLOTS 1
+ #endif
+ #ifndef CYTHON_USE_PYLONG_INTERNALS
+ #define CYTHON_USE_PYLONG_INTERNALS 0
+ #endif
+ #undef CYTHON_USE_PYLIST_INTERNALS
+ #define CYTHON_USE_PYLIST_INTERNALS 0
+ #ifndef CYTHON_USE_UNICODE_INTERNALS
+ #define CYTHON_USE_UNICODE_INTERNALS 1
+ #endif
+ #undef CYTHON_USE_UNICODE_WRITER
+ #define CYTHON_USE_UNICODE_WRITER 0
+ #ifndef CYTHON_AVOID_BORROWED_REFS
+ #define CYTHON_AVOID_BORROWED_REFS 0
+ #endif
+ #ifndef CYTHON_ASSUME_SAFE_MACROS
+ #define CYTHON_ASSUME_SAFE_MACROS 1
+ #endif
+ #ifndef CYTHON_UNPACK_METHODS
+ #define CYTHON_UNPACK_METHODS 1
+ #endif
+ #undef CYTHON_FAST_THREAD_STATE
+ #define CYTHON_FAST_THREAD_STATE 0
+ #undef CYTHON_FAST_GIL
+ #define CYTHON_FAST_GIL 0
+ #ifndef CYTHON_METH_FASTCALL
+ #define CYTHON_METH_FASTCALL 1
+ #endif
+ #undef CYTHON_FAST_PYCALL
+ #define CYTHON_FAST_PYCALL 0
+ #ifndef CYTHON_PEP487_INIT_SUBCLASS
+ #define CYTHON_PEP487_INIT_SUBCLASS 1
+ #endif
+ #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
+ #define CYTHON_PEP489_MULTI_PHASE_INIT 1
+ #endif
+ #ifndef CYTHON_USE_MODULE_STATE
+ #define CYTHON_USE_MODULE_STATE 0
+ #endif
+ #ifndef CYTHON_USE_TP_FINALIZE
+ #define CYTHON_USE_TP_FINALIZE 1
+ #endif
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
+ #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
+ #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
+ #endif
+ #ifndef CYTHON_USE_FREELISTS
+ #define CYTHON_USE_FREELISTS 0
+ #endif
+#else
+ #define CYTHON_COMPILING_IN_PYPY 0
+ #define CYTHON_COMPILING_IN_CPYTHON 1
+ #define CYTHON_COMPILING_IN_LIMITED_API 0
+ #define CYTHON_COMPILING_IN_GRAAL 0
+ #define CYTHON_COMPILING_IN_NOGIL 0
+ #ifndef CYTHON_USE_TYPE_SLOTS
+ #define CYTHON_USE_TYPE_SLOTS 1
+ #endif
+ #ifndef CYTHON_USE_TYPE_SPECS
+ #define CYTHON_USE_TYPE_SPECS 0
+ #endif
+ #ifndef CYTHON_USE_PYTYPE_LOOKUP
+ #define CYTHON_USE_PYTYPE_LOOKUP 1
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ #undef CYTHON_USE_ASYNC_SLOTS
+ #define CYTHON_USE_ASYNC_SLOTS 0
+ #elif !defined(CYTHON_USE_ASYNC_SLOTS)
+ #define CYTHON_USE_ASYNC_SLOTS 1
+ #endif
+ #ifndef CYTHON_USE_PYLONG_INTERNALS
+ #define CYTHON_USE_PYLONG_INTERNALS 1
+ #endif
+ #ifndef CYTHON_USE_PYLIST_INTERNALS
+ #define CYTHON_USE_PYLIST_INTERNALS 1
+ #endif
+ #ifndef CYTHON_USE_UNICODE_INTERNALS
+ #define CYTHON_USE_UNICODE_INTERNALS 1
+ #endif
+ #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2
+ #undef CYTHON_USE_UNICODE_WRITER
+ #define CYTHON_USE_UNICODE_WRITER 0
+ #elif !defined(CYTHON_USE_UNICODE_WRITER)
+ #define CYTHON_USE_UNICODE_WRITER 1
+ #endif
+ #ifndef CYTHON_AVOID_BORROWED_REFS
+ #define CYTHON_AVOID_BORROWED_REFS 0
+ #endif
+ #ifndef CYTHON_ASSUME_SAFE_MACROS
+ #define CYTHON_ASSUME_SAFE_MACROS 1
+ #endif
+ #ifndef CYTHON_UNPACK_METHODS
+ #define CYTHON_UNPACK_METHODS 1
+ #endif
+ #ifndef CYTHON_FAST_THREAD_STATE
+ #define CYTHON_FAST_THREAD_STATE 1
+ #endif
+ #ifndef CYTHON_FAST_GIL
+ #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6)
+ #endif
+ #ifndef CYTHON_METH_FASTCALL
+ #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1)
+ #endif
+ #ifndef CYTHON_FAST_PYCALL
+ #define CYTHON_FAST_PYCALL 1
+ #endif
+ #ifndef CYTHON_PEP487_INIT_SUBCLASS
+ #define CYTHON_PEP487_INIT_SUBCLASS 1
+ #endif
+ #if PY_VERSION_HEX < 0x03050000
+ #undef CYTHON_PEP489_MULTI_PHASE_INIT
+ #define CYTHON_PEP489_MULTI_PHASE_INIT 0
+ #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT)
+ #define CYTHON_PEP489_MULTI_PHASE_INIT 1
+ #endif
+ #ifndef CYTHON_USE_MODULE_STATE
+ #define CYTHON_USE_MODULE_STATE 0
+ #endif
+ #if PY_VERSION_HEX < 0x030400a1
+ #undef CYTHON_USE_TP_FINALIZE
+ #define CYTHON_USE_TP_FINALIZE 0
+ #elif !defined(CYTHON_USE_TP_FINALIZE)
+ #define CYTHON_USE_TP_FINALIZE 1
+ #endif
+ #if PY_VERSION_HEX < 0x030600B1
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #elif !defined(CYTHON_USE_DICT_VERSIONS)
+ #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5)
+ #endif
+ #if PY_VERSION_HEX < 0x030700A3
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
+ #elif !defined(CYTHON_USE_EXC_INFO_STACK)
+ #define CYTHON_USE_EXC_INFO_STACK 1
+ #endif
+ #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
+ #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
+ #endif
+ #ifndef CYTHON_USE_FREELISTS
+ #define CYTHON_USE_FREELISTS 1
+ #endif
+#endif
+#if !defined(CYTHON_FAST_PYCCALL)
+#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
+#endif
+#if !defined(CYTHON_VECTORCALL)
+#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1)
+#endif
+#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1)
+#if CYTHON_USE_PYLONG_INTERNALS
+ #if PY_MAJOR_VERSION < 3
+ #include "longintrepr.h"
+ #endif
+ #undef SHIFT
+ #undef BASE
+ #undef MASK
+ #ifdef SIZEOF_VOID_P
+ enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
+ #endif
+#endif
+#ifndef __has_attribute
+ #define __has_attribute(x) 0
+#endif
+#ifndef __has_cpp_attribute
+ #define __has_cpp_attribute(x) 0
+#endif
+#ifndef CYTHON_RESTRICT
+ #if defined(__GNUC__)
+ #define CYTHON_RESTRICT __restrict__
+ #elif defined(_MSC_VER) && _MSC_VER >= 1400
+ #define CYTHON_RESTRICT __restrict
+ #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+ #define CYTHON_RESTRICT restrict
+ #else
+ #define CYTHON_RESTRICT
+ #endif
+#endif
+#ifndef CYTHON_UNUSED
+ #if defined(__cplusplus)
+ /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17
+ * but leads to warnings with -pedantic, since it is a C++17 feature */
+ #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
+ #if __has_cpp_attribute(maybe_unused)
+ #define CYTHON_UNUSED [[maybe_unused]]
+ #endif
+ #endif
+ #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+# define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+# define CYTHON_UNUSED
+# endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+# define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+# define CYTHON_UNUSED
+# endif
+#endif
+#ifndef CYTHON_UNUSED_VAR
+# if defined(__cplusplus)
+ template void CYTHON_UNUSED_VAR( const T& ) { }
+# else
+# define CYTHON_UNUSED_VAR(x) (void)(x)
+# endif
+#endif
+#ifndef CYTHON_MAYBE_UNUSED_VAR
+ #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x)
+#endif
+#ifndef CYTHON_NCP_UNUSED
+# if CYTHON_COMPILING_IN_CPYTHON
+# define CYTHON_NCP_UNUSED
+# else
+# define CYTHON_NCP_UNUSED CYTHON_UNUSED
+# endif
+#endif
+#ifndef CYTHON_USE_CPP_STD_MOVE
+ #if defined(__cplusplus) && (\
+ __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600))
+ #define CYTHON_USE_CPP_STD_MOVE 1
+ #else
+ #define CYTHON_USE_CPP_STD_MOVE 0
+ #endif
+#endif
+#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
+#ifdef _MSC_VER
+ #ifndef _MSC_STDINT_H_
+ #if _MSC_VER < 1300
+ typedef unsigned char uint8_t;
+ typedef unsigned short uint16_t;
+ typedef unsigned int uint32_t;
+ #else
+ typedef unsigned __int8 uint8_t;
+ typedef unsigned __int16 uint16_t;
+ typedef unsigned __int32 uint32_t;
+ #endif
+ #endif
+ #if _MSC_VER < 1300
+ #ifdef _WIN64
+ typedef unsigned long long __pyx_uintptr_t;
+ #else
+ typedef unsigned int __pyx_uintptr_t;
+ #endif
+ #else
+ #ifdef _WIN64
+ typedef unsigned __int64 __pyx_uintptr_t;
+ #else
+ typedef unsigned __int32 __pyx_uintptr_t;
+ #endif
+ #endif
+#else
+ #include
+ typedef uintptr_t __pyx_uintptr_t;
+#endif
+#ifndef CYTHON_FALLTHROUGH
+ #if defined(__cplusplus)
+ /* for clang __has_cpp_attribute(fallthrough) is true even before C++17
+ * but leads to warnings with -pedantic, since it is a C++17 feature */
+ #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
+ #if __has_cpp_attribute(fallthrough)
+ #define CYTHON_FALLTHROUGH [[fallthrough]]
+ #endif
+ #endif
+ #ifndef CYTHON_FALLTHROUGH
+ #if __has_cpp_attribute(clang::fallthrough)
+ #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
+ #elif __has_cpp_attribute(gnu::fallthrough)
+ #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
+ #endif
+ #endif
+ #endif
+ #ifndef CYTHON_FALLTHROUGH
+ #if __has_attribute(fallthrough)
+ #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
+ #else
+ #define CYTHON_FALLTHROUGH
+ #endif
+ #endif
+ #if defined(__clang__) && defined(__apple_build_version__)
+ #if __apple_build_version__ < 7000000
+ #undef CYTHON_FALLTHROUGH
+ #define CYTHON_FALLTHROUGH
+ #endif
+ #endif
+#endif
+#ifdef __cplusplus
+ template
+ struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);};
+ #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value)
+#else
+ #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0)
+#endif
+#if CYTHON_COMPILING_IN_PYPY == 1
+ #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000)
+#else
+ #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000)
+#endif
+#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer))
+
+#ifndef CYTHON_INLINE
+ #if defined(__clang__)
+ #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
+ #elif defined(__GNUC__)
+ #define CYTHON_INLINE __inline__
+ #elif defined(_MSC_VER)
+ #define CYTHON_INLINE __inline
+ #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+ #define CYTHON_INLINE inline
+ #else
+ #define CYTHON_INLINE
+ #endif
+#endif
+
+#define __PYX_BUILD_PY_SSIZE_T "n"
+#define CYTHON_FORMAT_SSIZE_T "z"
+#if PY_MAJOR_VERSION < 3
+ #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+ #define __Pyx_DefaultClassType PyClass_Type
+ #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
+ PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+ #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+ #define __Pyx_DefaultClassType PyType_Type
+#if CYTHON_COMPILING_IN_LIMITED_API
+ static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f,
+ PyObject *code, PyObject *c, PyObject* n, PyObject *v,
+ PyObject *fv, PyObject *cell, PyObject* fn,
+ PyObject *name, int fline, PyObject *lnos) {
+ PyObject *exception_table = NULL;
+ PyObject *types_module=NULL, *code_type=NULL, *result=NULL;
+ #if __PYX_LIMITED_VERSION_HEX < 0x030B0000
+ PyObject *version_info;
+ PyObject *py_minor_version = NULL;
+ #endif
+ long minor_version = 0;
+ PyObject *type, *value, *traceback;
+ PyErr_Fetch(&type, &value, &traceback);
+ #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000
+ minor_version = 11;
+ #else
+ if (!(version_info = PySys_GetObject("version_info"))) goto end;
+ if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end;
+ minor_version = PyLong_AsLong(py_minor_version);
+ Py_DECREF(py_minor_version);
+ if (minor_version == -1 && PyErr_Occurred()) goto end;
+ #endif
+ if (!(types_module = PyImport_ImportModule("types"))) goto end;
+ if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end;
+ if (minor_version <= 7) {
+ (void)p;
+ result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code,
+ c, n, v, fn, name, fline, lnos, fv, cell);
+ } else if (minor_version <= 10) {
+ result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code,
+ c, n, v, fn, name, fline, lnos, fv, cell);
+ } else {
+ if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end;
+ result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code,
+ c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell);
+ }
+ end:
+ Py_XDECREF(code_type);
+ Py_XDECREF(exception_table);
+ Py_XDECREF(types_module);
+ if (type) {
+ PyErr_Restore(type, value, traceback);
+ }
+ return result;
+ }
+ #ifndef CO_OPTIMIZED
+ #define CO_OPTIMIZED 0x0001
+ #endif
+ #ifndef CO_NEWLOCALS
+ #define CO_NEWLOCALS 0x0002
+ #endif
+ #ifndef CO_VARARGS
+ #define CO_VARARGS 0x0004
+ #endif
+ #ifndef CO_VARKEYWORDS
+ #define CO_VARKEYWORDS 0x0008
+ #endif
+ #ifndef CO_ASYNC_GENERATOR
+ #define CO_ASYNC_GENERATOR 0x0200
+ #endif
+ #ifndef CO_GENERATOR
+ #define CO_GENERATOR 0x0020
+ #endif
+ #ifndef CO_COROUTINE
+ #define CO_COROUTINE 0x0080
+ #endif
+#elif PY_VERSION_HEX >= 0x030B0000
+ static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f,
+ PyObject *code, PyObject *c, PyObject* n, PyObject *v,
+ PyObject *fv, PyObject *cell, PyObject* fn,
+ PyObject *name, int fline, PyObject *lnos) {
+ PyCodeObject *result;
+ PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0);
+ if (!empty_bytes) return NULL;
+ result =
+ #if PY_VERSION_HEX >= 0x030C0000
+ PyUnstable_Code_NewWithPosOnlyArgs
+ #else
+ PyCode_NewWithPosOnlyArgs
+ #endif
+ (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes);
+ Py_DECREF(empty_bytes);
+ return result;
+ }
+#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY
+ #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
+ PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+ #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
+ PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#endif
+#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE)
+ #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type)
+#else
+ #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type))
+#endif
+#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is)
+ #define __Pyx_Py_Is(x, y) Py_Is(x, y)
+#else
+ #define __Pyx_Py_Is(x, y) ((x) == (y))
+#endif
+#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone)
+ #define __Pyx_Py_IsNone(ob) Py_IsNone(ob)
+#else
+ #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None)
+#endif
+#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue)
+ #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob)
+#else
+ #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True)
+#endif
+#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse)
+ #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob)
+#else
+ #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False)
+#endif
+#define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj))
+#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY
+ #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o)
+#else
+ #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o)
+#endif
+#ifndef CO_COROUTINE
+ #define CO_COROUTINE 0x80
+#endif
+#ifndef CO_ASYNC_GENERATOR
+ #define CO_ASYNC_GENERATOR 0x200
+#endif
+#ifndef Py_TPFLAGS_CHECKTYPES
+ #define Py_TPFLAGS_CHECKTYPES 0
+#endif
+#ifndef Py_TPFLAGS_HAVE_INDEX
+ #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#ifndef Py_TPFLAGS_HAVE_NEWBUFFER
+ #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#ifndef Py_TPFLAGS_HAVE_FINALIZE
+ #define Py_TPFLAGS_HAVE_FINALIZE 0
+#endif
+#ifndef Py_TPFLAGS_SEQUENCE
+ #define Py_TPFLAGS_SEQUENCE 0
+#endif
+#ifndef Py_TPFLAGS_MAPPING
+ #define Py_TPFLAGS_MAPPING 0
+#endif
+#ifndef METH_STACKLESS
+ #define METH_STACKLESS 0
+#endif
+#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
+ #ifndef METH_FASTCALL
+ #define METH_FASTCALL 0x80
+ #endif
+ typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);
+ typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
+ Py_ssize_t nargs, PyObject *kwnames);
+#else
+ #if PY_VERSION_HEX >= 0x030d00A4
+ # define __Pyx_PyCFunctionFast PyCFunctionFast
+ # define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords
+ #else
+ # define __Pyx_PyCFunctionFast _PyCFunctionFast
+ # define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
+ #endif
+#endif
+#if CYTHON_METH_FASTCALL
+ #define __Pyx_METH_FASTCALL METH_FASTCALL
+ #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast
+ #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords
+#else
+ #define __Pyx_METH_FASTCALL METH_VARARGS
+ #define __Pyx_PyCFunction_FastCall PyCFunction
+ #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords
+#endif
+#if CYTHON_VECTORCALL
+ #define __pyx_vectorcallfunc vectorcallfunc
+ #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET
+ #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n))
+#elif CYTHON_BACKPORT_VECTORCALL
+ typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args,
+ size_t nargsf, PyObject *kwnames);
+ #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1))
+ #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET))
+#else
+ #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0
+ #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n))
+#endif
+#if PY_MAJOR_VERSION >= 0x030900B1
+#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func)
+#else
+#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func)
+#endif
+#define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func)
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth)
+#elif !CYTHON_COMPILING_IN_LIMITED_API
+#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func)
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags)
+static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) {
+ return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self;
+}
+#endif
+static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) {
+#if CYTHON_COMPILING_IN_LIMITED_API
+ return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
+#else
+ return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
+#endif
+}
+#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc)
+#if __PYX_LIMITED_VERSION_HEX < 0x030900B1
+ #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b))
+ typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *);
+#else
+ #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b)
+ #define __Pyx_PyCMethod PyCMethod
+#endif
+#ifndef METH_METHOD
+ #define METH_METHOD 0x200
+#endif
+#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
+ #define PyObject_Malloc(s) PyMem_Malloc(s)
+ #define PyObject_Free(p) PyMem_Free(p)
+ #define PyObject_Realloc(p) PyMem_Realloc(p)
+#endif
+#if CYTHON_COMPILING_IN_LIMITED_API
+ #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0)
+ #define __Pyx_PyFrame_SetLineNumber(frame, lineno)
+#else
+ #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0)
+ #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno)
+#endif
+#if CYTHON_COMPILING_IN_LIMITED_API
+ #define __Pyx_PyThreadState_Current PyThreadState_Get()
+#elif !CYTHON_FAST_THREAD_STATE
+ #define __Pyx_PyThreadState_Current PyThreadState_GET()
+#elif PY_VERSION_HEX >= 0x030d00A1
+ #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked()
+#elif PY_VERSION_HEX >= 0x03060000
+ #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
+#elif PY_VERSION_HEX >= 0x03000000
+ #define __Pyx_PyThreadState_Current PyThreadState_GET()
+#else
+ #define __Pyx_PyThreadState_Current _PyThreadState_Current
+#endif
+#if CYTHON_COMPILING_IN_LIMITED_API
+static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op)
+{
+ void *result;
+ result = PyModule_GetState(op);
+ if (!result)
+ Py_FatalError("Couldn't find the module state");
+ return result;
+}
+#endif
+#define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype)
+#if CYTHON_COMPILING_IN_LIMITED_API
+ #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name))
+#else
+ #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name)
+#endif
+#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)
+#include "pythread.h"
+#define Py_tss_NEEDS_INIT 0
+typedef int Py_tss_t;
+static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
+ *key = PyThread_create_key();
+ return 0;
+}
+static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
+ Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t));
+ *key = Py_tss_NEEDS_INIT;
+ return key;
+}
+static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {
+ PyObject_Free(key);
+}
+static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {
+ return *key != Py_tss_NEEDS_INIT;
+}
+static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {
+ PyThread_delete_key(*key);
+ *key = Py_tss_NEEDS_INIT;
+}
+static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {
+ return PyThread_set_key_value(*key, value);
+}
+static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
+ return PyThread_get_key_value(*key);
+}
+#endif
+#if PY_MAJOR_VERSION < 3
+ #if CYTHON_COMPILING_IN_PYPY
+ #if PYPY_VERSION_NUM < 0x07030600
+ #if defined(__cplusplus) && __cplusplus >= 201402L
+ [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]]
+ #elif defined(__GNUC__) || defined(__clang__)
+ __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")))
+ #elif defined(_MSC_VER)
+ __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))
+ #endif
+ static CYTHON_INLINE int PyGILState_Check(void) {
+ return 0;
+ }
+ #else // PYPY_VERSION_NUM < 0x07030600
+ #endif // PYPY_VERSION_NUM < 0x07030600
+ #else
+ static CYTHON_INLINE int PyGILState_Check(void) {
+ PyThreadState * tstate = _PyThreadState_Current;
+ return tstate && (tstate == PyGILState_GetThisThreadState());
+ }
+ #endif
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized)
+#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
+#else
+#define __Pyx_PyDict_NewPresized(n) PyDict_New()
+#endif
+#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION
+ #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y)
+ #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y)
+#else
+ #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y)
+ #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y)
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS
+#define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
+static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) {
+ PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name);
+ if (res == NULL) PyErr_Clear();
+ return res;
+}
+#elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000)
+#define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError
+#define __Pyx_PyDict_GetItemStr PyDict_GetItem
+#else
+static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) {
+#if CYTHON_COMPILING_IN_PYPY
+ return PyDict_GetItem(dict, name);
+#else
+ PyDictEntry *ep;
+ PyDictObject *mp = (PyDictObject*) dict;
+ long hash = ((PyStringObject *) name)->ob_shash;
+ assert(hash != -1);
+ ep = (mp->ma_lookup)(mp, name, hash);
+ if (ep == NULL) {
+ return NULL;
+ }
+ return ep->me_value;
+#endif
+}
+#define __Pyx_PyDict_GetItemStr PyDict_GetItem
+#endif
+#if CYTHON_USE_TYPE_SLOTS
+ #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags)
+ #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0)
+ #define __Pyx_PyObject_GetIterNextFunc(obj) (Py_TYPE(obj)->tp_iternext)
+#else
+ #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp))
+ #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature)
+ #define __Pyx_PyObject_GetIterNextFunc(obj) PyIter_Next
+#endif
+#if CYTHON_COMPILING_IN_LIMITED_API
+ #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v)
+#else
+ #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v)
+#endif
+#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000
+#define __Pyx_PyHeapTypeObject_GC_Del(obj) {\
+ PyTypeObject *type = Py_TYPE((PyObject*)obj);\
+ assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\
+ PyObject_GC_Del(obj);\
+ Py_DECREF(type);\
+}
+#else
+#define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj)
+#endif
+#if CYTHON_COMPILING_IN_LIMITED_API
+ #define CYTHON_PEP393_ENABLED 1
+ #define __Pyx_PyUnicode_READY(op) (0)
+ #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GetLength(u)
+ #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i)
+ #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U)
+ #define __Pyx_PyUnicode_KIND(u) ((void)u, (0))
+ #define __Pyx_PyUnicode_DATA(u) ((void*)u)
+ #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i))
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u))
+#elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+ #define CYTHON_PEP393_ENABLED 1
+ #if PY_VERSION_HEX >= 0x030C0000
+ #define __Pyx_PyUnicode_READY(op) (0)
+ #else
+ #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
+ 0 : _PyUnicode_Ready((PyObject *)(op)))
+ #endif
+ #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
+ #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+ #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
+ #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u))
+ #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u)
+ #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
+ #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch)
+ #if PY_VERSION_HEX >= 0x030C0000
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
+ #else
+ #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
+ #else
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
+ #endif
+ #endif
+#else
+ #define CYTHON_PEP393_ENABLED 0
+ #define PyUnicode_1BYTE_KIND 1
+ #define PyUnicode_2BYTE_KIND 2
+ #define PyUnicode_4BYTE_KIND 4
+ #define __Pyx_PyUnicode_READY(op) (0)
+ #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u)
+ #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+ #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U)
+ #define __Pyx_PyUnicode_KIND(u) ((int)sizeof(Py_UNICODE))
+ #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u))
+ #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+ #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch)
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u))
+#endif
+#if CYTHON_COMPILING_IN_PYPY
+ #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b)
+ #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b)
+#else
+ #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b)
+ #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
+ PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
+#endif
+#if CYTHON_COMPILING_IN_PYPY
+ #if !defined(PyUnicode_DecodeUnicodeEscape)
+ #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors)
+ #endif
+ #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500)
+ #undef PyUnicode_Contains
+ #define PyUnicode_Contains(u, s) PySequence_Contains(u, s)
+ #endif
+ #if !defined(PyByteArray_Check)
+ #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type)
+ #endif
+ #if !defined(PyObject_Format)
+ #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
+ #endif
+#endif
+#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
+#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
+#if PY_MAJOR_VERSION >= 3
+ #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
+#else
+ #define __Pyx_PyString_Format(a, b) PyString_Format(a, b)
+#endif
+#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
+ #define PyObject_ASCII(o) PyObject_Repr(o)
+#endif
+#if PY_MAJOR_VERSION >= 3
+ #define PyBaseString_Type PyUnicode_Type
+ #define PyStringObject PyUnicodeObject
+ #define PyString_Type PyUnicode_Type
+ #define PyString_Check PyUnicode_Check
+ #define PyString_CheckExact PyUnicode_CheckExact
+#ifndef PyObject_Unicode
+ #define PyObject_Unicode PyObject_Str
+#endif
+#endif
+#if PY_MAJOR_VERSION >= 3
+ #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
+ #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
+#else
+ #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
+ #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+ #define __Pyx_PySequence_ListKeepNew(obj)\
+ (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj))
+#else
+ #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj)
+#endif
+#ifndef PySet_CheckExact
+ #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type)
+#endif
+#if PY_VERSION_HEX >= 0x030900A4
+ #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt)
+ #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size)
+#else
+ #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt)
+ #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size)
+#endif
+#if CYTHON_ASSUME_SAFE_MACROS
+ #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i)
+ #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq)
+ #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0))
+ #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0))
+ #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o)
+ #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o)
+ #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o)
+ #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o)
+ #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o)
+#else
+ #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i)
+ #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq)
+ #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v)
+ #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v)
+ #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o)
+ #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o)
+ #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o)
+ #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o)
+ #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o)
+#endif
+#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
+ #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name)
+#else
+ static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) {
+ PyObject *module = PyImport_AddModule(name);
+ Py_XINCREF(module);
+ return module;
+ }
+#endif
+#if PY_MAJOR_VERSION >= 3
+ #define PyIntObject PyLongObject
+ #define PyInt_Type PyLong_Type
+ #define PyInt_Check(op) PyLong_Check(op)
+ #define PyInt_CheckExact(op) PyLong_CheckExact(op)
+ #define __Pyx_Py3Int_Check(op) PyLong_Check(op)
+ #define __Pyx_Py3Int_CheckExact(op) PyLong_CheckExact(op)
+ #define PyInt_FromString PyLong_FromString
+ #define PyInt_FromUnicode PyLong_FromUnicode
+ #define PyInt_FromLong PyLong_FromLong
+ #define PyInt_FromSize_t PyLong_FromSize_t
+ #define PyInt_FromSsize_t PyLong_FromSsize_t
+ #define PyInt_AsLong PyLong_AsLong
+ #define PyInt_AS_LONG PyLong_AS_LONG
+ #define PyInt_AsSsize_t PyLong_AsSsize_t
+ #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
+ #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+ #define PyNumber_Int PyNumber_Long
+#else
+ #define __Pyx_Py3Int_Check(op) (PyLong_Check(op) || PyInt_Check(op))
+ #define __Pyx_Py3Int_CheckExact(op) (PyLong_CheckExact(op) || PyInt_CheckExact(op))
+#endif
+#if PY_MAJOR_VERSION >= 3
+ #define PyBoolObject PyLongObject
+#endif
+#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
+ #ifndef PyUnicode_InternFromString
+ #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
+ #endif
+#endif
+#if PY_VERSION_HEX < 0x030200A4
+ typedef long Py_hash_t;
+ #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+ #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t
+#else
+ #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+ #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t
+#endif
+#if CYTHON_USE_ASYNC_SLOTS
+ #if PY_VERSION_HEX >= 0x030500B1
+ #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
+ #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
+ #else
+ #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
+ #endif
+#else
+ #define __Pyx_PyType_AsAsync(obj) NULL
+#endif
+#ifndef __Pyx_PyAsyncMethodsStruct
+ typedef struct {
+ unaryfunc am_await;
+ unaryfunc am_aiter;
+ unaryfunc am_anext;
+ } __Pyx_PyAsyncMethodsStruct;
+#endif
+
+#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)
+ #if !defined(_USE_MATH_DEFINES)
+ #define _USE_MATH_DEFINES
+ #endif
+#endif
+#include
+#ifdef NAN
+#define __PYX_NAN() ((float) NAN)
+#else
+static CYTHON_INLINE float __PYX_NAN() {
+ float value;
+ memset(&value, 0xFF, sizeof(value));
+ return value;
+}
+#endif
+#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
+#define __Pyx_truncl trunc
+#else
+#define __Pyx_truncl truncl
+#endif
+
+#define __PYX_MARK_ERR_POS(f_index, lineno) \
+ { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; }
+#define __PYX_ERR(f_index, lineno, Ln_error) \
+ { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }
+
+#ifdef CYTHON_EXTERN_C
+ #undef __PYX_EXTERN_C
+ #define __PYX_EXTERN_C CYTHON_EXTERN_C
+#elif defined(__PYX_EXTERN_C)
+ #ifdef _MSC_VER
+ #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.")
+ #else
+ #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.
+ #endif
+#else
+ #ifdef __cplusplus
+ #define __PYX_EXTERN_C extern "C"
+ #else
+ #define __PYX_EXTERN_C extern
+ #endif
+#endif
+
+#define __PYX_HAVE___pydevd_sys_monitoring_cython
+#define __PYX_HAVE_API___pydevd_sys_monitoring_cython
+/* Early includes */
+#include "frameobject.h"
+#ifdef _OPENMP
+#include
+#endif /* _OPENMP */
+
+#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
+ const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
+
+#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
+#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
+#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
+#define __PYX_DEFAULT_STRING_ENCODING ""
+#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
+#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
+#define __Pyx_uchar_cast(c) ((unsigned char)c)
+#define __Pyx_long_cast(x) ((long)x)
+#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\
+ (sizeof(type) < sizeof(Py_ssize_t)) ||\
+ (sizeof(type) > sizeof(Py_ssize_t) &&\
+ likely(v < (type)PY_SSIZE_T_MAX ||\
+ v == (type)PY_SSIZE_T_MAX) &&\
+ (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
+ v == (type)PY_SSIZE_T_MIN))) ||\
+ (sizeof(type) == sizeof(Py_ssize_t) &&\
+ (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
+ v == (type)PY_SSIZE_T_MAX))) )
+static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
+ return (size_t) i < (size_t) limit;
+}
+#if defined (__cplusplus) && __cplusplus >= 201103L
+ #include
+ #define __Pyx_sst_abs(value) std::abs(value)
+#elif SIZEOF_INT >= SIZEOF_SIZE_T
+ #define __Pyx_sst_abs(value) abs(value)
+#elif SIZEOF_LONG >= SIZEOF_SIZE_T
+ #define __Pyx_sst_abs(value) labs(value)
+#elif defined (_MSC_VER)
+ #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
+#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+ #define __Pyx_sst_abs(value) llabs(value)
+#elif defined (__GNUC__)
+ #define __Pyx_sst_abs(value) __builtin_llabs(value)
+#else
+ #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
+#endif
+static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s);
+static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
+static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
+static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*);
+#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
+#define __Pyx_PyBytes_FromString PyBytes_FromString
+#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
+static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
+#if PY_MAJOR_VERSION < 3
+ #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString
+ #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
+#else
+ #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString
+ #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
+#endif
+#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s))
+#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s))
+#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s))
+#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s))
+#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s))
+#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s))
+#define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
+#define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
+#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
+#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s))
+#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s))
+#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s)
+#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s)
+#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s)
+#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s)
+#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
+#define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o)
+#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode
+#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
+#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
+static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
+#define __Pyx_PySequence_Tuple(obj)\
+ (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
+#if CYTHON_ASSUME_SAFE_MACROS
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+#if PY_MAJOR_VERSION >= 3
+#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
+#else
+#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
+#endif
+#if CYTHON_USE_PYLONG_INTERNALS
+ #if PY_VERSION_HEX >= 0x030C00A7
+ #ifndef _PyLong_SIGN_MASK
+ #define _PyLong_SIGN_MASK 3
+ #endif
+ #ifndef _PyLong_NON_SIZE_BITS
+ #define _PyLong_NON_SIZE_BITS 3
+ #endif
+ #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK)
+ #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0)
+ #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x))
+ #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1)
+ #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0)
+ #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0])
+ #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS))
+ #define __Pyx_PyLong_SignedDigitCount(x)\
+ ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x))
+ #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue)
+ #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x)
+ #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x)
+ #else
+ #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS))
+ #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0])
+ #endif
+ typedef Py_ssize_t __Pyx_compact_pylong;
+ typedef size_t __Pyx_compact_upylong;
+ #else
+ #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0)
+ #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0)
+ #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0)
+ #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0)
+ #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0])
+ #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x))
+ #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x)
+ #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1)
+ #define __Pyx_PyLong_CompactValue(x)\
+ ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0]))
+ typedef sdigit __Pyx_compact_pylong;
+ typedef digit __Pyx_compact_upylong;
+ #endif
+ #if PY_VERSION_HEX >= 0x030C00A5
+ #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit)
+ #else
+ #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit)
+ #endif
+#endif
+#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
+#include
+static int __Pyx_sys_getdefaultencoding_not_ascii;
+static int __Pyx_init_sys_getdefaultencoding_params(void) {
+ PyObject* sys;
+ PyObject* default_encoding = NULL;
+ PyObject* ascii_chars_u = NULL;
+ PyObject* ascii_chars_b = NULL;
+ const char* default_encoding_c;
+ sys = PyImport_ImportModule("sys");
+ if (!sys) goto bad;
+ default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
+ Py_DECREF(sys);
+ if (!default_encoding) goto bad;
+ default_encoding_c = PyBytes_AsString(default_encoding);
+ if (!default_encoding_c) goto bad;
+ if (strcmp(default_encoding_c, "ascii") == 0) {
+ __Pyx_sys_getdefaultencoding_not_ascii = 0;
+ } else {
+ char ascii_chars[128];
+ int c;
+ for (c = 0; c < 128; c++) {
+ ascii_chars[c] = (char) c;
+ }
+ __Pyx_sys_getdefaultencoding_not_ascii = 1;
+ ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
+ if (!ascii_chars_u) goto bad;
+ ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
+ if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
+ PyErr_Format(
+ PyExc_ValueError,
+ "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
+ default_encoding_c);
+ goto bad;
+ }
+ Py_DECREF(ascii_chars_u);
+ Py_DECREF(ascii_chars_b);
+ }
+ Py_DECREF(default_encoding);
+ return 0;
+bad:
+ Py_XDECREF(default_encoding);
+ Py_XDECREF(ascii_chars_u);
+ Py_XDECREF(ascii_chars_b);
+ return -1;
+}
+#endif
+#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
+#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
+#else
+#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
+#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
+#include
+static char* __PYX_DEFAULT_STRING_ENCODING;
+static int __Pyx_init_sys_getdefaultencoding_params(void) {
+ PyObject* sys;
+ PyObject* default_encoding = NULL;
+ char* default_encoding_c;
+ sys = PyImport_ImportModule("sys");
+ if (!sys) goto bad;
+ default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
+ Py_DECREF(sys);
+ if (!default_encoding) goto bad;
+ default_encoding_c = PyBytes_AsString(default_encoding);
+ if (!default_encoding_c) goto bad;
+ __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
+ if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
+ strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
+ Py_DECREF(default_encoding);
+ return 0;
+bad:
+ Py_XDECREF(default_encoding);
+ return -1;
+}
+#endif
+#endif
+
+
+/* Test for GCC > 2.95 */
+#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
+ #define likely(x) __builtin_expect(!!(x), 1)
+ #define unlikely(x) __builtin_expect(!!(x), 0)
+#else /* !__GNUC__ or GCC < 2.95 */
+ #define likely(x) (x)
+ #define unlikely(x) (x)
+#endif /* __GNUC__ */
+static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
+
+#if !CYTHON_USE_MODULE_STATE
+static PyObject *__pyx_m = NULL;
+#endif
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm = __FILE__;
+static const char *__pyx_filename;
+
+/* #### Code section: filename_table ### */
+
+static const char *__pyx_f[] = {
+ "_pydevd_sys_monitoring\\\\_pydevd_sys_monitoring_cython.pyx",
+ "",
+ ".\\\\_pydevd_bundle\\\\pydevd_cython.pxd",
+};
+/* #### Code section: utility_code_proto_before_types ### */
+/* ForceInitThreads.proto */
+#ifndef __PYX_FORCE_INIT_THREADS
+ #define __PYX_FORCE_INIT_THREADS 0
+#endif
+
+/* #### Code section: numeric_typedefs ### */
+/* #### Code section: complex_type_declarations ### */
+/* #### Code section: type_declarations ### */
+
+/*--- Type declarations ---*/
+struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo;
+struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo;
+struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo;
+struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj;
+struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc;
+struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset;
+struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line;
+struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset;
+struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval;
+struct __pyx_opt_args_29_pydevd_sys_monitoring_cython__getframe;
+struct __pyx_opt_args_29_pydevd_sys_monitoring_cython__get_code_line_info;
+struct __pyx_opt_args_29_pydevd_sys_monitoring_cython_start_monitoring;
+struct __pyx_opt_args_29_pydevd_sys_monitoring_cython_stop_monitoring;
+
+/* "_pydevd_sys_monitoring_cython.pyx":116
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * @cython.cfunc # <<<<<<<<<<<<<<
+ * def _getframe(depth=0):
+ * return sys._getframe()
+ */
+struct __pyx_opt_args_29_pydevd_sys_monitoring_cython__getframe {
+ int __pyx_n;
+ PyObject *depth;
+};
+
+/* "_pydevd_sys_monitoring_cython.pyx":456
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _get_code_line_info(code_obj, _cache={}): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _get_code_line_info(code_obj, _cache={}):
+ */
+struct __pyx_opt_args_29_pydevd_sys_monitoring_cython__get_code_line_info {
+ int __pyx_n;
+ PyObject *_cache;
+};
+
+/* "_pydevd_sys_monitoring_cython.pyx":1723
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef start_monitoring(bint all_threads=False): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * # ELSE
+ */
+struct __pyx_opt_args_29_pydevd_sys_monitoring_cython_start_monitoring {
+ int __pyx_n;
+ int all_threads;
+};
+
+/* "_pydevd_sys_monitoring_cython.pyx":1751
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef stop_monitoring(all_threads=False): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * # ELSE
+ */
+struct __pyx_opt_args_29_pydevd_sys_monitoring_cython_stop_monitoring {
+ int __pyx_n;
+ PyObject *all_threads;
+};
+
+/* "_pydevd_bundle/pydevd_cython.pxd":1
+ * cdef class PyDBAdditionalThreadInfo: # <<<<<<<<<<<<<<
+ * cdef public int pydev_state
+ * cdef public object pydev_step_stop # Actually, it's a frame or None
+ */
+struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo {
+ PyObject_HEAD
+ struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_vtab;
+ int pydev_state;
+ PyObject *pydev_step_stop;
+ int pydev_original_step_cmd;
+ int pydev_step_cmd;
+ int pydev_notify_kill;
+ PyObject *pydev_smart_step_stop;
+ int pydev_django_resolve_frame;
+ PyObject *pydev_call_from_jinja2;
+ PyObject *pydev_call_inside_jinja2;
+ int is_tracing;
+ PyObject *conditional_breakpoint_exception;
+ PyObject *pydev_message;
+ int suspend_type;
+ int pydev_next_line;
+ PyObject *pydev_func_name;
+ int suspended_at_unhandled;
+ PyObject *trace_suspend_type;
+ PyObject *top_level_thread_tracer_no_back_frames;
+ PyObject *top_level_thread_tracer_unhandled;
+ PyObject *thread_tracer;
+ PyObject *step_in_initial_location;
+ int pydev_smart_parent_offset;
+ int pydev_smart_child_offset;
+ PyObject *pydev_smart_step_into_variants;
+ PyObject *target_id_to_smart_step_into_variant;
+ int pydev_use_scoped_step_frame;
+ PyObject *weak_thread;
+ int is_in_wait_loop;
+};
+
+
+/* "_pydevd_sys_monitoring_cython.pyx":243
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef class ThreadInfo: # <<<<<<<<<<<<<<
+ * cdef unsigned long thread_ident
+ * cdef PyDBAdditionalThreadInfo additional_info
+ */
+struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo {
+ PyObject_HEAD
+ unsigned long thread_ident;
+ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *additional_info;
+ PyObject *thread;
+ PyObject *trace;
+};
+
+
+/* "_pydevd_sys_monitoring_cython.pyx":351
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef class FuncCodeInfo: # <<<<<<<<<<<<<<
+ * cdef str co_filename
+ * cdef str canonical_normalized_filename
+ */
+struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo {
+ PyObject_HEAD
+ PyObject *co_filename;
+ PyObject *canonical_normalized_filename;
+ PyObject *abs_path_filename;
+ int always_skip_code;
+ int breakpoint_found;
+ int function_breakpoint_found;
+ int plugin_line_breakpoint_found;
+ int plugin_call_breakpoint_found;
+ int plugin_line_stepping;
+ int plugin_call_stepping;
+ int plugin_return_stepping;
+ int pydb_mtime;
+ PyObject *bp_line_to_breakpoint;
+ PyObject *function_breakpoint;
+ int always_filtered_out;
+ int filtered_out_force_checked;
+ PyObject *try_except_container_obj;
+ PyObject *code_obj;
+ PyObject *co_name;
+};
+
+
+/* "_pydevd_sys_monitoring_cython.pyx":801
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef class _TryExceptContainerObj: # <<<<<<<<<<<<<<
+ * cdef list try_except_infos
+ * # ELSE
+ */
+struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj {
+ PyObject_HEAD
+ PyObject *try_except_infos;
+};
+
+
+/* "cfunc.to_py":66
+ *
+ * @cname("__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc")
+ * cdef object __Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc(object (*f)(object, object, object) ): # <<<<<<<<<<<<<<
+ * def wrap(object code, object instruction, object exc):
+ * """wrap(code, instruction, exc)"""
+ */
+struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc {
+ PyObject_HEAD
+ PyObject *(*__pyx_v_f)(PyObject *, PyObject *, PyObject *);
+};
+
+struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset {
+ PyObject_HEAD
+ PyObject *(*__pyx_v_f)(PyObject *, PyObject *);
+};
+
+struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line {
+ PyObject_HEAD
+ PyObject *(*__pyx_v_f)(PyObject *, int);
+};
+
+struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset {
+ PyObject_HEAD
+ PyObject *(*__pyx_v_f)(PyObject *, int, int);
+};
+
+struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval {
+ PyObject_HEAD
+ PyObject *(*__pyx_v_f)(PyObject *, PyObject *, PyObject *);
+};
+
+
+
+/* "_pydevd_bundle/pydevd_cython.pxd":1
+ * cdef class PyDBAdditionalThreadInfo: # <<<<<<<<<<<<<<
+ * cdef public int pydev_state
+ * cdef public object pydev_step_stop # Actually, it's a frame or None
+ */
+
+struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo {
+ PyObject *(*get_topmost_frame)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, PyObject *, int __pyx_skip_dispatch);
+ PyObject *(*update_stepping_info)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch);
+ PyObject *(*_get_related_thread)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch);
+ int (*_is_stepping)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch);
+};
+static struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_vtabptr_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo;
+/* #### Code section: utility_code_proto ### */
+
+/* --- Runtime support code (head) --- */
+/* Refnanny.proto */
+#ifndef CYTHON_REFNANNY
+ #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+ typedef struct {
+ void (*INCREF)(void*, PyObject*, Py_ssize_t);
+ void (*DECREF)(void*, PyObject*, Py_ssize_t);
+ void (*GOTREF)(void*, PyObject*, Py_ssize_t);
+ void (*GIVEREF)(void*, PyObject*, Py_ssize_t);
+ void* (*SetupContext)(const char*, Py_ssize_t, const char*);
+ void (*FinishContext)(void**);
+ } __Pyx_RefNannyAPIStruct;
+ static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+ static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
+ #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+ #define __Pyx_RefNannySetupContext(name, acquire_gil)\
+ if (acquire_gil) {\
+ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
+ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\
+ PyGILState_Release(__pyx_gilstate_save);\
+ } else {\
+ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\
+ }
+ #define __Pyx_RefNannyFinishContextNogil() {\
+ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
+ __Pyx_RefNannyFinishContext();\
+ PyGILState_Release(__pyx_gilstate_save);\
+ }
+#else
+ #define __Pyx_RefNannySetupContext(name, acquire_gil)\
+ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__))
+ #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext()
+#endif
+ #define __Pyx_RefNannyFinishContextNogil() {\
+ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
+ __Pyx_RefNannyFinishContext();\
+ PyGILState_Release(__pyx_gilstate_save);\
+ }
+ #define __Pyx_RefNannyFinishContext()\
+ __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+ #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
+ #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
+ #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
+ #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
+ #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0)
+ #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0)
+ #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0)
+ #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0)
+#else
+ #define __Pyx_RefNannyDeclarations
+ #define __Pyx_RefNannySetupContext(name, acquire_gil)
+ #define __Pyx_RefNannyFinishContextNogil()
+ #define __Pyx_RefNannyFinishContext()
+ #define __Pyx_INCREF(r) Py_INCREF(r)
+ #define __Pyx_DECREF(r) Py_DECREF(r)
+ #define __Pyx_GOTREF(r)
+ #define __Pyx_GIVEREF(r)
+ #define __Pyx_XINCREF(r) Py_XINCREF(r)
+ #define __Pyx_XDECREF(r) Py_XDECREF(r)
+ #define __Pyx_XGOTREF(r)
+ #define __Pyx_XGIVEREF(r)
+#endif
+#define __Pyx_Py_XDECREF_SET(r, v) do {\
+ PyObject *tmp = (PyObject *) r;\
+ r = v; Py_XDECREF(tmp);\
+ } while (0)
+#define __Pyx_XDECREF_SET(r, v) do {\
+ PyObject *tmp = (PyObject *) r;\
+ r = v; __Pyx_XDECREF(tmp);\
+ } while (0)
+#define __Pyx_DECREF_SET(r, v) do {\
+ PyObject *tmp = (PyObject *) r;\
+ r = v; __Pyx_DECREF(tmp);\
+ } while (0)
+#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+/* PyErrExceptionMatches.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
+static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
+#else
+#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err)
+#endif
+
+/* PyThreadStateGet.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate;
+#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current;
+#if PY_VERSION_HEX >= 0x030C00A6
+#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL)
+#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL)
+#else
+#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL)
+#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type)
+#endif
+#else
+#define __Pyx_PyThreadState_declare
+#define __Pyx_PyThreadState_assign
+#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL)
+#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred()
+#endif
+
+/* PyErrFetchRestore.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
+#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6
+#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
+#else
+#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
+#endif
+#else
+#define __Pyx_PyErr_Clear() PyErr_Clear()
+#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
+#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb)
+#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb)
+#endif
+
+/* PyObjectGetAttrStr.proto */
+#if CYTHON_USE_TYPE_SLOTS
+static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
+#else
+#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
+#endif
+
+/* PyObjectGetAttrStrNoError.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name);
+
+/* GetBuiltinName.proto */
+static PyObject *__Pyx_GetBuiltinName(PyObject *name);
+
+/* TupleAndListFromArray.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n);
+static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n);
+#endif
+
+/* IncludeStringH.proto */
+#include
+
+/* BytesEquals.proto */
+static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);
+
+/* UnicodeEquals.proto */
+static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);
+
+/* fastcall.proto */
+#if CYTHON_AVOID_BORROWED_REFS
+ #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i)
+#elif CYTHON_ASSUME_SAFE_MACROS
+ #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i)
+#else
+ #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i)
+#endif
+#if CYTHON_AVOID_BORROWED_REFS
+ #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg)
+ #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg)
+#else
+ #define __Pyx_Arg_NewRef_VARARGS(arg) arg
+ #define __Pyx_Arg_XDECREF_VARARGS(arg)
+#endif
+#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds)
+#define __Pyx_KwValues_VARARGS(args, nargs) NULL
+#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s)
+#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw)
+#if CYTHON_METH_FASTCALL
+ #define __Pyx_Arg_FASTCALL(args, i) args[i]
+ #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds)
+ #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs))
+ static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s);
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
+ CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues);
+ #else
+ #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw)
+ #endif
+ #define __Pyx_Arg_NewRef_FASTCALL(arg) arg /* no-op, __Pyx_Arg_FASTCALL is direct and this needs
+ to have the same reference counting */
+ #define __Pyx_Arg_XDECREF_FASTCALL(arg)
+#else
+ #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS
+ #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS
+ #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS
+ #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS
+ #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS
+ #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg)
+ #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg)
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+#define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start)
+#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start)
+#else
+#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop)
+#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop)
+#endif
+
+/* RaiseArgTupleInvalid.proto */
+static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
+ Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
+
+/* RaiseDoubleKeywords.proto */
+static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
+
+/* ParseKeywords.proto */
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues,
+ PyObject **argnames[],
+ PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,
+ const char* function_name);
+
+/* IncludeStructmemberH.proto */
+#include
+
+/* FixUpExtensionType.proto */
+#if CYTHON_USE_TYPE_SPECS
+static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type);
+#endif
+
+/* FetchSharedCythonModule.proto */
+static PyObject *__Pyx_FetchSharedCythonABIModule(void);
+
+/* FetchCommonType.proto */
+#if !CYTHON_USE_TYPE_SPECS
+static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);
+#else
+static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases);
+#endif
+
+/* PyMethodNew.proto */
+#if CYTHON_COMPILING_IN_LIMITED_API
+static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
+ PyObject *typesModule=NULL, *methodType=NULL, *result=NULL;
+ CYTHON_UNUSED_VAR(typ);
+ if (!self)
+ return __Pyx_NewRef(func);
+ typesModule = PyImport_ImportModule("types");
+ if (!typesModule) return NULL;
+ methodType = PyObject_GetAttrString(typesModule, "MethodType");
+ Py_DECREF(typesModule);
+ if (!methodType) return NULL;
+ result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL);
+ Py_DECREF(methodType);
+ return result;
+}
+#elif PY_MAJOR_VERSION >= 3
+static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
+ CYTHON_UNUSED_VAR(typ);
+ if (!self)
+ return __Pyx_NewRef(func);
+ return PyMethod_New(func, self);
+}
+#else
+ #define __Pyx_PyMethod_New PyMethod_New
+#endif
+
+/* PyVectorcallFastCallDict.proto */
+#if CYTHON_METH_FASTCALL
+static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw);
+#endif
+
+/* CythonFunctionShared.proto */
+#define __Pyx_CyFunction_USED
+#define __Pyx_CYFUNCTION_STATICMETHOD 0x01
+#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02
+#define __Pyx_CYFUNCTION_CCLASS 0x04
+#define __Pyx_CYFUNCTION_COROUTINE 0x08
+#define __Pyx_CyFunction_GetClosure(f)\
+ (((__pyx_CyFunctionObject *) (f))->func_closure)
+#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
+ #define __Pyx_CyFunction_GetClassObj(f)\
+ (((__pyx_CyFunctionObject *) (f))->func_classobj)
+#else
+ #define __Pyx_CyFunction_GetClassObj(f)\
+ ((PyObject*) ((PyCMethodObject *) (f))->mm_class)
+#endif
+#define __Pyx_CyFunction_SetClassObj(f, classobj)\
+ __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj))
+#define __Pyx_CyFunction_Defaults(type, f)\
+ ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
+#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
+ ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
+typedef struct {
+#if CYTHON_COMPILING_IN_LIMITED_API
+ PyObject_HEAD
+ PyObject *func;
+#elif PY_VERSION_HEX < 0x030900B1
+ PyCFunctionObject func;
+#else
+ PyCMethodObject func;
+#endif
+#if CYTHON_BACKPORT_VECTORCALL
+ __pyx_vectorcallfunc func_vectorcall;
+#endif
+#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
+ PyObject *func_weakreflist;
+#endif
+ PyObject *func_dict;
+ PyObject *func_name;
+ PyObject *func_qualname;
+ PyObject *func_doc;
+ PyObject *func_globals;
+ PyObject *func_code;
+ PyObject *func_closure;
+#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
+ PyObject *func_classobj;
+#endif
+ void *defaults;
+ int defaults_pyobjects;
+ size_t defaults_size;
+ int flags;
+ PyObject *defaults_tuple;
+ PyObject *defaults_kwdict;
+ PyObject *(*defaults_getter)(PyObject *);
+ PyObject *func_annotations;
+ PyObject *func_is_coroutine;
+} __pyx_CyFunctionObject;
+#undef __Pyx_CyOrPyCFunction_Check
+#define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_CyFunctionType)
+#define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type)
+#define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CyFunctionType)
+static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc);
+#undef __Pyx_IsSameCFunction
+#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc)
+static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml,
+ int flags, PyObject* qualname,
+ PyObject *closure,
+ PyObject *module, PyObject *globals,
+ PyObject* code);
+static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj);
+static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,
+ size_t size,
+ int pyobjects);
+static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
+ PyObject *tuple);
+static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
+ PyObject *dict);
+static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
+ PyObject *dict);
+static int __pyx_CyFunction_init(PyObject *module);
+#if CYTHON_METH_FASTCALL
+static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
+static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
+static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
+static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
+#if CYTHON_BACKPORT_VECTORCALL
+#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall)
+#else
+#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall)
+#endif
+#endif
+
+/* CythonFunction.proto */
+static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml,
+ int flags, PyObject* qualname,
+ PyObject *closure,
+ PyObject *module, PyObject *globals,
+ PyObject* code);
+
+/* KeywordStringCheck.proto */
+static int __Pyx_CheckKeywordStrings(PyObject *kw, const char* function_name, int kw_allowed);
+
+/* PyDictVersioning.proto */
+#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
+#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1)
+#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
+ (version_var) = __PYX_GET_DICT_VERSION(dict);\
+ (cache_var) = (value);
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
+ (VAR) = __pyx_dict_cached_value;\
+ } else {\
+ (VAR) = __pyx_dict_cached_value = (LOOKUP);\
+ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
+ }\
+}
+static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj);
+static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj);
+static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version);
+#else
+#define __PYX_GET_DICT_VERSION(dict) (0)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
+#endif
+
+/* GetModuleGlobalName.proto */
+#if CYTHON_USE_DICT_VERSIONS
+#define __Pyx_GetModuleGlobalName(var, name) do {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
+ (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
+ __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+} while(0)
+#define __Pyx_GetModuleGlobalNameUncached(var, name) do {\
+ PY_UINT64_T __pyx_dict_version;\
+ PyObject *__pyx_dict_cached_value;\
+ (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+} while(0)
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
+#else
+#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
+#endif
+
+/* PyObjectLookupSpecial.proto */
+#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+#define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 0)
+#define __Pyx_PyObject_LookupSpecial(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 1)
+static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error);
+#else
+#define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n)
+#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n)
+#endif
+
+/* PyFunctionFastCall.proto */
+#if CYTHON_FAST_PYCALL
+#if !CYTHON_VECTORCALL
+#define __Pyx_PyFunction_FastCall(func, args, nargs)\
+ __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
+static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs);
+#endif
+#define __Pyx_BUILD_ASSERT_EXPR(cond)\
+ (sizeof(char [1 - 2*!(cond)]) - 1)
+#ifndef Py_MEMBER_SIZE
+#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
+#endif
+#if !CYTHON_VECTORCALL
+#if PY_VERSION_HEX >= 0x03080000
+ #include "frameobject.h"
+#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API
+ #ifndef Py_BUILD_CORE
+ #define Py_BUILD_CORE 1
+ #endif
+ #include "internal/pycore_frame.h"
+#endif
+ #define __Pxy_PyFrame_Initialize_Offsets()
+ #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus)
+#else
+ static size_t __pyx_pyframe_localsplus_offset = 0;
+ #include "frameobject.h"
+ #define __Pxy_PyFrame_Initialize_Offsets()\
+ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
+ (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
+ #define __Pyx_PyFrame_GetLocalsplus(frame)\
+ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
+#endif
+#endif
+#endif
+
+/* PyObjectCall.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
+#else
+#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
+#endif
+
+/* PyObjectCallMethO.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
+#endif
+
+/* PyObjectFastCall.proto */
+#define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL)
+static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs);
+
+/* GetTopmostException.proto */
+#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE
+static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
+#endif
+
+/* SaveResetException.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
+static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
+#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)
+static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
+#else
+#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb)
+#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb)
+#endif
+
+/* GetException.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb)
+static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
+#else
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
+#endif
+
+/* GetItemInt.proto */
+#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
+ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
+ __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
+ (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
+ __Pyx_GetItemInt_Generic(o, to_py_func(i))))
+#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
+ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
+ __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
+ (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
+ int wraparound, int boundscheck);
+#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
+ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
+ __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
+ (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
+ int wraparound, int boundscheck);
+static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
+ int is_list, int wraparound, int boundscheck);
+
+/* StrEquals.proto */
+#if PY_MAJOR_VERSION >= 3
+#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
+#else
+#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
+#endif
+
+/* PyObjectSetAttrStr.proto */
+#if CYTHON_USE_TYPE_SLOTS
+#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL)
+static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value);
+#else
+#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n)
+#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
+#endif
+
+/* ArgTypeTest.proto */
+#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\
+ ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\
+ __Pyx__ArgTypeTest(obj, type, name, exact))
+static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact);
+
+/* GetAttr3.proto */
+static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *);
+
+/* RaiseUnexpectedTypeError.proto */
+static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj);
+
+/* PyIntBinop.proto */
+#if !CYTHON_COMPILING_IN_PYPY
+static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
+#else
+#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace, zerodivision_check)\
+ (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
+#endif
+
+/* RaiseTooManyValuesToUnpack.proto */
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);
+
+/* RaiseNeedMoreValuesToUnpack.proto */
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
+
+/* IterFinish.proto */
+static CYTHON_INLINE int __Pyx_IterFinish(void);
+
+/* UnpackItemEndCheck.proto */
+static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);
+
+/* PyObjectCallNoArg.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
+
+/* RaiseException.proto */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
+
+/* PyObjectCallOneArg.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
+
+/* ObjectGetItem.proto */
+#if CYTHON_USE_TYPE_SLOTS
+static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key);
+#else
+#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key)
+#endif
+
+/* ExtTypeTest.proto */
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
+
+/* DictGetItem.proto */
+#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
+static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key);
+#define __Pyx_PyObject_Dict_GetItem(obj, name)\
+ (likely(PyDict_CheckExact(obj)) ?\
+ __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name))
+#else
+#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
+#define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name)
+#endif
+
+/* AssertionsEnabled.proto */
+#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
+ #define __Pyx_init_assertions_enabled() (0)
+ #define __pyx_assertions_enabled() (1)
+#elif CYTHON_COMPILING_IN_LIMITED_API || (CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030C0000)
+ static int __pyx_assertions_enabled_flag;
+ #define __pyx_assertions_enabled() (__pyx_assertions_enabled_flag)
+ static int __Pyx_init_assertions_enabled(void) {
+ PyObject *builtins, *debug, *debug_str;
+ int flag;
+ builtins = PyEval_GetBuiltins();
+ if (!builtins) goto bad;
+ debug_str = PyUnicode_FromStringAndSize("__debug__", 9);
+ if (!debug_str) goto bad;
+ debug = PyObject_GetItem(builtins, debug_str);
+ Py_DECREF(debug_str);
+ if (!debug) goto bad;
+ flag = PyObject_IsTrue(debug);
+ Py_DECREF(debug);
+ if (flag == -1) goto bad;
+ __pyx_assertions_enabled_flag = flag;
+ return 0;
+ bad:
+ __pyx_assertions_enabled_flag = 1;
+ return -1;
+ }
+#else
+ #define __Pyx_init_assertions_enabled() (0)
+ #define __pyx_assertions_enabled() (!Py_OptimizeFlag)
+#endif
+
+/* PyObjectGetMethod.proto */
+static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);
+
+/* PyObjectCallMethod0.proto */
+static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);
+
+/* RaiseNoneIterError.proto */
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
+
+/* UnpackTupleError.proto */
+static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index);
+
+/* UnpackTuple2.proto */
+#define __Pyx_unpack_tuple2(tuple, value1, value2, is_tuple, has_known_size, decref_tuple)\
+ (likely(is_tuple || PyTuple_Check(tuple)) ?\
+ (likely(has_known_size || PyTuple_GET_SIZE(tuple) == 2) ?\
+ __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple) :\
+ (__Pyx_UnpackTupleError(tuple, 2), -1)) :\
+ __Pyx_unpack_tuple2_generic(tuple, value1, value2, has_known_size, decref_tuple))
+static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
+ PyObject* tuple, PyObject** value1, PyObject** value2, int decref_tuple);
+static int __Pyx_unpack_tuple2_generic(
+ PyObject* tuple, PyObject** value1, PyObject** value2, int has_known_size, int decref_tuple);
+
+/* dict_iter.proto */
+static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name,
+ Py_ssize_t* p_orig_length, int* p_is_dict);
+static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos,
+ PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict);
+
+/* PySequenceContains.proto */
+static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
+ int result = PySequence_Contains(seq, item);
+ return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
+}
+
+/* GetAttr.proto */
+static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);
+
+/* HasAttr.proto */
+static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);
+
+/* SwapException.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
+static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
+#else
+static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
+#endif
+
+/* dict_getitem_default.proto */
+static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value);
+
+/* UnpackUnboundCMethod.proto */
+typedef struct {
+ PyObject *type;
+ PyObject **method_name;
+ PyCFunction func;
+ PyObject *method;
+ int flag;
+} __Pyx_CachedCFunction;
+
+/* CallUnboundCMethod1.proto */
+static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg);
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg);
+#else
+#define __Pyx_CallUnboundCMethod1(cfunc, self, arg) __Pyx__CallUnboundCMethod1(cfunc, self, arg)
+#endif
+
+/* CallUnboundCMethod2.proto */
+static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2);
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1
+static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2);
+#else
+#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2) __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2)
+#endif
+
+/* RaiseUnboundLocalError.proto */
+static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);
+
+/* SliceObject.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
+ PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
+ PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
+ int has_cstart, int has_cstop, int wraparound);
+
+/* PyIntCompare.proto */
+static CYTHON_INLINE int __Pyx_PyInt_BoolNeObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
+
+/* PyIntCompare.proto */
+static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
+
+/* Import.proto */
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
+
+/* ImportFrom.proto */
+static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);
+
+/* ValidateBasesTuple.proto */
+#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS
+static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases);
+#endif
+
+/* PyType_Ready.proto */
+CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t);
+
+/* PyObject_GenericGetAttrNoDict.proto */
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name);
+#else
+#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr
+#endif
+
+/* PyObject_GenericGetAttr.proto */
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name);
+#else
+#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr
+#endif
+
+/* SetupReduce.proto */
+#if !CYTHON_COMPILING_IN_LIMITED_API
+static int __Pyx_setup_reduce(PyObject* type_obj);
+#endif
+
+/* TypeImport.proto */
+#ifndef __PYX_HAVE_RT_ImportType_proto_3_0_11
+#define __PYX_HAVE_RT_ImportType_proto_3_0_11
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
+#include
+#endif
+#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L
+#define __PYX_GET_STRUCT_ALIGNMENT_3_0_11(s) alignof(s)
+#else
+#define __PYX_GET_STRUCT_ALIGNMENT_3_0_11(s) sizeof(void*)
+#endif
+enum __Pyx_ImportType_CheckSize_3_0_11 {
+ __Pyx_ImportType_CheckSize_Error_3_0_11 = 0,
+ __Pyx_ImportType_CheckSize_Warn_3_0_11 = 1,
+ __Pyx_ImportType_CheckSize_Ignore_3_0_11 = 2
+};
+static PyTypeObject *__Pyx_ImportType_3_0_11(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_11 check_size);
+#endif
+
+/* GetVTable.proto */
+static void* __Pyx_GetVtable(PyTypeObject *type);
+
+/* ImportDottedModule.proto */
+static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple);
+#if PY_MAJOR_VERSION >= 3
+static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple);
+#endif
+
+/* SetNameInClass.proto */
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000
+#define __Pyx_SetNameInClass(ns, name, value)\
+ (likely(PyDict_CheckExact(ns)) ? _PyDict_SetItem_KnownHash(ns, name, value, ((PyASCIIObject *) name)->hash) : PyObject_SetItem(ns, name, value))
+#elif CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_SetNameInClass(ns, name, value)\
+ (likely(PyDict_CheckExact(ns)) ? PyDict_SetItem(ns, name, value) : PyObject_SetItem(ns, name, value))
+#else
+#define __Pyx_SetNameInClass(ns, name, value) PyObject_SetItem(ns, name, value)
+#endif
+
+/* CalculateMetaclass.proto */
+static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases);
+
+/* PyObjectCall2Args.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
+
+/* Py3ClassCreate.proto */
+static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname,
+ PyObject *mkw, PyObject *modname, PyObject *doc);
+static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict,
+ PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass);
+
+/* CLineInTraceback.proto */
+#ifdef CYTHON_CLINE_IN_TRACEBACK
+#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
+#else
+static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
+#endif
+
+/* CodeObjectCache.proto */
+#if !CYTHON_COMPILING_IN_LIMITED_API
+typedef struct {
+ PyCodeObject* code_object;
+ int code_line;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+ int count;
+ int max_count;
+ __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+#endif
+
+/* AddTraceback.proto */
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+ int py_line, const char *filename);
+
+/* GCCDiagnostics.proto */
+#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
+#define __Pyx_HAS_GCC_DIAGNOSTIC
+#endif
+
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE unsigned long __Pyx_PyInt_As_unsigned_long(PyObject *);
+
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
+
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
+
+/* FormatTypeName.proto */
+#if CYTHON_COMPILING_IN_LIMITED_API
+typedef PyObject *__Pyx_TypeName;
+#define __Pyx_FMT_TYPENAME "%U"
+static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp);
+#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj)
+#else
+typedef const char *__Pyx_TypeName;
+#define __Pyx_FMT_TYPENAME "%.200s"
+#define __Pyx_PyType_GetName(tp) ((tp)->tp_name)
+#define __Pyx_DECREF_TypeName(obj)
+#endif
+
+/* FastTypeChecks.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
+#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2)
+static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
+static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b);
+static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
+static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
+#else
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2))
+#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
+#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
+#endif
+#define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2)
+#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)
+
+/* CheckBinaryVersion.proto */
+static unsigned long __Pyx_get_runtime_version(void);
+static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer);
+
+/* FunctionImport.proto */
+static int __Pyx_ImportFunction_3_0_11(PyObject *module, const char *funcname, void (**f)(void), const char *sig);
+
+/* InitStrings.proto */
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
+
+/* #### Code section: module_declarations ### */
+
+/* Module declarations from "cpython.mem" */
+
+/* Module declarations from "cython" */
+
+/* Module declarations from "_pydevd_bundle.pydevd_cython" */
+static PyObject *(*__pyx_f_14_pydevd_bundle_13pydevd_cython_set_additional_thread_info)(PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int (*__pyx_f_14_pydevd_bundle_13pydevd_cython_any_thread_stepping)(int __pyx_skip_dispatch); /*proto*/
+
+/* Module declarations from "_pydevd_sys_monitoring_cython" */
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__notify_skipped_step_in_because_of_filters(PyObject *, PyObject *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__getframe(struct __pyx_opt_args_29_pydevd_sys_monitoring_cython__getframe *__pyx_optional_args); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__get_bootstrap_frame(PyObject *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__is_user_frame(PyObject *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__is_last_user_frame(PyObject *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__create_thread_info(PyObject *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__get_thread_info(int, int); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__get_code_line_info(PyObject *, struct __pyx_opt_args_29_pydevd_sys_monitoring_cython__get_code_line_info *__pyx_optional_args); /*proto*/
+static struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_f_29_pydevd_sys_monitoring_cython__get_func_code_info(PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__enable_line_tracing(PyObject *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__enable_return_tracing(PyObject *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython_disable_code_tracing(PyObject *, int __pyx_skip_dispatch); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython_enable_code_tracing(unsigned long, PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_29_pydevd_sys_monitoring_cython__enable_code_tracing(PyObject *, struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *, PyObject *, PyObject *, int); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__enable_step_tracing(PyObject *, PyObject *, PyObject *, struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, PyObject *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__unwind_event(PyObject *, PyObject *, PyObject *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__raise_event(PyObject *, PyObject *, PyObject *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython_get_func_name(PyObject *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__show_return_values(PyObject *, PyObject *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__return_event(PyObject *, PyObject *, PyObject *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__enable_code_tracing_for_frame_and_parents(struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *, PyObject *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__stop_on_return(PyObject *, struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *, struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int, PyObject *, PyObject *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__stop_on_breakpoint(PyObject *, struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *, int, PyObject *, PyObject *, PyObject *, int, int, PyObject *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__plugin_stepping(PyObject *, int, PyObject *, PyObject *, struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__jump_event(PyObject *, int, int); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__line_event(PyObject *, int); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__internal_line_event(struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *, PyObject *, int); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__start_method_event(PyObject *, PyObject *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__ensure_monitoring(int __pyx_skip_dispatch); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython_start_monitoring(int __pyx_skip_dispatch, struct __pyx_opt_args_29_pydevd_sys_monitoring_cython_start_monitoring *__pyx_optional_args); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython_stop_monitoring(int __pyx_skip_dispatch, struct __pyx_opt_args_29_pydevd_sys_monitoring_cython_stop_monitoring *__pyx_optional_args); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__is_same_frame(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, PyObject *, PyObject *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython___pyx_unpickle_ThreadInfo__set_state(struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *, PyObject *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython___pyx_unpickle_FuncCodeInfo__set_state(struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *, PyObject *); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython___pyx_unpickle__TryExceptContainerObj__set_state(struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *, PyObject *); /*proto*/
+static PyObject *__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc(PyObject *(*)(PyObject *, PyObject *, PyObject *)); /*proto*/
+static PyObject *__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset(PyObject *(*)(PyObject *, PyObject *)); /*proto*/
+static PyObject *__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line(PyObject *(*)(PyObject *, int)); /*proto*/
+static PyObject *__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset(PyObject *(*)(PyObject *, int, int)); /*proto*/
+static PyObject *__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval(PyObject *(*)(PyObject *, PyObject *, PyObject *)); /*proto*/
+/* #### Code section: typeinfo ### */
+/* #### Code section: before_global_var ### */
+#define __Pyx_MODULE_NAME "_pydevd_sys_monitoring_cython"
+extern int __pyx_module_is_main__pydevd_sys_monitoring_cython;
+int __pyx_module_is_main__pydevd_sys_monitoring_cython = 0;
+
+/* Implementation of "_pydevd_sys_monitoring_cython" */
+/* #### Code section: global_var ### */
+static PyObject *__pyx_builtin_ImportError;
+static PyObject *__pyx_builtin_AttributeError;
+static PyObject *__pyx_builtin_min;
+static PyObject *__pyx_builtin_max;
+static PyObject *__pyx_builtin_AssertionError;
+/* #### Code section: string_decls ### */
+static const char __pyx_k_1[] = "1";
+static const char __pyx_k_t[] = "t";
+static const char __pyx_k_gc[] = "gc";
+static const char __pyx_k_os[] = "os";
+static const char __pyx_k_re[] = "re";
+static const char __pyx_k_ALL[] = "ALL";
+static const char __pyx_k_Any[] = "Any";
+static const char __pyx_k__14[] = "";
+static const char __pyx_k__17[] = "?";
+static const char __pyx_k__19[] = ".";
+static const char __pyx_k__22[] = "*";
+static const char __pyx_k_arg[] = "arg";
+static const char __pyx_k_del[] = "__del__";
+static const char __pyx_k_dis[] = "dis";
+static const char __pyx_k_doc[] = "__doc__";
+static const char __pyx_k_end[] = "end";
+static const char __pyx_k_exc[] = "exc";
+static const char __pyx_k_get[] = "get";
+static const char __pyx_k_max[] = "max";
+static const char __pyx_k_min[] = "min";
+static const char __pyx_k_new[] = "__new__";
+static const char __pyx_k_pop[] = "pop";
+static const char __pyx_k_pyc[] = ".pyc";
+static const char __pyx_k_ref[] = "_ref";
+static const char __pyx_k_run[] = "run";
+static const char __pyx_k_s_s[] = "%s != %s";
+static const char __pyx_k_sys[] = "sys";
+static const char __pyx_k_Dict[] = "Dict";
+static const char __pyx_k_JUMP[] = "JUMP";
+static const char __pyx_k_LINE[] = "LINE";
+static const char __pyx_k_None[] = "None";
+static const char __pyx_k_args[] = "args";
+static const char __pyx_k_call[] = "__call__";
+static const char __pyx_k_code[] = "code";
+static const char __pyx_k_dict[] = "__dict__";
+static const char __pyx_k_exec[] = "_exec";
+static const char __pyx_k_exit[] = "__exit__";
+static const char __pyx_k_init[] = "__init__";
+static const char __pyx_k_line[] = "line";
+static const char __pyx_k_main[] = "main";
+static const char __pyx_k_name[] = "__name__";
+static const char __pyx_k_self[] = "self";
+static const char __pyx_k_spec[] = "__spec__";
+static const char __pyx_k_stop[] = "stop";
+static const char __pyx_k_test[] = "__test__";
+static const char __pyx_k_wrap[] = "wrap";
+static const char __pyx_k_RAISE[] = "RAISE";
+static const char __pyx_k_Tuple[] = "Tuple";
+static const char __pyx_k_class[] = "__class__";
+static const char __pyx_k_debug[] = "debug";
+static const char __pyx_k_enter[] = "__enter__";
+static const char __pyx_k_event[] = "event";
+static const char __pyx_k_frame[] = "frame";
+static const char __pyx_k_ident[] = "ident";
+static const char __pyx_k_items[] = "items";
+static const char __pyx_k_local[] = "local";
+static const char __pyx_k_mtime[] = "mtime";
+static const char __pyx_k_py_db[] = "py_db";
+static const char __pyx_k_run_2[] = "_run";
+static const char __pyx_k_runpy[] = "runpy";
+static const char __pyx_k_s_s_2[] = "%s.%s";
+static const char __pyx_k_start[] = "start";
+static const char __pyx_k_state[] = "state";
+static const char __pyx_k_super[] = "super";
+static const char __pyx_k_trace[] = "trace";
+static const char __pyx_k_types[] = "types";
+static const char __pyx_k_Thread[] = "Thread";
+static const char __pyx_k_active[] = "_active";
+static const char __pyx_k_call_2[] = "call";
+static const char __pyx_k_dict_2[] = "_dict";
+static const char __pyx_k_enable[] = "enable";
+static const char __pyx_k_events[] = "events";
+static const char __pyx_k_f_back[] = "f_back";
+static const char __pyx_k_f_code[] = "f_code";
+static const char __pyx_k_import[] = "__import__";
+static const char __pyx_k_kwargs[] = "kwargs";
+static const char __pyx_k_main_2[] = "__main__";
+static const char __pyx_k_module[] = "";
+static const char __pyx_k_offset[] = "offset";
+static const char __pyx_k_pickle[] = "pickle";
+static const char __pyx_k_plugin[] = "plugin";
+static const char __pyx_k_pydevd[] = "pydevd";
+static const char __pyx_k_reduce[] = "__reduce__";
+static const char __pyx_k_return[] = "return";
+static const char __pyx_k_retval[] = "retval";
+static const char __pyx_k_thread[] = "thread";
+static const char __pyx_k_tident[] = "_tident";
+static const char __pyx_k_typing[] = "typing";
+static const char __pyx_k_update[] = "update";
+static const char __pyx_k_values[] = "values";
+static const char __pyx_k_writer[] = "writer";
+static const char __pyx_k_DISABLE[] = "DISABLE";
+static const char __pyx_k_co_name[] = "co_name";
+static const char __pyx_k_compile[] = "compile";
+static const char __pyx_k_disable[] = "disable";
+static const char __pyx_k_f_lasti[] = "f_lasti";
+static const char __pyx_k_linesep[] = "linesep";
+static const char __pyx_k_monitor[] = "monitor";
+static const char __pyx_k_os_path[] = "os.path";
+static const char __pyx_k_prepare[] = "__prepare__";
+static const char __pyx_k_suspend[] = "suspend";
+static const char __pyx_k_CodeType[] = "CodeType";
+static const char __pyx_k_Optional[] = "Optional";
+static const char __pyx_k_PY_START[] = "PY_START";
+static const char __pyx_k_basename[] = "basename";
+static const char __pyx_k_can_skip[] = "can_skip";
+static const char __pyx_k_co_lines[] = "co_lines";
+static const char __pyx_k_code_obj[] = "code_obj";
+static const char __pyx_k_endswith[] = "endswith";
+static const char __pyx_k_execfile[] = "execfile";
+static const char __pyx_k_f_lineno[] = "f_lineno";
+static const char __pyx_k_f_locals[] = "f_locals";
+static const char __pyx_k_get_tool[] = "get_tool";
+static const char __pyx_k_getframe[] = "_getframe";
+static const char __pyx_k_getstate[] = "__getstate__";
+static const char __pyx_k_is_alive[] = "is_alive";
+static const char __pyx_k_module_2[] = "__module__";
+static const char __pyx_k_pyx_type[] = "__pyx_type";
+static const char __pyx_k_qualname[] = "__qualname__";
+static const char __pyx_k_set_name[] = "__set_name__";
+static const char __pyx_k_setstate[] = "__setstate__";
+static const char __pyx_k_short_tb[] = "short_tb";
+static const char __pyx_k_splitext[] = "splitext";
+static const char __pyx_k_FrameType[] = "FrameType";
+static const char __pyx_k_PY_RESUME[] = "PY_RESUME";
+static const char __pyx_k_PY_RETURN[] = "PY_RETURN";
+static const char __pyx_k_PY_UNWIND[] = "PY_UNWIND";
+static const char __pyx_k_STATE_RUN[] = "STATE_RUN";
+static const char __pyx_k_bootstrap[] = "__bootstrap";
+static const char __pyx_k_enumerate[] = "enumerate";
+static const char __pyx_k_exception[] = "exception";
+static const char __pyx_k_get_ident[] = "_get_ident";
+static const char __pyx_k_isenabled[] = "isenabled";
+static const char __pyx_k_metaclass[] = "__metaclass__";
+static const char __pyx_k_pydev_log[] = "pydev_log";
+static const char __pyx_k_pydevd_py[] = "pydevd.py";
+static const char __pyx_k_pyx_state[] = "__pyx_state";
+static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
+static const char __pyx_k_threading[] = "threading";
+static const char __pyx_k_to_offset[] = "to_offset";
+static const char __pyx_k_traceback[] = "__traceback__";
+static const char __pyx_k_ThreadInfo[] = "ThreadInfo";
+static const char __pyx_k_expression[] = "expression";
+static const char __pyx_k_global_dbg[] = "global_dbg";
+static const char __pyx_k_has_breaks[] = "has_breaks";
+static const char __pyx_k_is_stopped[] = "_is_stopped";
+static const char __pyx_k_monitoring[] = "monitoring";
+static const char __pyx_k_namedtuple[] = "namedtuple";
+static const char __pyx_k_pyx_result[] = "__pyx_result";
+static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
+static const char __pyx_k_set_events[] = "set_events";
+static const char __pyx_k_startswith[] = "startswith";
+static const char __pyx_k_DEBUGGER_ID[] = "DEBUGGER_ID";
+static const char __pyx_k_DEBUG_START[] = "DEBUG_START";
+static const char __pyx_k_DummyThread[] = "_DummyThread";
+static const char __pyx_k_ImportError[] = "ImportError";
+static const char __pyx_k_PickleError[] = "PickleError";
+static const char __pyx_k_add_command[] = "add_command";
+static const char __pyx_k_all_threads[] = "all_threads";
+static const char __pyx_k_bootstrap_2[] = "_bootstrap";
+static const char __pyx_k_breakpoints[] = "breakpoints";
+static const char __pyx_k_cfunc_to_py[] = "cfunc.to_py";
+static const char __pyx_k_cmd_factory[] = "cmd_factory";
+static const char __pyx_k_co_filename[] = "co_filename";
+static const char __pyx_k_collections[] = "collections";
+static const char __pyx_k_f_bootstrap[] = "f_bootstrap";
+static const char __pyx_k_from_offset[] = "from_offset";
+static const char __pyx_k_get_ident_2[] = "get_ident";
+static const char __pyx_k_instruction[] = "instruction";
+static const char __pyx_k_is_logpoint[] = "is_logpoint";
+static const char __pyx_k_pydev_state[] = "pydev_state";
+static const char __pyx_k_python_line[] = "python-line";
+static const char __pyx_k_set_suspend[] = "set_suspend";
+static const char __pyx_k_short_frame[] = "short_frame";
+static const char __pyx_k_sys_monitor[] = "sys_monitor";
+static const char __pyx_k_thread_info[] = "thread_info";
+static const char __pyx_k_use_tool_id[] = "use_tool_id";
+static const char __pyx_k_CodeLineInfo[] = "_CodeLineInfo";
+static const char __pyx_k_ForkSafeLock[] = "ForkSafeLock";
+static const char __pyx_k_FuncCodeInfo[] = "FuncCodeInfo";
+static const char __pyx_k_dummy_thread[] = "dummy_thread";
+static const char __pyx_k_free_tool_id[] = "free_tool_id";
+static const char __pyx_k_frozen_runpy[] = "";
+static const char __pyx_k_initializing[] = "_initializing";
+static const char __pyx_k_is_coroutine[] = "_is_coroutine";
+static const char __pyx_k_pydev_bundle[] = "_pydev_bundle";
+static const char __pyx_k_pydev_monkey[] = "pydev_monkey";
+static const char __pyx_k_pydevd_runpy[] = "pydevd_runpy";
+static const char __pyx_k_pyx_checksum[] = "__pyx_checksum";
+static const char __pyx_k_stringsource[] = "";
+static const char __pyx_k_thread_ident[] = "thread_ident";
+static const char __pyx_k_use_setstate[] = "use_setstate";
+static const char __pyx_k_CMD_SET_BREAK[] = "CMD_SET_BREAK";
+static const char __pyx_k_CMD_STEP_INTO[] = "CMD_STEP_INTO";
+static const char __pyx_k_CMD_STEP_OVER[] = "CMD_STEP_OVER";
+static const char __pyx_k_Optional_bool[] = "Optional[bool]";
+static const char __pyx_k_STATE_SUSPEND[] = "STATE_SUSPEND";
+static const char __pyx_k_class_getitem[] = "__class_getitem__";
+static const char __pyx_k_cmd_step_into[] = "cmd_step_into";
+static const char __pyx_k_cmd_step_over[] = "cmd_step_over";
+static const char __pyx_k_get_file_type[] = "get_file_type";
+static const char __pyx_k_has_condition[] = "has_condition";
+static const char __pyx_k_init_subclass[] = "__init_subclass__";
+static const char __pyx_k_pydb_disposed[] = "pydb_disposed";
+static const char __pyx_k_pydevd_bundle[] = "_pydevd_bundle";
+static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
+static const char __pyx_k_thread_active[] = "_thread_active";
+static const char __pyx_k_AssertionError[] = "AssertionError";
+static const char __pyx_k_AttributeError[] = "AttributeError";
+static const char __pyx_k_PYTHON_SUSPEND[] = "PYTHON_SUSPEND";
+static const char __pyx_k_TRACE_PROPERTY[] = "TRACE_PROPERTY";
+static const char __pyx_k_current_thread[] = "current_thread";
+static const char __pyx_k_dummy_thread_2[] = "_dummy_thread";
+static const char __pyx_k_findlinestarts[] = "findlinestarts";
+static const char __pyx_k_frame_or_depth[] = "frame_or_depth";
+static const char __pyx_k_get_breakpoint[] = "get_breakpoint";
+static const char __pyx_k_line_to_offset[] = "line_to_offset";
+static const char __pyx_k_pydev_step_cmd[] = "pydev_step_cmd";
+static const char __pyx_k_restart_events[] = "restart_events";
+static const char __pyx_k_suspend_policy[] = "suspend_policy";
+static const char __pyx_k_CMD_STEP_RETURN[] = "CMD_STEP_RETURN";
+static const char __pyx_k_IgnoreException[] = "[^#]*#.*@IgnoreException";
+static const char __pyx_k_additional_info[] = "additional_info";
+static const char __pyx_k_bootstrap_inner[] = "__bootstrap_inner";
+static const char __pyx_k_do_wait_suspend[] = "_do_wait_suspend";
+static const char __pyx_k_make_io_message[] = "make_io_message";
+static const char __pyx_k_python_function[] = "python-function";
+static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError";
+static const char __pyx_k_required_events[] = "required_events";
+static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
+static const char __pyx_k_stop_monitoring[] = "stop_monitoring";
+static const char __pyx_k_DEBUG_START_PY3K[] = "DEBUG_START_PY3K";
+static const char __pyx_k_get_local_events[] = "get_local_events";
+static const char __pyx_k_handle_exception[] = "handle_exception";
+static const char __pyx_k_is_tracked_frame[] = "is_tracked_frame";
+static const char __pyx_k_set_local_events[] = "set_local_events";
+static const char __pyx_k_start_monitoring[] = "start_monitoring";
+static const char __pyx_k_try_except_infos[] = "try_except_infos";
+static const char __pyx_k_active_limbo_lock[] = "_active_limbo_lock";
+static const char __pyx_k_bootstrap_inner_2[] = "_bootstrap_inner";
+static const char __pyx_k_children_variants[] = "children_variants";
+static const char __pyx_k_do_wait_suspend_2[] = "do_wait_suspend";
+static const char __pyx_k_ensure_monitoring[] = "_ensure_monitoring";
+static const char __pyx_k_flag_as_unwinding[] = "flag_as_unwinding";
+static const char __pyx_k_original_step_cmd[] = "original_step_cmd";
+static const char __pyx_k_pydev_execfile_py[] = "_pydev_execfile.py";
+static const char __pyx_k_pydevd_dont_trace[] = "pydevd_dont_trace";
+static const char __pyx_k_pydevd_file_utils[] = "pydevd_file_utils";
+static const char __pyx_k_register_callback[] = "register_callback";
+static const char __pyx_k_should_trace_hook[] = "should_trace_hook";
+static const char __pyx_k_suspend_requested[] = "suspend_requested";
+static const char __pyx_k_thread_local_info[] = "_thread_local_info";
+static const char __pyx_k_RETURN_VALUES_DICT[] = "RETURN_VALUES_DICT";
+static const char __pyx_k_apply_files_filter[] = "apply_files_filter";
+static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines";
+static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
+static const char __pyx_k_get_func_code_info[] = "_get_func_code_info";
+static const char __pyx_k_get_line_of_offset[] = "get_line_of_offset";
+static const char __pyx_k_instruction_offset[] = "instruction_offset";
+static const char __pyx_k_pydev_do_not_trace[] = "pydev_do_not_trace";
+static const char __pyx_k_show_return_values[] = "show_return_values";
+static const char __pyx_k_CMD_SMART_STEP_INTO[] = "CMD_SMART_STEP_INTO";
+static const char __pyx_k_enable_code_tracing[] = "enable_code_tracing";
+static const char __pyx_k_get_cache_file_type[] = "get_cache_file_type";
+static const char __pyx_k_line_to_breakpoints[] = "line_to_breakpoints";
+static const char __pyx_k_GlobalDebuggerHolder[] = "GlobalDebuggerHolder";
+static const char __pyx_k_IGNORE_EXCEPTION_TAG[] = "IGNORE_EXCEPTION_TAG";
+static const char __pyx_k_disable_code_tracing[] = "disable_code_tracing";
+static const char __pyx_k_get_clsname_for_code[] = "get_clsname_for_code";
+static const char __pyx_k_CMD_STEP_INTO_MY_CODE[] = "CMD_STEP_INTO_MY_CODE";
+static const char __pyx_k_CMD_STEP_OVER_MY_CODE[] = "CMD_STEP_OVER_MY_CODE";
+static const char __pyx_k_TryExceptContainerObj[] = "_TryExceptContainerObj";
+static const char __pyx_k_suspend_other_threads[] = "suspend_other_threads";
+static const char __pyx_k_update_monitor_events[] = "update_monitor_events";
+static const char __pyx_k_CMD_SET_FUNCTION_BREAK[] = "CMD_SET_FUNCTION_BREAK";
+static const char __pyx_k_DeleteDummyThreadOnDel[] = "_DeleteDummyThreadOnDel";
+static const char __pyx_k_EXCEPTION_TYPE_HANDLED[] = "EXCEPTION_TYPE_HANDLED";
+static const char __pyx_k_PYDEVD_IPYTHON_CONTEXT[] = "PYDEVD_IPYTHON_CONTEXT";
+static const char __pyx_k_has_plugin_line_breaks[] = "has_plugin_line_breaks";
+static const char __pyx_k_is_pydev_daemon_thread[] = "is_pydev_daemon_thread";
+static const char __pyx_k_is_unhandled_exception[] = "is_unhandled_exception";
+static const char __pyx_k_track_dummy_thread_ref[] = "_track_dummy_thread_ref";
+static const char __pyx_k_user_uncaught_exc_info[] = "_user_uncaught_exc_info";
+static const char __pyx_k_CMD_STEP_INTO_COROUTINE[] = "CMD_STEP_INTO_COROUTINE";
+static const char __pyx_k_CMD_STEP_RETURN_MY_CODE[] = "CMD_STEP_RETURN_MY_CODE";
+static const char __pyx_k_collect_try_except_info[] = "collect_try_except_info";
+static const char __pyx_k_is_files_filter_enabled[] = "is_files_filter_enabled";
+static const char __pyx_k_pydevd_traceproperty_py[] = "pydevd_traceproperty.py";
+static const char __pyx_k_pyx_unpickle_ThreadInfo[] = "__pyx_unpickle_ThreadInfo";
+static const char __pyx_k_Stop_inside_ipython_call[] = "Stop inside ipython call";
+static const char __pyx_k_required_events_stepping[] = "required_events_stepping";
+static const char __pyx_k_should_stop_on_exception[] = "should_stop_on_exception";
+static const char __pyx_k_pyx_unpickle_FuncCodeInfo[] = "__pyx_unpickle_FuncCodeInfo";
+static const char __pyx_k_ThreadInfo___reduce_cython[] = "ThreadInfo.__reduce_cython__";
+static const char __pyx_k_break_on_caught_exceptions[] = "break_on_caught_exceptions";
+static const char __pyx_k_pydevd_bundle_pydevd_utils[] = "_pydevd_bundle.pydevd_utils";
+static const char __pyx_k_required_events_breakpoint[] = "required_events_breakpoint";
+static const char __pyx_k_file_to_line_to_breakpoints[] = "file_to_line_to_breakpoints";
+static const char __pyx_k_handle_breakpoint_condition[] = "handle_breakpoint_condition";
+static const char __pyx_k_has_plugin_exception_breaks[] = "has_plugin_exception_breaks";
+static const char __pyx_k_is_bootstrap_frame_internal[] = "is_bootstrap_frame_internal";
+static const char __pyx_k_stop_on_unhandled_exception[] = "stop_on_unhandled_exception";
+static const char __pyx_k_DeleteDummyThreadOnDel___del[] = "_DeleteDummyThreadOnDel.__del__";
+static const char __pyx_k_FuncCodeInfo___reduce_cython[] = "FuncCodeInfo.__reduce_cython__";
+static const char __pyx_k_ThreadInfo___setstate_cython[] = "ThreadInfo.__setstate_cython__";
+static const char __pyx_k_break_on_uncaught_exceptions[] = "break_on_uncaught_exceptions";
+static const char __pyx_k_code_to_func_code_info_cache[] = "_code_to_func_code_info_cache";
+static const char __pyx_k_f_disable_next_line_if_match[] = "f_disable_next_line_if_match";
+static const char __pyx_k_handle_breakpoint_expression[] = "handle_breakpoint_expression";
+static const char __pyx_k_pydevd_sys_monitoring_cython[] = "_pydevd_sys_monitoring_cython";
+static const char __pyx_k_DeleteDummyThreadOnDel___init[] = "_DeleteDummyThreadOnDel.__init__";
+static const char __pyx_k_EXCEPTION_TYPE_USER_UNHANDLED[] = "EXCEPTION_TYPE_USER_UNHANDLED";
+static const char __pyx_k_NORM_PATHS_AND_BASE_CONTAINER[] = "NORM_PATHS_AND_BASE_CONTAINER";
+static const char __pyx_k_global_notify_skipped_step_in[] = "_global_notify_skipped_step_in";
+static const char __pyx_k_FuncCodeInfo___setstate_cython[] = "FuncCodeInfo.__setstate_cython__";
+static const char __pyx_k_Helper_class_to_remove_a_dummy[] = "\n Helper class to remove a dummy thread from threading._active on __del__.\n ";
+static const char __pyx_k_Pyx_CFunc_4904d5__29_pydevd_sy[] = "__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc..wrap";
+static const char __pyx_k_Pyx_CFunc_7f6725__29_pydevd_sy[] = "__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset..wrap";
+static const char __pyx_k_Pyx_CFunc_893235__29_pydevd_sy[] = "__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset..wrap";
+static const char __pyx_k_Pyx_CFunc_b0409f__29_pydevd_sy[] = "__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line..wrap";
+static const char __pyx_k_TryExceptContainerObj___reduce[] = "_TryExceptContainerObj.__reduce_cython__";
+static const char __pyx_k_pydevd_bundle_pydevd_constants[] = "_pydevd_bundle.pydevd_constants";
+static const char __pyx_k_pyx_unpickle__TryExceptContain[] = "__pyx_unpickle__TryExceptContainerObj";
+static const char __pyx_k_FuncCodeInfo_get_line_of_offset[] = "FuncCodeInfo.get_line_of_offset";
+static const char __pyx_k_TryExceptContainerObj___setstat[] = "_TryExceptContainerObj.__setstate_cython__";
+static const char __pyx_k_get_abs_path_real_path_and_base[] = "get_abs_path_real_path_and_base_from_file";
+static const char __pyx_k_global_notify_skipped_step_in_l[] = "_global_notify_skipped_step_in_lock";
+static const char __pyx_k_has_caught_exception_breakpoint[] = "has_caught_exception_breakpoint_in_pydb";
+static const char __pyx_k_pydev_bundle__pydev_saved_modul[] = "_pydev_bundle._pydev_saved_modules";
+static const char __pyx_k_pydevd_bundle_pydevd_breakpoint[] = "_pydevd_bundle.pydevd_breakpoints";
+static const char __pyx_k_pydevd_bundle_pydevd_bytecode_u[] = "_pydevd_bundle.pydevd_bytecode_utils";
+static const char __pyx_k_pydevd_bundle_pydevd_frame_util[] = "_pydevd_bundle.pydevd_frame_utils";
+static const char __pyx_k_pydevd_bundle_pydevd_trace_disp[] = "_pydevd_bundle.pydevd_trace_dispatch";
+static const char __pyx_k_pydevd_sys_monitoring__pydevd_s[] = "_pydevd_sys_monitoring\\_pydevd_sys_monitoring_cython.pyx";
+static const char __pyx_k_set_trace_for_frame_and_parents[] = "set_trace_for_frame_and_parents";
+static const char __pyx_k_Incompatible_checksums_0x_x_vs_0[] = "Incompatible checksums (0x%x vs (0xd625bfa, 0xfdc1f18, 0x57c379d) = (additional_info, thread, thread_ident, trace))";
+static const char __pyx_k_Pyx_CFunc_4904d5__29_pydevd_sy_2[] = "__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval..wrap";
+static const char __pyx_k_break_on_user_uncaught_exception[] = "break_on_user_uncaught_exceptions";
+static const char __pyx_k_function_breakpoint_name_to_brea[] = "function_breakpoint_name_to_breakpoint";
+static const char __pyx_k_get_smart_step_into_variant_from[] = "get_smart_step_into_variant_from_frame_offset";
+static const char __pyx_k_line_to_offset_first_line_last_l[] = "line_to_offset, first_line, last_line";
+static const char __pyx_k_notify_skipped_step_in_because_o[] = "notify_skipped_step_in_because_of_filters";
+static const char __pyx_k_get_abs_path_real_path_and_base_2[] = "get_abs_path_real_path_and_base_from_frame";
+static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_2[] = "Incompatible checksums (0x%x vs (0x3f403d2, 0x5f5636f, 0xb44aa80) = (abs_path_filename, always_filtered_out, always_skip_code, bp_line_to_breakpoint, breakpoint_found, canonical_normalized_filename, co_filename, co_name, code_obj, filtered_out_force_checked, function_breakpoint, function_breakpoint_found, plugin_call_breakpoint_found, plugin_call_stepping, plugin_line_breakpoint_found, plugin_line_stepping, plugin_return_stepping, pydb_mtime, try_except_container_obj))";
+static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_3[] = "Incompatible checksums (0x%x vs (0xdbf5e44, 0xde17cd3, 0xc8b6eb1) = (try_except_infos))";
+/* #### Code section: decls ### */
+static PyObject *__pyx_pf_11cfunc_dot_to_py_102__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc_wrap(PyObject *__pyx_self, PyObject *__pyx_v_code, PyObject *__pyx_v_instruction, PyObject *__pyx_v_exc); /* proto */
+static PyObject *__pyx_pf_11cfunc_dot_to_py_104__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset_wrap(PyObject *__pyx_self, PyObject *__pyx_v_code, PyObject *__pyx_v_instruction_offset); /* proto */
+static PyObject *__pyx_pf_11cfunc_dot_to_py_89__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line_wrap(PyObject *__pyx_self, PyObject *__pyx_v_code, int __pyx_v_line); /* proto */
+static PyObject *__pyx_pf_11cfunc_dot_to_py_108__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset_wrap(PyObject *__pyx_self, PyObject *__pyx_v_code, int __pyx_v_from_offset, int __pyx_v_to_offset); /* proto */
+static PyObject *__pyx_pf_11cfunc_dot_to_py_105__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval_wrap(PyObject *__pyx_self, PyObject *__pyx_v_code, PyObject *__pyx_v_instruction, PyObject *__pyx_v_retval); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_get_smart_step_into_variant_from_frame_offset(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwargs); /* proto */
+static int __pyx_pf_29_pydevd_sys_monitoring_cython_10ThreadInfo___init__(struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_self, PyObject *__pyx_v_thread, unsigned long __pyx_v_thread_ident, int __pyx_v_trace, struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_additional_info); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_10ThreadInfo_2__reduce_cython__(struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_10ThreadInfo_4__setstate_cython__(struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_23_DeleteDummyThreadOnDel___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dummy_thread); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_23_DeleteDummyThreadOnDel_2__del__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
+static int __pyx_pf_29_pydevd_sys_monitoring_cython_12FuncCodeInfo___init__(struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_2get_line_of_offset(struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v_offset); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_4__reduce_cython__(struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_6__setstate_cython__(struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_2_get_func_code_info(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_code_obj, PyObject *__pyx_v_frame_or_depth); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_4disable_code_tracing(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_code); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_6enable_code_tracing(CYTHON_UNUSED PyObject *__pyx_self, unsigned long __pyx_v_thread_ident, PyObject *__pyx_v_code, PyObject *__pyx_v_frame); /* proto */
+static int __pyx_pf_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj___init__(struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *__pyx_v_self, PyObject *__pyx_v_try_except_infos); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_2__reduce_cython__(struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_4__setstate_cython__(struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_8_ensure_monitoring(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_10start_monitoring(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_all_threads); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_12stop_monitoring(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_all_threads); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_14update_monitor_events(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_suspend_requested); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_16restart_events(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_18_do_wait_suspend(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_py_db, struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_thread_info, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_20__pyx_unpickle_ThreadInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_22__pyx_unpickle_FuncCodeInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_24__pyx_unpickle__TryExceptContainerObj(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_tp_new_29_pydevd_sys_monitoring_cython_ThreadInfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_29_pydevd_sys_monitoring_cython_FuncCodeInfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_29_pydevd_sys_monitoring_cython__TryExceptContainerObj(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_get = {0, 0, 0, 0, 0};
+/* #### Code section: late_includes ### */
+/* #### Code section: module_state ### */
+typedef struct {
+ PyObject *__pyx_d;
+ PyObject *__pyx_b;
+ PyObject *__pyx_cython_runtime;
+ PyObject *__pyx_empty_tuple;
+ PyObject *__pyx_empty_bytes;
+ PyObject *__pyx_empty_unicode;
+ #ifdef __Pyx_CyFunction_USED
+ PyTypeObject *__pyx_CyFunctionType;
+ #endif
+ #ifdef __Pyx_FusedFunction_USED
+ PyTypeObject *__pyx_FusedFunctionType;
+ #endif
+ #ifdef __Pyx_Generator_USED
+ PyTypeObject *__pyx_GeneratorType;
+ #endif
+ #ifdef __Pyx_IterableCoroutine_USED
+ PyTypeObject *__pyx_IterableCoroutineType;
+ #endif
+ #ifdef __Pyx_Coroutine_USED
+ PyTypeObject *__pyx_CoroutineAwaitType;
+ #endif
+ #ifdef __Pyx_Coroutine_USED
+ PyTypeObject *__pyx_CoroutineType;
+ #endif
+ #if CYTHON_USE_MODULE_STATE
+ #endif
+ #if CYTHON_USE_MODULE_STATE
+ #endif
+ #if CYTHON_USE_MODULE_STATE
+ #endif
+ PyTypeObject *__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo;
+ #if CYTHON_USE_MODULE_STATE
+ PyObject *__pyx_type_29_pydevd_sys_monitoring_cython_ThreadInfo;
+ PyObject *__pyx_type_29_pydevd_sys_monitoring_cython_FuncCodeInfo;
+ PyObject *__pyx_type_29_pydevd_sys_monitoring_cython__TryExceptContainerObj;
+ PyObject *__pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc;
+ PyObject *__pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset;
+ PyObject *__pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line;
+ PyObject *__pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset;
+ PyObject *__pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval;
+ #endif
+ PyTypeObject *__pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo;
+ PyTypeObject *__pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo;
+ PyTypeObject *__pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj;
+ PyTypeObject *__pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc;
+ PyTypeObject *__pyx_ptype___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset;
+ PyTypeObject *__pyx_ptype___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line;
+ PyTypeObject *__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset;
+ PyTypeObject *__pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval;
+ PyObject *__pyx_kp_s_1;
+ PyObject *__pyx_n_s_ALL;
+ PyObject *__pyx_n_s_Any;
+ PyObject *__pyx_n_s_AssertionError;
+ PyObject *__pyx_n_s_AttributeError;
+ PyObject *__pyx_n_s_CMD_SET_BREAK;
+ PyObject *__pyx_n_s_CMD_SET_FUNCTION_BREAK;
+ PyObject *__pyx_n_s_CMD_SMART_STEP_INTO;
+ PyObject *__pyx_n_s_CMD_STEP_INTO;
+ PyObject *__pyx_n_s_CMD_STEP_INTO_COROUTINE;
+ PyObject *__pyx_n_s_CMD_STEP_INTO_MY_CODE;
+ PyObject *__pyx_n_s_CMD_STEP_OVER;
+ PyObject *__pyx_n_s_CMD_STEP_OVER_MY_CODE;
+ PyObject *__pyx_n_s_CMD_STEP_RETURN;
+ PyObject *__pyx_n_s_CMD_STEP_RETURN_MY_CODE;
+ PyObject *__pyx_n_s_CodeLineInfo;
+ PyObject *__pyx_n_s_CodeType;
+ PyObject *__pyx_n_s_DEBUGGER_ID;
+ PyObject *__pyx_n_s_DEBUG_START;
+ PyObject *__pyx_n_s_DEBUG_START_PY3K;
+ PyObject *__pyx_n_s_DISABLE;
+ PyObject *__pyx_n_s_DeleteDummyThreadOnDel;
+ PyObject *__pyx_n_s_DeleteDummyThreadOnDel___del;
+ PyObject *__pyx_n_s_DeleteDummyThreadOnDel___init;
+ PyObject *__pyx_n_s_Dict;
+ PyObject *__pyx_n_s_DummyThread;
+ PyObject *__pyx_n_s_EXCEPTION_TYPE_HANDLED;
+ PyObject *__pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED;
+ PyObject *__pyx_n_s_ForkSafeLock;
+ PyObject *__pyx_n_s_FrameType;
+ PyObject *__pyx_n_s_FuncCodeInfo;
+ PyObject *__pyx_n_s_FuncCodeInfo___reduce_cython;
+ PyObject *__pyx_n_s_FuncCodeInfo___setstate_cython;
+ PyObject *__pyx_n_s_FuncCodeInfo_get_line_of_offset;
+ PyObject *__pyx_n_s_GlobalDebuggerHolder;
+ PyObject *__pyx_kp_s_Helper_class_to_remove_a_dummy;
+ PyObject *__pyx_n_s_IGNORE_EXCEPTION_TAG;
+ PyObject *__pyx_kp_s_IgnoreException;
+ PyObject *__pyx_n_s_ImportError;
+ PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0;
+ PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2;
+ PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3;
+ PyObject *__pyx_n_s_JUMP;
+ PyObject *__pyx_n_s_LINE;
+ PyObject *__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER;
+ PyObject *__pyx_n_s_None;
+ PyObject *__pyx_n_s_Optional;
+ PyObject *__pyx_kp_s_Optional_bool;
+ PyObject *__pyx_n_s_PYDEVD_IPYTHON_CONTEXT;
+ PyObject *__pyx_n_s_PYTHON_SUSPEND;
+ PyObject *__pyx_n_s_PY_RESUME;
+ PyObject *__pyx_n_s_PY_RETURN;
+ PyObject *__pyx_n_s_PY_START;
+ PyObject *__pyx_n_s_PY_UNWIND;
+ PyObject *__pyx_n_s_PickleError;
+ PyObject *__pyx_n_s_Pyx_CFunc_4904d5__29_pydevd_sy;
+ PyObject *__pyx_n_s_Pyx_CFunc_4904d5__29_pydevd_sy_2;
+ PyObject *__pyx_n_s_Pyx_CFunc_7f6725__29_pydevd_sy;
+ PyObject *__pyx_n_s_Pyx_CFunc_893235__29_pydevd_sy;
+ PyObject *__pyx_n_s_Pyx_CFunc_b0409f__29_pydevd_sy;
+ PyObject *__pyx_n_s_RAISE;
+ PyObject *__pyx_n_s_RETURN_VALUES_DICT;
+ PyObject *__pyx_n_s_STATE_RUN;
+ PyObject *__pyx_n_s_STATE_SUSPEND;
+ PyObject *__pyx_kp_s_Stop_inside_ipython_call;
+ PyObject *__pyx_n_s_TRACE_PROPERTY;
+ PyObject *__pyx_n_s_Thread;
+ PyObject *__pyx_n_s_ThreadInfo;
+ PyObject *__pyx_n_s_ThreadInfo___reduce_cython;
+ PyObject *__pyx_n_s_ThreadInfo___setstate_cython;
+ PyObject *__pyx_n_s_TryExceptContainerObj;
+ PyObject *__pyx_n_s_TryExceptContainerObj___reduce;
+ PyObject *__pyx_n_s_TryExceptContainerObj___setstat;
+ PyObject *__pyx_n_s_Tuple;
+ PyObject *__pyx_kp_s__14;
+ PyObject *__pyx_kp_s__17;
+ PyObject *__pyx_kp_u__19;
+ PyObject *__pyx_n_s__22;
+ PyObject *__pyx_n_s_active;
+ PyObject *__pyx_n_s_active_limbo_lock;
+ PyObject *__pyx_n_s_add_command;
+ PyObject *__pyx_n_s_additional_info;
+ PyObject *__pyx_n_s_all_threads;
+ PyObject *__pyx_n_s_apply_files_filter;
+ PyObject *__pyx_n_s_arg;
+ PyObject *__pyx_n_s_args;
+ PyObject *__pyx_n_s_asyncio_coroutines;
+ PyObject *__pyx_n_s_basename;
+ PyObject *__pyx_n_s_bootstrap;
+ PyObject *__pyx_n_s_bootstrap_2;
+ PyObject *__pyx_n_s_bootstrap_inner;
+ PyObject *__pyx_n_s_bootstrap_inner_2;
+ PyObject *__pyx_n_s_break_on_caught_exceptions;
+ PyObject *__pyx_n_s_break_on_uncaught_exceptions;
+ PyObject *__pyx_n_s_break_on_user_uncaught_exception;
+ PyObject *__pyx_n_s_breakpoints;
+ PyObject *__pyx_n_s_call;
+ PyObject *__pyx_n_s_call_2;
+ PyObject *__pyx_n_s_can_skip;
+ PyObject *__pyx_n_s_cfunc_to_py;
+ PyObject *__pyx_n_s_children_variants;
+ PyObject *__pyx_n_s_class;
+ PyObject *__pyx_n_s_class_getitem;
+ PyObject *__pyx_n_s_cline_in_traceback;
+ PyObject *__pyx_n_s_cmd_factory;
+ PyObject *__pyx_n_s_cmd_step_into;
+ PyObject *__pyx_n_s_cmd_step_over;
+ PyObject *__pyx_n_s_co_filename;
+ PyObject *__pyx_n_s_co_lines;
+ PyObject *__pyx_n_s_co_name;
+ PyObject *__pyx_n_s_code;
+ PyObject *__pyx_n_s_code_obj;
+ PyObject *__pyx_n_s_code_to_func_code_info_cache;
+ PyObject *__pyx_n_s_collect_try_except_info;
+ PyObject *__pyx_n_s_collections;
+ PyObject *__pyx_n_s_compile;
+ PyObject *__pyx_n_s_current_thread;
+ PyObject *__pyx_n_s_debug;
+ PyObject *__pyx_n_s_del;
+ PyObject *__pyx_n_s_dict;
+ PyObject *__pyx_n_s_dict_2;
+ PyObject *__pyx_n_s_dis;
+ PyObject *__pyx_kp_u_disable;
+ PyObject *__pyx_n_s_disable_code_tracing;
+ PyObject *__pyx_n_s_do_wait_suspend;
+ PyObject *__pyx_n_s_do_wait_suspend_2;
+ PyObject *__pyx_n_s_doc;
+ PyObject *__pyx_n_s_dummy_thread;
+ PyObject *__pyx_n_s_dummy_thread_2;
+ PyObject *__pyx_kp_u_enable;
+ PyObject *__pyx_n_s_enable_code_tracing;
+ PyObject *__pyx_n_s_end;
+ PyObject *__pyx_n_s_endswith;
+ PyObject *__pyx_n_s_ensure_monitoring;
+ PyObject *__pyx_n_s_enter;
+ PyObject *__pyx_n_s_enumerate;
+ PyObject *__pyx_n_s_event;
+ PyObject *__pyx_n_s_events;
+ PyObject *__pyx_n_s_exc;
+ PyObject *__pyx_n_s_exception;
+ PyObject *__pyx_n_s_exec;
+ PyObject *__pyx_n_s_execfile;
+ PyObject *__pyx_n_s_exit;
+ PyObject *__pyx_n_s_expression;
+ PyObject *__pyx_n_s_f_back;
+ PyObject *__pyx_n_s_f_bootstrap;
+ PyObject *__pyx_n_s_f_code;
+ PyObject *__pyx_n_s_f_disable_next_line_if_match;
+ PyObject *__pyx_n_s_f_lasti;
+ PyObject *__pyx_n_s_f_lineno;
+ PyObject *__pyx_n_s_f_locals;
+ PyObject *__pyx_n_s_file_to_line_to_breakpoints;
+ PyObject *__pyx_n_s_findlinestarts;
+ PyObject *__pyx_n_s_flag_as_unwinding;
+ PyObject *__pyx_n_s_frame;
+ PyObject *__pyx_n_s_frame_or_depth;
+ PyObject *__pyx_n_s_free_tool_id;
+ PyObject *__pyx_n_s_from_offset;
+ PyObject *__pyx_kp_s_frozen_runpy;
+ PyObject *__pyx_n_s_function_breakpoint_name_to_brea;
+ PyObject *__pyx_kp_u_gc;
+ PyObject *__pyx_n_s_get;
+ PyObject *__pyx_n_s_get_abs_path_real_path_and_base;
+ PyObject *__pyx_n_s_get_abs_path_real_path_and_base_2;
+ PyObject *__pyx_n_s_get_breakpoint;
+ PyObject *__pyx_n_s_get_cache_file_type;
+ PyObject *__pyx_n_s_get_clsname_for_code;
+ PyObject *__pyx_n_s_get_file_type;
+ PyObject *__pyx_n_s_get_func_code_info;
+ PyObject *__pyx_n_s_get_ident;
+ PyObject *__pyx_n_s_get_ident_2;
+ PyObject *__pyx_n_s_get_line_of_offset;
+ PyObject *__pyx_n_s_get_local_events;
+ PyObject *__pyx_n_s_get_smart_step_into_variant_from;
+ PyObject *__pyx_n_s_get_tool;
+ PyObject *__pyx_n_s_getframe;
+ PyObject *__pyx_n_s_getstate;
+ PyObject *__pyx_n_s_global_dbg;
+ PyObject *__pyx_n_s_global_notify_skipped_step_in;
+ PyObject *__pyx_n_s_global_notify_skipped_step_in_l;
+ PyObject *__pyx_n_s_handle_breakpoint_condition;
+ PyObject *__pyx_n_s_handle_breakpoint_expression;
+ PyObject *__pyx_n_s_handle_exception;
+ PyObject *__pyx_n_s_has_breaks;
+ PyObject *__pyx_n_s_has_caught_exception_breakpoint;
+ PyObject *__pyx_n_s_has_condition;
+ PyObject *__pyx_n_s_has_plugin_exception_breaks;
+ PyObject *__pyx_n_s_has_plugin_line_breaks;
+ PyObject *__pyx_n_s_ident;
+ PyObject *__pyx_n_s_import;
+ PyObject *__pyx_n_s_init;
+ PyObject *__pyx_n_s_init_subclass;
+ PyObject *__pyx_n_s_initializing;
+ PyObject *__pyx_n_s_instruction;
+ PyObject *__pyx_n_s_instruction_offset;
+ PyObject *__pyx_n_s_is_alive;
+ PyObject *__pyx_n_s_is_bootstrap_frame_internal;
+ PyObject *__pyx_n_s_is_coroutine;
+ PyObject *__pyx_n_s_is_files_filter_enabled;
+ PyObject *__pyx_n_s_is_logpoint;
+ PyObject *__pyx_n_s_is_pydev_daemon_thread;
+ PyObject *__pyx_n_s_is_stopped;
+ PyObject *__pyx_n_s_is_tracked_frame;
+ PyObject *__pyx_n_s_is_unhandled_exception;
+ PyObject *__pyx_kp_u_isenabled;
+ PyObject *__pyx_n_s_items;
+ PyObject *__pyx_n_s_kwargs;
+ PyObject *__pyx_n_s_line;
+ PyObject *__pyx_n_s_line_to_breakpoints;
+ PyObject *__pyx_n_s_line_to_offset;
+ PyObject *__pyx_kp_s_line_to_offset_first_line_last_l;
+ PyObject *__pyx_n_s_linesep;
+ PyObject *__pyx_n_s_local;
+ PyObject *__pyx_n_s_main;
+ PyObject *__pyx_n_s_main_2;
+ PyObject *__pyx_n_s_make_io_message;
+ PyObject *__pyx_n_s_max;
+ PyObject *__pyx_n_s_metaclass;
+ PyObject *__pyx_n_s_min;
+ PyObject *__pyx_kp_s_module;
+ PyObject *__pyx_n_s_module_2;
+ PyObject *__pyx_n_s_monitor;
+ PyObject *__pyx_n_s_monitoring;
+ PyObject *__pyx_n_s_mtime;
+ PyObject *__pyx_n_s_name;
+ PyObject *__pyx_n_s_namedtuple;
+ PyObject *__pyx_n_s_new;
+ PyObject *__pyx_n_s_notify_skipped_step_in_because_o;
+ PyObject *__pyx_n_s_offset;
+ PyObject *__pyx_n_s_original_step_cmd;
+ PyObject *__pyx_n_s_os;
+ PyObject *__pyx_n_s_os_path;
+ PyObject *__pyx_n_s_pickle;
+ PyObject *__pyx_n_s_plugin;
+ PyObject *__pyx_n_s_pop;
+ PyObject *__pyx_n_s_prepare;
+ PyObject *__pyx_n_s_py_db;
+ PyObject *__pyx_kp_s_pyc;
+ PyObject *__pyx_n_s_pydb_disposed;
+ PyObject *__pyx_n_s_pydev_bundle;
+ PyObject *__pyx_n_s_pydev_bundle__pydev_saved_modul;
+ PyObject *__pyx_n_s_pydev_do_not_trace;
+ PyObject *__pyx_kp_s_pydev_execfile_py;
+ PyObject *__pyx_n_s_pydev_log;
+ PyObject *__pyx_n_s_pydev_monkey;
+ PyObject *__pyx_n_s_pydev_state;
+ PyObject *__pyx_n_s_pydev_step_cmd;
+ PyObject *__pyx_n_s_pydevd;
+ PyObject *__pyx_n_s_pydevd_bundle;
+ PyObject *__pyx_n_s_pydevd_bundle_pydevd_breakpoint;
+ PyObject *__pyx_n_s_pydevd_bundle_pydevd_bytecode_u;
+ PyObject *__pyx_n_s_pydevd_bundle_pydevd_constants;
+ PyObject *__pyx_n_s_pydevd_bundle_pydevd_frame_util;
+ PyObject *__pyx_n_s_pydevd_bundle_pydevd_trace_disp;
+ PyObject *__pyx_n_s_pydevd_bundle_pydevd_utils;
+ PyObject *__pyx_n_s_pydevd_dont_trace;
+ PyObject *__pyx_n_s_pydevd_file_utils;
+ PyObject *__pyx_kp_s_pydevd_py;
+ PyObject *__pyx_n_s_pydevd_runpy;
+ PyObject *__pyx_kp_s_pydevd_sys_monitoring__pydevd_s;
+ PyObject *__pyx_n_s_pydevd_sys_monitoring_cython;
+ PyObject *__pyx_kp_s_pydevd_traceproperty_py;
+ PyObject *__pyx_kp_s_python_function;
+ PyObject *__pyx_kp_s_python_line;
+ PyObject *__pyx_n_s_pyx_PickleError;
+ PyObject *__pyx_n_s_pyx_checksum;
+ PyObject *__pyx_n_s_pyx_result;
+ PyObject *__pyx_n_s_pyx_state;
+ PyObject *__pyx_n_s_pyx_type;
+ PyObject *__pyx_n_s_pyx_unpickle_FuncCodeInfo;
+ PyObject *__pyx_n_s_pyx_unpickle_ThreadInfo;
+ PyObject *__pyx_n_s_pyx_unpickle__TryExceptContain;
+ PyObject *__pyx_n_s_pyx_vtable;
+ PyObject *__pyx_n_s_qualname;
+ PyObject *__pyx_n_s_re;
+ PyObject *__pyx_n_s_reduce;
+ PyObject *__pyx_n_s_reduce_cython;
+ PyObject *__pyx_n_s_reduce_ex;
+ PyObject *__pyx_n_s_ref;
+ PyObject *__pyx_n_s_register_callback;
+ PyObject *__pyx_n_s_required_events;
+ PyObject *__pyx_n_s_required_events_breakpoint;
+ PyObject *__pyx_n_s_required_events_stepping;
+ PyObject *__pyx_n_s_restart_events;
+ PyObject *__pyx_n_s_return;
+ PyObject *__pyx_n_s_retval;
+ PyObject *__pyx_n_s_run;
+ PyObject *__pyx_n_s_run_2;
+ PyObject *__pyx_n_s_runpy;
+ PyObject *__pyx_kp_s_s_s;
+ PyObject *__pyx_kp_s_s_s_2;
+ PyObject *__pyx_n_s_self;
+ PyObject *__pyx_n_s_set_events;
+ PyObject *__pyx_n_s_set_local_events;
+ PyObject *__pyx_n_s_set_name;
+ PyObject *__pyx_n_s_set_suspend;
+ PyObject *__pyx_n_s_set_trace_for_frame_and_parents;
+ PyObject *__pyx_n_s_setstate;
+ PyObject *__pyx_n_s_setstate_cython;
+ PyObject *__pyx_n_s_short_frame;
+ PyObject *__pyx_n_s_short_tb;
+ PyObject *__pyx_n_s_should_stop_on_exception;
+ PyObject *__pyx_n_s_should_trace_hook;
+ PyObject *__pyx_n_s_show_return_values;
+ PyObject *__pyx_n_s_spec;
+ PyObject *__pyx_n_s_splitext;
+ PyObject *__pyx_n_s_start;
+ PyObject *__pyx_n_s_start_monitoring;
+ PyObject *__pyx_n_s_startswith;
+ PyObject *__pyx_n_s_state;
+ PyObject *__pyx_n_s_stop;
+ PyObject *__pyx_n_s_stop_monitoring;
+ PyObject *__pyx_n_s_stop_on_unhandled_exception;
+ PyObject *__pyx_kp_s_stringsource;
+ PyObject *__pyx_n_s_super;
+ PyObject *__pyx_n_s_suspend;
+ PyObject *__pyx_n_s_suspend_other_threads;
+ PyObject *__pyx_n_s_suspend_policy;
+ PyObject *__pyx_n_s_suspend_requested;
+ PyObject *__pyx_n_s_sys;
+ PyObject *__pyx_n_s_sys_monitor;
+ PyObject *__pyx_n_s_t;
+ PyObject *__pyx_n_s_test;
+ PyObject *__pyx_n_s_thread;
+ PyObject *__pyx_n_s_thread_active;
+ PyObject *__pyx_n_s_thread_ident;
+ PyObject *__pyx_n_s_thread_info;
+ PyObject *__pyx_n_s_thread_local_info;
+ PyObject *__pyx_n_s_threading;
+ PyObject *__pyx_n_s_tident;
+ PyObject *__pyx_n_s_to_offset;
+ PyObject *__pyx_n_s_trace;
+ PyObject *__pyx_n_s_traceback;
+ PyObject *__pyx_n_s_track_dummy_thread_ref;
+ PyObject *__pyx_n_s_try_except_infos;
+ PyObject *__pyx_n_s_types;
+ PyObject *__pyx_n_s_typing;
+ PyObject *__pyx_n_s_update;
+ PyObject *__pyx_n_s_update_monitor_events;
+ PyObject *__pyx_n_s_use_setstate;
+ PyObject *__pyx_n_s_use_tool_id;
+ PyObject *__pyx_n_s_user_uncaught_exc_info;
+ PyObject *__pyx_n_s_values;
+ PyObject *__pyx_n_s_wrap;
+ PyObject *__pyx_n_s_writer;
+ PyObject *__pyx_int_0;
+ PyObject *__pyx_int_1;
+ PyObject *__pyx_int_2;
+ PyObject *__pyx_int_107;
+ PyObject *__pyx_int_108;
+ PyObject *__pyx_int_109;
+ PyObject *__pyx_int_111;
+ PyObject *__pyx_int_128;
+ PyObject *__pyx_int_144;
+ PyObject *__pyx_int_159;
+ PyObject *__pyx_int_160;
+ PyObject *__pyx_int_206;
+ PyObject *__pyx_int_208;
+ PyObject *__pyx_int_66323410;
+ PyObject *__pyx_int_92026781;
+ PyObject *__pyx_int_99967855;
+ PyObject *__pyx_int_189049472;
+ PyObject *__pyx_int_210464433;
+ PyObject *__pyx_int_224549882;
+ PyObject *__pyx_int_230645316;
+ PyObject *__pyx_int_232881363;
+ PyObject *__pyx_int_266084120;
+ PyObject *__pyx_int_neg_1;
+ PyObject *__pyx_k__15;
+ PyObject *__pyx_tuple_;
+ PyObject *__pyx_tuple__3;
+ PyObject *__pyx_tuple__5;
+ PyObject *__pyx_tuple__7;
+ PyObject *__pyx_tuple__9;
+ PyObject *__pyx_slice__16;
+ PyObject *__pyx_tuple__11;
+ PyObject *__pyx_tuple__12;
+ PyObject *__pyx_tuple__13;
+ PyObject *__pyx_tuple__18;
+ PyObject *__pyx_tuple__20;
+ PyObject *__pyx_tuple__21;
+ PyObject *__pyx_tuple__23;
+ PyObject *__pyx_tuple__25;
+ PyObject *__pyx_tuple__26;
+ PyObject *__pyx_tuple__27;
+ PyObject *__pyx_tuple__28;
+ PyObject *__pyx_tuple__30;
+ PyObject *__pyx_tuple__32;
+ PyObject *__pyx_tuple__34;
+ PyObject *__pyx_tuple__36;
+ PyObject *__pyx_tuple__40;
+ PyObject *__pyx_tuple__41;
+ PyObject *__pyx_tuple__43;
+ PyObject *__pyx_tuple__45;
+ PyObject *__pyx_tuple__50;
+ PyObject *__pyx_tuple__52;
+ PyObject *__pyx_tuple__54;
+ PyObject *__pyx_tuple__55;
+ PyObject *__pyx_tuple__57;
+ PyObject *__pyx_tuple__59;
+ PyObject *__pyx_tuple__61;
+ PyObject *__pyx_codeobj__2;
+ PyObject *__pyx_codeobj__4;
+ PyObject *__pyx_codeobj__6;
+ PyObject *__pyx_codeobj__8;
+ PyObject *__pyx_codeobj__10;
+ PyObject *__pyx_codeobj__24;
+ PyObject *__pyx_codeobj__29;
+ PyObject *__pyx_codeobj__31;
+ PyObject *__pyx_codeobj__33;
+ PyObject *__pyx_codeobj__35;
+ PyObject *__pyx_codeobj__37;
+ PyObject *__pyx_codeobj__38;
+ PyObject *__pyx_codeobj__39;
+ PyObject *__pyx_codeobj__42;
+ PyObject *__pyx_codeobj__44;
+ PyObject *__pyx_codeobj__46;
+ PyObject *__pyx_codeobj__47;
+ PyObject *__pyx_codeobj__48;
+ PyObject *__pyx_codeobj__49;
+ PyObject *__pyx_codeobj__51;
+ PyObject *__pyx_codeobj__53;
+ PyObject *__pyx_codeobj__56;
+ PyObject *__pyx_codeobj__58;
+ PyObject *__pyx_codeobj__60;
+ PyObject *__pyx_codeobj__62;
+ PyObject *__pyx_codeobj__63;
+ PyObject *__pyx_codeobj__64;
+} __pyx_mstate;
+
+#if CYTHON_USE_MODULE_STATE
+#ifdef __cplusplus
+namespace {
+ extern struct PyModuleDef __pyx_moduledef;
+} /* anonymous namespace */
+#else
+static struct PyModuleDef __pyx_moduledef;
+#endif
+
+#define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o))
+
+#define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef)))
+
+#define __pyx_m (PyState_FindModule(&__pyx_moduledef))
+#else
+static __pyx_mstate __pyx_mstate_global_static =
+#ifdef __cplusplus
+ {};
+#else
+ {0};
+#endif
+static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static;
+#endif
+/* #### Code section: module_state_clear ### */
+#if CYTHON_USE_MODULE_STATE
+static int __pyx_m_clear(PyObject *m) {
+ __pyx_mstate *clear_module_state = __pyx_mstate(m);
+ if (!clear_module_state) return 0;
+ Py_CLEAR(clear_module_state->__pyx_d);
+ Py_CLEAR(clear_module_state->__pyx_b);
+ Py_CLEAR(clear_module_state->__pyx_cython_runtime);
+ Py_CLEAR(clear_module_state->__pyx_empty_tuple);
+ Py_CLEAR(clear_module_state->__pyx_empty_bytes);
+ Py_CLEAR(clear_module_state->__pyx_empty_unicode);
+ #ifdef __Pyx_CyFunction_USED
+ Py_CLEAR(clear_module_state->__pyx_CyFunctionType);
+ #endif
+ #ifdef __Pyx_FusedFunction_USED
+ Py_CLEAR(clear_module_state->__pyx_FusedFunctionType);
+ #endif
+ Py_CLEAR(clear_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo);
+ Py_CLEAR(clear_module_state->__pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo);
+ Py_CLEAR(clear_module_state->__pyx_type_29_pydevd_sys_monitoring_cython_ThreadInfo);
+ Py_CLEAR(clear_module_state->__pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo);
+ Py_CLEAR(clear_module_state->__pyx_type_29_pydevd_sys_monitoring_cython_FuncCodeInfo);
+ Py_CLEAR(clear_module_state->__pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj);
+ Py_CLEAR(clear_module_state->__pyx_type_29_pydevd_sys_monitoring_cython__TryExceptContainerObj);
+ Py_CLEAR(clear_module_state->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc);
+ Py_CLEAR(clear_module_state->__pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc);
+ Py_CLEAR(clear_module_state->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset);
+ Py_CLEAR(clear_module_state->__pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset);
+ Py_CLEAR(clear_module_state->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line);
+ Py_CLEAR(clear_module_state->__pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line);
+ Py_CLEAR(clear_module_state->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset);
+ Py_CLEAR(clear_module_state->__pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset);
+ Py_CLEAR(clear_module_state->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval);
+ Py_CLEAR(clear_module_state->__pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_1);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ALL);
+ Py_CLEAR(clear_module_state->__pyx_n_s_Any);
+ Py_CLEAR(clear_module_state->__pyx_n_s_AssertionError);
+ Py_CLEAR(clear_module_state->__pyx_n_s_AttributeError);
+ Py_CLEAR(clear_module_state->__pyx_n_s_CMD_SET_BREAK);
+ Py_CLEAR(clear_module_state->__pyx_n_s_CMD_SET_FUNCTION_BREAK);
+ Py_CLEAR(clear_module_state->__pyx_n_s_CMD_SMART_STEP_INTO);
+ Py_CLEAR(clear_module_state->__pyx_n_s_CMD_STEP_INTO);
+ Py_CLEAR(clear_module_state->__pyx_n_s_CMD_STEP_INTO_COROUTINE);
+ Py_CLEAR(clear_module_state->__pyx_n_s_CMD_STEP_INTO_MY_CODE);
+ Py_CLEAR(clear_module_state->__pyx_n_s_CMD_STEP_OVER);
+ Py_CLEAR(clear_module_state->__pyx_n_s_CMD_STEP_OVER_MY_CODE);
+ Py_CLEAR(clear_module_state->__pyx_n_s_CMD_STEP_RETURN);
+ Py_CLEAR(clear_module_state->__pyx_n_s_CMD_STEP_RETURN_MY_CODE);
+ Py_CLEAR(clear_module_state->__pyx_n_s_CodeLineInfo);
+ Py_CLEAR(clear_module_state->__pyx_n_s_CodeType);
+ Py_CLEAR(clear_module_state->__pyx_n_s_DEBUGGER_ID);
+ Py_CLEAR(clear_module_state->__pyx_n_s_DEBUG_START);
+ Py_CLEAR(clear_module_state->__pyx_n_s_DEBUG_START_PY3K);
+ Py_CLEAR(clear_module_state->__pyx_n_s_DISABLE);
+ Py_CLEAR(clear_module_state->__pyx_n_s_DeleteDummyThreadOnDel);
+ Py_CLEAR(clear_module_state->__pyx_n_s_DeleteDummyThreadOnDel___del);
+ Py_CLEAR(clear_module_state->__pyx_n_s_DeleteDummyThreadOnDel___init);
+ Py_CLEAR(clear_module_state->__pyx_n_s_Dict);
+ Py_CLEAR(clear_module_state->__pyx_n_s_DummyThread);
+ Py_CLEAR(clear_module_state->__pyx_n_s_EXCEPTION_TYPE_HANDLED);
+ Py_CLEAR(clear_module_state->__pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ForkSafeLock);
+ Py_CLEAR(clear_module_state->__pyx_n_s_FrameType);
+ Py_CLEAR(clear_module_state->__pyx_n_s_FuncCodeInfo);
+ Py_CLEAR(clear_module_state->__pyx_n_s_FuncCodeInfo___reduce_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_FuncCodeInfo___setstate_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_FuncCodeInfo_get_line_of_offset);
+ Py_CLEAR(clear_module_state->__pyx_n_s_GlobalDebuggerHolder);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Helper_class_to_remove_a_dummy);
+ Py_CLEAR(clear_module_state->__pyx_n_s_IGNORE_EXCEPTION_TAG);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_IgnoreException);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ImportError);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3);
+ Py_CLEAR(clear_module_state->__pyx_n_s_JUMP);
+ Py_CLEAR(clear_module_state->__pyx_n_s_LINE);
+ Py_CLEAR(clear_module_state->__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER);
+ Py_CLEAR(clear_module_state->__pyx_n_s_None);
+ Py_CLEAR(clear_module_state->__pyx_n_s_Optional);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Optional_bool);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PYDEVD_IPYTHON_CONTEXT);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PYTHON_SUSPEND);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PY_RESUME);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PY_RETURN);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PY_START);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PY_UNWIND);
+ Py_CLEAR(clear_module_state->__pyx_n_s_PickleError);
+ Py_CLEAR(clear_module_state->__pyx_n_s_Pyx_CFunc_4904d5__29_pydevd_sy);
+ Py_CLEAR(clear_module_state->__pyx_n_s_Pyx_CFunc_4904d5__29_pydevd_sy_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_Pyx_CFunc_7f6725__29_pydevd_sy);
+ Py_CLEAR(clear_module_state->__pyx_n_s_Pyx_CFunc_893235__29_pydevd_sy);
+ Py_CLEAR(clear_module_state->__pyx_n_s_Pyx_CFunc_b0409f__29_pydevd_sy);
+ Py_CLEAR(clear_module_state->__pyx_n_s_RAISE);
+ Py_CLEAR(clear_module_state->__pyx_n_s_RETURN_VALUES_DICT);
+ Py_CLEAR(clear_module_state->__pyx_n_s_STATE_RUN);
+ Py_CLEAR(clear_module_state->__pyx_n_s_STATE_SUSPEND);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_Stop_inside_ipython_call);
+ Py_CLEAR(clear_module_state->__pyx_n_s_TRACE_PROPERTY);
+ Py_CLEAR(clear_module_state->__pyx_n_s_Thread);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ThreadInfo);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ThreadInfo___reduce_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ThreadInfo___setstate_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_TryExceptContainerObj);
+ Py_CLEAR(clear_module_state->__pyx_n_s_TryExceptContainerObj___reduce);
+ Py_CLEAR(clear_module_state->__pyx_n_s_TryExceptContainerObj___setstat);
+ Py_CLEAR(clear_module_state->__pyx_n_s_Tuple);
+ Py_CLEAR(clear_module_state->__pyx_kp_s__14);
+ Py_CLEAR(clear_module_state->__pyx_kp_s__17);
+ Py_CLEAR(clear_module_state->__pyx_kp_u__19);
+ Py_CLEAR(clear_module_state->__pyx_n_s__22);
+ Py_CLEAR(clear_module_state->__pyx_n_s_active);
+ Py_CLEAR(clear_module_state->__pyx_n_s_active_limbo_lock);
+ Py_CLEAR(clear_module_state->__pyx_n_s_add_command);
+ Py_CLEAR(clear_module_state->__pyx_n_s_additional_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_all_threads);
+ Py_CLEAR(clear_module_state->__pyx_n_s_apply_files_filter);
+ Py_CLEAR(clear_module_state->__pyx_n_s_arg);
+ Py_CLEAR(clear_module_state->__pyx_n_s_args);
+ Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines);
+ Py_CLEAR(clear_module_state->__pyx_n_s_basename);
+ Py_CLEAR(clear_module_state->__pyx_n_s_bootstrap);
+ Py_CLEAR(clear_module_state->__pyx_n_s_bootstrap_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_bootstrap_inner);
+ Py_CLEAR(clear_module_state->__pyx_n_s_bootstrap_inner_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_break_on_caught_exceptions);
+ Py_CLEAR(clear_module_state->__pyx_n_s_break_on_uncaught_exceptions);
+ Py_CLEAR(clear_module_state->__pyx_n_s_break_on_user_uncaught_exception);
+ Py_CLEAR(clear_module_state->__pyx_n_s_breakpoints);
+ Py_CLEAR(clear_module_state->__pyx_n_s_call);
+ Py_CLEAR(clear_module_state->__pyx_n_s_call_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_can_skip);
+ Py_CLEAR(clear_module_state->__pyx_n_s_cfunc_to_py);
+ Py_CLEAR(clear_module_state->__pyx_n_s_children_variants);
+ Py_CLEAR(clear_module_state->__pyx_n_s_class);
+ Py_CLEAR(clear_module_state->__pyx_n_s_class_getitem);
+ Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback);
+ Py_CLEAR(clear_module_state->__pyx_n_s_cmd_factory);
+ Py_CLEAR(clear_module_state->__pyx_n_s_cmd_step_into);
+ Py_CLEAR(clear_module_state->__pyx_n_s_cmd_step_over);
+ Py_CLEAR(clear_module_state->__pyx_n_s_co_filename);
+ Py_CLEAR(clear_module_state->__pyx_n_s_co_lines);
+ Py_CLEAR(clear_module_state->__pyx_n_s_co_name);
+ Py_CLEAR(clear_module_state->__pyx_n_s_code);
+ Py_CLEAR(clear_module_state->__pyx_n_s_code_obj);
+ Py_CLEAR(clear_module_state->__pyx_n_s_code_to_func_code_info_cache);
+ Py_CLEAR(clear_module_state->__pyx_n_s_collect_try_except_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_collections);
+ Py_CLEAR(clear_module_state->__pyx_n_s_compile);
+ Py_CLEAR(clear_module_state->__pyx_n_s_current_thread);
+ Py_CLEAR(clear_module_state->__pyx_n_s_debug);
+ Py_CLEAR(clear_module_state->__pyx_n_s_del);
+ Py_CLEAR(clear_module_state->__pyx_n_s_dict);
+ Py_CLEAR(clear_module_state->__pyx_n_s_dict_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_dis);
+ Py_CLEAR(clear_module_state->__pyx_kp_u_disable);
+ Py_CLEAR(clear_module_state->__pyx_n_s_disable_code_tracing);
+ Py_CLEAR(clear_module_state->__pyx_n_s_do_wait_suspend);
+ Py_CLEAR(clear_module_state->__pyx_n_s_do_wait_suspend_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_doc);
+ Py_CLEAR(clear_module_state->__pyx_n_s_dummy_thread);
+ Py_CLEAR(clear_module_state->__pyx_n_s_dummy_thread_2);
+ Py_CLEAR(clear_module_state->__pyx_kp_u_enable);
+ Py_CLEAR(clear_module_state->__pyx_n_s_enable_code_tracing);
+ Py_CLEAR(clear_module_state->__pyx_n_s_end);
+ Py_CLEAR(clear_module_state->__pyx_n_s_endswith);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ensure_monitoring);
+ Py_CLEAR(clear_module_state->__pyx_n_s_enter);
+ Py_CLEAR(clear_module_state->__pyx_n_s_enumerate);
+ Py_CLEAR(clear_module_state->__pyx_n_s_event);
+ Py_CLEAR(clear_module_state->__pyx_n_s_events);
+ Py_CLEAR(clear_module_state->__pyx_n_s_exc);
+ Py_CLEAR(clear_module_state->__pyx_n_s_exception);
+ Py_CLEAR(clear_module_state->__pyx_n_s_exec);
+ Py_CLEAR(clear_module_state->__pyx_n_s_execfile);
+ Py_CLEAR(clear_module_state->__pyx_n_s_exit);
+ Py_CLEAR(clear_module_state->__pyx_n_s_expression);
+ Py_CLEAR(clear_module_state->__pyx_n_s_f_back);
+ Py_CLEAR(clear_module_state->__pyx_n_s_f_bootstrap);
+ Py_CLEAR(clear_module_state->__pyx_n_s_f_code);
+ Py_CLEAR(clear_module_state->__pyx_n_s_f_disable_next_line_if_match);
+ Py_CLEAR(clear_module_state->__pyx_n_s_f_lasti);
+ Py_CLEAR(clear_module_state->__pyx_n_s_f_lineno);
+ Py_CLEAR(clear_module_state->__pyx_n_s_f_locals);
+ Py_CLEAR(clear_module_state->__pyx_n_s_file_to_line_to_breakpoints);
+ Py_CLEAR(clear_module_state->__pyx_n_s_findlinestarts);
+ Py_CLEAR(clear_module_state->__pyx_n_s_flag_as_unwinding);
+ Py_CLEAR(clear_module_state->__pyx_n_s_frame);
+ Py_CLEAR(clear_module_state->__pyx_n_s_frame_or_depth);
+ Py_CLEAR(clear_module_state->__pyx_n_s_free_tool_id);
+ Py_CLEAR(clear_module_state->__pyx_n_s_from_offset);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_frozen_runpy);
+ Py_CLEAR(clear_module_state->__pyx_n_s_function_breakpoint_name_to_brea);
+ Py_CLEAR(clear_module_state->__pyx_kp_u_gc);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_abs_path_real_path_and_base);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_abs_path_real_path_and_base_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_breakpoint);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_cache_file_type);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_clsname_for_code);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_file_type);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_func_code_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_ident);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_ident_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_line_of_offset);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_local_events);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_smart_step_into_variant_from);
+ Py_CLEAR(clear_module_state->__pyx_n_s_get_tool);
+ Py_CLEAR(clear_module_state->__pyx_n_s_getframe);
+ Py_CLEAR(clear_module_state->__pyx_n_s_getstate);
+ Py_CLEAR(clear_module_state->__pyx_n_s_global_dbg);
+ Py_CLEAR(clear_module_state->__pyx_n_s_global_notify_skipped_step_in);
+ Py_CLEAR(clear_module_state->__pyx_n_s_global_notify_skipped_step_in_l);
+ Py_CLEAR(clear_module_state->__pyx_n_s_handle_breakpoint_condition);
+ Py_CLEAR(clear_module_state->__pyx_n_s_handle_breakpoint_expression);
+ Py_CLEAR(clear_module_state->__pyx_n_s_handle_exception);
+ Py_CLEAR(clear_module_state->__pyx_n_s_has_breaks);
+ Py_CLEAR(clear_module_state->__pyx_n_s_has_caught_exception_breakpoint);
+ Py_CLEAR(clear_module_state->__pyx_n_s_has_condition);
+ Py_CLEAR(clear_module_state->__pyx_n_s_has_plugin_exception_breaks);
+ Py_CLEAR(clear_module_state->__pyx_n_s_has_plugin_line_breaks);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ident);
+ Py_CLEAR(clear_module_state->__pyx_n_s_import);
+ Py_CLEAR(clear_module_state->__pyx_n_s_init);
+ Py_CLEAR(clear_module_state->__pyx_n_s_init_subclass);
+ Py_CLEAR(clear_module_state->__pyx_n_s_initializing);
+ Py_CLEAR(clear_module_state->__pyx_n_s_instruction);
+ Py_CLEAR(clear_module_state->__pyx_n_s_instruction_offset);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_alive);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_bootstrap_frame_internal);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_files_filter_enabled);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_logpoint);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_pydev_daemon_thread);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_stopped);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_tracked_frame);
+ Py_CLEAR(clear_module_state->__pyx_n_s_is_unhandled_exception);
+ Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled);
+ Py_CLEAR(clear_module_state->__pyx_n_s_items);
+ Py_CLEAR(clear_module_state->__pyx_n_s_kwargs);
+ Py_CLEAR(clear_module_state->__pyx_n_s_line);
+ Py_CLEAR(clear_module_state->__pyx_n_s_line_to_breakpoints);
+ Py_CLEAR(clear_module_state->__pyx_n_s_line_to_offset);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_line_to_offset_first_line_last_l);
+ Py_CLEAR(clear_module_state->__pyx_n_s_linesep);
+ Py_CLEAR(clear_module_state->__pyx_n_s_local);
+ Py_CLEAR(clear_module_state->__pyx_n_s_main);
+ Py_CLEAR(clear_module_state->__pyx_n_s_main_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_make_io_message);
+ Py_CLEAR(clear_module_state->__pyx_n_s_max);
+ Py_CLEAR(clear_module_state->__pyx_n_s_metaclass);
+ Py_CLEAR(clear_module_state->__pyx_n_s_min);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_module);
+ Py_CLEAR(clear_module_state->__pyx_n_s_module_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_monitor);
+ Py_CLEAR(clear_module_state->__pyx_n_s_monitoring);
+ Py_CLEAR(clear_module_state->__pyx_n_s_mtime);
+ Py_CLEAR(clear_module_state->__pyx_n_s_name);
+ Py_CLEAR(clear_module_state->__pyx_n_s_namedtuple);
+ Py_CLEAR(clear_module_state->__pyx_n_s_new);
+ Py_CLEAR(clear_module_state->__pyx_n_s_notify_skipped_step_in_because_o);
+ Py_CLEAR(clear_module_state->__pyx_n_s_offset);
+ Py_CLEAR(clear_module_state->__pyx_n_s_original_step_cmd);
+ Py_CLEAR(clear_module_state->__pyx_n_s_os);
+ Py_CLEAR(clear_module_state->__pyx_n_s_os_path);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pickle);
+ Py_CLEAR(clear_module_state->__pyx_n_s_plugin);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pop);
+ Py_CLEAR(clear_module_state->__pyx_n_s_prepare);
+ Py_CLEAR(clear_module_state->__pyx_n_s_py_db);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_pyc);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydb_disposed);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydev_bundle);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydev_bundle__pydev_saved_modul);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydev_do_not_trace);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_pydev_execfile_py);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydev_log);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydev_monkey);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydev_state);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydev_step_cmd);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_breakpoint);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_bytecode_u);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_constants);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_frame_util);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_trace_disp);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_utils);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_dont_trace);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_file_utils);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_pydevd_py);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_runpy);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_pydevd_sys_monitoring__pydevd_s);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_sys_monitoring_cython);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_pydevd_traceproperty_py);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_python_function);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_python_line);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_PickleError);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_checksum);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_result);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_state);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_type);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_FuncCodeInfo);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_ThreadInfo);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle__TryExceptContain);
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_vtable);
+ Py_CLEAR(clear_module_state->__pyx_n_s_qualname);
+ Py_CLEAR(clear_module_state->__pyx_n_s_re);
+ Py_CLEAR(clear_module_state->__pyx_n_s_reduce);
+ Py_CLEAR(clear_module_state->__pyx_n_s_reduce_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_reduce_ex);
+ Py_CLEAR(clear_module_state->__pyx_n_s_ref);
+ Py_CLEAR(clear_module_state->__pyx_n_s_register_callback);
+ Py_CLEAR(clear_module_state->__pyx_n_s_required_events);
+ Py_CLEAR(clear_module_state->__pyx_n_s_required_events_breakpoint);
+ Py_CLEAR(clear_module_state->__pyx_n_s_required_events_stepping);
+ Py_CLEAR(clear_module_state->__pyx_n_s_restart_events);
+ Py_CLEAR(clear_module_state->__pyx_n_s_return);
+ Py_CLEAR(clear_module_state->__pyx_n_s_retval);
+ Py_CLEAR(clear_module_state->__pyx_n_s_run);
+ Py_CLEAR(clear_module_state->__pyx_n_s_run_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_runpy);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_s_s);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_s_s_2);
+ Py_CLEAR(clear_module_state->__pyx_n_s_self);
+ Py_CLEAR(clear_module_state->__pyx_n_s_set_events);
+ Py_CLEAR(clear_module_state->__pyx_n_s_set_local_events);
+ Py_CLEAR(clear_module_state->__pyx_n_s_set_name);
+ Py_CLEAR(clear_module_state->__pyx_n_s_set_suspend);
+ Py_CLEAR(clear_module_state->__pyx_n_s_set_trace_for_frame_and_parents);
+ Py_CLEAR(clear_module_state->__pyx_n_s_setstate);
+ Py_CLEAR(clear_module_state->__pyx_n_s_setstate_cython);
+ Py_CLEAR(clear_module_state->__pyx_n_s_short_frame);
+ Py_CLEAR(clear_module_state->__pyx_n_s_short_tb);
+ Py_CLEAR(clear_module_state->__pyx_n_s_should_stop_on_exception);
+ Py_CLEAR(clear_module_state->__pyx_n_s_should_trace_hook);
+ Py_CLEAR(clear_module_state->__pyx_n_s_show_return_values);
+ Py_CLEAR(clear_module_state->__pyx_n_s_spec);
+ Py_CLEAR(clear_module_state->__pyx_n_s_splitext);
+ Py_CLEAR(clear_module_state->__pyx_n_s_start);
+ Py_CLEAR(clear_module_state->__pyx_n_s_start_monitoring);
+ Py_CLEAR(clear_module_state->__pyx_n_s_startswith);
+ Py_CLEAR(clear_module_state->__pyx_n_s_state);
+ Py_CLEAR(clear_module_state->__pyx_n_s_stop);
+ Py_CLEAR(clear_module_state->__pyx_n_s_stop_monitoring);
+ Py_CLEAR(clear_module_state->__pyx_n_s_stop_on_unhandled_exception);
+ Py_CLEAR(clear_module_state->__pyx_kp_s_stringsource);
+ Py_CLEAR(clear_module_state->__pyx_n_s_super);
+ Py_CLEAR(clear_module_state->__pyx_n_s_suspend);
+ Py_CLEAR(clear_module_state->__pyx_n_s_suspend_other_threads);
+ Py_CLEAR(clear_module_state->__pyx_n_s_suspend_policy);
+ Py_CLEAR(clear_module_state->__pyx_n_s_suspend_requested);
+ Py_CLEAR(clear_module_state->__pyx_n_s_sys);
+ Py_CLEAR(clear_module_state->__pyx_n_s_sys_monitor);
+ Py_CLEAR(clear_module_state->__pyx_n_s_t);
+ Py_CLEAR(clear_module_state->__pyx_n_s_test);
+ Py_CLEAR(clear_module_state->__pyx_n_s_thread);
+ Py_CLEAR(clear_module_state->__pyx_n_s_thread_active);
+ Py_CLEAR(clear_module_state->__pyx_n_s_thread_ident);
+ Py_CLEAR(clear_module_state->__pyx_n_s_thread_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_thread_local_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_threading);
+ Py_CLEAR(clear_module_state->__pyx_n_s_tident);
+ Py_CLEAR(clear_module_state->__pyx_n_s_to_offset);
+ Py_CLEAR(clear_module_state->__pyx_n_s_trace);
+ Py_CLEAR(clear_module_state->__pyx_n_s_traceback);
+ Py_CLEAR(clear_module_state->__pyx_n_s_track_dummy_thread_ref);
+ Py_CLEAR(clear_module_state->__pyx_n_s_try_except_infos);
+ Py_CLEAR(clear_module_state->__pyx_n_s_types);
+ Py_CLEAR(clear_module_state->__pyx_n_s_typing);
+ Py_CLEAR(clear_module_state->__pyx_n_s_update);
+ Py_CLEAR(clear_module_state->__pyx_n_s_update_monitor_events);
+ Py_CLEAR(clear_module_state->__pyx_n_s_use_setstate);
+ Py_CLEAR(clear_module_state->__pyx_n_s_use_tool_id);
+ Py_CLEAR(clear_module_state->__pyx_n_s_user_uncaught_exc_info);
+ Py_CLEAR(clear_module_state->__pyx_n_s_values);
+ Py_CLEAR(clear_module_state->__pyx_n_s_wrap);
+ Py_CLEAR(clear_module_state->__pyx_n_s_writer);
+ Py_CLEAR(clear_module_state->__pyx_int_0);
+ Py_CLEAR(clear_module_state->__pyx_int_1);
+ Py_CLEAR(clear_module_state->__pyx_int_2);
+ Py_CLEAR(clear_module_state->__pyx_int_107);
+ Py_CLEAR(clear_module_state->__pyx_int_108);
+ Py_CLEAR(clear_module_state->__pyx_int_109);
+ Py_CLEAR(clear_module_state->__pyx_int_111);
+ Py_CLEAR(clear_module_state->__pyx_int_128);
+ Py_CLEAR(clear_module_state->__pyx_int_144);
+ Py_CLEAR(clear_module_state->__pyx_int_159);
+ Py_CLEAR(clear_module_state->__pyx_int_160);
+ Py_CLEAR(clear_module_state->__pyx_int_206);
+ Py_CLEAR(clear_module_state->__pyx_int_208);
+ Py_CLEAR(clear_module_state->__pyx_int_66323410);
+ Py_CLEAR(clear_module_state->__pyx_int_92026781);
+ Py_CLEAR(clear_module_state->__pyx_int_99967855);
+ Py_CLEAR(clear_module_state->__pyx_int_189049472);
+ Py_CLEAR(clear_module_state->__pyx_int_210464433);
+ Py_CLEAR(clear_module_state->__pyx_int_224549882);
+ Py_CLEAR(clear_module_state->__pyx_int_230645316);
+ Py_CLEAR(clear_module_state->__pyx_int_232881363);
+ Py_CLEAR(clear_module_state->__pyx_int_266084120);
+ Py_CLEAR(clear_module_state->__pyx_int_neg_1);
+ Py_CLEAR(clear_module_state->__pyx_k__15);
+ Py_CLEAR(clear_module_state->__pyx_tuple_);
+ Py_CLEAR(clear_module_state->__pyx_tuple__3);
+ Py_CLEAR(clear_module_state->__pyx_tuple__5);
+ Py_CLEAR(clear_module_state->__pyx_tuple__7);
+ Py_CLEAR(clear_module_state->__pyx_tuple__9);
+ Py_CLEAR(clear_module_state->__pyx_slice__16);
+ Py_CLEAR(clear_module_state->__pyx_tuple__11);
+ Py_CLEAR(clear_module_state->__pyx_tuple__12);
+ Py_CLEAR(clear_module_state->__pyx_tuple__13);
+ Py_CLEAR(clear_module_state->__pyx_tuple__18);
+ Py_CLEAR(clear_module_state->__pyx_tuple__20);
+ Py_CLEAR(clear_module_state->__pyx_tuple__21);
+ Py_CLEAR(clear_module_state->__pyx_tuple__23);
+ Py_CLEAR(clear_module_state->__pyx_tuple__25);
+ Py_CLEAR(clear_module_state->__pyx_tuple__26);
+ Py_CLEAR(clear_module_state->__pyx_tuple__27);
+ Py_CLEAR(clear_module_state->__pyx_tuple__28);
+ Py_CLEAR(clear_module_state->__pyx_tuple__30);
+ Py_CLEAR(clear_module_state->__pyx_tuple__32);
+ Py_CLEAR(clear_module_state->__pyx_tuple__34);
+ Py_CLEAR(clear_module_state->__pyx_tuple__36);
+ Py_CLEAR(clear_module_state->__pyx_tuple__40);
+ Py_CLEAR(clear_module_state->__pyx_tuple__41);
+ Py_CLEAR(clear_module_state->__pyx_tuple__43);
+ Py_CLEAR(clear_module_state->__pyx_tuple__45);
+ Py_CLEAR(clear_module_state->__pyx_tuple__50);
+ Py_CLEAR(clear_module_state->__pyx_tuple__52);
+ Py_CLEAR(clear_module_state->__pyx_tuple__54);
+ Py_CLEAR(clear_module_state->__pyx_tuple__55);
+ Py_CLEAR(clear_module_state->__pyx_tuple__57);
+ Py_CLEAR(clear_module_state->__pyx_tuple__59);
+ Py_CLEAR(clear_module_state->__pyx_tuple__61);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__2);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__4);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__6);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__8);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__10);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__24);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__29);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__31);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__33);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__35);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__37);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__38);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__39);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__42);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__44);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__46);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__47);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__48);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__49);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__51);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__53);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__56);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__58);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__60);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__62);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__63);
+ Py_CLEAR(clear_module_state->__pyx_codeobj__64);
+ return 0;
+}
+#endif
+/* #### Code section: module_state_traverse ### */
+#if CYTHON_USE_MODULE_STATE
+static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
+ __pyx_mstate *traverse_module_state = __pyx_mstate(m);
+ if (!traverse_module_state) return 0;
+ Py_VISIT(traverse_module_state->__pyx_d);
+ Py_VISIT(traverse_module_state->__pyx_b);
+ Py_VISIT(traverse_module_state->__pyx_cython_runtime);
+ Py_VISIT(traverse_module_state->__pyx_empty_tuple);
+ Py_VISIT(traverse_module_state->__pyx_empty_bytes);
+ Py_VISIT(traverse_module_state->__pyx_empty_unicode);
+ #ifdef __Pyx_CyFunction_USED
+ Py_VISIT(traverse_module_state->__pyx_CyFunctionType);
+ #endif
+ #ifdef __Pyx_FusedFunction_USED
+ Py_VISIT(traverse_module_state->__pyx_FusedFunctionType);
+ #endif
+ Py_VISIT(traverse_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo);
+ Py_VISIT(traverse_module_state->__pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo);
+ Py_VISIT(traverse_module_state->__pyx_type_29_pydevd_sys_monitoring_cython_ThreadInfo);
+ Py_VISIT(traverse_module_state->__pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo);
+ Py_VISIT(traverse_module_state->__pyx_type_29_pydevd_sys_monitoring_cython_FuncCodeInfo);
+ Py_VISIT(traverse_module_state->__pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj);
+ Py_VISIT(traverse_module_state->__pyx_type_29_pydevd_sys_monitoring_cython__TryExceptContainerObj);
+ Py_VISIT(traverse_module_state->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc);
+ Py_VISIT(traverse_module_state->__pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc);
+ Py_VISIT(traverse_module_state->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset);
+ Py_VISIT(traverse_module_state->__pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset);
+ Py_VISIT(traverse_module_state->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line);
+ Py_VISIT(traverse_module_state->__pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line);
+ Py_VISIT(traverse_module_state->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset);
+ Py_VISIT(traverse_module_state->__pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset);
+ Py_VISIT(traverse_module_state->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval);
+ Py_VISIT(traverse_module_state->__pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_1);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ALL);
+ Py_VISIT(traverse_module_state->__pyx_n_s_Any);
+ Py_VISIT(traverse_module_state->__pyx_n_s_AssertionError);
+ Py_VISIT(traverse_module_state->__pyx_n_s_AttributeError);
+ Py_VISIT(traverse_module_state->__pyx_n_s_CMD_SET_BREAK);
+ Py_VISIT(traverse_module_state->__pyx_n_s_CMD_SET_FUNCTION_BREAK);
+ Py_VISIT(traverse_module_state->__pyx_n_s_CMD_SMART_STEP_INTO);
+ Py_VISIT(traverse_module_state->__pyx_n_s_CMD_STEP_INTO);
+ Py_VISIT(traverse_module_state->__pyx_n_s_CMD_STEP_INTO_COROUTINE);
+ Py_VISIT(traverse_module_state->__pyx_n_s_CMD_STEP_INTO_MY_CODE);
+ Py_VISIT(traverse_module_state->__pyx_n_s_CMD_STEP_OVER);
+ Py_VISIT(traverse_module_state->__pyx_n_s_CMD_STEP_OVER_MY_CODE);
+ Py_VISIT(traverse_module_state->__pyx_n_s_CMD_STEP_RETURN);
+ Py_VISIT(traverse_module_state->__pyx_n_s_CMD_STEP_RETURN_MY_CODE);
+ Py_VISIT(traverse_module_state->__pyx_n_s_CodeLineInfo);
+ Py_VISIT(traverse_module_state->__pyx_n_s_CodeType);
+ Py_VISIT(traverse_module_state->__pyx_n_s_DEBUGGER_ID);
+ Py_VISIT(traverse_module_state->__pyx_n_s_DEBUG_START);
+ Py_VISIT(traverse_module_state->__pyx_n_s_DEBUG_START_PY3K);
+ Py_VISIT(traverse_module_state->__pyx_n_s_DISABLE);
+ Py_VISIT(traverse_module_state->__pyx_n_s_DeleteDummyThreadOnDel);
+ Py_VISIT(traverse_module_state->__pyx_n_s_DeleteDummyThreadOnDel___del);
+ Py_VISIT(traverse_module_state->__pyx_n_s_DeleteDummyThreadOnDel___init);
+ Py_VISIT(traverse_module_state->__pyx_n_s_Dict);
+ Py_VISIT(traverse_module_state->__pyx_n_s_DummyThread);
+ Py_VISIT(traverse_module_state->__pyx_n_s_EXCEPTION_TYPE_HANDLED);
+ Py_VISIT(traverse_module_state->__pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ForkSafeLock);
+ Py_VISIT(traverse_module_state->__pyx_n_s_FrameType);
+ Py_VISIT(traverse_module_state->__pyx_n_s_FuncCodeInfo);
+ Py_VISIT(traverse_module_state->__pyx_n_s_FuncCodeInfo___reduce_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_FuncCodeInfo___setstate_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_FuncCodeInfo_get_line_of_offset);
+ Py_VISIT(traverse_module_state->__pyx_n_s_GlobalDebuggerHolder);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Helper_class_to_remove_a_dummy);
+ Py_VISIT(traverse_module_state->__pyx_n_s_IGNORE_EXCEPTION_TAG);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_IgnoreException);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ImportError);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3);
+ Py_VISIT(traverse_module_state->__pyx_n_s_JUMP);
+ Py_VISIT(traverse_module_state->__pyx_n_s_LINE);
+ Py_VISIT(traverse_module_state->__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER);
+ Py_VISIT(traverse_module_state->__pyx_n_s_None);
+ Py_VISIT(traverse_module_state->__pyx_n_s_Optional);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Optional_bool);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PYDEVD_IPYTHON_CONTEXT);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PYTHON_SUSPEND);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PY_RESUME);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PY_RETURN);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PY_START);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PY_UNWIND);
+ Py_VISIT(traverse_module_state->__pyx_n_s_PickleError);
+ Py_VISIT(traverse_module_state->__pyx_n_s_Pyx_CFunc_4904d5__29_pydevd_sy);
+ Py_VISIT(traverse_module_state->__pyx_n_s_Pyx_CFunc_4904d5__29_pydevd_sy_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_Pyx_CFunc_7f6725__29_pydevd_sy);
+ Py_VISIT(traverse_module_state->__pyx_n_s_Pyx_CFunc_893235__29_pydevd_sy);
+ Py_VISIT(traverse_module_state->__pyx_n_s_Pyx_CFunc_b0409f__29_pydevd_sy);
+ Py_VISIT(traverse_module_state->__pyx_n_s_RAISE);
+ Py_VISIT(traverse_module_state->__pyx_n_s_RETURN_VALUES_DICT);
+ Py_VISIT(traverse_module_state->__pyx_n_s_STATE_RUN);
+ Py_VISIT(traverse_module_state->__pyx_n_s_STATE_SUSPEND);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_Stop_inside_ipython_call);
+ Py_VISIT(traverse_module_state->__pyx_n_s_TRACE_PROPERTY);
+ Py_VISIT(traverse_module_state->__pyx_n_s_Thread);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ThreadInfo);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ThreadInfo___reduce_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ThreadInfo___setstate_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_TryExceptContainerObj);
+ Py_VISIT(traverse_module_state->__pyx_n_s_TryExceptContainerObj___reduce);
+ Py_VISIT(traverse_module_state->__pyx_n_s_TryExceptContainerObj___setstat);
+ Py_VISIT(traverse_module_state->__pyx_n_s_Tuple);
+ Py_VISIT(traverse_module_state->__pyx_kp_s__14);
+ Py_VISIT(traverse_module_state->__pyx_kp_s__17);
+ Py_VISIT(traverse_module_state->__pyx_kp_u__19);
+ Py_VISIT(traverse_module_state->__pyx_n_s__22);
+ Py_VISIT(traverse_module_state->__pyx_n_s_active);
+ Py_VISIT(traverse_module_state->__pyx_n_s_active_limbo_lock);
+ Py_VISIT(traverse_module_state->__pyx_n_s_add_command);
+ Py_VISIT(traverse_module_state->__pyx_n_s_additional_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_all_threads);
+ Py_VISIT(traverse_module_state->__pyx_n_s_apply_files_filter);
+ Py_VISIT(traverse_module_state->__pyx_n_s_arg);
+ Py_VISIT(traverse_module_state->__pyx_n_s_args);
+ Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines);
+ Py_VISIT(traverse_module_state->__pyx_n_s_basename);
+ Py_VISIT(traverse_module_state->__pyx_n_s_bootstrap);
+ Py_VISIT(traverse_module_state->__pyx_n_s_bootstrap_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_bootstrap_inner);
+ Py_VISIT(traverse_module_state->__pyx_n_s_bootstrap_inner_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_break_on_caught_exceptions);
+ Py_VISIT(traverse_module_state->__pyx_n_s_break_on_uncaught_exceptions);
+ Py_VISIT(traverse_module_state->__pyx_n_s_break_on_user_uncaught_exception);
+ Py_VISIT(traverse_module_state->__pyx_n_s_breakpoints);
+ Py_VISIT(traverse_module_state->__pyx_n_s_call);
+ Py_VISIT(traverse_module_state->__pyx_n_s_call_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_can_skip);
+ Py_VISIT(traverse_module_state->__pyx_n_s_cfunc_to_py);
+ Py_VISIT(traverse_module_state->__pyx_n_s_children_variants);
+ Py_VISIT(traverse_module_state->__pyx_n_s_class);
+ Py_VISIT(traverse_module_state->__pyx_n_s_class_getitem);
+ Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback);
+ Py_VISIT(traverse_module_state->__pyx_n_s_cmd_factory);
+ Py_VISIT(traverse_module_state->__pyx_n_s_cmd_step_into);
+ Py_VISIT(traverse_module_state->__pyx_n_s_cmd_step_over);
+ Py_VISIT(traverse_module_state->__pyx_n_s_co_filename);
+ Py_VISIT(traverse_module_state->__pyx_n_s_co_lines);
+ Py_VISIT(traverse_module_state->__pyx_n_s_co_name);
+ Py_VISIT(traverse_module_state->__pyx_n_s_code);
+ Py_VISIT(traverse_module_state->__pyx_n_s_code_obj);
+ Py_VISIT(traverse_module_state->__pyx_n_s_code_to_func_code_info_cache);
+ Py_VISIT(traverse_module_state->__pyx_n_s_collect_try_except_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_collections);
+ Py_VISIT(traverse_module_state->__pyx_n_s_compile);
+ Py_VISIT(traverse_module_state->__pyx_n_s_current_thread);
+ Py_VISIT(traverse_module_state->__pyx_n_s_debug);
+ Py_VISIT(traverse_module_state->__pyx_n_s_del);
+ Py_VISIT(traverse_module_state->__pyx_n_s_dict);
+ Py_VISIT(traverse_module_state->__pyx_n_s_dict_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_dis);
+ Py_VISIT(traverse_module_state->__pyx_kp_u_disable);
+ Py_VISIT(traverse_module_state->__pyx_n_s_disable_code_tracing);
+ Py_VISIT(traverse_module_state->__pyx_n_s_do_wait_suspend);
+ Py_VISIT(traverse_module_state->__pyx_n_s_do_wait_suspend_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_doc);
+ Py_VISIT(traverse_module_state->__pyx_n_s_dummy_thread);
+ Py_VISIT(traverse_module_state->__pyx_n_s_dummy_thread_2);
+ Py_VISIT(traverse_module_state->__pyx_kp_u_enable);
+ Py_VISIT(traverse_module_state->__pyx_n_s_enable_code_tracing);
+ Py_VISIT(traverse_module_state->__pyx_n_s_end);
+ Py_VISIT(traverse_module_state->__pyx_n_s_endswith);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ensure_monitoring);
+ Py_VISIT(traverse_module_state->__pyx_n_s_enter);
+ Py_VISIT(traverse_module_state->__pyx_n_s_enumerate);
+ Py_VISIT(traverse_module_state->__pyx_n_s_event);
+ Py_VISIT(traverse_module_state->__pyx_n_s_events);
+ Py_VISIT(traverse_module_state->__pyx_n_s_exc);
+ Py_VISIT(traverse_module_state->__pyx_n_s_exception);
+ Py_VISIT(traverse_module_state->__pyx_n_s_exec);
+ Py_VISIT(traverse_module_state->__pyx_n_s_execfile);
+ Py_VISIT(traverse_module_state->__pyx_n_s_exit);
+ Py_VISIT(traverse_module_state->__pyx_n_s_expression);
+ Py_VISIT(traverse_module_state->__pyx_n_s_f_back);
+ Py_VISIT(traverse_module_state->__pyx_n_s_f_bootstrap);
+ Py_VISIT(traverse_module_state->__pyx_n_s_f_code);
+ Py_VISIT(traverse_module_state->__pyx_n_s_f_disable_next_line_if_match);
+ Py_VISIT(traverse_module_state->__pyx_n_s_f_lasti);
+ Py_VISIT(traverse_module_state->__pyx_n_s_f_lineno);
+ Py_VISIT(traverse_module_state->__pyx_n_s_f_locals);
+ Py_VISIT(traverse_module_state->__pyx_n_s_file_to_line_to_breakpoints);
+ Py_VISIT(traverse_module_state->__pyx_n_s_findlinestarts);
+ Py_VISIT(traverse_module_state->__pyx_n_s_flag_as_unwinding);
+ Py_VISIT(traverse_module_state->__pyx_n_s_frame);
+ Py_VISIT(traverse_module_state->__pyx_n_s_frame_or_depth);
+ Py_VISIT(traverse_module_state->__pyx_n_s_free_tool_id);
+ Py_VISIT(traverse_module_state->__pyx_n_s_from_offset);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_frozen_runpy);
+ Py_VISIT(traverse_module_state->__pyx_n_s_function_breakpoint_name_to_brea);
+ Py_VISIT(traverse_module_state->__pyx_kp_u_gc);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_abs_path_real_path_and_base);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_abs_path_real_path_and_base_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_breakpoint);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_cache_file_type);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_clsname_for_code);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_file_type);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_func_code_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_ident);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_ident_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_line_of_offset);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_local_events);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_smart_step_into_variant_from);
+ Py_VISIT(traverse_module_state->__pyx_n_s_get_tool);
+ Py_VISIT(traverse_module_state->__pyx_n_s_getframe);
+ Py_VISIT(traverse_module_state->__pyx_n_s_getstate);
+ Py_VISIT(traverse_module_state->__pyx_n_s_global_dbg);
+ Py_VISIT(traverse_module_state->__pyx_n_s_global_notify_skipped_step_in);
+ Py_VISIT(traverse_module_state->__pyx_n_s_global_notify_skipped_step_in_l);
+ Py_VISIT(traverse_module_state->__pyx_n_s_handle_breakpoint_condition);
+ Py_VISIT(traverse_module_state->__pyx_n_s_handle_breakpoint_expression);
+ Py_VISIT(traverse_module_state->__pyx_n_s_handle_exception);
+ Py_VISIT(traverse_module_state->__pyx_n_s_has_breaks);
+ Py_VISIT(traverse_module_state->__pyx_n_s_has_caught_exception_breakpoint);
+ Py_VISIT(traverse_module_state->__pyx_n_s_has_condition);
+ Py_VISIT(traverse_module_state->__pyx_n_s_has_plugin_exception_breaks);
+ Py_VISIT(traverse_module_state->__pyx_n_s_has_plugin_line_breaks);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ident);
+ Py_VISIT(traverse_module_state->__pyx_n_s_import);
+ Py_VISIT(traverse_module_state->__pyx_n_s_init);
+ Py_VISIT(traverse_module_state->__pyx_n_s_init_subclass);
+ Py_VISIT(traverse_module_state->__pyx_n_s_initializing);
+ Py_VISIT(traverse_module_state->__pyx_n_s_instruction);
+ Py_VISIT(traverse_module_state->__pyx_n_s_instruction_offset);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_alive);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_bootstrap_frame_internal);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_files_filter_enabled);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_logpoint);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_pydev_daemon_thread);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_stopped);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_tracked_frame);
+ Py_VISIT(traverse_module_state->__pyx_n_s_is_unhandled_exception);
+ Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled);
+ Py_VISIT(traverse_module_state->__pyx_n_s_items);
+ Py_VISIT(traverse_module_state->__pyx_n_s_kwargs);
+ Py_VISIT(traverse_module_state->__pyx_n_s_line);
+ Py_VISIT(traverse_module_state->__pyx_n_s_line_to_breakpoints);
+ Py_VISIT(traverse_module_state->__pyx_n_s_line_to_offset);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_line_to_offset_first_line_last_l);
+ Py_VISIT(traverse_module_state->__pyx_n_s_linesep);
+ Py_VISIT(traverse_module_state->__pyx_n_s_local);
+ Py_VISIT(traverse_module_state->__pyx_n_s_main);
+ Py_VISIT(traverse_module_state->__pyx_n_s_main_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_make_io_message);
+ Py_VISIT(traverse_module_state->__pyx_n_s_max);
+ Py_VISIT(traverse_module_state->__pyx_n_s_metaclass);
+ Py_VISIT(traverse_module_state->__pyx_n_s_min);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_module);
+ Py_VISIT(traverse_module_state->__pyx_n_s_module_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_monitor);
+ Py_VISIT(traverse_module_state->__pyx_n_s_monitoring);
+ Py_VISIT(traverse_module_state->__pyx_n_s_mtime);
+ Py_VISIT(traverse_module_state->__pyx_n_s_name);
+ Py_VISIT(traverse_module_state->__pyx_n_s_namedtuple);
+ Py_VISIT(traverse_module_state->__pyx_n_s_new);
+ Py_VISIT(traverse_module_state->__pyx_n_s_notify_skipped_step_in_because_o);
+ Py_VISIT(traverse_module_state->__pyx_n_s_offset);
+ Py_VISIT(traverse_module_state->__pyx_n_s_original_step_cmd);
+ Py_VISIT(traverse_module_state->__pyx_n_s_os);
+ Py_VISIT(traverse_module_state->__pyx_n_s_os_path);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pickle);
+ Py_VISIT(traverse_module_state->__pyx_n_s_plugin);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pop);
+ Py_VISIT(traverse_module_state->__pyx_n_s_prepare);
+ Py_VISIT(traverse_module_state->__pyx_n_s_py_db);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_pyc);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydb_disposed);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydev_bundle);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydev_bundle__pydev_saved_modul);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydev_do_not_trace);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_pydev_execfile_py);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydev_log);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydev_monkey);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydev_state);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydev_step_cmd);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_breakpoint);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_bytecode_u);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_constants);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_frame_util);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_trace_disp);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_utils);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_dont_trace);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_file_utils);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_pydevd_py);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_runpy);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_pydevd_sys_monitoring__pydevd_s);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_sys_monitoring_cython);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_pydevd_traceproperty_py);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_python_function);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_python_line);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_PickleError);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_checksum);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_result);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_state);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_type);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_FuncCodeInfo);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_ThreadInfo);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle__TryExceptContain);
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_vtable);
+ Py_VISIT(traverse_module_state->__pyx_n_s_qualname);
+ Py_VISIT(traverse_module_state->__pyx_n_s_re);
+ Py_VISIT(traverse_module_state->__pyx_n_s_reduce);
+ Py_VISIT(traverse_module_state->__pyx_n_s_reduce_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_reduce_ex);
+ Py_VISIT(traverse_module_state->__pyx_n_s_ref);
+ Py_VISIT(traverse_module_state->__pyx_n_s_register_callback);
+ Py_VISIT(traverse_module_state->__pyx_n_s_required_events);
+ Py_VISIT(traverse_module_state->__pyx_n_s_required_events_breakpoint);
+ Py_VISIT(traverse_module_state->__pyx_n_s_required_events_stepping);
+ Py_VISIT(traverse_module_state->__pyx_n_s_restart_events);
+ Py_VISIT(traverse_module_state->__pyx_n_s_return);
+ Py_VISIT(traverse_module_state->__pyx_n_s_retval);
+ Py_VISIT(traverse_module_state->__pyx_n_s_run);
+ Py_VISIT(traverse_module_state->__pyx_n_s_run_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_runpy);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_s_s);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_s_s_2);
+ Py_VISIT(traverse_module_state->__pyx_n_s_self);
+ Py_VISIT(traverse_module_state->__pyx_n_s_set_events);
+ Py_VISIT(traverse_module_state->__pyx_n_s_set_local_events);
+ Py_VISIT(traverse_module_state->__pyx_n_s_set_name);
+ Py_VISIT(traverse_module_state->__pyx_n_s_set_suspend);
+ Py_VISIT(traverse_module_state->__pyx_n_s_set_trace_for_frame_and_parents);
+ Py_VISIT(traverse_module_state->__pyx_n_s_setstate);
+ Py_VISIT(traverse_module_state->__pyx_n_s_setstate_cython);
+ Py_VISIT(traverse_module_state->__pyx_n_s_short_frame);
+ Py_VISIT(traverse_module_state->__pyx_n_s_short_tb);
+ Py_VISIT(traverse_module_state->__pyx_n_s_should_stop_on_exception);
+ Py_VISIT(traverse_module_state->__pyx_n_s_should_trace_hook);
+ Py_VISIT(traverse_module_state->__pyx_n_s_show_return_values);
+ Py_VISIT(traverse_module_state->__pyx_n_s_spec);
+ Py_VISIT(traverse_module_state->__pyx_n_s_splitext);
+ Py_VISIT(traverse_module_state->__pyx_n_s_start);
+ Py_VISIT(traverse_module_state->__pyx_n_s_start_monitoring);
+ Py_VISIT(traverse_module_state->__pyx_n_s_startswith);
+ Py_VISIT(traverse_module_state->__pyx_n_s_state);
+ Py_VISIT(traverse_module_state->__pyx_n_s_stop);
+ Py_VISIT(traverse_module_state->__pyx_n_s_stop_monitoring);
+ Py_VISIT(traverse_module_state->__pyx_n_s_stop_on_unhandled_exception);
+ Py_VISIT(traverse_module_state->__pyx_kp_s_stringsource);
+ Py_VISIT(traverse_module_state->__pyx_n_s_super);
+ Py_VISIT(traverse_module_state->__pyx_n_s_suspend);
+ Py_VISIT(traverse_module_state->__pyx_n_s_suspend_other_threads);
+ Py_VISIT(traverse_module_state->__pyx_n_s_suspend_policy);
+ Py_VISIT(traverse_module_state->__pyx_n_s_suspend_requested);
+ Py_VISIT(traverse_module_state->__pyx_n_s_sys);
+ Py_VISIT(traverse_module_state->__pyx_n_s_sys_monitor);
+ Py_VISIT(traverse_module_state->__pyx_n_s_t);
+ Py_VISIT(traverse_module_state->__pyx_n_s_test);
+ Py_VISIT(traverse_module_state->__pyx_n_s_thread);
+ Py_VISIT(traverse_module_state->__pyx_n_s_thread_active);
+ Py_VISIT(traverse_module_state->__pyx_n_s_thread_ident);
+ Py_VISIT(traverse_module_state->__pyx_n_s_thread_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_thread_local_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_threading);
+ Py_VISIT(traverse_module_state->__pyx_n_s_tident);
+ Py_VISIT(traverse_module_state->__pyx_n_s_to_offset);
+ Py_VISIT(traverse_module_state->__pyx_n_s_trace);
+ Py_VISIT(traverse_module_state->__pyx_n_s_traceback);
+ Py_VISIT(traverse_module_state->__pyx_n_s_track_dummy_thread_ref);
+ Py_VISIT(traverse_module_state->__pyx_n_s_try_except_infos);
+ Py_VISIT(traverse_module_state->__pyx_n_s_types);
+ Py_VISIT(traverse_module_state->__pyx_n_s_typing);
+ Py_VISIT(traverse_module_state->__pyx_n_s_update);
+ Py_VISIT(traverse_module_state->__pyx_n_s_update_monitor_events);
+ Py_VISIT(traverse_module_state->__pyx_n_s_use_setstate);
+ Py_VISIT(traverse_module_state->__pyx_n_s_use_tool_id);
+ Py_VISIT(traverse_module_state->__pyx_n_s_user_uncaught_exc_info);
+ Py_VISIT(traverse_module_state->__pyx_n_s_values);
+ Py_VISIT(traverse_module_state->__pyx_n_s_wrap);
+ Py_VISIT(traverse_module_state->__pyx_n_s_writer);
+ Py_VISIT(traverse_module_state->__pyx_int_0);
+ Py_VISIT(traverse_module_state->__pyx_int_1);
+ Py_VISIT(traverse_module_state->__pyx_int_2);
+ Py_VISIT(traverse_module_state->__pyx_int_107);
+ Py_VISIT(traverse_module_state->__pyx_int_108);
+ Py_VISIT(traverse_module_state->__pyx_int_109);
+ Py_VISIT(traverse_module_state->__pyx_int_111);
+ Py_VISIT(traverse_module_state->__pyx_int_128);
+ Py_VISIT(traverse_module_state->__pyx_int_144);
+ Py_VISIT(traverse_module_state->__pyx_int_159);
+ Py_VISIT(traverse_module_state->__pyx_int_160);
+ Py_VISIT(traverse_module_state->__pyx_int_206);
+ Py_VISIT(traverse_module_state->__pyx_int_208);
+ Py_VISIT(traverse_module_state->__pyx_int_66323410);
+ Py_VISIT(traverse_module_state->__pyx_int_92026781);
+ Py_VISIT(traverse_module_state->__pyx_int_99967855);
+ Py_VISIT(traverse_module_state->__pyx_int_189049472);
+ Py_VISIT(traverse_module_state->__pyx_int_210464433);
+ Py_VISIT(traverse_module_state->__pyx_int_224549882);
+ Py_VISIT(traverse_module_state->__pyx_int_230645316);
+ Py_VISIT(traverse_module_state->__pyx_int_232881363);
+ Py_VISIT(traverse_module_state->__pyx_int_266084120);
+ Py_VISIT(traverse_module_state->__pyx_int_neg_1);
+ Py_VISIT(traverse_module_state->__pyx_k__15);
+ Py_VISIT(traverse_module_state->__pyx_tuple_);
+ Py_VISIT(traverse_module_state->__pyx_tuple__3);
+ Py_VISIT(traverse_module_state->__pyx_tuple__5);
+ Py_VISIT(traverse_module_state->__pyx_tuple__7);
+ Py_VISIT(traverse_module_state->__pyx_tuple__9);
+ Py_VISIT(traverse_module_state->__pyx_slice__16);
+ Py_VISIT(traverse_module_state->__pyx_tuple__11);
+ Py_VISIT(traverse_module_state->__pyx_tuple__12);
+ Py_VISIT(traverse_module_state->__pyx_tuple__13);
+ Py_VISIT(traverse_module_state->__pyx_tuple__18);
+ Py_VISIT(traverse_module_state->__pyx_tuple__20);
+ Py_VISIT(traverse_module_state->__pyx_tuple__21);
+ Py_VISIT(traverse_module_state->__pyx_tuple__23);
+ Py_VISIT(traverse_module_state->__pyx_tuple__25);
+ Py_VISIT(traverse_module_state->__pyx_tuple__26);
+ Py_VISIT(traverse_module_state->__pyx_tuple__27);
+ Py_VISIT(traverse_module_state->__pyx_tuple__28);
+ Py_VISIT(traverse_module_state->__pyx_tuple__30);
+ Py_VISIT(traverse_module_state->__pyx_tuple__32);
+ Py_VISIT(traverse_module_state->__pyx_tuple__34);
+ Py_VISIT(traverse_module_state->__pyx_tuple__36);
+ Py_VISIT(traverse_module_state->__pyx_tuple__40);
+ Py_VISIT(traverse_module_state->__pyx_tuple__41);
+ Py_VISIT(traverse_module_state->__pyx_tuple__43);
+ Py_VISIT(traverse_module_state->__pyx_tuple__45);
+ Py_VISIT(traverse_module_state->__pyx_tuple__50);
+ Py_VISIT(traverse_module_state->__pyx_tuple__52);
+ Py_VISIT(traverse_module_state->__pyx_tuple__54);
+ Py_VISIT(traverse_module_state->__pyx_tuple__55);
+ Py_VISIT(traverse_module_state->__pyx_tuple__57);
+ Py_VISIT(traverse_module_state->__pyx_tuple__59);
+ Py_VISIT(traverse_module_state->__pyx_tuple__61);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__2);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__4);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__6);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__8);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__10);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__24);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__29);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__31);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__33);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__35);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__37);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__38);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__39);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__42);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__44);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__46);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__47);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__48);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__49);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__51);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__53);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__56);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__58);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__60);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__62);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__63);
+ Py_VISIT(traverse_module_state->__pyx_codeobj__64);
+ return 0;
+}
+#endif
+/* #### Code section: module_state_defines ### */
+#define __pyx_d __pyx_mstate_global->__pyx_d
+#define __pyx_b __pyx_mstate_global->__pyx_b
+#define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime
+#define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple
+#define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes
+#define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode
+#ifdef __Pyx_CyFunction_USED
+#define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType
+#endif
+#ifdef __Pyx_FusedFunction_USED
+#define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType
+#endif
+#ifdef __Pyx_Generator_USED
+#define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType
+#endif
+#ifdef __Pyx_IterableCoroutine_USED
+#define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType
+#endif
+#ifdef __Pyx_Coroutine_USED
+#define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType
+#endif
+#ifdef __Pyx_Coroutine_USED
+#define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType
+#endif
+#if CYTHON_USE_MODULE_STATE
+#endif
+#if CYTHON_USE_MODULE_STATE
+#endif
+#if CYTHON_USE_MODULE_STATE
+#endif
+#define __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo __pyx_mstate_global->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo
+#if CYTHON_USE_MODULE_STATE
+#define __pyx_type_29_pydevd_sys_monitoring_cython_ThreadInfo __pyx_mstate_global->__pyx_type_29_pydevd_sys_monitoring_cython_ThreadInfo
+#define __pyx_type_29_pydevd_sys_monitoring_cython_FuncCodeInfo __pyx_mstate_global->__pyx_type_29_pydevd_sys_monitoring_cython_FuncCodeInfo
+#define __pyx_type_29_pydevd_sys_monitoring_cython__TryExceptContainerObj __pyx_mstate_global->__pyx_type_29_pydevd_sys_monitoring_cython__TryExceptContainerObj
+#define __pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc __pyx_mstate_global->__pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc
+#define __pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset __pyx_mstate_global->__pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset
+#define __pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line __pyx_mstate_global->__pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line
+#define __pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset __pyx_mstate_global->__pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset
+#define __pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval __pyx_mstate_global->__pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval
+#endif
+#define __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo __pyx_mstate_global->__pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo
+#define __pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo __pyx_mstate_global->__pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo
+#define __pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj __pyx_mstate_global->__pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj
+#define __pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc __pyx_mstate_global->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc
+#define __pyx_ptype___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset __pyx_mstate_global->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset
+#define __pyx_ptype___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line __pyx_mstate_global->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line
+#define __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset __pyx_mstate_global->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset
+#define __pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval __pyx_mstate_global->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval
+#define __pyx_kp_s_1 __pyx_mstate_global->__pyx_kp_s_1
+#define __pyx_n_s_ALL __pyx_mstate_global->__pyx_n_s_ALL
+#define __pyx_n_s_Any __pyx_mstate_global->__pyx_n_s_Any
+#define __pyx_n_s_AssertionError __pyx_mstate_global->__pyx_n_s_AssertionError
+#define __pyx_n_s_AttributeError __pyx_mstate_global->__pyx_n_s_AttributeError
+#define __pyx_n_s_CMD_SET_BREAK __pyx_mstate_global->__pyx_n_s_CMD_SET_BREAK
+#define __pyx_n_s_CMD_SET_FUNCTION_BREAK __pyx_mstate_global->__pyx_n_s_CMD_SET_FUNCTION_BREAK
+#define __pyx_n_s_CMD_SMART_STEP_INTO __pyx_mstate_global->__pyx_n_s_CMD_SMART_STEP_INTO
+#define __pyx_n_s_CMD_STEP_INTO __pyx_mstate_global->__pyx_n_s_CMD_STEP_INTO
+#define __pyx_n_s_CMD_STEP_INTO_COROUTINE __pyx_mstate_global->__pyx_n_s_CMD_STEP_INTO_COROUTINE
+#define __pyx_n_s_CMD_STEP_INTO_MY_CODE __pyx_mstate_global->__pyx_n_s_CMD_STEP_INTO_MY_CODE
+#define __pyx_n_s_CMD_STEP_OVER __pyx_mstate_global->__pyx_n_s_CMD_STEP_OVER
+#define __pyx_n_s_CMD_STEP_OVER_MY_CODE __pyx_mstate_global->__pyx_n_s_CMD_STEP_OVER_MY_CODE
+#define __pyx_n_s_CMD_STEP_RETURN __pyx_mstate_global->__pyx_n_s_CMD_STEP_RETURN
+#define __pyx_n_s_CMD_STEP_RETURN_MY_CODE __pyx_mstate_global->__pyx_n_s_CMD_STEP_RETURN_MY_CODE
+#define __pyx_n_s_CodeLineInfo __pyx_mstate_global->__pyx_n_s_CodeLineInfo
+#define __pyx_n_s_CodeType __pyx_mstate_global->__pyx_n_s_CodeType
+#define __pyx_n_s_DEBUGGER_ID __pyx_mstate_global->__pyx_n_s_DEBUGGER_ID
+#define __pyx_n_s_DEBUG_START __pyx_mstate_global->__pyx_n_s_DEBUG_START
+#define __pyx_n_s_DEBUG_START_PY3K __pyx_mstate_global->__pyx_n_s_DEBUG_START_PY3K
+#define __pyx_n_s_DISABLE __pyx_mstate_global->__pyx_n_s_DISABLE
+#define __pyx_n_s_DeleteDummyThreadOnDel __pyx_mstate_global->__pyx_n_s_DeleteDummyThreadOnDel
+#define __pyx_n_s_DeleteDummyThreadOnDel___del __pyx_mstate_global->__pyx_n_s_DeleteDummyThreadOnDel___del
+#define __pyx_n_s_DeleteDummyThreadOnDel___init __pyx_mstate_global->__pyx_n_s_DeleteDummyThreadOnDel___init
+#define __pyx_n_s_Dict __pyx_mstate_global->__pyx_n_s_Dict
+#define __pyx_n_s_DummyThread __pyx_mstate_global->__pyx_n_s_DummyThread
+#define __pyx_n_s_EXCEPTION_TYPE_HANDLED __pyx_mstate_global->__pyx_n_s_EXCEPTION_TYPE_HANDLED
+#define __pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED __pyx_mstate_global->__pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED
+#define __pyx_n_s_ForkSafeLock __pyx_mstate_global->__pyx_n_s_ForkSafeLock
+#define __pyx_n_s_FrameType __pyx_mstate_global->__pyx_n_s_FrameType
+#define __pyx_n_s_FuncCodeInfo __pyx_mstate_global->__pyx_n_s_FuncCodeInfo
+#define __pyx_n_s_FuncCodeInfo___reduce_cython __pyx_mstate_global->__pyx_n_s_FuncCodeInfo___reduce_cython
+#define __pyx_n_s_FuncCodeInfo___setstate_cython __pyx_mstate_global->__pyx_n_s_FuncCodeInfo___setstate_cython
+#define __pyx_n_s_FuncCodeInfo_get_line_of_offset __pyx_mstate_global->__pyx_n_s_FuncCodeInfo_get_line_of_offset
+#define __pyx_n_s_GlobalDebuggerHolder __pyx_mstate_global->__pyx_n_s_GlobalDebuggerHolder
+#define __pyx_kp_s_Helper_class_to_remove_a_dummy __pyx_mstate_global->__pyx_kp_s_Helper_class_to_remove_a_dummy
+#define __pyx_n_s_IGNORE_EXCEPTION_TAG __pyx_mstate_global->__pyx_n_s_IGNORE_EXCEPTION_TAG
+#define __pyx_kp_s_IgnoreException __pyx_mstate_global->__pyx_kp_s_IgnoreException
+#define __pyx_n_s_ImportError __pyx_mstate_global->__pyx_n_s_ImportError
+#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0
+#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2
+#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3
+#define __pyx_n_s_JUMP __pyx_mstate_global->__pyx_n_s_JUMP
+#define __pyx_n_s_LINE __pyx_mstate_global->__pyx_n_s_LINE
+#define __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER __pyx_mstate_global->__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER
+#define __pyx_n_s_None __pyx_mstate_global->__pyx_n_s_None
+#define __pyx_n_s_Optional __pyx_mstate_global->__pyx_n_s_Optional
+#define __pyx_kp_s_Optional_bool __pyx_mstate_global->__pyx_kp_s_Optional_bool
+#define __pyx_n_s_PYDEVD_IPYTHON_CONTEXT __pyx_mstate_global->__pyx_n_s_PYDEVD_IPYTHON_CONTEXT
+#define __pyx_n_s_PYTHON_SUSPEND __pyx_mstate_global->__pyx_n_s_PYTHON_SUSPEND
+#define __pyx_n_s_PY_RESUME __pyx_mstate_global->__pyx_n_s_PY_RESUME
+#define __pyx_n_s_PY_RETURN __pyx_mstate_global->__pyx_n_s_PY_RETURN
+#define __pyx_n_s_PY_START __pyx_mstate_global->__pyx_n_s_PY_START
+#define __pyx_n_s_PY_UNWIND __pyx_mstate_global->__pyx_n_s_PY_UNWIND
+#define __pyx_n_s_PickleError __pyx_mstate_global->__pyx_n_s_PickleError
+#define __pyx_n_s_Pyx_CFunc_4904d5__29_pydevd_sy __pyx_mstate_global->__pyx_n_s_Pyx_CFunc_4904d5__29_pydevd_sy
+#define __pyx_n_s_Pyx_CFunc_4904d5__29_pydevd_sy_2 __pyx_mstate_global->__pyx_n_s_Pyx_CFunc_4904d5__29_pydevd_sy_2
+#define __pyx_n_s_Pyx_CFunc_7f6725__29_pydevd_sy __pyx_mstate_global->__pyx_n_s_Pyx_CFunc_7f6725__29_pydevd_sy
+#define __pyx_n_s_Pyx_CFunc_893235__29_pydevd_sy __pyx_mstate_global->__pyx_n_s_Pyx_CFunc_893235__29_pydevd_sy
+#define __pyx_n_s_Pyx_CFunc_b0409f__29_pydevd_sy __pyx_mstate_global->__pyx_n_s_Pyx_CFunc_b0409f__29_pydevd_sy
+#define __pyx_n_s_RAISE __pyx_mstate_global->__pyx_n_s_RAISE
+#define __pyx_n_s_RETURN_VALUES_DICT __pyx_mstate_global->__pyx_n_s_RETURN_VALUES_DICT
+#define __pyx_n_s_STATE_RUN __pyx_mstate_global->__pyx_n_s_STATE_RUN
+#define __pyx_n_s_STATE_SUSPEND __pyx_mstate_global->__pyx_n_s_STATE_SUSPEND
+#define __pyx_kp_s_Stop_inside_ipython_call __pyx_mstate_global->__pyx_kp_s_Stop_inside_ipython_call
+#define __pyx_n_s_TRACE_PROPERTY __pyx_mstate_global->__pyx_n_s_TRACE_PROPERTY
+#define __pyx_n_s_Thread __pyx_mstate_global->__pyx_n_s_Thread
+#define __pyx_n_s_ThreadInfo __pyx_mstate_global->__pyx_n_s_ThreadInfo
+#define __pyx_n_s_ThreadInfo___reduce_cython __pyx_mstate_global->__pyx_n_s_ThreadInfo___reduce_cython
+#define __pyx_n_s_ThreadInfo___setstate_cython __pyx_mstate_global->__pyx_n_s_ThreadInfo___setstate_cython
+#define __pyx_n_s_TryExceptContainerObj __pyx_mstate_global->__pyx_n_s_TryExceptContainerObj
+#define __pyx_n_s_TryExceptContainerObj___reduce __pyx_mstate_global->__pyx_n_s_TryExceptContainerObj___reduce
+#define __pyx_n_s_TryExceptContainerObj___setstat __pyx_mstate_global->__pyx_n_s_TryExceptContainerObj___setstat
+#define __pyx_n_s_Tuple __pyx_mstate_global->__pyx_n_s_Tuple
+#define __pyx_kp_s__14 __pyx_mstate_global->__pyx_kp_s__14
+#define __pyx_kp_s__17 __pyx_mstate_global->__pyx_kp_s__17
+#define __pyx_kp_u__19 __pyx_mstate_global->__pyx_kp_u__19
+#define __pyx_n_s__22 __pyx_mstate_global->__pyx_n_s__22
+#define __pyx_n_s_active __pyx_mstate_global->__pyx_n_s_active
+#define __pyx_n_s_active_limbo_lock __pyx_mstate_global->__pyx_n_s_active_limbo_lock
+#define __pyx_n_s_add_command __pyx_mstate_global->__pyx_n_s_add_command
+#define __pyx_n_s_additional_info __pyx_mstate_global->__pyx_n_s_additional_info
+#define __pyx_n_s_all_threads __pyx_mstate_global->__pyx_n_s_all_threads
+#define __pyx_n_s_apply_files_filter __pyx_mstate_global->__pyx_n_s_apply_files_filter
+#define __pyx_n_s_arg __pyx_mstate_global->__pyx_n_s_arg
+#define __pyx_n_s_args __pyx_mstate_global->__pyx_n_s_args
+#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines
+#define __pyx_n_s_basename __pyx_mstate_global->__pyx_n_s_basename
+#define __pyx_n_s_bootstrap __pyx_mstate_global->__pyx_n_s_bootstrap
+#define __pyx_n_s_bootstrap_2 __pyx_mstate_global->__pyx_n_s_bootstrap_2
+#define __pyx_n_s_bootstrap_inner __pyx_mstate_global->__pyx_n_s_bootstrap_inner
+#define __pyx_n_s_bootstrap_inner_2 __pyx_mstate_global->__pyx_n_s_bootstrap_inner_2
+#define __pyx_n_s_break_on_caught_exceptions __pyx_mstate_global->__pyx_n_s_break_on_caught_exceptions
+#define __pyx_n_s_break_on_uncaught_exceptions __pyx_mstate_global->__pyx_n_s_break_on_uncaught_exceptions
+#define __pyx_n_s_break_on_user_uncaught_exception __pyx_mstate_global->__pyx_n_s_break_on_user_uncaught_exception
+#define __pyx_n_s_breakpoints __pyx_mstate_global->__pyx_n_s_breakpoints
+#define __pyx_n_s_call __pyx_mstate_global->__pyx_n_s_call
+#define __pyx_n_s_call_2 __pyx_mstate_global->__pyx_n_s_call_2
+#define __pyx_n_s_can_skip __pyx_mstate_global->__pyx_n_s_can_skip
+#define __pyx_n_s_cfunc_to_py __pyx_mstate_global->__pyx_n_s_cfunc_to_py
+#define __pyx_n_s_children_variants __pyx_mstate_global->__pyx_n_s_children_variants
+#define __pyx_n_s_class __pyx_mstate_global->__pyx_n_s_class
+#define __pyx_n_s_class_getitem __pyx_mstate_global->__pyx_n_s_class_getitem
+#define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback
+#define __pyx_n_s_cmd_factory __pyx_mstate_global->__pyx_n_s_cmd_factory
+#define __pyx_n_s_cmd_step_into __pyx_mstate_global->__pyx_n_s_cmd_step_into
+#define __pyx_n_s_cmd_step_over __pyx_mstate_global->__pyx_n_s_cmd_step_over
+#define __pyx_n_s_co_filename __pyx_mstate_global->__pyx_n_s_co_filename
+#define __pyx_n_s_co_lines __pyx_mstate_global->__pyx_n_s_co_lines
+#define __pyx_n_s_co_name __pyx_mstate_global->__pyx_n_s_co_name
+#define __pyx_n_s_code __pyx_mstate_global->__pyx_n_s_code
+#define __pyx_n_s_code_obj __pyx_mstate_global->__pyx_n_s_code_obj
+#define __pyx_n_s_code_to_func_code_info_cache __pyx_mstate_global->__pyx_n_s_code_to_func_code_info_cache
+#define __pyx_n_s_collect_try_except_info __pyx_mstate_global->__pyx_n_s_collect_try_except_info
+#define __pyx_n_s_collections __pyx_mstate_global->__pyx_n_s_collections
+#define __pyx_n_s_compile __pyx_mstate_global->__pyx_n_s_compile
+#define __pyx_n_s_current_thread __pyx_mstate_global->__pyx_n_s_current_thread
+#define __pyx_n_s_debug __pyx_mstate_global->__pyx_n_s_debug
+#define __pyx_n_s_del __pyx_mstate_global->__pyx_n_s_del
+#define __pyx_n_s_dict __pyx_mstate_global->__pyx_n_s_dict
+#define __pyx_n_s_dict_2 __pyx_mstate_global->__pyx_n_s_dict_2
+#define __pyx_n_s_dis __pyx_mstate_global->__pyx_n_s_dis
+#define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable
+#define __pyx_n_s_disable_code_tracing __pyx_mstate_global->__pyx_n_s_disable_code_tracing
+#define __pyx_n_s_do_wait_suspend __pyx_mstate_global->__pyx_n_s_do_wait_suspend
+#define __pyx_n_s_do_wait_suspend_2 __pyx_mstate_global->__pyx_n_s_do_wait_suspend_2
+#define __pyx_n_s_doc __pyx_mstate_global->__pyx_n_s_doc
+#define __pyx_n_s_dummy_thread __pyx_mstate_global->__pyx_n_s_dummy_thread
+#define __pyx_n_s_dummy_thread_2 __pyx_mstate_global->__pyx_n_s_dummy_thread_2
+#define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable
+#define __pyx_n_s_enable_code_tracing __pyx_mstate_global->__pyx_n_s_enable_code_tracing
+#define __pyx_n_s_end __pyx_mstate_global->__pyx_n_s_end
+#define __pyx_n_s_endswith __pyx_mstate_global->__pyx_n_s_endswith
+#define __pyx_n_s_ensure_monitoring __pyx_mstate_global->__pyx_n_s_ensure_monitoring
+#define __pyx_n_s_enter __pyx_mstate_global->__pyx_n_s_enter
+#define __pyx_n_s_enumerate __pyx_mstate_global->__pyx_n_s_enumerate
+#define __pyx_n_s_event __pyx_mstate_global->__pyx_n_s_event
+#define __pyx_n_s_events __pyx_mstate_global->__pyx_n_s_events
+#define __pyx_n_s_exc __pyx_mstate_global->__pyx_n_s_exc
+#define __pyx_n_s_exception __pyx_mstate_global->__pyx_n_s_exception
+#define __pyx_n_s_exec __pyx_mstate_global->__pyx_n_s_exec
+#define __pyx_n_s_execfile __pyx_mstate_global->__pyx_n_s_execfile
+#define __pyx_n_s_exit __pyx_mstate_global->__pyx_n_s_exit
+#define __pyx_n_s_expression __pyx_mstate_global->__pyx_n_s_expression
+#define __pyx_n_s_f_back __pyx_mstate_global->__pyx_n_s_f_back
+#define __pyx_n_s_f_bootstrap __pyx_mstate_global->__pyx_n_s_f_bootstrap
+#define __pyx_n_s_f_code __pyx_mstate_global->__pyx_n_s_f_code
+#define __pyx_n_s_f_disable_next_line_if_match __pyx_mstate_global->__pyx_n_s_f_disable_next_line_if_match
+#define __pyx_n_s_f_lasti __pyx_mstate_global->__pyx_n_s_f_lasti
+#define __pyx_n_s_f_lineno __pyx_mstate_global->__pyx_n_s_f_lineno
+#define __pyx_n_s_f_locals __pyx_mstate_global->__pyx_n_s_f_locals
+#define __pyx_n_s_file_to_line_to_breakpoints __pyx_mstate_global->__pyx_n_s_file_to_line_to_breakpoints
+#define __pyx_n_s_findlinestarts __pyx_mstate_global->__pyx_n_s_findlinestarts
+#define __pyx_n_s_flag_as_unwinding __pyx_mstate_global->__pyx_n_s_flag_as_unwinding
+#define __pyx_n_s_frame __pyx_mstate_global->__pyx_n_s_frame
+#define __pyx_n_s_frame_or_depth __pyx_mstate_global->__pyx_n_s_frame_or_depth
+#define __pyx_n_s_free_tool_id __pyx_mstate_global->__pyx_n_s_free_tool_id
+#define __pyx_n_s_from_offset __pyx_mstate_global->__pyx_n_s_from_offset
+#define __pyx_kp_s_frozen_runpy __pyx_mstate_global->__pyx_kp_s_frozen_runpy
+#define __pyx_n_s_function_breakpoint_name_to_brea __pyx_mstate_global->__pyx_n_s_function_breakpoint_name_to_brea
+#define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc
+#define __pyx_n_s_get __pyx_mstate_global->__pyx_n_s_get
+#define __pyx_n_s_get_abs_path_real_path_and_base __pyx_mstate_global->__pyx_n_s_get_abs_path_real_path_and_base
+#define __pyx_n_s_get_abs_path_real_path_and_base_2 __pyx_mstate_global->__pyx_n_s_get_abs_path_real_path_and_base_2
+#define __pyx_n_s_get_breakpoint __pyx_mstate_global->__pyx_n_s_get_breakpoint
+#define __pyx_n_s_get_cache_file_type __pyx_mstate_global->__pyx_n_s_get_cache_file_type
+#define __pyx_n_s_get_clsname_for_code __pyx_mstate_global->__pyx_n_s_get_clsname_for_code
+#define __pyx_n_s_get_file_type __pyx_mstate_global->__pyx_n_s_get_file_type
+#define __pyx_n_s_get_func_code_info __pyx_mstate_global->__pyx_n_s_get_func_code_info
+#define __pyx_n_s_get_ident __pyx_mstate_global->__pyx_n_s_get_ident
+#define __pyx_n_s_get_ident_2 __pyx_mstate_global->__pyx_n_s_get_ident_2
+#define __pyx_n_s_get_line_of_offset __pyx_mstate_global->__pyx_n_s_get_line_of_offset
+#define __pyx_n_s_get_local_events __pyx_mstate_global->__pyx_n_s_get_local_events
+#define __pyx_n_s_get_smart_step_into_variant_from __pyx_mstate_global->__pyx_n_s_get_smart_step_into_variant_from
+#define __pyx_n_s_get_tool __pyx_mstate_global->__pyx_n_s_get_tool
+#define __pyx_n_s_getframe __pyx_mstate_global->__pyx_n_s_getframe
+#define __pyx_n_s_getstate __pyx_mstate_global->__pyx_n_s_getstate
+#define __pyx_n_s_global_dbg __pyx_mstate_global->__pyx_n_s_global_dbg
+#define __pyx_n_s_global_notify_skipped_step_in __pyx_mstate_global->__pyx_n_s_global_notify_skipped_step_in
+#define __pyx_n_s_global_notify_skipped_step_in_l __pyx_mstate_global->__pyx_n_s_global_notify_skipped_step_in_l
+#define __pyx_n_s_handle_breakpoint_condition __pyx_mstate_global->__pyx_n_s_handle_breakpoint_condition
+#define __pyx_n_s_handle_breakpoint_expression __pyx_mstate_global->__pyx_n_s_handle_breakpoint_expression
+#define __pyx_n_s_handle_exception __pyx_mstate_global->__pyx_n_s_handle_exception
+#define __pyx_n_s_has_breaks __pyx_mstate_global->__pyx_n_s_has_breaks
+#define __pyx_n_s_has_caught_exception_breakpoint __pyx_mstate_global->__pyx_n_s_has_caught_exception_breakpoint
+#define __pyx_n_s_has_condition __pyx_mstate_global->__pyx_n_s_has_condition
+#define __pyx_n_s_has_plugin_exception_breaks __pyx_mstate_global->__pyx_n_s_has_plugin_exception_breaks
+#define __pyx_n_s_has_plugin_line_breaks __pyx_mstate_global->__pyx_n_s_has_plugin_line_breaks
+#define __pyx_n_s_ident __pyx_mstate_global->__pyx_n_s_ident
+#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import
+#define __pyx_n_s_init __pyx_mstate_global->__pyx_n_s_init
+#define __pyx_n_s_init_subclass __pyx_mstate_global->__pyx_n_s_init_subclass
+#define __pyx_n_s_initializing __pyx_mstate_global->__pyx_n_s_initializing
+#define __pyx_n_s_instruction __pyx_mstate_global->__pyx_n_s_instruction
+#define __pyx_n_s_instruction_offset __pyx_mstate_global->__pyx_n_s_instruction_offset
+#define __pyx_n_s_is_alive __pyx_mstate_global->__pyx_n_s_is_alive
+#define __pyx_n_s_is_bootstrap_frame_internal __pyx_mstate_global->__pyx_n_s_is_bootstrap_frame_internal
+#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine
+#define __pyx_n_s_is_files_filter_enabled __pyx_mstate_global->__pyx_n_s_is_files_filter_enabled
+#define __pyx_n_s_is_logpoint __pyx_mstate_global->__pyx_n_s_is_logpoint
+#define __pyx_n_s_is_pydev_daemon_thread __pyx_mstate_global->__pyx_n_s_is_pydev_daemon_thread
+#define __pyx_n_s_is_stopped __pyx_mstate_global->__pyx_n_s_is_stopped
+#define __pyx_n_s_is_tracked_frame __pyx_mstate_global->__pyx_n_s_is_tracked_frame
+#define __pyx_n_s_is_unhandled_exception __pyx_mstate_global->__pyx_n_s_is_unhandled_exception
+#define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled
+#define __pyx_n_s_items __pyx_mstate_global->__pyx_n_s_items
+#define __pyx_n_s_kwargs __pyx_mstate_global->__pyx_n_s_kwargs
+#define __pyx_n_s_line __pyx_mstate_global->__pyx_n_s_line
+#define __pyx_n_s_line_to_breakpoints __pyx_mstate_global->__pyx_n_s_line_to_breakpoints
+#define __pyx_n_s_line_to_offset __pyx_mstate_global->__pyx_n_s_line_to_offset
+#define __pyx_kp_s_line_to_offset_first_line_last_l __pyx_mstate_global->__pyx_kp_s_line_to_offset_first_line_last_l
+#define __pyx_n_s_linesep __pyx_mstate_global->__pyx_n_s_linesep
+#define __pyx_n_s_local __pyx_mstate_global->__pyx_n_s_local
+#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main
+#define __pyx_n_s_main_2 __pyx_mstate_global->__pyx_n_s_main_2
+#define __pyx_n_s_make_io_message __pyx_mstate_global->__pyx_n_s_make_io_message
+#define __pyx_n_s_max __pyx_mstate_global->__pyx_n_s_max
+#define __pyx_n_s_metaclass __pyx_mstate_global->__pyx_n_s_metaclass
+#define __pyx_n_s_min __pyx_mstate_global->__pyx_n_s_min
+#define __pyx_kp_s_module __pyx_mstate_global->__pyx_kp_s_module
+#define __pyx_n_s_module_2 __pyx_mstate_global->__pyx_n_s_module_2
+#define __pyx_n_s_monitor __pyx_mstate_global->__pyx_n_s_monitor
+#define __pyx_n_s_monitoring __pyx_mstate_global->__pyx_n_s_monitoring
+#define __pyx_n_s_mtime __pyx_mstate_global->__pyx_n_s_mtime
+#define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name
+#define __pyx_n_s_namedtuple __pyx_mstate_global->__pyx_n_s_namedtuple
+#define __pyx_n_s_new __pyx_mstate_global->__pyx_n_s_new
+#define __pyx_n_s_notify_skipped_step_in_because_o __pyx_mstate_global->__pyx_n_s_notify_skipped_step_in_because_o
+#define __pyx_n_s_offset __pyx_mstate_global->__pyx_n_s_offset
+#define __pyx_n_s_original_step_cmd __pyx_mstate_global->__pyx_n_s_original_step_cmd
+#define __pyx_n_s_os __pyx_mstate_global->__pyx_n_s_os
+#define __pyx_n_s_os_path __pyx_mstate_global->__pyx_n_s_os_path
+#define __pyx_n_s_pickle __pyx_mstate_global->__pyx_n_s_pickle
+#define __pyx_n_s_plugin __pyx_mstate_global->__pyx_n_s_plugin
+#define __pyx_n_s_pop __pyx_mstate_global->__pyx_n_s_pop
+#define __pyx_n_s_prepare __pyx_mstate_global->__pyx_n_s_prepare
+#define __pyx_n_s_py_db __pyx_mstate_global->__pyx_n_s_py_db
+#define __pyx_kp_s_pyc __pyx_mstate_global->__pyx_kp_s_pyc
+#define __pyx_n_s_pydb_disposed __pyx_mstate_global->__pyx_n_s_pydb_disposed
+#define __pyx_n_s_pydev_bundle __pyx_mstate_global->__pyx_n_s_pydev_bundle
+#define __pyx_n_s_pydev_bundle__pydev_saved_modul __pyx_mstate_global->__pyx_n_s_pydev_bundle__pydev_saved_modul
+#define __pyx_n_s_pydev_do_not_trace __pyx_mstate_global->__pyx_n_s_pydev_do_not_trace
+#define __pyx_kp_s_pydev_execfile_py __pyx_mstate_global->__pyx_kp_s_pydev_execfile_py
+#define __pyx_n_s_pydev_log __pyx_mstate_global->__pyx_n_s_pydev_log
+#define __pyx_n_s_pydev_monkey __pyx_mstate_global->__pyx_n_s_pydev_monkey
+#define __pyx_n_s_pydev_state __pyx_mstate_global->__pyx_n_s_pydev_state
+#define __pyx_n_s_pydev_step_cmd __pyx_mstate_global->__pyx_n_s_pydev_step_cmd
+#define __pyx_n_s_pydevd __pyx_mstate_global->__pyx_n_s_pydevd
+#define __pyx_n_s_pydevd_bundle __pyx_mstate_global->__pyx_n_s_pydevd_bundle
+#define __pyx_n_s_pydevd_bundle_pydevd_breakpoint __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_breakpoint
+#define __pyx_n_s_pydevd_bundle_pydevd_bytecode_u __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_bytecode_u
+#define __pyx_n_s_pydevd_bundle_pydevd_constants __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_constants
+#define __pyx_n_s_pydevd_bundle_pydevd_frame_util __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_frame_util
+#define __pyx_n_s_pydevd_bundle_pydevd_trace_disp __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_trace_disp
+#define __pyx_n_s_pydevd_bundle_pydevd_utils __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_utils
+#define __pyx_n_s_pydevd_dont_trace __pyx_mstate_global->__pyx_n_s_pydevd_dont_trace
+#define __pyx_n_s_pydevd_file_utils __pyx_mstate_global->__pyx_n_s_pydevd_file_utils
+#define __pyx_kp_s_pydevd_py __pyx_mstate_global->__pyx_kp_s_pydevd_py
+#define __pyx_n_s_pydevd_runpy __pyx_mstate_global->__pyx_n_s_pydevd_runpy
+#define __pyx_kp_s_pydevd_sys_monitoring__pydevd_s __pyx_mstate_global->__pyx_kp_s_pydevd_sys_monitoring__pydevd_s
+#define __pyx_n_s_pydevd_sys_monitoring_cython __pyx_mstate_global->__pyx_n_s_pydevd_sys_monitoring_cython
+#define __pyx_kp_s_pydevd_traceproperty_py __pyx_mstate_global->__pyx_kp_s_pydevd_traceproperty_py
+#define __pyx_kp_s_python_function __pyx_mstate_global->__pyx_kp_s_python_function
+#define __pyx_kp_s_python_line __pyx_mstate_global->__pyx_kp_s_python_line
+#define __pyx_n_s_pyx_PickleError __pyx_mstate_global->__pyx_n_s_pyx_PickleError
+#define __pyx_n_s_pyx_checksum __pyx_mstate_global->__pyx_n_s_pyx_checksum
+#define __pyx_n_s_pyx_result __pyx_mstate_global->__pyx_n_s_pyx_result
+#define __pyx_n_s_pyx_state __pyx_mstate_global->__pyx_n_s_pyx_state
+#define __pyx_n_s_pyx_type __pyx_mstate_global->__pyx_n_s_pyx_type
+#define __pyx_n_s_pyx_unpickle_FuncCodeInfo __pyx_mstate_global->__pyx_n_s_pyx_unpickle_FuncCodeInfo
+#define __pyx_n_s_pyx_unpickle_ThreadInfo __pyx_mstate_global->__pyx_n_s_pyx_unpickle_ThreadInfo
+#define __pyx_n_s_pyx_unpickle__TryExceptContain __pyx_mstate_global->__pyx_n_s_pyx_unpickle__TryExceptContain
+#define __pyx_n_s_pyx_vtable __pyx_mstate_global->__pyx_n_s_pyx_vtable
+#define __pyx_n_s_qualname __pyx_mstate_global->__pyx_n_s_qualname
+#define __pyx_n_s_re __pyx_mstate_global->__pyx_n_s_re
+#define __pyx_n_s_reduce __pyx_mstate_global->__pyx_n_s_reduce
+#define __pyx_n_s_reduce_cython __pyx_mstate_global->__pyx_n_s_reduce_cython
+#define __pyx_n_s_reduce_ex __pyx_mstate_global->__pyx_n_s_reduce_ex
+#define __pyx_n_s_ref __pyx_mstate_global->__pyx_n_s_ref
+#define __pyx_n_s_register_callback __pyx_mstate_global->__pyx_n_s_register_callback
+#define __pyx_n_s_required_events __pyx_mstate_global->__pyx_n_s_required_events
+#define __pyx_n_s_required_events_breakpoint __pyx_mstate_global->__pyx_n_s_required_events_breakpoint
+#define __pyx_n_s_required_events_stepping __pyx_mstate_global->__pyx_n_s_required_events_stepping
+#define __pyx_n_s_restart_events __pyx_mstate_global->__pyx_n_s_restart_events
+#define __pyx_n_s_return __pyx_mstate_global->__pyx_n_s_return
+#define __pyx_n_s_retval __pyx_mstate_global->__pyx_n_s_retval
+#define __pyx_n_s_run __pyx_mstate_global->__pyx_n_s_run
+#define __pyx_n_s_run_2 __pyx_mstate_global->__pyx_n_s_run_2
+#define __pyx_n_s_runpy __pyx_mstate_global->__pyx_n_s_runpy
+#define __pyx_kp_s_s_s __pyx_mstate_global->__pyx_kp_s_s_s
+#define __pyx_kp_s_s_s_2 __pyx_mstate_global->__pyx_kp_s_s_s_2
+#define __pyx_n_s_self __pyx_mstate_global->__pyx_n_s_self
+#define __pyx_n_s_set_events __pyx_mstate_global->__pyx_n_s_set_events
+#define __pyx_n_s_set_local_events __pyx_mstate_global->__pyx_n_s_set_local_events
+#define __pyx_n_s_set_name __pyx_mstate_global->__pyx_n_s_set_name
+#define __pyx_n_s_set_suspend __pyx_mstate_global->__pyx_n_s_set_suspend
+#define __pyx_n_s_set_trace_for_frame_and_parents __pyx_mstate_global->__pyx_n_s_set_trace_for_frame_and_parents
+#define __pyx_n_s_setstate __pyx_mstate_global->__pyx_n_s_setstate
+#define __pyx_n_s_setstate_cython __pyx_mstate_global->__pyx_n_s_setstate_cython
+#define __pyx_n_s_short_frame __pyx_mstate_global->__pyx_n_s_short_frame
+#define __pyx_n_s_short_tb __pyx_mstate_global->__pyx_n_s_short_tb
+#define __pyx_n_s_should_stop_on_exception __pyx_mstate_global->__pyx_n_s_should_stop_on_exception
+#define __pyx_n_s_should_trace_hook __pyx_mstate_global->__pyx_n_s_should_trace_hook
+#define __pyx_n_s_show_return_values __pyx_mstate_global->__pyx_n_s_show_return_values
+#define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec
+#define __pyx_n_s_splitext __pyx_mstate_global->__pyx_n_s_splitext
+#define __pyx_n_s_start __pyx_mstate_global->__pyx_n_s_start
+#define __pyx_n_s_start_monitoring __pyx_mstate_global->__pyx_n_s_start_monitoring
+#define __pyx_n_s_startswith __pyx_mstate_global->__pyx_n_s_startswith
+#define __pyx_n_s_state __pyx_mstate_global->__pyx_n_s_state
+#define __pyx_n_s_stop __pyx_mstate_global->__pyx_n_s_stop
+#define __pyx_n_s_stop_monitoring __pyx_mstate_global->__pyx_n_s_stop_monitoring
+#define __pyx_n_s_stop_on_unhandled_exception __pyx_mstate_global->__pyx_n_s_stop_on_unhandled_exception
+#define __pyx_kp_s_stringsource __pyx_mstate_global->__pyx_kp_s_stringsource
+#define __pyx_n_s_super __pyx_mstate_global->__pyx_n_s_super
+#define __pyx_n_s_suspend __pyx_mstate_global->__pyx_n_s_suspend
+#define __pyx_n_s_suspend_other_threads __pyx_mstate_global->__pyx_n_s_suspend_other_threads
+#define __pyx_n_s_suspend_policy __pyx_mstate_global->__pyx_n_s_suspend_policy
+#define __pyx_n_s_suspend_requested __pyx_mstate_global->__pyx_n_s_suspend_requested
+#define __pyx_n_s_sys __pyx_mstate_global->__pyx_n_s_sys
+#define __pyx_n_s_sys_monitor __pyx_mstate_global->__pyx_n_s_sys_monitor
+#define __pyx_n_s_t __pyx_mstate_global->__pyx_n_s_t
+#define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test
+#define __pyx_n_s_thread __pyx_mstate_global->__pyx_n_s_thread
+#define __pyx_n_s_thread_active __pyx_mstate_global->__pyx_n_s_thread_active
+#define __pyx_n_s_thread_ident __pyx_mstate_global->__pyx_n_s_thread_ident
+#define __pyx_n_s_thread_info __pyx_mstate_global->__pyx_n_s_thread_info
+#define __pyx_n_s_thread_local_info __pyx_mstate_global->__pyx_n_s_thread_local_info
+#define __pyx_n_s_threading __pyx_mstate_global->__pyx_n_s_threading
+#define __pyx_n_s_tident __pyx_mstate_global->__pyx_n_s_tident
+#define __pyx_n_s_to_offset __pyx_mstate_global->__pyx_n_s_to_offset
+#define __pyx_n_s_trace __pyx_mstate_global->__pyx_n_s_trace
+#define __pyx_n_s_traceback __pyx_mstate_global->__pyx_n_s_traceback
+#define __pyx_n_s_track_dummy_thread_ref __pyx_mstate_global->__pyx_n_s_track_dummy_thread_ref
+#define __pyx_n_s_try_except_infos __pyx_mstate_global->__pyx_n_s_try_except_infos
+#define __pyx_n_s_types __pyx_mstate_global->__pyx_n_s_types
+#define __pyx_n_s_typing __pyx_mstate_global->__pyx_n_s_typing
+#define __pyx_n_s_update __pyx_mstate_global->__pyx_n_s_update
+#define __pyx_n_s_update_monitor_events __pyx_mstate_global->__pyx_n_s_update_monitor_events
+#define __pyx_n_s_use_setstate __pyx_mstate_global->__pyx_n_s_use_setstate
+#define __pyx_n_s_use_tool_id __pyx_mstate_global->__pyx_n_s_use_tool_id
+#define __pyx_n_s_user_uncaught_exc_info __pyx_mstate_global->__pyx_n_s_user_uncaught_exc_info
+#define __pyx_n_s_values __pyx_mstate_global->__pyx_n_s_values
+#define __pyx_n_s_wrap __pyx_mstate_global->__pyx_n_s_wrap
+#define __pyx_n_s_writer __pyx_mstate_global->__pyx_n_s_writer
+#define __pyx_int_0 __pyx_mstate_global->__pyx_int_0
+#define __pyx_int_1 __pyx_mstate_global->__pyx_int_1
+#define __pyx_int_2 __pyx_mstate_global->__pyx_int_2
+#define __pyx_int_107 __pyx_mstate_global->__pyx_int_107
+#define __pyx_int_108 __pyx_mstate_global->__pyx_int_108
+#define __pyx_int_109 __pyx_mstate_global->__pyx_int_109
+#define __pyx_int_111 __pyx_mstate_global->__pyx_int_111
+#define __pyx_int_128 __pyx_mstate_global->__pyx_int_128
+#define __pyx_int_144 __pyx_mstate_global->__pyx_int_144
+#define __pyx_int_159 __pyx_mstate_global->__pyx_int_159
+#define __pyx_int_160 __pyx_mstate_global->__pyx_int_160
+#define __pyx_int_206 __pyx_mstate_global->__pyx_int_206
+#define __pyx_int_208 __pyx_mstate_global->__pyx_int_208
+#define __pyx_int_66323410 __pyx_mstate_global->__pyx_int_66323410
+#define __pyx_int_92026781 __pyx_mstate_global->__pyx_int_92026781
+#define __pyx_int_99967855 __pyx_mstate_global->__pyx_int_99967855
+#define __pyx_int_189049472 __pyx_mstate_global->__pyx_int_189049472
+#define __pyx_int_210464433 __pyx_mstate_global->__pyx_int_210464433
+#define __pyx_int_224549882 __pyx_mstate_global->__pyx_int_224549882
+#define __pyx_int_230645316 __pyx_mstate_global->__pyx_int_230645316
+#define __pyx_int_232881363 __pyx_mstate_global->__pyx_int_232881363
+#define __pyx_int_266084120 __pyx_mstate_global->__pyx_int_266084120
+#define __pyx_int_neg_1 __pyx_mstate_global->__pyx_int_neg_1
+#define __pyx_k__15 __pyx_mstate_global->__pyx_k__15
+#define __pyx_tuple_ __pyx_mstate_global->__pyx_tuple_
+#define __pyx_tuple__3 __pyx_mstate_global->__pyx_tuple__3
+#define __pyx_tuple__5 __pyx_mstate_global->__pyx_tuple__5
+#define __pyx_tuple__7 __pyx_mstate_global->__pyx_tuple__7
+#define __pyx_tuple__9 __pyx_mstate_global->__pyx_tuple__9
+#define __pyx_slice__16 __pyx_mstate_global->__pyx_slice__16
+#define __pyx_tuple__11 __pyx_mstate_global->__pyx_tuple__11
+#define __pyx_tuple__12 __pyx_mstate_global->__pyx_tuple__12
+#define __pyx_tuple__13 __pyx_mstate_global->__pyx_tuple__13
+#define __pyx_tuple__18 __pyx_mstate_global->__pyx_tuple__18
+#define __pyx_tuple__20 __pyx_mstate_global->__pyx_tuple__20
+#define __pyx_tuple__21 __pyx_mstate_global->__pyx_tuple__21
+#define __pyx_tuple__23 __pyx_mstate_global->__pyx_tuple__23
+#define __pyx_tuple__25 __pyx_mstate_global->__pyx_tuple__25
+#define __pyx_tuple__26 __pyx_mstate_global->__pyx_tuple__26
+#define __pyx_tuple__27 __pyx_mstate_global->__pyx_tuple__27
+#define __pyx_tuple__28 __pyx_mstate_global->__pyx_tuple__28
+#define __pyx_tuple__30 __pyx_mstate_global->__pyx_tuple__30
+#define __pyx_tuple__32 __pyx_mstate_global->__pyx_tuple__32
+#define __pyx_tuple__34 __pyx_mstate_global->__pyx_tuple__34
+#define __pyx_tuple__36 __pyx_mstate_global->__pyx_tuple__36
+#define __pyx_tuple__40 __pyx_mstate_global->__pyx_tuple__40
+#define __pyx_tuple__41 __pyx_mstate_global->__pyx_tuple__41
+#define __pyx_tuple__43 __pyx_mstate_global->__pyx_tuple__43
+#define __pyx_tuple__45 __pyx_mstate_global->__pyx_tuple__45
+#define __pyx_tuple__50 __pyx_mstate_global->__pyx_tuple__50
+#define __pyx_tuple__52 __pyx_mstate_global->__pyx_tuple__52
+#define __pyx_tuple__54 __pyx_mstate_global->__pyx_tuple__54
+#define __pyx_tuple__55 __pyx_mstate_global->__pyx_tuple__55
+#define __pyx_tuple__57 __pyx_mstate_global->__pyx_tuple__57
+#define __pyx_tuple__59 __pyx_mstate_global->__pyx_tuple__59
+#define __pyx_tuple__61 __pyx_mstate_global->__pyx_tuple__61
+#define __pyx_codeobj__2 __pyx_mstate_global->__pyx_codeobj__2
+#define __pyx_codeobj__4 __pyx_mstate_global->__pyx_codeobj__4
+#define __pyx_codeobj__6 __pyx_mstate_global->__pyx_codeobj__6
+#define __pyx_codeobj__8 __pyx_mstate_global->__pyx_codeobj__8
+#define __pyx_codeobj__10 __pyx_mstate_global->__pyx_codeobj__10
+#define __pyx_codeobj__24 __pyx_mstate_global->__pyx_codeobj__24
+#define __pyx_codeobj__29 __pyx_mstate_global->__pyx_codeobj__29
+#define __pyx_codeobj__31 __pyx_mstate_global->__pyx_codeobj__31
+#define __pyx_codeobj__33 __pyx_mstate_global->__pyx_codeobj__33
+#define __pyx_codeobj__35 __pyx_mstate_global->__pyx_codeobj__35
+#define __pyx_codeobj__37 __pyx_mstate_global->__pyx_codeobj__37
+#define __pyx_codeobj__38 __pyx_mstate_global->__pyx_codeobj__38
+#define __pyx_codeobj__39 __pyx_mstate_global->__pyx_codeobj__39
+#define __pyx_codeobj__42 __pyx_mstate_global->__pyx_codeobj__42
+#define __pyx_codeobj__44 __pyx_mstate_global->__pyx_codeobj__44
+#define __pyx_codeobj__46 __pyx_mstate_global->__pyx_codeobj__46
+#define __pyx_codeobj__47 __pyx_mstate_global->__pyx_codeobj__47
+#define __pyx_codeobj__48 __pyx_mstate_global->__pyx_codeobj__48
+#define __pyx_codeobj__49 __pyx_mstate_global->__pyx_codeobj__49
+#define __pyx_codeobj__51 __pyx_mstate_global->__pyx_codeobj__51
+#define __pyx_codeobj__53 __pyx_mstate_global->__pyx_codeobj__53
+#define __pyx_codeobj__56 __pyx_mstate_global->__pyx_codeobj__56
+#define __pyx_codeobj__58 __pyx_mstate_global->__pyx_codeobj__58
+#define __pyx_codeobj__60 __pyx_mstate_global->__pyx_codeobj__60
+#define __pyx_codeobj__62 __pyx_mstate_global->__pyx_codeobj__62
+#define __pyx_codeobj__63 __pyx_mstate_global->__pyx_codeobj__63
+#define __pyx_codeobj__64 __pyx_mstate_global->__pyx_codeobj__64
+/* #### Code section: module_code ### */
+
+/* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc")
+ * cdef object __Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc(object (*f)(object, object, object) ):
+ * def wrap(object code, object instruction, object exc): # <<<<<<<<<<<<<<
+ * """wrap(code, instruction, exc)"""
+ * return f(code, instruction, exc)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_11cfunc_dot_to_py_102__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc_1wrap(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_11cfunc_dot_to_py_102__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc_wrap, "wrap(code, instruction, exc)");
+static PyMethodDef __pyx_mdef_11cfunc_dot_to_py_102__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc_1wrap = {"wrap", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_11cfunc_dot_to_py_102__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc_1wrap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_11cfunc_dot_to_py_102__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc_wrap};
+static PyObject *__pyx_pw_11cfunc_dot_to_py_102__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc_1wrap(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_code = 0;
+ PyObject *__pyx_v_instruction = 0;
+ PyObject *__pyx_v_exc = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[3] = {0,0,0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("wrap (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code,&__pyx_n_s_instruction,&__pyx_n_s_exc,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ CYTHON_FALLTHROUGH;
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ CYTHON_FALLTHROUGH;
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 67, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ CYTHON_FALLTHROUGH;
+ case 1:
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_instruction)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 67, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("wrap", 1, 3, 3, 1); __PYX_ERR(1, 67, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 2:
+ if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_exc)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 67, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("wrap", 1, 3, 3, 2); __PYX_ERR(1, 67, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "wrap") < 0)) __PYX_ERR(1, 67, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 3)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ }
+ __pyx_v_code = values[0];
+ __pyx_v_instruction = values[1];
+ __pyx_v_exc = values[2];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("wrap", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 67, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc.wrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_11cfunc_dot_to_py_102__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc_wrap(__pyx_self, __pyx_v_code, __pyx_v_instruction, __pyx_v_exc);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_11cfunc_dot_to_py_102__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc_wrap(PyObject *__pyx_self, PyObject *__pyx_v_code, PyObject *__pyx_v_instruction, PyObject *__pyx_v_exc) {
+ struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc *__pyx_cur_scope;
+ struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc *__pyx_outer_scope;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("wrap", 1);
+ __pyx_outer_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc *) __Pyx_CyFunction_GetClosure(__pyx_self);
+ __pyx_cur_scope = __pyx_outer_scope;
+
+ /* "cfunc.to_py":69
+ * def wrap(object code, object instruction, object exc):
+ * """wrap(code, instruction, exc)"""
+ * return f(code, instruction, exc) # <<<<<<<<<<<<<<
+ * return wrap
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_cur_scope->__pyx_v_f(__pyx_v_code, __pyx_v_instruction, __pyx_v_exc); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 69, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ /* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc")
+ * cdef object __Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc(object (*f)(object, object, object) ):
+ * def wrap(object code, object instruction, object exc): # <<<<<<<<<<<<<<
+ * """wrap(code, instruction, exc)"""
+ * return f(code, instruction, exc)
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc.wrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "cfunc.to_py":66
+ *
+ * @cname("__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc")
+ * cdef object __Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc(object (*f)(object, object, object) ): # <<<<<<<<<<<<<<
+ * def wrap(object code, object instruction, object exc):
+ * """wrap(code, instruction, exc)"""
+ */
+
+static PyObject *__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc(PyObject *(*__pyx_v_f)(PyObject *, PyObject *, PyObject *)) {
+ struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc *__pyx_cur_scope;
+ PyObject *__pyx_v_wrap = 0;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc", 0);
+ __pyx_cur_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc *)__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc(__pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc, __pyx_empty_tuple, NULL);
+ if (unlikely(!__pyx_cur_scope)) {
+ __pyx_cur_scope = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc *)Py_None);
+ __Pyx_INCREF(Py_None);
+ __PYX_ERR(1, 66, __pyx_L1_error)
+ } else {
+ __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+ }
+ __pyx_cur_scope->__pyx_v_f = __pyx_v_f;
+
+ /* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc")
+ * cdef object __Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc(object (*f)(object, object, object) ):
+ * def wrap(object code, object instruction, object exc): # <<<<<<<<<<<<<<
+ * """wrap(code, instruction, exc)"""
+ * return f(code, instruction, exc)
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cfunc_dot_to_py_102__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc_1wrap, 0, __pyx_n_s_Pyx_CFunc_4904d5__29_pydevd_sy, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cfunc_to_py, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 67, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_wrap = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "cfunc.to_py":70
+ * """wrap(code, instruction, exc)"""
+ * return f(code, instruction, exc)
+ * return wrap # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_wrap);
+ __pyx_r = __pyx_v_wrap;
+ goto __pyx_L0;
+
+ /* "cfunc.to_py":66
+ *
+ * @cname("__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc")
+ * cdef object __Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc(object (*f)(object, object, object) ): # <<<<<<<<<<<<<<
+ * def wrap(object code, object instruction, object exc):
+ * """wrap(code, instruction, exc)"""
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_wrap);
+ __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset")
+ * cdef object __Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset(object (*f)(object, object) ):
+ * def wrap(object code, object instruction_offset): # <<<<<<<<<<<<<<
+ * """wrap(code, instruction_offset)"""
+ * return f(code, instruction_offset)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_11cfunc_dot_to_py_104__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset_1wrap(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_11cfunc_dot_to_py_104__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset_wrap, "wrap(code, instruction_offset)");
+static PyMethodDef __pyx_mdef_11cfunc_dot_to_py_104__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset_1wrap = {"wrap", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_11cfunc_dot_to_py_104__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset_1wrap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_11cfunc_dot_to_py_104__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset_wrap};
+static PyObject *__pyx_pw_11cfunc_dot_to_py_104__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset_1wrap(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_code = 0;
+ PyObject *__pyx_v_instruction_offset = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[2] = {0,0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("wrap (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code,&__pyx_n_s_instruction_offset,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ CYTHON_FALLTHROUGH;
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 67, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ CYTHON_FALLTHROUGH;
+ case 1:
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_instruction_offset)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 67, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("wrap", 1, 2, 2, 1); __PYX_ERR(1, 67, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "wrap") < 0)) __PYX_ERR(1, 67, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 2)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ }
+ __pyx_v_code = values[0];
+ __pyx_v_instruction_offset = values[1];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("wrap", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 67, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset.wrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_11cfunc_dot_to_py_104__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset_wrap(__pyx_self, __pyx_v_code, __pyx_v_instruction_offset);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_11cfunc_dot_to_py_104__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset_wrap(PyObject *__pyx_self, PyObject *__pyx_v_code, PyObject *__pyx_v_instruction_offset) {
+ struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset *__pyx_cur_scope;
+ struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset *__pyx_outer_scope;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("wrap", 1);
+ __pyx_outer_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset *) __Pyx_CyFunction_GetClosure(__pyx_self);
+ __pyx_cur_scope = __pyx_outer_scope;
+
+ /* "cfunc.to_py":69
+ * def wrap(object code, object instruction_offset):
+ * """wrap(code, instruction_offset)"""
+ * return f(code, instruction_offset) # <<<<<<<<<<<<<<
+ * return wrap
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_cur_scope->__pyx_v_f(__pyx_v_code, __pyx_v_instruction_offset); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 69, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ /* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset")
+ * cdef object __Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset(object (*f)(object, object) ):
+ * def wrap(object code, object instruction_offset): # <<<<<<<<<<<<<<
+ * """wrap(code, instruction_offset)"""
+ * return f(code, instruction_offset)
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset.wrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "cfunc.to_py":66
+ *
+ * @cname("__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset")
+ * cdef object __Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset(object (*f)(object, object) ): # <<<<<<<<<<<<<<
+ * def wrap(object code, object instruction_offset):
+ * """wrap(code, instruction_offset)"""
+ */
+
+static PyObject *__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset(PyObject *(*__pyx_v_f)(PyObject *, PyObject *)) {
+ struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset *__pyx_cur_scope;
+ PyObject *__pyx_v_wrap = 0;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset", 0);
+ __pyx_cur_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset *)__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset(__pyx_ptype___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset, __pyx_empty_tuple, NULL);
+ if (unlikely(!__pyx_cur_scope)) {
+ __pyx_cur_scope = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset *)Py_None);
+ __Pyx_INCREF(Py_None);
+ __PYX_ERR(1, 66, __pyx_L1_error)
+ } else {
+ __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+ }
+ __pyx_cur_scope->__pyx_v_f = __pyx_v_f;
+
+ /* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset")
+ * cdef object __Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset(object (*f)(object, object) ):
+ * def wrap(object code, object instruction_offset): # <<<<<<<<<<<<<<
+ * """wrap(code, instruction_offset)"""
+ * return f(code, instruction_offset)
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cfunc_dot_to_py_104__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset_1wrap, 0, __pyx_n_s_Pyx_CFunc_893235__29_pydevd_sy, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cfunc_to_py, __pyx_d, ((PyObject *)__pyx_codeobj__4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 67, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_wrap = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "cfunc.to_py":70
+ * """wrap(code, instruction_offset)"""
+ * return f(code, instruction_offset)
+ * return wrap # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_wrap);
+ __pyx_r = __pyx_v_wrap;
+ goto __pyx_L0;
+
+ /* "cfunc.to_py":66
+ *
+ * @cname("__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset")
+ * cdef object __Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset(object (*f)(object, object) ): # <<<<<<<<<<<<<<
+ * def wrap(object code, object instruction_offset):
+ * """wrap(code, instruction_offset)"""
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_wrap);
+ __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line")
+ * cdef object __Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line(object (*f)(object, int) ):
+ * def wrap(object code, int line): # <<<<<<<<<<<<<<
+ * """wrap(code, line: 'int')"""
+ * return f(code, line)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_11cfunc_dot_to_py_89__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line_1wrap(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_11cfunc_dot_to_py_89__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line_wrap, "wrap(code, line: 'int')");
+static PyMethodDef __pyx_mdef_11cfunc_dot_to_py_89__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line_1wrap = {"wrap", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_11cfunc_dot_to_py_89__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line_1wrap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_11cfunc_dot_to_py_89__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line_wrap};
+static PyObject *__pyx_pw_11cfunc_dot_to_py_89__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line_1wrap(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_code = 0;
+ int __pyx_v_line;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[2] = {0,0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("wrap (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code,&__pyx_n_s_line,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ CYTHON_FALLTHROUGH;
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 67, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ CYTHON_FALLTHROUGH;
+ case 1:
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_line)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 67, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("wrap", 1, 2, 2, 1); __PYX_ERR(1, 67, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "wrap") < 0)) __PYX_ERR(1, 67, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 2)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ }
+ __pyx_v_code = values[0];
+ __pyx_v_line = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_line == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 67, __pyx_L3_error)
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("wrap", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 67, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line.wrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_11cfunc_dot_to_py_89__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line_wrap(__pyx_self, __pyx_v_code, __pyx_v_line);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_11cfunc_dot_to_py_89__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line_wrap(PyObject *__pyx_self, PyObject *__pyx_v_code, int __pyx_v_line) {
+ struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line *__pyx_cur_scope;
+ struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line *__pyx_outer_scope;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("wrap", 1);
+ __pyx_outer_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line *) __Pyx_CyFunction_GetClosure(__pyx_self);
+ __pyx_cur_scope = __pyx_outer_scope;
+
+ /* "cfunc.to_py":69
+ * def wrap(object code, int line):
+ * """wrap(code, line: 'int')"""
+ * return f(code, line) # <<<<<<<<<<<<<<
+ * return wrap
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_cur_scope->__pyx_v_f(__pyx_v_code, __pyx_v_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 69, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ /* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line")
+ * cdef object __Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line(object (*f)(object, int) ):
+ * def wrap(object code, int line): # <<<<<<<<<<<<<<
+ * """wrap(code, line: 'int')"""
+ * return f(code, line)
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line.wrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "cfunc.to_py":66
+ *
+ * @cname("__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line")
+ * cdef object __Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line(object (*f)(object, int) ): # <<<<<<<<<<<<<<
+ * def wrap(object code, int line):
+ * """wrap(code, line: 'int')"""
+ */
+
+static PyObject *__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line(PyObject *(*__pyx_v_f)(PyObject *, int)) {
+ struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line *__pyx_cur_scope;
+ PyObject *__pyx_v_wrap = 0;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line", 0);
+ __pyx_cur_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line *)__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line(__pyx_ptype___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line, __pyx_empty_tuple, NULL);
+ if (unlikely(!__pyx_cur_scope)) {
+ __pyx_cur_scope = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line *)Py_None);
+ __Pyx_INCREF(Py_None);
+ __PYX_ERR(1, 66, __pyx_L1_error)
+ } else {
+ __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+ }
+ __pyx_cur_scope->__pyx_v_f = __pyx_v_f;
+
+ /* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line")
+ * cdef object __Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line(object (*f)(object, int) ):
+ * def wrap(object code, int line): # <<<<<<<<<<<<<<
+ * """wrap(code, line: 'int')"""
+ * return f(code, line)
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cfunc_dot_to_py_89__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line_1wrap, 0, __pyx_n_s_Pyx_CFunc_b0409f__29_pydevd_sy, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cfunc_to_py, __pyx_d, ((PyObject *)__pyx_codeobj__6)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 67, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_wrap = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "cfunc.to_py":70
+ * """wrap(code, line: 'int')"""
+ * return f(code, line)
+ * return wrap # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_wrap);
+ __pyx_r = __pyx_v_wrap;
+ goto __pyx_L0;
+
+ /* "cfunc.to_py":66
+ *
+ * @cname("__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line")
+ * cdef object __Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line(object (*f)(object, int) ): # <<<<<<<<<<<<<<
+ * def wrap(object code, int line):
+ * """wrap(code, line: 'int')"""
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_wrap);
+ __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset")
+ * cdef object __Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset(object (*f)(object, int, int) ):
+ * def wrap(object code, int from_offset, int to_offset): # <<<<<<<<<<<<<<
+ * """wrap(code, from_offset: 'int', to_offset: 'int')"""
+ * return f(code, from_offset, to_offset)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_11cfunc_dot_to_py_108__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset_1wrap(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_11cfunc_dot_to_py_108__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset_wrap, "wrap(code, from_offset: 'int', to_offset: 'int')");
+static PyMethodDef __pyx_mdef_11cfunc_dot_to_py_108__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset_1wrap = {"wrap", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_11cfunc_dot_to_py_108__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset_1wrap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_11cfunc_dot_to_py_108__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset_wrap};
+static PyObject *__pyx_pw_11cfunc_dot_to_py_108__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset_1wrap(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_code = 0;
+ int __pyx_v_from_offset;
+ int __pyx_v_to_offset;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[3] = {0,0,0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("wrap (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code,&__pyx_n_s_from_offset,&__pyx_n_s_to_offset,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ CYTHON_FALLTHROUGH;
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ CYTHON_FALLTHROUGH;
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 67, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ CYTHON_FALLTHROUGH;
+ case 1:
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_from_offset)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 67, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("wrap", 1, 3, 3, 1); __PYX_ERR(1, 67, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 2:
+ if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_to_offset)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 67, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("wrap", 1, 3, 3, 2); __PYX_ERR(1, 67, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "wrap") < 0)) __PYX_ERR(1, 67, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 3)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ }
+ __pyx_v_code = values[0];
+ __pyx_v_from_offset = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_from_offset == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 67, __pyx_L3_error)
+ __pyx_v_to_offset = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_to_offset == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 67, __pyx_L3_error)
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("wrap", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 67, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset.wrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_11cfunc_dot_to_py_108__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset_wrap(__pyx_self, __pyx_v_code, __pyx_v_from_offset, __pyx_v_to_offset);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_11cfunc_dot_to_py_108__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset_wrap(PyObject *__pyx_self, PyObject *__pyx_v_code, int __pyx_v_from_offset, int __pyx_v_to_offset) {
+ struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset *__pyx_cur_scope;
+ struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset *__pyx_outer_scope;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("wrap", 1);
+ __pyx_outer_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset *) __Pyx_CyFunction_GetClosure(__pyx_self);
+ __pyx_cur_scope = __pyx_outer_scope;
+
+ /* "cfunc.to_py":69
+ * def wrap(object code, int from_offset, int to_offset):
+ * """wrap(code, from_offset: 'int', to_offset: 'int')"""
+ * return f(code, from_offset, to_offset) # <<<<<<<<<<<<<<
+ * return wrap
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_cur_scope->__pyx_v_f(__pyx_v_code, __pyx_v_from_offset, __pyx_v_to_offset); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 69, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ /* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset")
+ * cdef object __Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset(object (*f)(object, int, int) ):
+ * def wrap(object code, int from_offset, int to_offset): # <<<<<<<<<<<<<<
+ * """wrap(code, from_offset: 'int', to_offset: 'int')"""
+ * return f(code, from_offset, to_offset)
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset.wrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "cfunc.to_py":66
+ *
+ * @cname("__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset")
+ * cdef object __Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset(object (*f)(object, int, int) ): # <<<<<<<<<<<<<<
+ * def wrap(object code, int from_offset, int to_offset):
+ * """wrap(code, from_offset: 'int', to_offset: 'int')"""
+ */
+
+static PyObject *__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset(PyObject *(*__pyx_v_f)(PyObject *, int, int)) {
+ struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset *__pyx_cur_scope;
+ PyObject *__pyx_v_wrap = 0;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset", 0);
+ __pyx_cur_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset *)__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset(__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset, __pyx_empty_tuple, NULL);
+ if (unlikely(!__pyx_cur_scope)) {
+ __pyx_cur_scope = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset *)Py_None);
+ __Pyx_INCREF(Py_None);
+ __PYX_ERR(1, 66, __pyx_L1_error)
+ } else {
+ __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+ }
+ __pyx_cur_scope->__pyx_v_f = __pyx_v_f;
+
+ /* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset")
+ * cdef object __Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset(object (*f)(object, int, int) ):
+ * def wrap(object code, int from_offset, int to_offset): # <<<<<<<<<<<<<<
+ * """wrap(code, from_offset: 'int', to_offset: 'int')"""
+ * return f(code, from_offset, to_offset)
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cfunc_dot_to_py_108__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset_1wrap, 0, __pyx_n_s_Pyx_CFunc_7f6725__29_pydevd_sy, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cfunc_to_py, __pyx_d, ((PyObject *)__pyx_codeobj__8)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 67, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_wrap = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "cfunc.to_py":70
+ * """wrap(code, from_offset: 'int', to_offset: 'int')"""
+ * return f(code, from_offset, to_offset)
+ * return wrap # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_wrap);
+ __pyx_r = __pyx_v_wrap;
+ goto __pyx_L0;
+
+ /* "cfunc.to_py":66
+ *
+ * @cname("__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset")
+ * cdef object __Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset(object (*f)(object, int, int) ): # <<<<<<<<<<<<<<
+ * def wrap(object code, int from_offset, int to_offset):
+ * """wrap(code, from_offset: 'int', to_offset: 'int')"""
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_wrap);
+ __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval")
+ * cdef object __Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval(object (*f)(object, object, object) ):
+ * def wrap(object code, object instruction, object retval): # <<<<<<<<<<<<<<
+ * """wrap(code, instruction, retval)"""
+ * return f(code, instruction, retval)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_11cfunc_dot_to_py_105__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval_1wrap(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_11cfunc_dot_to_py_105__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval_wrap, "wrap(code, instruction, retval)");
+static PyMethodDef __pyx_mdef_11cfunc_dot_to_py_105__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval_1wrap = {"wrap", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_11cfunc_dot_to_py_105__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval_1wrap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_11cfunc_dot_to_py_105__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval_wrap};
+static PyObject *__pyx_pw_11cfunc_dot_to_py_105__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval_1wrap(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_code = 0;
+ PyObject *__pyx_v_instruction = 0;
+ PyObject *__pyx_v_retval = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[3] = {0,0,0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("wrap (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code,&__pyx_n_s_instruction,&__pyx_n_s_retval,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ CYTHON_FALLTHROUGH;
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ CYTHON_FALLTHROUGH;
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 67, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ CYTHON_FALLTHROUGH;
+ case 1:
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_instruction)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 67, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("wrap", 1, 3, 3, 1); __PYX_ERR(1, 67, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 2:
+ if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_retval)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 67, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("wrap", 1, 3, 3, 2); __PYX_ERR(1, 67, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "wrap") < 0)) __PYX_ERR(1, 67, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 3)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ }
+ __pyx_v_code = values[0];
+ __pyx_v_instruction = values[1];
+ __pyx_v_retval = values[2];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("wrap", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 67, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval.wrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_11cfunc_dot_to_py_105__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval_wrap(__pyx_self, __pyx_v_code, __pyx_v_instruction, __pyx_v_retval);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_11cfunc_dot_to_py_105__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval_wrap(PyObject *__pyx_self, PyObject *__pyx_v_code, PyObject *__pyx_v_instruction, PyObject *__pyx_v_retval) {
+ struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval *__pyx_cur_scope;
+ struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval *__pyx_outer_scope;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("wrap", 1);
+ __pyx_outer_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval *) __Pyx_CyFunction_GetClosure(__pyx_self);
+ __pyx_cur_scope = __pyx_outer_scope;
+
+ /* "cfunc.to_py":69
+ * def wrap(object code, object instruction, object retval):
+ * """wrap(code, instruction, retval)"""
+ * return f(code, instruction, retval) # <<<<<<<<<<<<<<
+ * return wrap
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_cur_scope->__pyx_v_f(__pyx_v_code, __pyx_v_instruction, __pyx_v_retval); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 69, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ /* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval")
+ * cdef object __Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval(object (*f)(object, object, object) ):
+ * def wrap(object code, object instruction, object retval): # <<<<<<<<<<<<<<
+ * """wrap(code, instruction, retval)"""
+ * return f(code, instruction, retval)
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval.wrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "cfunc.to_py":66
+ *
+ * @cname("__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval")
+ * cdef object __Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval(object (*f)(object, object, object) ): # <<<<<<<<<<<<<<
+ * def wrap(object code, object instruction, object retval):
+ * """wrap(code, instruction, retval)"""
+ */
+
+static PyObject *__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval(PyObject *(*__pyx_v_f)(PyObject *, PyObject *, PyObject *)) {
+ struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval *__pyx_cur_scope;
+ PyObject *__pyx_v_wrap = 0;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval", 0);
+ __pyx_cur_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval *)__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval(__pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval, __pyx_empty_tuple, NULL);
+ if (unlikely(!__pyx_cur_scope)) {
+ __pyx_cur_scope = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval *)Py_None);
+ __Pyx_INCREF(Py_None);
+ __PYX_ERR(1, 66, __pyx_L1_error)
+ } else {
+ __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+ }
+ __pyx_cur_scope->__pyx_v_f = __pyx_v_f;
+
+ /* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval")
+ * cdef object __Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval(object (*f)(object, object, object) ):
+ * def wrap(object code, object instruction, object retval): # <<<<<<<<<<<<<<
+ * """wrap(code, instruction, retval)"""
+ * return f(code, instruction, retval)
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cfunc_dot_to_py_105__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval_1wrap, 0, __pyx_n_s_Pyx_CFunc_4904d5__29_pydevd_sy_2, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cfunc_to_py, __pyx_d, ((PyObject *)__pyx_codeobj__10)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 67, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_wrap = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "cfunc.to_py":70
+ * """wrap(code, instruction, retval)"""
+ * return f(code, instruction, retval)
+ * return wrap # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_wrap);
+ __pyx_r = __pyx_v_wrap;
+ goto __pyx_L0;
+
+ /* "cfunc.to_py":66
+ *
+ * @cname("__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval")
+ * cdef object __Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval(object (*f)(object, object, object) ): # <<<<<<<<<<<<<<
+ * def wrap(object code, object instruction, object retval):
+ * """wrap(code, instruction, retval)"""
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_wrap);
+ __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":57
+ * except ImportError:
+ *
+ * def get_smart_step_into_variant_from_frame_offset(*args, **kwargs): # <<<<<<<<<<<<<<
+ * return None
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_1get_smart_step_into_variant_from_frame_offset(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_1get_smart_step_into_variant_from_frame_offset = {"get_smart_step_into_variant_from_frame_offset", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_1get_smart_step_into_variant_from_frame_offset, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_1get_smart_step_into_variant_from_frame_offset(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ CYTHON_UNUSED PyObject *__pyx_v_args = 0;
+ CYTHON_UNUSED PyObject *__pyx_v_kwargs = 0;
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("get_smart_step_into_variant_from_frame_offset (wrapper)", 0);
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "get_smart_step_into_variant_from_frame_offset", 1))) return NULL;
+ __Pyx_INCREF(__pyx_args);
+ __pyx_v_args = __pyx_args;
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_get_smart_step_into_variant_from_frame_offset(__pyx_self, __pyx_v_args, __pyx_v_kwargs);
+
+ /* function exit code */
+ __Pyx_DECREF(__pyx_v_args);
+ __Pyx_XDECREF(__pyx_v_kwargs);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_get_smart_step_into_variant_from_frame_offset(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwargs) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("get_smart_step_into_variant_from_frame_offset", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":58
+ *
+ * def get_smart_step_into_variant_from_frame_offset(*args, **kwargs):
+ * return None # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":57
+ * except ImportError:
+ *
+ * def get_smart_step_into_variant_from_frame_offset(*args, **kwargs): # <<<<<<<<<<<<<<
+ * return None
+ *
+ */
+
+ /* function exit code */
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":96
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _notify_skipped_step_in_because_of_filters(py_db, frame): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _notify_skipped_step_in_because_of_filters(py_db, frame):
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__notify_skipped_step_in_because_of_filters(PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ unsigned int __pyx_t_6;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ PyObject *__pyx_t_9 = NULL;
+ int __pyx_t_10;
+ PyObject *__pyx_t_11 = NULL;
+ int __pyx_t_12;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_notify_skipped_step_in_because_of_filters", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":103
+ * global _global_notify_skipped_step_in
+ *
+ * with _global_notify_skipped_step_in_lock: # <<<<<<<<<<<<<<
+ * if _global_notify_skipped_step_in:
+ * # Check with lock in place (callers should actually have checked
+ */
+ /*with:*/ {
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_global_notify_skipped_step_in_l); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 103, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 103, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 103, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 103, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ /*try:*/ {
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
+ __Pyx_XGOTREF(__pyx_t_7);
+ __Pyx_XGOTREF(__pyx_t_8);
+ __Pyx_XGOTREF(__pyx_t_9);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":104
+ *
+ * with _global_notify_skipped_step_in_lock:
+ * if _global_notify_skipped_step_in: # <<<<<<<<<<<<<<
+ * # Check with lock in place (callers should actually have checked
+ * # before without the lock in place due to performance).
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_global_notify_skipped_step_in); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 104, __pyx_L7_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":107
+ * # Check with lock in place (callers should actually have checked
+ * # before without the lock in place due to performance).
+ * return # <<<<<<<<<<<<<<
+ * _global_notify_skipped_step_in = True
+ * py_db.notify_skipped_step_in_because_of_filters(frame)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L11_try_return;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":104
+ *
+ * with _global_notify_skipped_step_in_lock:
+ * if _global_notify_skipped_step_in: # <<<<<<<<<<<<<<
+ * # Check with lock in place (callers should actually have checked
+ * # before without the lock in place due to performance).
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":108
+ * # before without the lock in place due to performance).
+ * return
+ * _global_notify_skipped_step_in = True # <<<<<<<<<<<<<<
+ * py_db.notify_skipped_step_in_because_of_filters(frame)
+ *
+ */
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_global_notify_skipped_step_in, Py_True) < 0) __PYX_ERR(0, 108, __pyx_L7_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":109
+ * return
+ * _global_notify_skipped_step_in = True
+ * py_db.notify_skipped_step_in_because_of_filters(frame) # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_notify_skipped_step_in_because_o); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 109, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_frame};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":103
+ * global _global_notify_skipped_step_in
+ *
+ * with _global_notify_skipped_step_in_lock: # <<<<<<<<<<<<<<
+ * if _global_notify_skipped_step_in:
+ * # Check with lock in place (callers should actually have checked
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ goto __pyx_L12_try_end;
+ __pyx_L7_error:;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._notify_skipped_step_in_because_of_filters", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(0, 103, __pyx_L9_except_error)
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __pyx_t_5 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 103, __pyx_L9_except_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 103, __pyx_L9_except_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ if (__pyx_t_10 < 0) __PYX_ERR(0, 103, __pyx_L9_except_error)
+ __pyx_t_12 = (!__pyx_t_10);
+ if (unlikely(__pyx_t_12)) {
+ __Pyx_GIVEREF(__pyx_t_1);
+ __Pyx_GIVEREF(__pyx_t_3);
+ __Pyx_XGIVEREF(__pyx_t_4);
+ __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_4);
+ __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0;
+ __PYX_ERR(0, 103, __pyx_L9_except_error)
+ }
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ goto __pyx_L8_exception_handled;
+ }
+ __pyx_L9_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+ goto __pyx_L1_error;
+ __pyx_L11_try_return:;
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+ goto __pyx_L4_return;
+ __pyx_L8_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+ __pyx_L12_try_end:;
+ }
+ }
+ /*finally:*/ {
+ /*normal exit:*/{
+ if (__pyx_t_2) {
+ __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__11, NULL);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 103, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ }
+ goto __pyx_L6;
+ }
+ __pyx_L4_return: {
+ __pyx_t_9 = __pyx_r;
+ __pyx_r = 0;
+ if (__pyx_t_2) {
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__11, NULL);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 103, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ }
+ __pyx_r = __pyx_t_9;
+ __pyx_t_9 = 0;
+ goto __pyx_L0;
+ }
+ __pyx_L6:;
+ }
+ goto __pyx_L17;
+ __pyx_L3_error:;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ goto __pyx_L1_error;
+ __pyx_L17:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":96
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _notify_skipped_step_in_because_of_filters(py_db, frame): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _notify_skipped_step_in_because_of_filters(py_db, frame):
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._notify_skipped_step_in_because_of_filters", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":116
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * @cython.cfunc # <<<<<<<<<<<<<<
+ * def _getframe(depth=0):
+ * return sys._getframe()
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__getframe(struct __pyx_opt_args_29_pydevd_sys_monitoring_cython__getframe *__pyx_optional_args) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ unsigned int __pyx_t_4;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_getframe", 1);
+ if (__pyx_optional_args) {
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":118
+ * @cython.cfunc
+ * def _getframe(depth=0):
+ * return sys._getframe() # <<<<<<<<<<<<<<
+ * # ELSE
+ * # _getframe = sys._getframe
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_getframe); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = NULL;
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_4 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":116
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * @cython.cfunc # <<<<<<<<<<<<<<
+ * def _getframe(depth=0):
+ * return sys._getframe()
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._getframe", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":127
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _get_bootstrap_frame(depth): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _get_bootstrap_frame(depth: int) -> Tuple[Optional[FrameType], bool]:
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__get_bootstrap_frame(PyObject *__pyx_v_depth) {
+ PyObject *__pyx_v_frame = NULL;
+ PyObject *__pyx_v_f_bootstrap = NULL;
+ int __pyx_v_is_bootstrap_frame_internal;
+ PyObject *__pyx_v_filename = NULL;
+ PyObject *__pyx_v_name = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ struct __pyx_opt_args_29_pydevd_sys_monitoring_cython__getframe __pyx_t_8;
+ int __pyx_t_9;
+ PyObject *__pyx_t_10 = NULL;
+ PyObject *__pyx_t_11 = NULL;
+ PyObject *__pyx_t_12 = NULL;
+ PyObject *__pyx_t_13 = NULL;
+ unsigned int __pyx_t_14;
+ int __pyx_t_15;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_get_bootstrap_frame", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":132
+ * # ENDIF
+ * # fmt: on
+ * try: # <<<<<<<<<<<<<<
+ * return _thread_local_info.f_bootstrap, _thread_local_info.is_bootstrap_frame_internal
+ * except:
+ */
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":133
+ * # fmt: on
+ * try:
+ * return _thread_local_info.f_bootstrap, _thread_local_info.is_bootstrap_frame_internal # <<<<<<<<<<<<<<
+ * except:
+ * frame = _getframe(depth)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 133, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_f_bootstrap); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 133, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 133, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_is_bootstrap_frame_internal); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 133, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 133, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_5);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(0, 133, __pyx_L3_error);
+ __Pyx_GIVEREF(__pyx_t_6);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6)) __PYX_ERR(0, 133, __pyx_L3_error);
+ __pyx_t_5 = 0;
+ __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
+ goto __pyx_L7_try_return;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":132
+ * # ENDIF
+ * # fmt: on
+ * try: # <<<<<<<<<<<<<<
+ * return _thread_local_info.f_bootstrap, _thread_local_info.is_bootstrap_frame_internal
+ * except:
+ */
+ }
+ __pyx_L3_error:;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":134
+ * try:
+ * return _thread_local_info.f_bootstrap, _thread_local_info.is_bootstrap_frame_internal
+ * except: # <<<<<<<<<<<<<<
+ * frame = _getframe(depth)
+ * f_bootstrap = frame
+ */
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._get_bootstrap_frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(0, 134, __pyx_L5_except_error)
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_6);
+ __Pyx_XGOTREF(__pyx_t_5);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":135
+ * return _thread_local_info.f_bootstrap, _thread_local_info.is_bootstrap_frame_internal
+ * except:
+ * frame = _getframe(depth) # <<<<<<<<<<<<<<
+ * f_bootstrap = frame
+ * # print('called at', f_bootstrap.f_code.co_name, f_bootstrap.f_code.co_filename, f_bootstrap.f_code.co_firstlineno)
+ */
+ __pyx_t_8.__pyx_n = 1;
+ __pyx_t_8.depth = __pyx_v_depth;
+ __pyx_t_7 = __pyx_f_29_pydevd_sys_monitoring_cython__getframe(&__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 135, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_v_frame = __pyx_t_7;
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":136
+ * except:
+ * frame = _getframe(depth)
+ * f_bootstrap = frame # <<<<<<<<<<<<<<
+ * # print('called at', f_bootstrap.f_code.co_name, f_bootstrap.f_code.co_filename, f_bootstrap.f_code.co_firstlineno)
+ * is_bootstrap_frame_internal = False
+ */
+ __Pyx_INCREF(__pyx_v_frame);
+ __pyx_v_f_bootstrap = __pyx_v_frame;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":138
+ * f_bootstrap = frame
+ * # print('called at', f_bootstrap.f_code.co_name, f_bootstrap.f_code.co_filename, f_bootstrap.f_code.co_firstlineno)
+ * is_bootstrap_frame_internal = False # <<<<<<<<<<<<<<
+ * while f_bootstrap is not None:
+ * filename = f_bootstrap.f_code.co_filename
+ */
+ __pyx_v_is_bootstrap_frame_internal = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":139
+ * # print('called at', f_bootstrap.f_code.co_name, f_bootstrap.f_code.co_filename, f_bootstrap.f_code.co_firstlineno)
+ * is_bootstrap_frame_internal = False
+ * while f_bootstrap is not None: # <<<<<<<<<<<<<<
+ * filename = f_bootstrap.f_code.co_filename
+ * name = splitext(basename(filename))[0]
+ */
+ while (1) {
+ __pyx_t_9 = (__pyx_v_f_bootstrap != Py_None);
+ if (!__pyx_t_9) break;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":140
+ * is_bootstrap_frame_internal = False
+ * while f_bootstrap is not None:
+ * filename = f_bootstrap.f_code.co_filename # <<<<<<<<<<<<<<
+ * name = splitext(basename(filename))[0]
+ *
+ */
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_bootstrap, __pyx_n_s_f_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 140, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 140, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_filename, __pyx_t_10);
+ __pyx_t_10 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":141
+ * while f_bootstrap is not None:
+ * filename = f_bootstrap.f_code.co_filename
+ * name = splitext(basename(filename))[0] # <<<<<<<<<<<<<<
+ *
+ * if name == "threading":
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_splitext); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 141, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_basename); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 141, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __pyx_t_13 = NULL;
+ __pyx_t_14 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_12))) {
+ __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
+ if (likely(__pyx_t_13)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
+ __Pyx_INCREF(__pyx_t_13);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_12, function);
+ __pyx_t_14 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_v_filename};
+ __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_14, 1+__pyx_t_14);
+ __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+ if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 141, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ }
+ __pyx_t_12 = NULL;
+ __pyx_t_14 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_12)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_12);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_14 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_t_11};
+ __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_14, 1+__pyx_t_14);
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 141, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_10, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 141, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_7);
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":143
+ * name = splitext(basename(filename))[0]
+ *
+ * if name == "threading": # <<<<<<<<<<<<<<
+ * if f_bootstrap.f_code.co_name in ("__bootstrap", "_bootstrap"):
+ * # We need __bootstrap_inner, not __bootstrap.
+ */
+ __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_threading, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 143, __pyx_L5_except_error)
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":144
+ *
+ * if name == "threading":
+ * if f_bootstrap.f_code.co_name in ("__bootstrap", "_bootstrap"): # <<<<<<<<<<<<<<
+ * # We need __bootstrap_inner, not __bootstrap.
+ * return None, False
+ */
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_bootstrap, __pyx_n_s_f_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 144, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_co_name); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 144, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_15 = (__Pyx_PyString_Equals(__pyx_t_10, __pyx_n_s_bootstrap, Py_EQ)); if (unlikely((__pyx_t_15 < 0))) __PYX_ERR(0, 144, __pyx_L5_except_error)
+ if (!__pyx_t_15) {
+ } else {
+ __pyx_t_9 = __pyx_t_15;
+ goto __pyx_L15_bool_binop_done;
+ }
+ __pyx_t_15 = (__Pyx_PyString_Equals(__pyx_t_10, __pyx_n_s_bootstrap_2, Py_EQ)); if (unlikely((__pyx_t_15 < 0))) __PYX_ERR(0, 144, __pyx_L5_except_error)
+ __pyx_t_9 = __pyx_t_15;
+ __pyx_L15_bool_binop_done:;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_15 = __pyx_t_9;
+ if (__pyx_t_15) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":146
+ * if f_bootstrap.f_code.co_name in ("__bootstrap", "_bootstrap"):
+ * # We need __bootstrap_inner, not __bootstrap.
+ * return None, False # <<<<<<<<<<<<<<
+ *
+ * elif f_bootstrap.f_code.co_name in ("__bootstrap_inner", "_bootstrap_inner", "is_alive"):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_tuple__12);
+ __pyx_r = __pyx_tuple__12;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L6_except_return;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":144
+ *
+ * if name == "threading":
+ * if f_bootstrap.f_code.co_name in ("__bootstrap", "_bootstrap"): # <<<<<<<<<<<<<<
+ * # We need __bootstrap_inner, not __bootstrap.
+ * return None, False
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":148
+ * return None, False
+ *
+ * elif f_bootstrap.f_code.co_name in ("__bootstrap_inner", "_bootstrap_inner", "is_alive"): # <<<<<<<<<<<<<<
+ * # Note: be careful not to use threading.current_thread to avoid creating a dummy thread.
+ * is_bootstrap_frame_internal = True
+ */
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_bootstrap, __pyx_n_s_f_code); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 148, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_co_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 148, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_bootstrap_inner, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 148, __pyx_L5_except_error)
+ if (!__pyx_t_9) {
+ } else {
+ __pyx_t_15 = __pyx_t_9;
+ goto __pyx_L17_bool_binop_done;
+ }
+ __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_bootstrap_inner_2, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 148, __pyx_L5_except_error)
+ if (!__pyx_t_9) {
+ } else {
+ __pyx_t_15 = __pyx_t_9;
+ goto __pyx_L17_bool_binop_done;
+ }
+ __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_is_alive, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 148, __pyx_L5_except_error)
+ __pyx_t_15 = __pyx_t_9;
+ __pyx_L17_bool_binop_done:;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_9 = __pyx_t_15;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":150
+ * elif f_bootstrap.f_code.co_name in ("__bootstrap_inner", "_bootstrap_inner", "is_alive"):
+ * # Note: be careful not to use threading.current_thread to avoid creating a dummy thread.
+ * is_bootstrap_frame_internal = True # <<<<<<<<<<<<<<
+ * break
+ *
+ */
+ __pyx_v_is_bootstrap_frame_internal = 1;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":151
+ * # Note: be careful not to use threading.current_thread to avoid creating a dummy thread.
+ * is_bootstrap_frame_internal = True
+ * break # <<<<<<<<<<<<<<
+ *
+ * elif name == "pydev_monkey":
+ */
+ goto __pyx_L12_break;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":148
+ * return None, False
+ *
+ * elif f_bootstrap.f_code.co_name in ("__bootstrap_inner", "_bootstrap_inner", "is_alive"): # <<<<<<<<<<<<<<
+ * # Note: be careful not to use threading.current_thread to avoid creating a dummy thread.
+ * is_bootstrap_frame_internal = True
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":143
+ * name = splitext(basename(filename))[0]
+ *
+ * if name == "threading": # <<<<<<<<<<<<<<
+ * if f_bootstrap.f_code.co_name in ("__bootstrap", "_bootstrap"):
+ * # We need __bootstrap_inner, not __bootstrap.
+ */
+ goto __pyx_L13;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":153
+ * break
+ *
+ * elif name == "pydev_monkey": # <<<<<<<<<<<<<<
+ * if f_bootstrap.f_code.co_name == "__call__":
+ * is_bootstrap_frame_internal = True
+ */
+ __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_pydev_monkey, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 153, __pyx_L5_except_error)
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":154
+ *
+ * elif name == "pydev_monkey":
+ * if f_bootstrap.f_code.co_name == "__call__": # <<<<<<<<<<<<<<
+ * is_bootstrap_frame_internal = True
+ * break
+ */
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_bootstrap, __pyx_n_s_f_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 154, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_co_name); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 154, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_10, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 154, __pyx_L5_except_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":155
+ * elif name == "pydev_monkey":
+ * if f_bootstrap.f_code.co_name == "__call__":
+ * is_bootstrap_frame_internal = True # <<<<<<<<<<<<<<
+ * break
+ *
+ */
+ __pyx_v_is_bootstrap_frame_internal = 1;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":156
+ * if f_bootstrap.f_code.co_name == "__call__":
+ * is_bootstrap_frame_internal = True
+ * break # <<<<<<<<<<<<<<
+ *
+ * elif name == "pydevd":
+ */
+ goto __pyx_L12_break;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":154
+ *
+ * elif name == "pydev_monkey":
+ * if f_bootstrap.f_code.co_name == "__call__": # <<<<<<<<<<<<<<
+ * is_bootstrap_frame_internal = True
+ * break
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":153
+ * break
+ *
+ * elif name == "pydev_monkey": # <<<<<<<<<<<<<<
+ * if f_bootstrap.f_code.co_name == "__call__":
+ * is_bootstrap_frame_internal = True
+ */
+ goto __pyx_L13;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":158
+ * break
+ *
+ * elif name == "pydevd": # <<<<<<<<<<<<<<
+ * if f_bootstrap.f_code.co_name in ("run", "main"):
+ * # We need to get to _exec
+ */
+ __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_pydevd, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 158, __pyx_L5_except_error)
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":159
+ *
+ * elif name == "pydevd":
+ * if f_bootstrap.f_code.co_name in ("run", "main"): # <<<<<<<<<<<<<<
+ * # We need to get to _exec
+ * return None, False
+ */
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_bootstrap, __pyx_n_s_f_code); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 159, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_co_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 159, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_15 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_run, Py_EQ)); if (unlikely((__pyx_t_15 < 0))) __PYX_ERR(0, 159, __pyx_L5_except_error)
+ if (!__pyx_t_15) {
+ } else {
+ __pyx_t_9 = __pyx_t_15;
+ goto __pyx_L22_bool_binop_done;
+ }
+ __pyx_t_15 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_main, Py_EQ)); if (unlikely((__pyx_t_15 < 0))) __PYX_ERR(0, 159, __pyx_L5_except_error)
+ __pyx_t_9 = __pyx_t_15;
+ __pyx_L22_bool_binop_done:;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_15 = __pyx_t_9;
+ if (__pyx_t_15) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":161
+ * if f_bootstrap.f_code.co_name in ("run", "main"):
+ * # We need to get to _exec
+ * return None, False # <<<<<<<<<<<<<<
+ *
+ * if f_bootstrap.f_code.co_name == "_exec":
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_tuple__12);
+ __pyx_r = __pyx_tuple__12;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L6_except_return;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":159
+ *
+ * elif name == "pydevd":
+ * if f_bootstrap.f_code.co_name in ("run", "main"): # <<<<<<<<<<<<<<
+ * # We need to get to _exec
+ * return None, False
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":163
+ * return None, False
+ *
+ * if f_bootstrap.f_code.co_name == "_exec": # <<<<<<<<<<<<<<
+ * is_bootstrap_frame_internal = True
+ * break
+ */
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_bootstrap, __pyx_n_s_f_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 163, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_co_name); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 163, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_15 = (__Pyx_PyString_Equals(__pyx_t_10, __pyx_n_s_exec, Py_EQ)); if (unlikely((__pyx_t_15 < 0))) __PYX_ERR(0, 163, __pyx_L5_except_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (__pyx_t_15) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":164
+ *
+ * if f_bootstrap.f_code.co_name == "_exec":
+ * is_bootstrap_frame_internal = True # <<<<<<<<<<<<<<
+ * break
+ *
+ */
+ __pyx_v_is_bootstrap_frame_internal = 1;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":165
+ * if f_bootstrap.f_code.co_name == "_exec":
+ * is_bootstrap_frame_internal = True
+ * break # <<<<<<<<<<<<<<
+ *
+ * elif f_bootstrap.f_back is None:
+ */
+ goto __pyx_L12_break;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":163
+ * return None, False
+ *
+ * if f_bootstrap.f_code.co_name == "_exec": # <<<<<<<<<<<<<<
+ * is_bootstrap_frame_internal = True
+ * break
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":158
+ * break
+ *
+ * elif name == "pydevd": # <<<<<<<<<<<<<<
+ * if f_bootstrap.f_code.co_name in ("run", "main"):
+ * # We need to get to _exec
+ */
+ goto __pyx_L13;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":167
+ * break
+ *
+ * elif f_bootstrap.f_back is None: # <<<<<<<<<<<<<<
+ * break
+ *
+ */
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_bootstrap, __pyx_n_s_f_back); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 167, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_15 = (__pyx_t_10 == Py_None);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (__pyx_t_15) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":168
+ *
+ * elif f_bootstrap.f_back is None:
+ * break # <<<<<<<<<<<<<<
+ *
+ * f_bootstrap = f_bootstrap.f_back
+ */
+ goto __pyx_L12_break;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":167
+ * break
+ *
+ * elif f_bootstrap.f_back is None: # <<<<<<<<<<<<<<
+ * break
+ *
+ */
+ }
+ __pyx_L13:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":170
+ * break
+ *
+ * f_bootstrap = f_bootstrap.f_back # <<<<<<<<<<<<<<
+ *
+ * if f_bootstrap is not None:
+ */
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_bootstrap, __pyx_n_s_f_back); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 170, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF_SET(__pyx_v_f_bootstrap, __pyx_t_10);
+ __pyx_t_10 = 0;
+ }
+ __pyx_L12_break:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":172
+ * f_bootstrap = f_bootstrap.f_back
+ *
+ * if f_bootstrap is not None: # <<<<<<<<<<<<<<
+ * _thread_local_info.is_bootstrap_frame_internal = is_bootstrap_frame_internal
+ * _thread_local_info.f_bootstrap = f_bootstrap
+ */
+ __pyx_t_15 = (__pyx_v_f_bootstrap != Py_None);
+ if (__pyx_t_15) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":173
+ *
+ * if f_bootstrap is not None:
+ * _thread_local_info.is_bootstrap_frame_internal = is_bootstrap_frame_internal # <<<<<<<<<<<<<<
+ * _thread_local_info.f_bootstrap = f_bootstrap
+ * return _thread_local_info.f_bootstrap, _thread_local_info.is_bootstrap_frame_internal
+ */
+ __pyx_t_10 = __Pyx_PyBool_FromLong(__pyx_v_is_bootstrap_frame_internal); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 173, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 173, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (__Pyx_PyObject_SetAttrStr(__pyx_t_7, __pyx_n_s_is_bootstrap_frame_internal, __pyx_t_10) < 0) __PYX_ERR(0, 173, __pyx_L5_except_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":174
+ * if f_bootstrap is not None:
+ * _thread_local_info.is_bootstrap_frame_internal = is_bootstrap_frame_internal
+ * _thread_local_info.f_bootstrap = f_bootstrap # <<<<<<<<<<<<<<
+ * return _thread_local_info.f_bootstrap, _thread_local_info.is_bootstrap_frame_internal
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 174, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (__Pyx_PyObject_SetAttrStr(__pyx_t_7, __pyx_n_s_f_bootstrap, __pyx_v_f_bootstrap) < 0) __PYX_ERR(0, 174, __pyx_L5_except_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":175
+ * _thread_local_info.is_bootstrap_frame_internal = is_bootstrap_frame_internal
+ * _thread_local_info.f_bootstrap = f_bootstrap
+ * return _thread_local_info.f_bootstrap, _thread_local_info.is_bootstrap_frame_internal # <<<<<<<<<<<<<<
+ *
+ * return f_bootstrap, is_bootstrap_frame_internal
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 175, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_f_bootstrap); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 175, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 175, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_is_bootstrap_frame_internal); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 175, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 175, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GIVEREF(__pyx_t_10);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_10)) __PYX_ERR(0, 175, __pyx_L5_except_error);
+ __Pyx_GIVEREF(__pyx_t_11);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_11)) __PYX_ERR(0, 175, __pyx_L5_except_error);
+ __pyx_t_10 = 0;
+ __pyx_t_11 = 0;
+ __pyx_r = __pyx_t_7;
+ __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L6_except_return;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":172
+ * f_bootstrap = f_bootstrap.f_back
+ *
+ * if f_bootstrap is not None: # <<<<<<<<<<<<<<
+ * _thread_local_info.is_bootstrap_frame_internal = is_bootstrap_frame_internal
+ * _thread_local_info.f_bootstrap = f_bootstrap
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":177
+ * return _thread_local_info.f_bootstrap, _thread_local_info.is_bootstrap_frame_internal
+ *
+ * return f_bootstrap, is_bootstrap_frame_internal # <<<<<<<<<<<<<<
+ *
+ * # fmt: off
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_is_bootstrap_frame_internal); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 177, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 177, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_INCREF(__pyx_v_f_bootstrap);
+ __Pyx_GIVEREF(__pyx_v_f_bootstrap);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_f_bootstrap)) __PYX_ERR(0, 177, __pyx_L5_except_error);
+ __Pyx_GIVEREF(__pyx_t_7);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_7)) __PYX_ERR(0, 177, __pyx_L5_except_error);
+ __pyx_t_7 = 0;
+ __pyx_r = __pyx_t_11;
+ __pyx_t_11 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L6_except_return;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":132
+ * # ENDIF
+ * # fmt: on
+ * try: # <<<<<<<<<<<<<<
+ * return _thread_local_info.f_bootstrap, _thread_local_info.is_bootstrap_frame_internal
+ * except:
+ */
+ __pyx_L5_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L1_error;
+ __pyx_L7_try_return:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L0;
+ __pyx_L6_except_return:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L0;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":127
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _get_bootstrap_frame(depth): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _get_bootstrap_frame(depth: int) -> Tuple[Optional[FrameType], bool]:
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_12);
+ __Pyx_XDECREF(__pyx_t_13);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._get_bootstrap_frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_frame);
+ __Pyx_XDECREF(__pyx_v_f_bootstrap);
+ __Pyx_XDECREF(__pyx_v_filename);
+ __Pyx_XDECREF(__pyx_v_name);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":181
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _is_user_frame(frame: FrameType): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _is_user_frame(frame: FrameType) -> bool:
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__is_user_frame(PyObject *__pyx_v_frame) {
+ PyObject *__pyx_v_filename = NULL;
+ PyObject *__pyx_v_name = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ int __pyx_t_1;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ unsigned int __pyx_t_7;
+ int __pyx_t_8;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_is_user_frame", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":186
+ * # ENDIF
+ * # fmt: on
+ * if frame is None: # <<<<<<<<<<<<<<
+ * return False
+ *
+ */
+ __pyx_t_1 = (__pyx_v_frame == Py_None);
+ if (__pyx_t_1) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":187
+ * # fmt: on
+ * if frame is None:
+ * return False # <<<<<<<<<<<<<<
+ *
+ * filename = frame.f_code.co_filename
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_False);
+ __pyx_r = Py_False;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":186
+ * # ENDIF
+ * # fmt: on
+ * if frame is None: # <<<<<<<<<<<<<<
+ * return False
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":189
+ * return False
+ *
+ * filename = frame.f_code.co_filename # <<<<<<<<<<<<<<
+ * name = splitext(basename(filename))[0]
+ *
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 189, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 189, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_v_filename = __pyx_t_3;
+ __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":190
+ *
+ * filename = frame.f_code.co_filename
+ * name = splitext(basename(filename))[0] # <<<<<<<<<<<<<<
+ *
+ * # When the frame is the bootstrap it is not a user frame.
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_splitext); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_basename); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 190, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = NULL;
+ __pyx_t_7 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ __pyx_t_7 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_filename};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 190, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ }
+ __pyx_t_5 = NULL;
+ __pyx_t_7 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_7 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 190, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_v_name = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":193
+ *
+ * # When the frame is the bootstrap it is not a user frame.
+ * if name == "threading": # <<<<<<<<<<<<<<
+ * if frame.f_code.co_name in ("__bootstrap", "_bootstrap", "__bootstrap_inner", "_bootstrap_inner", "run"):
+ * return False
+ */
+ __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_threading, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 193, __pyx_L1_error)
+ if (__pyx_t_1) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":194
+ * # When the frame is the bootstrap it is not a user frame.
+ * if name == "threading":
+ * if frame.f_code.co_name in ("__bootstrap", "_bootstrap", "__bootstrap_inner", "_bootstrap_inner", "run"): # <<<<<<<<<<<<<<
+ * return False
+ *
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 194, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_co_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 194, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_bootstrap, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 194, __pyx_L1_error)
+ if (!__pyx_t_8) {
+ } else {
+ __pyx_t_1 = __pyx_t_8;
+ goto __pyx_L6_bool_binop_done;
+ }
+ __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_bootstrap_2, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 194, __pyx_L1_error)
+ if (!__pyx_t_8) {
+ } else {
+ __pyx_t_1 = __pyx_t_8;
+ goto __pyx_L6_bool_binop_done;
+ }
+ __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_bootstrap_inner, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 194, __pyx_L1_error)
+ if (!__pyx_t_8) {
+ } else {
+ __pyx_t_1 = __pyx_t_8;
+ goto __pyx_L6_bool_binop_done;
+ }
+ __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_bootstrap_inner_2, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 194, __pyx_L1_error)
+ if (!__pyx_t_8) {
+ } else {
+ __pyx_t_1 = __pyx_t_8;
+ goto __pyx_L6_bool_binop_done;
+ }
+ __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_run, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 194, __pyx_L1_error)
+ __pyx_t_1 = __pyx_t_8;
+ __pyx_L6_bool_binop_done:;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_8 = __pyx_t_1;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":195
+ * if name == "threading":
+ * if frame.f_code.co_name in ("__bootstrap", "_bootstrap", "__bootstrap_inner", "_bootstrap_inner", "run"):
+ * return False # <<<<<<<<<<<<<<
+ *
+ * elif name == "pydev_monkey":
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_False);
+ __pyx_r = Py_False;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":194
+ * # When the frame is the bootstrap it is not a user frame.
+ * if name == "threading":
+ * if frame.f_code.co_name in ("__bootstrap", "_bootstrap", "__bootstrap_inner", "_bootstrap_inner", "run"): # <<<<<<<<<<<<<<
+ * return False
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":193
+ *
+ * # When the frame is the bootstrap it is not a user frame.
+ * if name == "threading": # <<<<<<<<<<<<<<
+ * if frame.f_code.co_name in ("__bootstrap", "_bootstrap", "__bootstrap_inner", "_bootstrap_inner", "run"):
+ * return False
+ */
+ goto __pyx_L4;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":197
+ * return False
+ *
+ * elif name == "pydev_monkey": # <<<<<<<<<<<<<<
+ * if frame.f_code.co_name == "__call__":
+ * return False
+ */
+ __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_pydev_monkey, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 197, __pyx_L1_error)
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":198
+ *
+ * elif name == "pydev_monkey":
+ * if frame.f_code.co_name == "__call__": # <<<<<<<<<<<<<<
+ * return False
+ *
+ */
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 198, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_co_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 198, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 198, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":199
+ * elif name == "pydev_monkey":
+ * if frame.f_code.co_name == "__call__":
+ * return False # <<<<<<<<<<<<<<
+ *
+ * elif name == "pydevd":
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_False);
+ __pyx_r = Py_False;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":198
+ *
+ * elif name == "pydev_monkey":
+ * if frame.f_code.co_name == "__call__": # <<<<<<<<<<<<<<
+ * return False
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":197
+ * return False
+ *
+ * elif name == "pydev_monkey": # <<<<<<<<<<<<<<
+ * if frame.f_code.co_name == "__call__":
+ * return False
+ */
+ goto __pyx_L4;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":201
+ * return False
+ *
+ * elif name == "pydevd": # <<<<<<<<<<<<<<
+ * if frame.f_code.co_name in ("_exec", "run", "main"):
+ * return False
+ */
+ __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_pydevd, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 201, __pyx_L1_error)
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":202
+ *
+ * elif name == "pydevd":
+ * if frame.f_code.co_name in ("_exec", "run", "main"): # <<<<<<<<<<<<<<
+ * return False
+ *
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 202, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_co_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 202, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_exec, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 202, __pyx_L1_error)
+ if (!__pyx_t_1) {
+ } else {
+ __pyx_t_8 = __pyx_t_1;
+ goto __pyx_L13_bool_binop_done;
+ }
+ __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_run, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 202, __pyx_L1_error)
+ if (!__pyx_t_1) {
+ } else {
+ __pyx_t_8 = __pyx_t_1;
+ goto __pyx_L13_bool_binop_done;
+ }
+ __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_main, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 202, __pyx_L1_error)
+ __pyx_t_8 = __pyx_t_1;
+ __pyx_L13_bool_binop_done:;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_1 = __pyx_t_8;
+ if (__pyx_t_1) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":203
+ * elif name == "pydevd":
+ * if frame.f_code.co_name in ("_exec", "run", "main"):
+ * return False # <<<<<<<<<<<<<<
+ *
+ * elif name == "pydevd_runpy":
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_False);
+ __pyx_r = Py_False;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":202
+ *
+ * elif name == "pydevd":
+ * if frame.f_code.co_name in ("_exec", "run", "main"): # <<<<<<<<<<<<<<
+ * return False
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":201
+ * return False
+ *
+ * elif name == "pydevd": # <<<<<<<<<<<<<<
+ * if frame.f_code.co_name in ("_exec", "run", "main"):
+ * return False
+ */
+ goto __pyx_L4;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":205
+ * return False
+ *
+ * elif name == "pydevd_runpy": # <<<<<<<<<<<<<<
+ * if frame.f_code.co_name.startswith(("run", "_run")):
+ * return False
+ */
+ __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_pydevd_runpy, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 205, __pyx_L1_error)
+ if (__pyx_t_1) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":206
+ *
+ * elif name == "pydevd_runpy":
+ * if frame.f_code.co_name.startswith(("run", "_run")): # <<<<<<<<<<<<<<
+ * return False
+ *
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 206, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_co_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 206, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 206, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
+ __pyx_t_7 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_7 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_tuple__13};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 206, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 206, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (__pyx_t_1) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":207
+ * elif name == "pydevd_runpy":
+ * if frame.f_code.co_name.startswith(("run", "_run")):
+ * return False # <<<<<<<<<<<<<<
+ *
+ * elif filename == "":
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_False);
+ __pyx_r = Py_False;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":206
+ *
+ * elif name == "pydevd_runpy":
+ * if frame.f_code.co_name.startswith(("run", "_run")): # <<<<<<<<<<<<<<
+ * return False
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":205
+ * return False
+ *
+ * elif name == "pydevd_runpy": # <<<<<<<<<<<<<<
+ * if frame.f_code.co_name.startswith(("run", "_run")):
+ * return False
+ */
+ goto __pyx_L4;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":209
+ * return False
+ *
+ * elif filename == "": # <<<<<<<<<<<<<<
+ * if frame.f_code.co_name.startswith(("run", "_run")):
+ * return False
+ */
+ __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_filename, __pyx_kp_s_frozen_runpy, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 209, __pyx_L1_error)
+ if (__pyx_t_1) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":210
+ *
+ * elif filename == "":
+ * if frame.f_code.co_name.startswith(("run", "_run")): # <<<<<<<<<<<<<<
+ * return False
+ *
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 210, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_co_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 210, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 210, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
+ __pyx_t_7 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_7 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_tuple__13};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 210, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 210, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (__pyx_t_1) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":211
+ * elif filename == "":
+ * if frame.f_code.co_name.startswith(("run", "_run")):
+ * return False # <<<<<<<<<<<<<<
+ *
+ * elif name == 'runpy':
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_False);
+ __pyx_r = Py_False;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":210
+ *
+ * elif filename == "":
+ * if frame.f_code.co_name.startswith(("run", "_run")): # <<<<<<<<<<<<<<
+ * return False
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":209
+ * return False
+ *
+ * elif filename == "": # <<<<<<<<<<<<<<
+ * if frame.f_code.co_name.startswith(("run", "_run")):
+ * return False
+ */
+ goto __pyx_L4;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":213
+ * return False
+ *
+ * elif name == 'runpy': # <<<<<<<<<<<<<<
+ * if frame.f_code.co_name.startswith(("run", "_run")):
+ * return False
+ */
+ __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_runpy, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 213, __pyx_L1_error)
+ if (__pyx_t_1) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":214
+ *
+ * elif name == 'runpy':
+ * if frame.f_code.co_name.startswith(("run", "_run")): # <<<<<<<<<<<<<<
+ * return False
+ *
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 214, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_co_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 214, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 214, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
+ __pyx_t_7 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_7 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_tuple__13};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 214, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 214, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (__pyx_t_1) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":215
+ * elif name == 'runpy':
+ * if frame.f_code.co_name.startswith(("run", "_run")):
+ * return False # <<<<<<<<<<<<<<
+ *
+ * return True
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_False);
+ __pyx_r = Py_False;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":214
+ *
+ * elif name == 'runpy':
+ * if frame.f_code.co_name.startswith(("run", "_run")): # <<<<<<<<<<<<<<
+ * return False
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":213
+ * return False
+ *
+ * elif name == 'runpy': # <<<<<<<<<<<<<<
+ * if frame.f_code.co_name.startswith(("run", "_run")):
+ * return False
+ */
+ }
+ __pyx_L4:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":217
+ * return False
+ *
+ * return True # <<<<<<<<<<<<<<
+ *
+ * # fmt: off
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_True);
+ __pyx_r = Py_True;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":181
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _is_user_frame(frame: FrameType): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _is_user_frame(frame: FrameType) -> bool:
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._is_user_frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_filename);
+ __Pyx_XDECREF(__pyx_v_name);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":221
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _is_last_user_frame(frame: FrameType): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _is_last_user_frame(frame: FrameType) -> bool:
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__is_last_user_frame(PyObject *__pyx_v_frame) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_2;
+ int __pyx_t_3;
+ PyObject *__pyx_t_4 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_is_last_user_frame", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":227
+ * # fmt: on
+ * # If this frame is not a user frame, then it can't be the last one
+ * if not _is_user_frame(frame): # <<<<<<<<<<<<<<
+ * return False
+ *
+ */
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython__is_user_frame(__pyx_v_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 227, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 227, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_3 = (!__pyx_t_2);
+ if (__pyx_t_3) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":228
+ * # If this frame is not a user frame, then it can't be the last one
+ * if not _is_user_frame(frame):
+ * return False # <<<<<<<<<<<<<<
+ *
+ * # If this frame is the last frame, then it is the last one
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_False);
+ __pyx_r = Py_False;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":227
+ * # fmt: on
+ * # If this frame is not a user frame, then it can't be the last one
+ * if not _is_user_frame(frame): # <<<<<<<<<<<<<<
+ * return False
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":231
+ *
+ * # If this frame is the last frame, then it is the last one
+ * if frame.f_back is None: # <<<<<<<<<<<<<<
+ * return True
+ *
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = (__pyx_t_1 == Py_None);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_3) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":232
+ * # If this frame is the last frame, then it is the last one
+ * if frame.f_back is None:
+ * return True # <<<<<<<<<<<<<<
+ *
+ * # If the next frame is not a user frame, then this frame is the last one
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_True);
+ __pyx_r = Py_True;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":231
+ *
+ * # If this frame is the last frame, then it is the last one
+ * if frame.f_back is None: # <<<<<<<<<<<<<<
+ * return True
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":235
+ *
+ * # If the next frame is not a user frame, then this frame is the last one
+ * if not _is_user_frame(frame.f_back): # <<<<<<<<<<<<<<
+ * return True
+ *
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __pyx_f_29_pydevd_sys_monitoring_cython__is_user_frame(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 235, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 235, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_2 = (!__pyx_t_3);
+ if (__pyx_t_2) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":236
+ * # If the next frame is not a user frame, then this frame is the last one
+ * if not _is_user_frame(frame.f_back):
+ * return True # <<<<<<<<<<<<<<
+ *
+ * # Otherwise if the next frame is a user frame, then this frame is not the last one
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_True);
+ __pyx_r = Py_True;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":235
+ *
+ * # If the next frame is not a user frame, then this frame is the last one
+ * if not _is_user_frame(frame.f_back): # <<<<<<<<<<<<<<
+ * return True
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":239
+ *
+ * # Otherwise if the next frame is a user frame, then this frame is not the last one
+ * return False # <<<<<<<<<<<<<<
+ *
+ * # fmt: off
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_False);
+ __pyx_r = Py_False;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":221
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _is_last_user_frame(frame: FrameType): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _is_last_user_frame(frame: FrameType) -> bool:
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._is_last_user_frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":259
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * def __init__(self, thread, unsigned long thread_ident, bint trace, PyDBAdditionalThreadInfo additional_info): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def __init__(self, thread: threading.Thread, thread_ident: int, trace: bool, additional_info: PyDBAdditionalThreadInfo):
+ */
+
+/* Python wrapper */
+static int __pyx_pw_29_pydevd_sys_monitoring_cython_10ThreadInfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_29_pydevd_sys_monitoring_cython_10ThreadInfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_thread = 0;
+ unsigned long __pyx_v_thread_ident;
+ int __pyx_v_trace;
+ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_additional_info = 0;
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[4] = {0,0,0,0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_thread,&__pyx_n_s_thread_ident,&__pyx_n_s_trace,&__pyx_n_s_additional_info,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
+ CYTHON_FALLTHROUGH;
+ case 3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+ CYTHON_FALLTHROUGH;
+ case 2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+ CYTHON_FALLTHROUGH;
+ case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_thread)) != 0)) {
+ (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 259, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ CYTHON_FALLTHROUGH;
+ case 1:
+ if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_thread_ident)) != 0)) {
+ (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 259, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); __PYX_ERR(0, 259, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 2:
+ if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_trace)) != 0)) {
+ (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 259, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); __PYX_ERR(0, 259, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 3:
+ if (likely((values[3] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_additional_info)) != 0)) {
+ (void)__Pyx_Arg_NewRef_VARARGS(values[3]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 259, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); __PYX_ERR(0, 259, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 259, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 4)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+ values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+ values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+ values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
+ }
+ __pyx_v_thread = values[0];
+ __pyx_v_thread_ident = __Pyx_PyInt_As_unsigned_long(values[1]); if (unlikely((__pyx_v_thread_ident == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 259, __pyx_L3_error)
+ __pyx_v_trace = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_trace == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 259, __pyx_L3_error)
+ __pyx_v_additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)values[3]);
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, __pyx_nargs); __PYX_ERR(0, 259, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.ThreadInfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return -1;
+ __pyx_L4_argument_unpacking_done:;
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_additional_info), __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo, 1, "additional_info", 0))) __PYX_ERR(0, 259, __pyx_L1_error)
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_10ThreadInfo___init__(((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_v_self), __pyx_v_thread, __pyx_v_thread_ident, __pyx_v_trace, __pyx_v_additional_info);
+
+ /* function exit code */
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __pyx_r = -1;
+ __pyx_L0:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static int __pyx_pf_29_pydevd_sys_monitoring_cython_10ThreadInfo___init__(struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_self, PyObject *__pyx_v_thread, unsigned long __pyx_v_thread_ident, int __pyx_v_trace, struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_additional_info) {
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__init__", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":264
+ * # ENDIF
+ * # fmt: on
+ * self.thread = thread # <<<<<<<<<<<<<<
+ * self.thread_ident = thread_ident
+ * self.additional_info = additional_info
+ */
+ __Pyx_INCREF(__pyx_v_thread);
+ __Pyx_GIVEREF(__pyx_v_thread);
+ __Pyx_GOTREF(__pyx_v_self->thread);
+ __Pyx_DECREF(__pyx_v_self->thread);
+ __pyx_v_self->thread = __pyx_v_thread;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":265
+ * # fmt: on
+ * self.thread = thread
+ * self.thread_ident = thread_ident # <<<<<<<<<<<<<<
+ * self.additional_info = additional_info
+ * self.trace = trace
+ */
+ __pyx_v_self->thread_ident = __pyx_v_thread_ident;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":266
+ * self.thread = thread
+ * self.thread_ident = thread_ident
+ * self.additional_info = additional_info # <<<<<<<<<<<<<<
+ * self.trace = trace
+ *
+ */
+ __Pyx_INCREF((PyObject *)__pyx_v_additional_info);
+ __Pyx_GIVEREF((PyObject *)__pyx_v_additional_info);
+ __Pyx_GOTREF((PyObject *)__pyx_v_self->additional_info);
+ __Pyx_DECREF((PyObject *)__pyx_v_self->additional_info);
+ __pyx_v_self->additional_info = __pyx_v_additional_info;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":267
+ * self.thread_ident = thread_ident
+ * self.additional_info = additional_info
+ * self.trace = trace # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_trace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 267, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GIVEREF(__pyx_t_1);
+ __Pyx_GOTREF(__pyx_v_self->trace);
+ __Pyx_DECREF(__pyx_v_self->trace);
+ __pyx_v_self->trace = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":259
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * def __init__(self, thread, unsigned long thread_ident, bint trace, PyDBAdditionalThreadInfo additional_info): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def __init__(self, thread: threading.Thread, thread_ident: int, trace: bool, additional_info: PyDBAdditionalThreadInfo):
+ */
+
+ /* function exit code */
+ __pyx_r = 0;
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.ThreadInfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = -1;
+ __pyx_L0:;
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_10ThreadInfo_3__reduce_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_10ThreadInfo_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_10ThreadInfo_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_10ThreadInfo_3__reduce_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_nargs > 0)) {
+ __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
+ if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_10ThreadInfo_2__reduce_cython__(((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_v_self));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_10ThreadInfo_2__reduce_cython__(struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_self) {
+ PyObject *__pyx_v_state = 0;
+ PyObject *__pyx_v__dict = 0;
+ int __pyx_v_use_setstate;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ int __pyx_t_3;
+ int __pyx_t_4;
+ PyObject *__pyx_t_5 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__reduce_cython__", 1);
+
+ /* "(tree fragment)":5
+ * cdef object _dict
+ * cdef bint use_setstate
+ * state = (self.additional_info, self.thread, self.thread_ident, self.trace) # <<<<<<<<<<<<<<
+ * _dict = getattr(self, '__dict__', None)
+ * if _dict is not None:
+ */
+ __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(__pyx_v_self->thread_ident); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_INCREF((PyObject *)__pyx_v_self->additional_info);
+ __Pyx_GIVEREF((PyObject *)__pyx_v_self->additional_info);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self->additional_info))) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_self->thread);
+ __Pyx_GIVEREF(__pyx_v_self->thread);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->thread)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_self->trace);
+ __Pyx_GIVEREF(__pyx_v_self->trace);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_self->trace)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __pyx_t_1 = 0;
+ __pyx_v_state = ((PyObject*)__pyx_t_2);
+ __pyx_t_2 = 0;
+
+ /* "(tree fragment)":6
+ * cdef bint use_setstate
+ * state = (self.additional_info, self.thread, self.thread_ident, self.trace)
+ * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<<
+ * if _dict is not None:
+ * state += (_dict,)
+ */
+ __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_v__dict = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "(tree fragment)":7
+ * state = (self.additional_info, self.thread, self.thread_ident, self.trace)
+ * _dict = getattr(self, '__dict__', None)
+ * if _dict is not None: # <<<<<<<<<<<<<<
+ * state += (_dict,)
+ * use_setstate = True
+ */
+ __pyx_t_3 = (__pyx_v__dict != Py_None);
+ if (__pyx_t_3) {
+
+ /* "(tree fragment)":8
+ * _dict = getattr(self, '__dict__', None)
+ * if _dict is not None:
+ * state += (_dict,) # <<<<<<<<<<<<<<
+ * use_setstate = True
+ * else:
+ */
+ __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_INCREF(__pyx_v__dict);
+ __Pyx_GIVEREF(__pyx_v__dict);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict)) __PYX_ERR(1, 8, __pyx_L1_error);
+ __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
+ __pyx_t_1 = 0;
+
+ /* "(tree fragment)":9
+ * if _dict is not None:
+ * state += (_dict,)
+ * use_setstate = True # <<<<<<<<<<<<<<
+ * else:
+ * use_setstate = self.additional_info is not None or self.thread is not None or self.trace is not None
+ */
+ __pyx_v_use_setstate = 1;
+
+ /* "(tree fragment)":7
+ * state = (self.additional_info, self.thread, self.thread_ident, self.trace)
+ * _dict = getattr(self, '__dict__', None)
+ * if _dict is not None: # <<<<<<<<<<<<<<
+ * state += (_dict,)
+ * use_setstate = True
+ */
+ goto __pyx_L3;
+ }
+
+ /* "(tree fragment)":11
+ * use_setstate = True
+ * else:
+ * use_setstate = self.additional_info is not None or self.thread is not None or self.trace is not None # <<<<<<<<<<<<<<
+ * if use_setstate:
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xd625bfa, None), state
+ */
+ /*else*/ {
+ __pyx_t_4 = (((PyObject *)__pyx_v_self->additional_info) != Py_None);
+ if (!__pyx_t_4) {
+ } else {
+ __pyx_t_3 = __pyx_t_4;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __pyx_t_4 = (__pyx_v_self->thread != Py_None);
+ if (!__pyx_t_4) {
+ } else {
+ __pyx_t_3 = __pyx_t_4;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __pyx_t_4 = (__pyx_v_self->trace != Py_None);
+ __pyx_t_3 = __pyx_t_4;
+ __pyx_L4_bool_binop_done:;
+ __pyx_v_use_setstate = __pyx_t_3;
+ }
+ __pyx_L3:;
+
+ /* "(tree fragment)":12
+ * else:
+ * use_setstate = self.additional_info is not None or self.thread is not None or self.trace is not None
+ * if use_setstate: # <<<<<<<<<<<<<<
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xd625bfa, None), state
+ * else:
+ */
+ if (__pyx_v_use_setstate) {
+
+ /* "(tree fragment)":13
+ * use_setstate = self.additional_info is not None or self.thread is not None or self.trace is not None
+ * if use_setstate:
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xd625bfa, None), state # <<<<<<<<<<<<<<
+ * else:
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xd625bfa, state)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_ThreadInfo); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 13, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_int_224549882);
+ __Pyx_GIVEREF(__pyx_int_224549882);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_224549882)) __PYX_ERR(1, 13, __pyx_L1_error);
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None)) __PYX_ERR(1, 13, __pyx_L1_error);
+ __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_2);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_state);
+ __Pyx_GIVEREF(__pyx_v_state);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state)) __PYX_ERR(1, 13, __pyx_L1_error);
+ __pyx_t_1 = 0;
+ __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_5;
+ __pyx_t_5 = 0;
+ goto __pyx_L0;
+
+ /* "(tree fragment)":12
+ * else:
+ * use_setstate = self.additional_info is not None or self.thread is not None or self.trace is not None
+ * if use_setstate: # <<<<<<<<<<<<<<
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xd625bfa, None), state
+ * else:
+ */
+ }
+
+ /* "(tree fragment)":15
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xd625bfa, None), state
+ * else:
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xd625bfa, state) # <<<<<<<<<<<<<<
+ * def __setstate_cython__(self, __pyx_state):
+ * __pyx_unpickle_ThreadInfo__set_state(self, __pyx_state)
+ */
+ /*else*/ {
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_ThreadInfo); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 15, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_int_224549882);
+ __Pyx_GIVEREF(__pyx_int_224549882);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_224549882)) __PYX_ERR(1, 15, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_state);
+ __Pyx_GIVEREF(__pyx_v_state);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state)) __PYX_ERR(1, 15, __pyx_L1_error);
+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GIVEREF(__pyx_t_5);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_2);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error);
+ __pyx_t_5 = 0;
+ __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+ }
+
+ /* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.ThreadInfo.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_state);
+ __Pyx_XDECREF(__pyx_v__dict);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xd625bfa, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle_ThreadInfo__set_state(self, __pyx_state)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_10ThreadInfo_5__setstate_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_10ThreadInfo_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_10ThreadInfo_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_10ThreadInfo_5__setstate_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v___pyx_state = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 16, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 16, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v___pyx_state = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 16, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.ThreadInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_10ThreadInfo_4__setstate_cython__(((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_v_self), __pyx_v___pyx_state);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_10ThreadInfo_4__setstate_cython__(struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__setstate_cython__", 1);
+
+ /* "(tree fragment)":17
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xd625bfa, state)
+ * def __setstate_cython__(self, __pyx_state):
+ * __pyx_unpickle_ThreadInfo__set_state(self, __pyx_state) # <<<<<<<<<<<<<<
+ */
+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 17, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython___pyx_unpickle_ThreadInfo__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xd625bfa, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle_ThreadInfo__set_state(self, __pyx_state)
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.ThreadInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":275
+ * """
+ *
+ * def __init__(self, dummy_thread): # <<<<<<<<<<<<<<
+ * self._dummy_thread = dummy_thread
+ * self._tident = dummy_thread.ident
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_23_DeleteDummyThreadOnDel_1__init__(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_23_DeleteDummyThreadOnDel_1__init__ = {"__init__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_23_DeleteDummyThreadOnDel_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_23_DeleteDummyThreadOnDel_1__init__(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_self = 0;
+ PyObject *__pyx_v_dummy_thread = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[2] = {0,0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dummy_thread,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ CYTHON_FALLTHROUGH;
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 275, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ CYTHON_FALLTHROUGH;
+ case 1:
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dummy_thread)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 275, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 275, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 275, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 2)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ }
+ __pyx_v_self = values[0];
+ __pyx_v_dummy_thread = values[1];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 275, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._DeleteDummyThreadOnDel.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_23_DeleteDummyThreadOnDel___init__(__pyx_self, __pyx_v_self, __pyx_v_dummy_thread);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_23_DeleteDummyThreadOnDel___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dummy_thread) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__init__", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":276
+ *
+ * def __init__(self, dummy_thread):
+ * self._dummy_thread = dummy_thread # <<<<<<<<<<<<<<
+ * self._tident = dummy_thread.ident
+ * # Put the thread on a thread local variable so that when
+ */
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_dummy_thread_2, __pyx_v_dummy_thread) < 0) __PYX_ERR(0, 276, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":277
+ * def __init__(self, dummy_thread):
+ * self._dummy_thread = dummy_thread
+ * self._tident = dummy_thread.ident # <<<<<<<<<<<<<<
+ * # Put the thread on a thread local variable so that when
+ * # the related thread finishes this instance is collected.
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dummy_thread, __pyx_n_s_ident); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_tident, __pyx_t_1) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":284
+ * # If any client code creates a reference to this instance,
+ * # the related _DummyThread will be kept forever!
+ * _thread_local_info._track_dummy_thread_ref = self # <<<<<<<<<<<<<<
+ *
+ * def __del__(self):
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 284, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (__Pyx_PyObject_SetAttrStr(__pyx_t_1, __pyx_n_s_track_dummy_thread_ref, __pyx_v_self) < 0) __PYX_ERR(0, 284, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":275
+ * """
+ *
+ * def __init__(self, dummy_thread): # <<<<<<<<<<<<<<
+ * self._dummy_thread = dummy_thread
+ * self._tident = dummy_thread.ident
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._DeleteDummyThreadOnDel.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":286
+ * _thread_local_info._track_dummy_thread_ref = self
+ *
+ * def __del__(self): # <<<<<<<<<<<<<<
+ * with threading._active_limbo_lock:
+ * if _thread_active.get(self._tident) is self._dummy_thread:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_23_DeleteDummyThreadOnDel_3__del__(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_23_DeleteDummyThreadOnDel_3__del__ = {"__del__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_23_DeleteDummyThreadOnDel_3__del__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_23_DeleteDummyThreadOnDel_3__del__(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_self = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 286, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__del__") < 0)) __PYX_ERR(0, 286, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v_self = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__del__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 286, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._DeleteDummyThreadOnDel.__del__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_23_DeleteDummyThreadOnDel_2__del__(__pyx_self, __pyx_v_self);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_23_DeleteDummyThreadOnDel_2__del__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ unsigned int __pyx_t_6;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ PyObject *__pyx_t_9 = NULL;
+ int __pyx_t_10;
+ PyObject *__pyx_t_11 = NULL;
+ int __pyx_t_12;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__del__", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":287
+ *
+ * def __del__(self):
+ * with threading._active_limbo_lock: # <<<<<<<<<<<<<<
+ * if _thread_active.get(self._tident) is self._dummy_thread:
+ * _thread_active.pop(self._tident, None)
+ */
+ /*with:*/ {
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_threading); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_active_limbo_lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 287, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 287, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ /*try:*/ {
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
+ __Pyx_XGOTREF(__pyx_t_7);
+ __Pyx_XGOTREF(__pyx_t_8);
+ __Pyx_XGOTREF(__pyx_t_9);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":288
+ * def __del__(self):
+ * with threading._active_limbo_lock:
+ * if _thread_active.get(self._tident) is self._dummy_thread: # <<<<<<<<<<<<<<
+ * _thread_active.pop(self._tident, None)
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_thread_active); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 288, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 288, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_tident); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 288, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_1};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 288, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dummy_thread_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 288, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_10 = (__pyx_t_2 == __pyx_t_4);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":289
+ * with threading._active_limbo_lock:
+ * if _thread_active.get(self._tident) is self._dummy_thread:
+ * _thread_active.pop(self._tident, None) # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_thread_active); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 289, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_pop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 289, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_tident); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 289, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_5 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, Py_None};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 289, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":288
+ * def __del__(self):
+ * with threading._active_limbo_lock:
+ * if _thread_active.get(self._tident) is self._dummy_thread: # <<<<<<<<<<<<<<
+ * _thread_active.pop(self._tident, None)
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":287
+ *
+ * def __del__(self):
+ * with threading._active_limbo_lock: # <<<<<<<<<<<<<<
+ * if _thread_active.get(self._tident) is self._dummy_thread:
+ * _thread_active.pop(self._tident, None)
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ goto __pyx_L12_try_end;
+ __pyx_L7_error:;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._DeleteDummyThreadOnDel.__del__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(0, 287, __pyx_L9_except_error)
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __pyx_t_5 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 287, __pyx_L9_except_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 287, __pyx_L9_except_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ if (__pyx_t_10 < 0) __PYX_ERR(0, 287, __pyx_L9_except_error)
+ __pyx_t_12 = (!__pyx_t_10);
+ if (unlikely(__pyx_t_12)) {
+ __Pyx_GIVEREF(__pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_1, __pyx_t_2);
+ __pyx_t_4 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0;
+ __PYX_ERR(0, 287, __pyx_L9_except_error)
+ }
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ goto __pyx_L8_exception_handled;
+ }
+ __pyx_L9_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+ goto __pyx_L1_error;
+ __pyx_L8_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+ __pyx_L12_try_end:;
+ }
+ }
+ /*finally:*/ {
+ /*normal exit:*/{
+ if (__pyx_t_3) {
+ __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__11, NULL);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ }
+ goto __pyx_L6;
+ }
+ __pyx_L6:;
+ }
+ goto __pyx_L17;
+ __pyx_L3_error:;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L1_error;
+ __pyx_L17:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":286
+ * _thread_local_info._track_dummy_thread_ref = self
+ *
+ * def __del__(self): # <<<<<<<<<<<<<<
+ * with threading._active_limbo_lock:
+ * if _thread_active.get(self._tident) is self._dummy_thread:
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._DeleteDummyThreadOnDel.__del__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":294
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _create_thread_info(depth): # <<<<<<<<<<<<<<
+ * cdef unsigned long thread_ident
+ * # ELSE
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__create_thread_info(PyObject *__pyx_v_depth) {
+ unsigned long __pyx_v_thread_ident;
+ PyObject *__pyx_v_f_bootstrap_frame = NULL;
+ PyObject *__pyx_v_is_bootstrap_frame_internal = NULL;
+ PyObject *__pyx_v_t = NULL;
+ PyObject *__pyx_v_additional_info = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ unsigned int __pyx_t_4;
+ unsigned long __pyx_t_5;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *(*__pyx_t_7)(PyObject *);
+ int __pyx_t_8;
+ int __pyx_t_9;
+ PyObject *__pyx_t_10 = NULL;
+ PyObject *__pyx_t_11 = NULL;
+ PyObject *__pyx_t_12 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_create_thread_info", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":302
+ * # Don't call threading.currentThread because if we're too early in the process
+ * # we may create a dummy thread.
+ * thread_ident = _get_ident() # <<<<<<<<<<<<<<
+ *
+ * f_bootstrap_frame, is_bootstrap_frame_internal = _get_bootstrap_frame(depth + 1)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_get_ident); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 302, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = NULL;
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_4 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 302, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_t_5 = __Pyx_PyInt_As_unsigned_long(__pyx_t_1); if (unlikely((__pyx_t_5 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 302, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v_thread_ident = __pyx_t_5;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":304
+ * thread_ident = _get_ident()
+ *
+ * f_bootstrap_frame, is_bootstrap_frame_internal = _get_bootstrap_frame(depth + 1) # <<<<<<<<<<<<<<
+ * if f_bootstrap_frame is None:
+ * return None # Case for threading when it's still in bootstrap or early in pydevd.
+ */
+ __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_depth, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 304, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __pyx_f_29_pydevd_sys_monitoring_cython__get_bootstrap_frame(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 304, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
+ PyObject* sequence = __pyx_t_2;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 2)) {
+ if (size > 2) __Pyx_RaiseTooManyValuesError(2);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 304, __pyx_L1_error)
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
+ } else {
+ __pyx_t_1 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_3 = PyList_GET_ITEM(sequence, 1);
+ }
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
+ #else
+ __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 304, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 304, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ #endif
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ } else {
+ Py_ssize_t index = -1;
+ __pyx_t_6 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 304, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_6);
+ index = 0; __pyx_t_1 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_1);
+ index = 1; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_3);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(0, 304, __pyx_L1_error)
+ __pyx_t_7 = NULL;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L4_unpacking_done;
+ __pyx_L3_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_7 = NULL;
+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+ __PYX_ERR(0, 304, __pyx_L1_error)
+ __pyx_L4_unpacking_done:;
+ }
+ __pyx_v_f_bootstrap_frame = __pyx_t_1;
+ __pyx_t_1 = 0;
+ __pyx_v_is_bootstrap_frame_internal = __pyx_t_3;
+ __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":305
+ *
+ * f_bootstrap_frame, is_bootstrap_frame_internal = _get_bootstrap_frame(depth + 1)
+ * if f_bootstrap_frame is None: # <<<<<<<<<<<<<<
+ * return None # Case for threading when it's still in bootstrap or early in pydevd.
+ *
+ */
+ __pyx_t_8 = (__pyx_v_f_bootstrap_frame == Py_None);
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":306
+ * f_bootstrap_frame, is_bootstrap_frame_internal = _get_bootstrap_frame(depth + 1)
+ * if f_bootstrap_frame is None:
+ * return None # Case for threading when it's still in bootstrap or early in pydevd. # <<<<<<<<<<<<<<
+ *
+ * if is_bootstrap_frame_internal:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":305
+ *
+ * f_bootstrap_frame, is_bootstrap_frame_internal = _get_bootstrap_frame(depth + 1)
+ * if f_bootstrap_frame is None: # <<<<<<<<<<<<<<
+ * return None # Case for threading when it's still in bootstrap or early in pydevd.
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":308
+ * return None # Case for threading when it's still in bootstrap or early in pydevd.
+ *
+ * if is_bootstrap_frame_internal: # <<<<<<<<<<<<<<
+ * t = None
+ * if f_bootstrap_frame.f_code.co_name in ("__bootstrap_inner", "_bootstrap_inner", "is_alive"):
+ */
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_is_bootstrap_frame_internal); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 308, __pyx_L1_error)
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":309
+ *
+ * if is_bootstrap_frame_internal:
+ * t = None # <<<<<<<<<<<<<<
+ * if f_bootstrap_frame.f_code.co_name in ("__bootstrap_inner", "_bootstrap_inner", "is_alive"):
+ * # Note: be careful not to use threading.current_thread to avoid creating a dummy thread.
+ */
+ __Pyx_INCREF(Py_None);
+ __pyx_v_t = Py_None;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":310
+ * if is_bootstrap_frame_internal:
+ * t = None
+ * if f_bootstrap_frame.f_code.co_name in ("__bootstrap_inner", "_bootstrap_inner", "is_alive"): # <<<<<<<<<<<<<<
+ * # Note: be careful not to use threading.current_thread to avoid creating a dummy thread.
+ * t = f_bootstrap_frame.f_locals.get("self")
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_bootstrap_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 310, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_co_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 310, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_bootstrap_inner, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 310, __pyx_L1_error)
+ if (!__pyx_t_9) {
+ } else {
+ __pyx_t_8 = __pyx_t_9;
+ goto __pyx_L8_bool_binop_done;
+ }
+ __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_bootstrap_inner_2, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 310, __pyx_L1_error)
+ if (!__pyx_t_9) {
+ } else {
+ __pyx_t_8 = __pyx_t_9;
+ goto __pyx_L8_bool_binop_done;
+ }
+ __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_is_alive, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 310, __pyx_L1_error)
+ __pyx_t_8 = __pyx_t_9;
+ __pyx_L8_bool_binop_done:;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_9 = __pyx_t_8;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":312
+ * if f_bootstrap_frame.f_code.co_name in ("__bootstrap_inner", "_bootstrap_inner", "is_alive"):
+ * # Note: be careful not to use threading.current_thread to avoid creating a dummy thread.
+ * t = f_bootstrap_frame.f_locals.get("self") # <<<<<<<<<<<<<<
+ * if not isinstance(t, threading.Thread):
+ * t = None
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_bootstrap_frame, __pyx_n_s_f_locals); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 312, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 312, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = NULL;
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_4 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_n_s_self};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 312, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __Pyx_DECREF_SET(__pyx_v_t, __pyx_t_3);
+ __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":313
+ * # Note: be careful not to use threading.current_thread to avoid creating a dummy thread.
+ * t = f_bootstrap_frame.f_locals.get("self")
+ * if not isinstance(t, threading.Thread): # <<<<<<<<<<<<<<
+ * t = None
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_threading); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Thread); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_9 = PyObject_IsInstance(__pyx_v_t, __pyx_t_1); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_8 = (!__pyx_t_9);
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":314
+ * t = f_bootstrap_frame.f_locals.get("self")
+ * if not isinstance(t, threading.Thread):
+ * t = None # <<<<<<<<<<<<<<
+ *
+ * elif f_bootstrap_frame.f_code.co_name in ("_exec", "__call__"):
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_DECREF_SET(__pyx_v_t, Py_None);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":313
+ * # Note: be careful not to use threading.current_thread to avoid creating a dummy thread.
+ * t = f_bootstrap_frame.f_locals.get("self")
+ * if not isinstance(t, threading.Thread): # <<<<<<<<<<<<<<
+ * t = None
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":310
+ * if is_bootstrap_frame_internal:
+ * t = None
+ * if f_bootstrap_frame.f_code.co_name in ("__bootstrap_inner", "_bootstrap_inner", "is_alive"): # <<<<<<<<<<<<<<
+ * # Note: be careful not to use threading.current_thread to avoid creating a dummy thread.
+ * t = f_bootstrap_frame.f_locals.get("self")
+ */
+ goto __pyx_L7;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":316
+ * t = None
+ *
+ * elif f_bootstrap_frame.f_code.co_name in ("_exec", "__call__"): # <<<<<<<<<<<<<<
+ * # Note: be careful not to use threading.current_thread to avoid creating a dummy thread.
+ * t = f_bootstrap_frame.f_locals.get("t")
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_bootstrap_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 316, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_co_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 316, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_exec, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 316, __pyx_L1_error)
+ if (!__pyx_t_9) {
+ } else {
+ __pyx_t_8 = __pyx_t_9;
+ goto __pyx_L12_bool_binop_done;
+ }
+ __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 316, __pyx_L1_error)
+ __pyx_t_8 = __pyx_t_9;
+ __pyx_L12_bool_binop_done:;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_9 = __pyx_t_8;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":318
+ * elif f_bootstrap_frame.f_code.co_name in ("_exec", "__call__"):
+ * # Note: be careful not to use threading.current_thread to avoid creating a dummy thread.
+ * t = f_bootstrap_frame.f_locals.get("t") # <<<<<<<<<<<<<<
+ * if not isinstance(t, threading.Thread):
+ * t = None
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_bootstrap_frame, __pyx_n_s_f_locals); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 318, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 318, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_4 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_n_s_t};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 318, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __Pyx_DECREF_SET(__pyx_v_t, __pyx_t_3);
+ __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":319
+ * # Note: be careful not to use threading.current_thread to avoid creating a dummy thread.
+ * t = f_bootstrap_frame.f_locals.get("t")
+ * if not isinstance(t, threading.Thread): # <<<<<<<<<<<<<<
+ * t = None
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_threading); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 319, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Thread); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_9 = PyObject_IsInstance(__pyx_v_t, __pyx_t_2); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 319, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_8 = (!__pyx_t_9);
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":320
+ * t = f_bootstrap_frame.f_locals.get("t")
+ * if not isinstance(t, threading.Thread):
+ * t = None # <<<<<<<<<<<<<<
+ *
+ * else:
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_DECREF_SET(__pyx_v_t, Py_None);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":319
+ * # Note: be careful not to use threading.current_thread to avoid creating a dummy thread.
+ * t = f_bootstrap_frame.f_locals.get("t")
+ * if not isinstance(t, threading.Thread): # <<<<<<<<<<<<<<
+ * t = None
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":316
+ * t = None
+ *
+ * elif f_bootstrap_frame.f_code.co_name in ("_exec", "__call__"): # <<<<<<<<<<<<<<
+ * # Note: be careful not to use threading.current_thread to avoid creating a dummy thread.
+ * t = f_bootstrap_frame.f_locals.get("t")
+ */
+ }
+ __pyx_L7:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":308
+ * return None # Case for threading when it's still in bootstrap or early in pydevd.
+ *
+ * if is_bootstrap_frame_internal: # <<<<<<<<<<<<<<
+ * t = None
+ * if f_bootstrap_frame.f_code.co_name in ("__bootstrap_inner", "_bootstrap_inner", "is_alive"):
+ */
+ goto __pyx_L6;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":326
+ * # In practice this means it's some unmanaged thread, so, creating
+ * # a dummy thread is ok in this use-case.
+ * t = threading.current_thread() # <<<<<<<<<<<<<<
+ *
+ * if t is None:
+ */
+ /*else*/ {
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_threading); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 326, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_current_thread); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 326, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = NULL;
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_4 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 326, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __pyx_v_t = __pyx_t_2;
+ __pyx_t_2 = 0;
+ }
+ __pyx_L6:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":328
+ * t = threading.current_thread()
+ *
+ * if t is None: # <<<<<<<<<<<<<<
+ * t = _thread_active.get(thread_ident)
+ *
+ */
+ __pyx_t_8 = (__pyx_v_t == Py_None);
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":329
+ *
+ * if t is None:
+ * t = _thread_active.get(thread_ident) # <<<<<<<<<<<<<<
+ *
+ * if isinstance(t, threading._DummyThread):
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_thread_active); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(__pyx_v_thread_ident); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = NULL;
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_4 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_1};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_DECREF_SET(__pyx_v_t, __pyx_t_2);
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":328
+ * t = threading.current_thread()
+ *
+ * if t is None: # <<<<<<<<<<<<<<
+ * t = _thread_active.get(thread_ident)
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":331
+ * t = _thread_active.get(thread_ident)
+ *
+ * if isinstance(t, threading._DummyThread): # <<<<<<<<<<<<<<
+ * _thread_local_info._ref = _DeleteDummyThreadOnDel(t)
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 331, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_DummyThread); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 331, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_8 = PyObject_IsInstance(__pyx_v_t, __pyx_t_3); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 331, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":332
+ *
+ * if isinstance(t, threading._DummyThread):
+ * _thread_local_info._ref = _DeleteDummyThreadOnDel(t) # <<<<<<<<<<<<<<
+ *
+ * if t is None:
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DeleteDummyThreadOnDel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = NULL;
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_4 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_t};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (__Pyx_PyObject_SetAttrStr(__pyx_t_2, __pyx_n_s_ref, __pyx_t_3) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":331
+ * t = _thread_active.get(thread_ident)
+ *
+ * if isinstance(t, threading._DummyThread): # <<<<<<<<<<<<<<
+ * _thread_local_info._ref = _DeleteDummyThreadOnDel(t)
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":334
+ * _thread_local_info._ref = _DeleteDummyThreadOnDel(t)
+ *
+ * if t is None: # <<<<<<<<<<<<<<
+ * return None
+ *
+ */
+ __pyx_t_8 = (__pyx_v_t == Py_None);
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":335
+ *
+ * if t is None:
+ * return None # <<<<<<<<<<<<<<
+ *
+ * if getattr(t, "is_pydev_daemon_thread", False):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":334
+ * _thread_local_info._ref = _DeleteDummyThreadOnDel(t)
+ *
+ * if t is None: # <<<<<<<<<<<<<<
+ * return None
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":337
+ * return None
+ *
+ * if getattr(t, "is_pydev_daemon_thread", False): # <<<<<<<<<<<<<<
+ * return ThreadInfo(t, thread_ident, False, None)
+ * else:
+ */
+ __pyx_t_2 = __Pyx_GetAttr3(__pyx_v_t, __pyx_n_s_is_pydev_daemon_thread, Py_False); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 337, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 337, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":338
+ *
+ * if getattr(t, "is_pydev_daemon_thread", False):
+ * return ThreadInfo(t, thread_ident, False, None) # <<<<<<<<<<<<<<
+ * else:
+ * try:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_2 = __Pyx_PyInt_From_unsigned_long(__pyx_v_thread_ident); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 338, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 338, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_v_t);
+ __Pyx_GIVEREF(__pyx_v_t);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_t)) __PYX_ERR(0, 338, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_2);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(0, 338, __pyx_L1_error);
+ __Pyx_INCREF(Py_False);
+ __Pyx_GIVEREF(Py_False);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, Py_False)) __PYX_ERR(0, 338, __pyx_L1_error);
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 3, Py_None)) __PYX_ERR(0, 338, __pyx_L1_error);
+ __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 338, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":337
+ * return None
+ *
+ * if getattr(t, "is_pydev_daemon_thread", False): # <<<<<<<<<<<<<<
+ * return ThreadInfo(t, thread_ident, False, None)
+ * else:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":340
+ * return ThreadInfo(t, thread_ident, False, None)
+ * else:
+ * try: # <<<<<<<<<<<<<<
+ * additional_info = t.additional_info
+ * if additional_info is None:
+ */
+ /*else*/ {
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
+ __Pyx_XGOTREF(__pyx_t_10);
+ __Pyx_XGOTREF(__pyx_t_11);
+ __Pyx_XGOTREF(__pyx_t_12);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":341
+ * else:
+ * try:
+ * additional_info = t.additional_info # <<<<<<<<<<<<<<
+ * if additional_info is None:
+ * raise AttributeError()
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_additional_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 341, __pyx_L19_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_v_additional_info = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":342
+ * try:
+ * additional_info = t.additional_info
+ * if additional_info is None: # <<<<<<<<<<<<<<
+ * raise AttributeError()
+ * except:
+ */
+ __pyx_t_8 = (__pyx_v_additional_info == Py_None);
+ if (unlikely(__pyx_t_8)) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":343
+ * additional_info = t.additional_info
+ * if additional_info is None:
+ * raise AttributeError() # <<<<<<<<<<<<<<
+ * except:
+ * additional_info = set_additional_thread_info(t)
+ */
+ __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_AttributeError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 343, __pyx_L19_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __PYX_ERR(0, 343, __pyx_L19_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":342
+ * try:
+ * additional_info = t.additional_info
+ * if additional_info is None: # <<<<<<<<<<<<<<
+ * raise AttributeError()
+ * except:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":340
+ * return ThreadInfo(t, thread_ident, False, None)
+ * else:
+ * try: # <<<<<<<<<<<<<<
+ * additional_info = t.additional_info
+ * if additional_info is None:
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ goto __pyx_L24_try_end;
+ __pyx_L19_error:;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":344
+ * if additional_info is None:
+ * raise AttributeError()
+ * except: # <<<<<<<<<<<<<<
+ * additional_info = set_additional_thread_info(t)
+ * return ThreadInfo(t, thread_ident, True, additional_info)
+ */
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._create_thread_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_1) < 0) __PYX_ERR(0, 344, __pyx_L21_except_error)
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":345
+ * raise AttributeError()
+ * except:
+ * additional_info = set_additional_thread_info(t) # <<<<<<<<<<<<<<
+ * return ThreadInfo(t, thread_ident, True, additional_info)
+ *
+ */
+ __pyx_t_6 = __pyx_f_14_pydevd_bundle_13pydevd_cython_set_additional_thread_info(__pyx_v_t, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 345, __pyx_L21_except_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_XDECREF_SET(__pyx_v_additional_info, __pyx_t_6);
+ __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ goto __pyx_L20_exception_handled;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":340
+ * return ThreadInfo(t, thread_ident, False, None)
+ * else:
+ * try: # <<<<<<<<<<<<<<
+ * additional_info = t.additional_info
+ * if additional_info is None:
+ */
+ __pyx_L21_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_10);
+ __Pyx_XGIVEREF(__pyx_t_11);
+ __Pyx_XGIVEREF(__pyx_t_12);
+ __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
+ goto __pyx_L1_error;
+ __pyx_L20_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_10);
+ __Pyx_XGIVEREF(__pyx_t_11);
+ __Pyx_XGIVEREF(__pyx_t_12);
+ __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
+ __pyx_L24_try_end:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":346
+ * except:
+ * additional_info = set_additional_thread_info(t)
+ * return ThreadInfo(t, thread_ident, True, additional_info) # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(__pyx_v_thread_ident); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 346, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 346, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_v_t);
+ __Pyx_GIVEREF(__pyx_v_t);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_t)) __PYX_ERR(0, 346, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(0, 346, __pyx_L1_error);
+ __Pyx_INCREF(Py_True);
+ __Pyx_GIVEREF(Py_True);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, Py_True)) __PYX_ERR(0, 346, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_additional_info);
+ __Pyx_GIVEREF(__pyx_v_additional_info);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_additional_info)) __PYX_ERR(0, 346, __pyx_L1_error);
+ __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo), __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 346, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":294
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _create_thread_info(depth): # <<<<<<<<<<<<<<
+ * cdef unsigned long thread_ident
+ * # ELSE
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._create_thread_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_f_bootstrap_frame);
+ __Pyx_XDECREF(__pyx_v_is_bootstrap_frame_internal);
+ __Pyx_XDECREF(__pyx_v_t);
+ __Pyx_XDECREF(__pyx_v_additional_info);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":375
+ * # ENDIF
+ * # fmt: on
+ * def __init__(self): # <<<<<<<<<<<<<<
+ * self.co_filename: str = ""
+ * self.canonical_normalized_filename: str = ""
+ */
+
+/* Python wrapper */
+static int __pyx_pw_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_nargs > 0)) {
+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1;}
+ if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_12FuncCodeInfo___init__(((struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)__pyx_v_self));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static int __pyx_pf_29_pydevd_sys_monitoring_cython_12FuncCodeInfo___init__(struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v_self) {
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__init__", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":376
+ * # fmt: on
+ * def __init__(self):
+ * self.co_filename: str = "" # <<<<<<<<<<<<<<
+ * self.canonical_normalized_filename: str = ""
+ * self.abs_path_filename: str = ""
+ */
+ __Pyx_INCREF(__pyx_kp_s__14);
+ __Pyx_GIVEREF(__pyx_kp_s__14);
+ __Pyx_GOTREF(__pyx_v_self->co_filename);
+ __Pyx_DECREF(__pyx_v_self->co_filename);
+ __pyx_v_self->co_filename = __pyx_kp_s__14;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":377
+ * def __init__(self):
+ * self.co_filename: str = ""
+ * self.canonical_normalized_filename: str = "" # <<<<<<<<<<<<<<
+ * self.abs_path_filename: str = ""
+ *
+ */
+ __Pyx_INCREF(__pyx_kp_s__14);
+ __Pyx_GIVEREF(__pyx_kp_s__14);
+ __Pyx_GOTREF(__pyx_v_self->canonical_normalized_filename);
+ __Pyx_DECREF(__pyx_v_self->canonical_normalized_filename);
+ __pyx_v_self->canonical_normalized_filename = __pyx_kp_s__14;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":378
+ * self.co_filename: str = ""
+ * self.canonical_normalized_filename: str = ""
+ * self.abs_path_filename: str = "" # <<<<<<<<<<<<<<
+ *
+ * # These is never seen and we never stop, even if it's a callback coming
+ */
+ __Pyx_INCREF(__pyx_kp_s__14);
+ __Pyx_GIVEREF(__pyx_kp_s__14);
+ __Pyx_GOTREF(__pyx_v_self->abs_path_filename);
+ __Pyx_DECREF(__pyx_v_self->abs_path_filename);
+ __pyx_v_self->abs_path_filename = __pyx_kp_s__14;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":382
+ * # These is never seen and we never stop, even if it's a callback coming
+ * # from user code (these are completely invisible to the debugging tracing).
+ * self.always_skip_code: bool = False # <<<<<<<<<<<<<<
+ *
+ * self.breakpoint_found: bool = False
+ */
+ __pyx_v_self->always_skip_code = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":384
+ * self.always_skip_code: bool = False
+ *
+ * self.breakpoint_found: bool = False # <<<<<<<<<<<<<<
+ * self.function_breakpoint_found: bool = False
+ *
+ */
+ __pyx_v_self->breakpoint_found = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":385
+ *
+ * self.breakpoint_found: bool = False
+ * self.function_breakpoint_found: bool = False # <<<<<<<<<<<<<<
+ *
+ * # A plugin can choose whether to stop on function calls or line events.
+ */
+ __pyx_v_self->function_breakpoint_found = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":388
+ *
+ * # A plugin can choose whether to stop on function calls or line events.
+ * self.plugin_line_breakpoint_found: bool = False # <<<<<<<<<<<<<<
+ * self.plugin_call_breakpoint_found: bool = False
+ *
+ */
+ __pyx_v_self->plugin_line_breakpoint_found = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":389
+ * # A plugin can choose whether to stop on function calls or line events.
+ * self.plugin_line_breakpoint_found: bool = False
+ * self.plugin_call_breakpoint_found: bool = False # <<<<<<<<<<<<<<
+ *
+ * self.plugin_line_stepping: bool = False
+ */
+ __pyx_v_self->plugin_call_breakpoint_found = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":391
+ * self.plugin_call_breakpoint_found: bool = False
+ *
+ * self.plugin_line_stepping: bool = False # <<<<<<<<<<<<<<
+ * self.plugin_call_stepping: bool = False
+ * self.plugin_return_stepping: bool = False
+ */
+ __pyx_v_self->plugin_line_stepping = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":392
+ *
+ * self.plugin_line_stepping: bool = False
+ * self.plugin_call_stepping: bool = False # <<<<<<<<<<<<<<
+ * self.plugin_return_stepping: bool = False
+ *
+ */
+ __pyx_v_self->plugin_call_stepping = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":393
+ * self.plugin_line_stepping: bool = False
+ * self.plugin_call_stepping: bool = False
+ * self.plugin_return_stepping: bool = False # <<<<<<<<<<<<<<
+ *
+ * # When pydb_mtime != PyDb.mtime the validity of breakpoints have
+ */
+ __pyx_v_self->plugin_return_stepping = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":398
+ * # to be re-evaluated (if invalid a new FuncCodeInfo must be created and
+ * # tracing can't be disabled for the related frames).
+ * self.pydb_mtime: int = -1 # <<<<<<<<<<<<<<
+ *
+ * self.bp_line_to_breakpoint: Dict[int, Any] = {}
+ */
+ __pyx_v_self->pydb_mtime = -1;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":400
+ * self.pydb_mtime: int = -1
+ *
+ * self.bp_line_to_breakpoint: Dict[int, Any] = {} # <<<<<<<<<<<<<<
+ * self.function_breakpoint = None
+ *
+ */
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 400, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GIVEREF(__pyx_t_1);
+ __Pyx_GOTREF(__pyx_v_self->bp_line_to_breakpoint);
+ __Pyx_DECREF(__pyx_v_self->bp_line_to_breakpoint);
+ __pyx_v_self->bp_line_to_breakpoint = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":401
+ *
+ * self.bp_line_to_breakpoint: Dict[int, Any] = {}
+ * self.function_breakpoint = None # <<<<<<<<<<<<<<
+ *
+ * # This means some file is globally filtered out during debugging. Note
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ __Pyx_GOTREF(__pyx_v_self->function_breakpoint);
+ __Pyx_DECREF(__pyx_v_self->function_breakpoint);
+ __pyx_v_self->function_breakpoint = Py_None;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":406
+ * # that we may still need to pause in it (in a step return to user code,
+ * # we may need to track this one).
+ * self.always_filtered_out: bool = False # <<<<<<<<<<<<<<
+ *
+ * # This should be used to filter code in a CMD_STEP_INTO_MY_CODE
+ */
+ __pyx_v_self->always_filtered_out = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":410
+ * # This should be used to filter code in a CMD_STEP_INTO_MY_CODE
+ * # (and other XXX_MY_CODE variants).
+ * self.filtered_out_force_checked: bool = False # <<<<<<<<<<<<<<
+ *
+ * self.try_except_container_obj: Optional[_TryExceptContainerObj] = None
+ */
+ __pyx_v_self->filtered_out_force_checked = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":412
+ * self.filtered_out_force_checked: bool = False
+ *
+ * self.try_except_container_obj: Optional[_TryExceptContainerObj] = None # <<<<<<<<<<<<<<
+ * self.code_obj: CodeType = None
+ * self.co_name: str = ""
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ __Pyx_GOTREF(__pyx_v_self->try_except_container_obj);
+ __Pyx_DECREF(__pyx_v_self->try_except_container_obj);
+ __pyx_v_self->try_except_container_obj = Py_None;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":413
+ *
+ * self.try_except_container_obj: Optional[_TryExceptContainerObj] = None
+ * self.code_obj: CodeType = None # <<<<<<<<<<<<<<
+ * self.co_name: str = ""
+ *
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ __Pyx_GOTREF(__pyx_v_self->code_obj);
+ __Pyx_DECREF(__pyx_v_self->code_obj);
+ __pyx_v_self->code_obj = Py_None;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":414
+ * self.try_except_container_obj: Optional[_TryExceptContainerObj] = None
+ * self.code_obj: CodeType = None
+ * self.co_name: str = "" # <<<<<<<<<<<<<<
+ *
+ * def get_line_of_offset(self, offset):
+ */
+ __Pyx_INCREF(__pyx_kp_s__14);
+ __Pyx_GIVEREF(__pyx_kp_s__14);
+ __Pyx_GOTREF(__pyx_v_self->co_name);
+ __Pyx_DECREF(__pyx_v_self->co_name);
+ __pyx_v_self->co_name = __pyx_kp_s__14;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":375
+ * # ENDIF
+ * # fmt: on
+ * def __init__(self): # <<<<<<<<<<<<<<
+ * self.co_filename: str = ""
+ * self.canonical_normalized_filename: str = ""
+ */
+
+ /* function exit code */
+ __pyx_r = 0;
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.FuncCodeInfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = -1;
+ __pyx_L0:;
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":416
+ * self.co_name: str = ""
+ *
+ * def get_line_of_offset(self, offset): # <<<<<<<<<<<<<<
+ * for start, end, line in self.code_obj.co_lines():
+ * if offset >= start and offset <= end:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_3get_line_of_offset(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_3get_line_of_offset = {"get_line_of_offset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_3get_line_of_offset, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_3get_line_of_offset(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_offset = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("get_line_of_offset (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offset,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_offset)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 416, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get_line_of_offset") < 0)) __PYX_ERR(0, 416, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v_offset = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("get_line_of_offset", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 416, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.FuncCodeInfo.get_line_of_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_2get_line_of_offset(((struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)__pyx_v_self), __pyx_v_offset);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_2get_line_of_offset(struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v_offset) {
+ PyObject *__pyx_v_start = NULL;
+ PyObject *__pyx_v_end = NULL;
+ PyObject *__pyx_v_line = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ unsigned int __pyx_t_4;
+ Py_ssize_t __pyx_t_5;
+ PyObject *(*__pyx_t_6)(PyObject *);
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ PyObject *__pyx_t_9 = NULL;
+ PyObject *(*__pyx_t_10)(PyObject *);
+ int __pyx_t_11;
+ int __pyx_t_12;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("get_line_of_offset", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":417
+ *
+ * def get_line_of_offset(self, offset):
+ * for start, end, line in self.code_obj.co_lines(): # <<<<<<<<<<<<<<
+ * if offset >= start and offset <= end:
+ * return line
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->code_obj, __pyx_n_s_co_lines); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 417, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = NULL;
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_4 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 417, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
+ __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2);
+ __pyx_t_5 = 0;
+ __pyx_t_6 = NULL;
+ } else {
+ __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 417, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 417, __pyx_L1_error)
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ for (;;) {
+ if (likely(!__pyx_t_6)) {
+ if (likely(PyList_CheckExact(__pyx_t_2))) {
+ {
+ Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
+ #if !CYTHON_ASSUME_SAFE_MACROS
+ if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 417, __pyx_L1_error)
+ #endif
+ if (__pyx_t_5 >= __pyx_temp) break;
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 417, __pyx_L1_error)
+ #else
+ __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 417, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ #endif
+ } else {
+ {
+ Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
+ #if !CYTHON_ASSUME_SAFE_MACROS
+ if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 417, __pyx_L1_error)
+ #endif
+ if (__pyx_t_5 >= __pyx_temp) break;
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 417, __pyx_L1_error)
+ #else
+ __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 417, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ #endif
+ }
+ } else {
+ __pyx_t_1 = __pyx_t_6(__pyx_t_2);
+ if (unlikely(!__pyx_t_1)) {
+ PyObject* exc_type = PyErr_Occurred();
+ if (exc_type) {
+ if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+ else __PYX_ERR(0, 417, __pyx_L1_error)
+ }
+ break;
+ }
+ __Pyx_GOTREF(__pyx_t_1);
+ }
+ if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
+ PyObject* sequence = __pyx_t_1;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 3)) {
+ if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 417, __pyx_L1_error)
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1);
+ __pyx_t_8 = PyTuple_GET_ITEM(sequence, 2);
+ } else {
+ __pyx_t_3 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_7 = PyList_GET_ITEM(sequence, 1);
+ __pyx_t_8 = PyList_GET_ITEM(sequence, 2);
+ }
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_8);
+ #else
+ __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 417, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 417, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 417, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ #endif
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ } else {
+ Py_ssize_t index = -1;
+ __pyx_t_9 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 417, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_9);
+ index = 0; __pyx_t_3 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_3)) goto __pyx_L5_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_3);
+ index = 1; __pyx_t_7 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_7);
+ index = 2; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L5_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_8);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 3) < 0) __PYX_ERR(0, 417, __pyx_L1_error)
+ __pyx_t_10 = NULL;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ goto __pyx_L6_unpacking_done;
+ __pyx_L5_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_10 = NULL;
+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+ __PYX_ERR(0, 417, __pyx_L1_error)
+ __pyx_L6_unpacking_done:;
+ }
+ __Pyx_XDECREF_SET(__pyx_v_start, __pyx_t_3);
+ __pyx_t_3 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_end, __pyx_t_7);
+ __pyx_t_7 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_line, __pyx_t_8);
+ __pyx_t_8 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":418
+ * def get_line_of_offset(self, offset):
+ * for start, end, line in self.code_obj.co_lines():
+ * if offset >= start and offset <= end: # <<<<<<<<<<<<<<
+ * return line
+ * return -1
+ */
+ __pyx_t_1 = PyObject_RichCompare(__pyx_v_offset, __pyx_v_start, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 418, __pyx_L1_error)
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 418, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_12) {
+ } else {
+ __pyx_t_11 = __pyx_t_12;
+ goto __pyx_L8_bool_binop_done;
+ }
+ __pyx_t_1 = PyObject_RichCompare(__pyx_v_offset, __pyx_v_end, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 418, __pyx_L1_error)
+ __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 418, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_11 = __pyx_t_12;
+ __pyx_L8_bool_binop_done:;
+ if (__pyx_t_11) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":419
+ * for start, end, line in self.code_obj.co_lines():
+ * if offset >= start and offset <= end:
+ * return line # <<<<<<<<<<<<<<
+ * return -1
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_line);
+ __pyx_r = __pyx_v_line;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":418
+ * def get_line_of_offset(self, offset):
+ * for start, end, line in self.code_obj.co_lines():
+ * if offset >= start and offset <= end: # <<<<<<<<<<<<<<
+ * return line
+ * return -1
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":417
+ *
+ * def get_line_of_offset(self, offset):
+ * for start, end, line in self.code_obj.co_lines(): # <<<<<<<<<<<<<<
+ * if offset >= start and offset <= end:
+ * return line
+ */
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":420
+ * if offset >= start and offset <= end:
+ * return line
+ * return -1 # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_int_neg_1);
+ __pyx_r = __pyx_int_neg_1;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":416
+ * self.co_name: str = ""
+ *
+ * def get_line_of_offset(self, offset): # <<<<<<<<<<<<<<
+ * for start, end, line in self.code_obj.co_lines():
+ * if offset >= start and offset <= end:
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.FuncCodeInfo.get_line_of_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_start);
+ __Pyx_XDECREF(__pyx_v_end);
+ __Pyx_XDECREF(__pyx_v_line);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_5__reduce_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_5__reduce_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_nargs > 0)) {
+ __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
+ if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_4__reduce_cython__(((struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)__pyx_v_self));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_4__reduce_cython__(struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v_self) {
+ PyObject *__pyx_v_state = 0;
+ PyObject *__pyx_v__dict = 0;
+ int __pyx_v_use_setstate;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_10 = NULL;
+ PyObject *__pyx_t_11 = NULL;
+ PyObject *__pyx_t_12 = NULL;
+ int __pyx_t_13;
+ int __pyx_t_14;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__reduce_cython__", 1);
+
+ /* "(tree fragment)":5
+ * cdef object _dict
+ * cdef bint use_setstate
+ * state = (self.abs_path_filename, self.always_filtered_out, self.always_skip_code, self.bp_line_to_breakpoint, self.breakpoint_found, self.canonical_normalized_filename, self.co_filename, self.co_name, self.code_obj, self.filtered_out_force_checked, self.function_breakpoint, self.function_breakpoint_found, self.plugin_call_breakpoint_found, self.plugin_call_stepping, self.plugin_line_breakpoint_found, self.plugin_line_stepping, self.plugin_return_stepping, self.pydb_mtime, self.try_except_container_obj) # <<<<<<<<<<<<<<
+ * _dict = getattr(self, '__dict__', None)
+ * if _dict is not None:
+ */
+ __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->always_filtered_out); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->always_skip_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_self->breakpoint_found); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_self->filtered_out_force_checked); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_self->function_breakpoint_found); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyBool_FromLong(__pyx_v_self->plugin_call_breakpoint_found); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_self->plugin_call_stepping); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = __Pyx_PyBool_FromLong(__pyx_v_self->plugin_line_breakpoint_found); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_9 = __Pyx_PyBool_FromLong(__pyx_v_self->plugin_line_stepping); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_10 = __Pyx_PyBool_FromLong(__pyx_v_self->plugin_return_stepping); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_self->pydb_mtime); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_12 = PyTuple_New(19); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_INCREF(__pyx_v_self->abs_path_filename);
+ __Pyx_GIVEREF(__pyx_v_self->abs_path_filename);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_self->abs_path_filename)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_2);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_self->bp_line_to_breakpoint);
+ __Pyx_GIVEREF(__pyx_v_self->bp_line_to_breakpoint);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 3, __pyx_v_self->bp_line_to_breakpoint)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_3);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 4, __pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_self->canonical_normalized_filename);
+ __Pyx_GIVEREF(__pyx_v_self->canonical_normalized_filename);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 5, __pyx_v_self->canonical_normalized_filename)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_self->co_filename);
+ __Pyx_GIVEREF(__pyx_v_self->co_filename);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 6, __pyx_v_self->co_filename)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_self->co_name);
+ __Pyx_GIVEREF(__pyx_v_self->co_name);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 7, __pyx_v_self->co_name)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_self->code_obj);
+ __Pyx_GIVEREF(__pyx_v_self->code_obj);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 8, __pyx_v_self->code_obj)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_4);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 9, __pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_self->function_breakpoint);
+ __Pyx_GIVEREF(__pyx_v_self->function_breakpoint);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 10, __pyx_v_self->function_breakpoint)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_5);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 11, __pyx_t_5)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_6);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 12, __pyx_t_6)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_7);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 13, __pyx_t_7)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_8);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 14, __pyx_t_8)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_9);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 15, __pyx_t_9)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_10);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 16, __pyx_t_10)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_11);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 17, __pyx_t_11)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_self->try_except_container_obj);
+ __Pyx_GIVEREF(__pyx_v_self->try_except_container_obj);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 18, __pyx_v_self->try_except_container_obj)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __pyx_t_1 = 0;
+ __pyx_t_2 = 0;
+ __pyx_t_3 = 0;
+ __pyx_t_4 = 0;
+ __pyx_t_5 = 0;
+ __pyx_t_6 = 0;
+ __pyx_t_7 = 0;
+ __pyx_t_8 = 0;
+ __pyx_t_9 = 0;
+ __pyx_t_10 = 0;
+ __pyx_t_11 = 0;
+ __pyx_v_state = ((PyObject*)__pyx_t_12);
+ __pyx_t_12 = 0;
+
+ /* "(tree fragment)":6
+ * cdef bint use_setstate
+ * state = (self.abs_path_filename, self.always_filtered_out, self.always_skip_code, self.bp_line_to_breakpoint, self.breakpoint_found, self.canonical_normalized_filename, self.co_filename, self.co_name, self.code_obj, self.filtered_out_force_checked, self.function_breakpoint, self.function_breakpoint_found, self.plugin_call_breakpoint_found, self.plugin_call_stepping, self.plugin_line_breakpoint_found, self.plugin_line_stepping, self.plugin_return_stepping, self.pydb_mtime, self.try_except_container_obj)
+ * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<<
+ * if _dict is not None:
+ * state += (_dict,)
+ */
+ __pyx_t_12 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 6, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __pyx_v__dict = __pyx_t_12;
+ __pyx_t_12 = 0;
+
+ /* "(tree fragment)":7
+ * state = (self.abs_path_filename, self.always_filtered_out, self.always_skip_code, self.bp_line_to_breakpoint, self.breakpoint_found, self.canonical_normalized_filename, self.co_filename, self.co_name, self.code_obj, self.filtered_out_force_checked, self.function_breakpoint, self.function_breakpoint_found, self.plugin_call_breakpoint_found, self.plugin_call_stepping, self.plugin_line_breakpoint_found, self.plugin_line_stepping, self.plugin_return_stepping, self.pydb_mtime, self.try_except_container_obj)
+ * _dict = getattr(self, '__dict__', None)
+ * if _dict is not None: # <<<<<<<<<<<<<<
+ * state += (_dict,)
+ * use_setstate = True
+ */
+ __pyx_t_13 = (__pyx_v__dict != Py_None);
+ if (__pyx_t_13) {
+
+ /* "(tree fragment)":8
+ * _dict = getattr(self, '__dict__', None)
+ * if _dict is not None:
+ * state += (_dict,) # <<<<<<<<<<<<<<
+ * use_setstate = True
+ * else:
+ */
+ __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 8, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_INCREF(__pyx_v__dict);
+ __Pyx_GIVEREF(__pyx_v__dict);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v__dict)) __PYX_ERR(1, 8, __pyx_L1_error);
+ __pyx_t_11 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 8, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_11));
+ __pyx_t_11 = 0;
+
+ /* "(tree fragment)":9
+ * if _dict is not None:
+ * state += (_dict,)
+ * use_setstate = True # <<<<<<<<<<<<<<
+ * else:
+ * use_setstate = self.abs_path_filename is not None or self.bp_line_to_breakpoint is not None or self.canonical_normalized_filename is not None or self.co_filename is not None or self.co_name is not None or self.code_obj is not None or self.function_breakpoint is not None or self.try_except_container_obj is not None
+ */
+ __pyx_v_use_setstate = 1;
+
+ /* "(tree fragment)":7
+ * state = (self.abs_path_filename, self.always_filtered_out, self.always_skip_code, self.bp_line_to_breakpoint, self.breakpoint_found, self.canonical_normalized_filename, self.co_filename, self.co_name, self.code_obj, self.filtered_out_force_checked, self.function_breakpoint, self.function_breakpoint_found, self.plugin_call_breakpoint_found, self.plugin_call_stepping, self.plugin_line_breakpoint_found, self.plugin_line_stepping, self.plugin_return_stepping, self.pydb_mtime, self.try_except_container_obj)
+ * _dict = getattr(self, '__dict__', None)
+ * if _dict is not None: # <<<<<<<<<<<<<<
+ * state += (_dict,)
+ * use_setstate = True
+ */
+ goto __pyx_L3;
+ }
+
+ /* "(tree fragment)":11
+ * use_setstate = True
+ * else:
+ * use_setstate = self.abs_path_filename is not None or self.bp_line_to_breakpoint is not None or self.canonical_normalized_filename is not None or self.co_filename is not None or self.co_name is not None or self.code_obj is not None or self.function_breakpoint is not None or self.try_except_container_obj is not None # <<<<<<<<<<<<<<
+ * if use_setstate:
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x3f403d2, None), state
+ */
+ /*else*/ {
+ __pyx_t_14 = (__pyx_v_self->abs_path_filename != ((PyObject*)Py_None));
+ if (!__pyx_t_14) {
+ } else {
+ __pyx_t_13 = __pyx_t_14;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __pyx_t_14 = (__pyx_v_self->bp_line_to_breakpoint != ((PyObject*)Py_None));
+ if (!__pyx_t_14) {
+ } else {
+ __pyx_t_13 = __pyx_t_14;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __pyx_t_14 = (__pyx_v_self->canonical_normalized_filename != ((PyObject*)Py_None));
+ if (!__pyx_t_14) {
+ } else {
+ __pyx_t_13 = __pyx_t_14;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __pyx_t_14 = (__pyx_v_self->co_filename != ((PyObject*)Py_None));
+ if (!__pyx_t_14) {
+ } else {
+ __pyx_t_13 = __pyx_t_14;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __pyx_t_14 = (__pyx_v_self->co_name != ((PyObject*)Py_None));
+ if (!__pyx_t_14) {
+ } else {
+ __pyx_t_13 = __pyx_t_14;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __pyx_t_14 = (__pyx_v_self->code_obj != Py_None);
+ if (!__pyx_t_14) {
+ } else {
+ __pyx_t_13 = __pyx_t_14;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __pyx_t_14 = (__pyx_v_self->function_breakpoint != Py_None);
+ if (!__pyx_t_14) {
+ } else {
+ __pyx_t_13 = __pyx_t_14;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __pyx_t_14 = (__pyx_v_self->try_except_container_obj != Py_None);
+ __pyx_t_13 = __pyx_t_14;
+ __pyx_L4_bool_binop_done:;
+ __pyx_v_use_setstate = __pyx_t_13;
+ }
+ __pyx_L3:;
+
+ /* "(tree fragment)":12
+ * else:
+ * use_setstate = self.abs_path_filename is not None or self.bp_line_to_breakpoint is not None or self.canonical_normalized_filename is not None or self.co_filename is not None or self.co_name is not None or self.code_obj is not None or self.function_breakpoint is not None or self.try_except_container_obj is not None
+ * if use_setstate: # <<<<<<<<<<<<<<
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x3f403d2, None), state
+ * else:
+ */
+ if (__pyx_v_use_setstate) {
+
+ /* "(tree fragment)":13
+ * use_setstate = self.abs_path_filename is not None or self.bp_line_to_breakpoint is not None or self.canonical_normalized_filename is not None or self.co_filename is not None or self.co_name is not None or self.code_obj is not None or self.function_breakpoint is not None or self.try_except_container_obj is not None
+ * if use_setstate:
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x3f403d2, None), state # <<<<<<<<<<<<<<
+ * else:
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x3f403d2, state)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_pyx_unpickle_FuncCodeInfo); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 13, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_int_66323410);
+ __Pyx_GIVEREF(__pyx_int_66323410);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_int_66323410)) __PYX_ERR(1, 13, __pyx_L1_error);
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 2, Py_None)) __PYX_ERR(1, 13, __pyx_L1_error);
+ __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_GIVEREF(__pyx_t_11);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11)) __PYX_ERR(1, 13, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_12);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_12)) __PYX_ERR(1, 13, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_state);
+ __Pyx_GIVEREF(__pyx_v_state);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_v_state)) __PYX_ERR(1, 13, __pyx_L1_error);
+ __pyx_t_11 = 0;
+ __pyx_t_12 = 0;
+ __pyx_r = __pyx_t_10;
+ __pyx_t_10 = 0;
+ goto __pyx_L0;
+
+ /* "(tree fragment)":12
+ * else:
+ * use_setstate = self.abs_path_filename is not None or self.bp_line_to_breakpoint is not None or self.canonical_normalized_filename is not None or self.co_filename is not None or self.co_name is not None or self.code_obj is not None or self.function_breakpoint is not None or self.try_except_container_obj is not None
+ * if use_setstate: # <<<<<<<<<<<<<<
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x3f403d2, None), state
+ * else:
+ */
+ }
+
+ /* "(tree fragment)":15
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x3f403d2, None), state
+ * else:
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x3f403d2, state) # <<<<<<<<<<<<<<
+ * def __setstate_cython__(self, __pyx_state):
+ * __pyx_unpickle_FuncCodeInfo__set_state(self, __pyx_state)
+ */
+ /*else*/ {
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_pyx_unpickle_FuncCodeInfo); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 15, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_int_66323410);
+ __Pyx_GIVEREF(__pyx_int_66323410);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_int_66323410)) __PYX_ERR(1, 15, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_state);
+ __Pyx_GIVEREF(__pyx_v_state);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_v_state)) __PYX_ERR(1, 15, __pyx_L1_error);
+ __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_GIVEREF(__pyx_t_10);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10)) __PYX_ERR(1, 15, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_12);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_12)) __PYX_ERR(1, 15, __pyx_L1_error);
+ __pyx_t_10 = 0;
+ __pyx_t_12 = 0;
+ __pyx_r = __pyx_t_11;
+ __pyx_t_11 = 0;
+ goto __pyx_L0;
+ }
+
+ /* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_12);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.FuncCodeInfo.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_state);
+ __Pyx_XDECREF(__pyx_v__dict);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x3f403d2, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle_FuncCodeInfo__set_state(self, __pyx_state)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_7__setstate_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_7__setstate_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v___pyx_state = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 16, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 16, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v___pyx_state = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 16, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.FuncCodeInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_6__setstate_cython__(((struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)__pyx_v_self), __pyx_v___pyx_state);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_6__setstate_cython__(struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__setstate_cython__", 1);
+
+ /* "(tree fragment)":17
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x3f403d2, state)
+ * def __setstate_cython__(self, __pyx_state):
+ * __pyx_unpickle_FuncCodeInfo__set_state(self, __pyx_state) # <<<<<<<<<<<<<<
+ */
+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 17, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython___pyx_unpickle_FuncCodeInfo__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x3f403d2, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle_FuncCodeInfo__set_state(self, __pyx_state)
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.FuncCodeInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":425
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _get_thread_info(bint create, int depth): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _get_thread_info(create: bool, depth: int) -> Optional[ThreadInfo]:
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__get_thread_info(int __pyx_v_create, int __pyx_v_depth) {
+ PyObject *__pyx_v_thread_info = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ int __pyx_t_7;
+ PyObject *__pyx_t_8 = NULL;
+ PyObject *__pyx_t_9 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_get_thread_info", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":435
+ * May return None if the thread is still not active.
+ * """
+ * try: # <<<<<<<<<<<<<<
+ * # Note: changing to a `dict[thread.ident] = thread_info` had almost no
+ * # effect in the performance.
+ */
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":438
+ * # Note: changing to a `dict[thread.ident] = thread_info` had almost no
+ * # effect in the performance.
+ * return _thread_local_info.thread_info # <<<<<<<<<<<<<<
+ * except:
+ * if not create:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 438, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_thread_info); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 438, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_r = __pyx_t_5;
+ __pyx_t_5 = 0;
+ goto __pyx_L7_try_return;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":435
+ * May return None if the thread is still not active.
+ * """
+ * try: # <<<<<<<<<<<<<<
+ * # Note: changing to a `dict[thread.ident] = thread_info` had almost no
+ * # effect in the performance.
+ */
+ }
+ __pyx_L3_error:;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":439
+ * # effect in the performance.
+ * return _thread_local_info.thread_info
+ * except: # <<<<<<<<<<<<<<
+ * if not create:
+ * return None
+ */
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._get_thread_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(0, 439, __pyx_L5_except_error)
+ __Pyx_XGOTREF(__pyx_t_5);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_6);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":440
+ * return _thread_local_info.thread_info
+ * except:
+ * if not create: # <<<<<<<<<<<<<<
+ * return None
+ * thread_info = _create_thread_info(depth + 1)
+ */
+ __pyx_t_7 = (!__pyx_v_create);
+ if (__pyx_t_7) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":441
+ * except:
+ * if not create:
+ * return None # <<<<<<<<<<<<<<
+ * thread_info = _create_thread_info(depth + 1)
+ * if thread_info is None:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L6_except_return;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":440
+ * return _thread_local_info.thread_info
+ * except:
+ * if not create: # <<<<<<<<<<<<<<
+ * return None
+ * thread_info = _create_thread_info(depth + 1)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":442
+ * if not create:
+ * return None
+ * thread_info = _create_thread_info(depth + 1) # <<<<<<<<<<<<<<
+ * if thread_info is None:
+ * return None
+ */
+ __pyx_t_8 = __Pyx_PyInt_From_long((__pyx_v_depth + 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 442, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_9 = __pyx_f_29_pydevd_sys_monitoring_cython__create_thread_info(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 442, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_v_thread_info = __pyx_t_9;
+ __pyx_t_9 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":443
+ * return None
+ * thread_info = _create_thread_info(depth + 1)
+ * if thread_info is None: # <<<<<<<<<<<<<<
+ * return None
+ *
+ */
+ __pyx_t_7 = (__pyx_v_thread_info == Py_None);
+ if (__pyx_t_7) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":444
+ * thread_info = _create_thread_info(depth + 1)
+ * if thread_info is None:
+ * return None # <<<<<<<<<<<<<<
+ *
+ * _thread_local_info.thread_info = thread_info
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L6_except_return;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":443
+ * return None
+ * thread_info = _create_thread_info(depth + 1)
+ * if thread_info is None: # <<<<<<<<<<<<<<
+ * return None
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":446
+ * return None
+ *
+ * _thread_local_info.thread_info = thread_info # <<<<<<<<<<<<<<
+ * return _thread_local_info.thread_info
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 446, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ if (__Pyx_PyObject_SetAttrStr(__pyx_t_9, __pyx_n_s_thread_info, __pyx_v_thread_info) < 0) __PYX_ERR(0, 446, __pyx_L5_except_error)
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":447
+ *
+ * _thread_local_info.thread_info = thread_info
+ * return _thread_local_info.thread_info # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 447, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_thread_info); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 447, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_r = __pyx_t_8;
+ __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L6_except_return;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":435
+ * May return None if the thread is still not active.
+ * """
+ * try: # <<<<<<<<<<<<<<
+ * # Note: changing to a `dict[thread.ident] = thread_info` had almost no
+ * # effect in the performance.
+ */
+ __pyx_L5_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L1_error;
+ __pyx_L7_try_return:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L0;
+ __pyx_L6_except_return:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L0;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":425
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _get_thread_info(bint create, int depth): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _get_thread_info(create: bool, depth: int) -> Optional[ThreadInfo]:
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._get_thread_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_thread_info);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":456
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _get_code_line_info(code_obj, _cache={}): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _get_code_line_info(code_obj, _cache={}):
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__get_code_line_info(PyObject *__pyx_v_code_obj, struct __pyx_opt_args_29_pydevd_sys_monitoring_cython__get_code_line_info *__pyx_optional_args) {
+ PyObject *__pyx_v__cache = __pyx_k__15;
+ PyObject *__pyx_v_line_to_offset = NULL;
+ PyObject *__pyx_v_first_line = NULL;
+ PyObject *__pyx_v_last_line = NULL;
+ PyObject *__pyx_v_offset = NULL;
+ PyObject *__pyx_v_line = NULL;
+ PyObject *__pyx_v_ret = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ PyObject *__pyx_t_9 = NULL;
+ unsigned int __pyx_t_10;
+ Py_ssize_t __pyx_t_11;
+ PyObject *(*__pyx_t_12)(PyObject *);
+ PyObject *__pyx_t_13 = NULL;
+ PyObject *__pyx_t_14 = NULL;
+ PyObject *(*__pyx_t_15)(PyObject *);
+ int __pyx_t_16;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_get_code_line_info", 1);
+ if (__pyx_optional_args) {
+ if (__pyx_optional_args->__pyx_n > 0) {
+ __pyx_v__cache = __pyx_optional_args->_cache;
+ }
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":461
+ * # ENDIF
+ * # fmt: on
+ * try: # <<<<<<<<<<<<<<
+ * return _cache[code_obj]
+ * except:
+ */
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":462
+ * # fmt: on
+ * try:
+ * return _cache[code_obj] # <<<<<<<<<<<<<<
+ * except:
+ * line_to_offset = {}
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v__cache, __pyx_v_code_obj); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 462, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
+ goto __pyx_L7_try_return;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":461
+ * # ENDIF
+ * # fmt: on
+ * try: # <<<<<<<<<<<<<<
+ * return _cache[code_obj]
+ * except:
+ */
+ }
+ __pyx_L3_error:;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":463
+ * try:
+ * return _cache[code_obj]
+ * except: # <<<<<<<<<<<<<<
+ * line_to_offset = {}
+ * first_line = None
+ */
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._get_code_line_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(0, 463, __pyx_L5_except_error)
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_5);
+ __Pyx_XGOTREF(__pyx_t_6);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":464
+ * return _cache[code_obj]
+ * except:
+ * line_to_offset = {} # <<<<<<<<<<<<<<
+ * first_line = None
+ * last_line = None
+ */
+ __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 464, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_v_line_to_offset = ((PyObject*)__pyx_t_7);
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":465
+ * except:
+ * line_to_offset = {}
+ * first_line = None # <<<<<<<<<<<<<<
+ * last_line = None
+ *
+ */
+ __Pyx_INCREF(Py_None);
+ __pyx_v_first_line = Py_None;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":466
+ * line_to_offset = {}
+ * first_line = None
+ * last_line = None # <<<<<<<<<<<<<<
+ *
+ * for offset, line in dis.findlinestarts(code_obj):
+ */
+ __Pyx_INCREF(Py_None);
+ __pyx_v_last_line = Py_None;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":468
+ * last_line = None
+ *
+ * for offset, line in dis.findlinestarts(code_obj): # <<<<<<<<<<<<<<
+ * line_to_offset[line] = offset
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_dis); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 468, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_findlinestarts); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 468, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
+ __pyx_t_10 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_9))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_9, function);
+ __pyx_t_10 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_code_obj};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 468, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ }
+ if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
+ __pyx_t_9 = __pyx_t_7; __Pyx_INCREF(__pyx_t_9);
+ __pyx_t_11 = 0;
+ __pyx_t_12 = NULL;
+ } else {
+ __pyx_t_11 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 468, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_12 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 468, __pyx_L5_except_error)
+ }
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ for (;;) {
+ if (likely(!__pyx_t_12)) {
+ if (likely(PyList_CheckExact(__pyx_t_9))) {
+ {
+ Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_9);
+ #if !CYTHON_ASSUME_SAFE_MACROS
+ if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 468, __pyx_L5_except_error)
+ #endif
+ if (__pyx_t_11 >= __pyx_temp) break;
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ __pyx_t_7 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_11); __Pyx_INCREF(__pyx_t_7); __pyx_t_11++; if (unlikely((0 < 0))) __PYX_ERR(0, 468, __pyx_L5_except_error)
+ #else
+ __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_9, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 468, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ #endif
+ } else {
+ {
+ Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_9);
+ #if !CYTHON_ASSUME_SAFE_MACROS
+ if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 468, __pyx_L5_except_error)
+ #endif
+ if (__pyx_t_11 >= __pyx_temp) break;
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_11); __Pyx_INCREF(__pyx_t_7); __pyx_t_11++; if (unlikely((0 < 0))) __PYX_ERR(0, 468, __pyx_L5_except_error)
+ #else
+ __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_9, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 468, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ #endif
+ }
+ } else {
+ __pyx_t_7 = __pyx_t_12(__pyx_t_9);
+ if (unlikely(!__pyx_t_7)) {
+ PyObject* exc_type = PyErr_Occurred();
+ if (exc_type) {
+ if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+ else __PYX_ERR(0, 468, __pyx_L5_except_error)
+ }
+ break;
+ }
+ __Pyx_GOTREF(__pyx_t_7);
+ }
+ if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
+ PyObject* sequence = __pyx_t_7;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 2)) {
+ if (size > 2) __Pyx_RaiseTooManyValuesError(2);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 468, __pyx_L5_except_error)
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_13 = PyTuple_GET_ITEM(sequence, 1);
+ } else {
+ __pyx_t_8 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_13 = PyList_GET_ITEM(sequence, 1);
+ }
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_13);
+ #else
+ __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 468, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_13 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 468, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_13);
+ #endif
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ } else {
+ Py_ssize_t index = -1;
+ __pyx_t_14 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 468, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_15 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_14);
+ index = 0; __pyx_t_8 = __pyx_t_15(__pyx_t_14); if (unlikely(!__pyx_t_8)) goto __pyx_L13_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_8);
+ index = 1; __pyx_t_13 = __pyx_t_15(__pyx_t_14); if (unlikely(!__pyx_t_13)) goto __pyx_L13_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_13);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_14), 2) < 0) __PYX_ERR(0, 468, __pyx_L5_except_error)
+ __pyx_t_15 = NULL;
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ goto __pyx_L14_unpacking_done;
+ __pyx_L13_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __pyx_t_15 = NULL;
+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+ __PYX_ERR(0, 468, __pyx_L5_except_error)
+ __pyx_L14_unpacking_done:;
+ }
+ __Pyx_XDECREF_SET(__pyx_v_offset, __pyx_t_8);
+ __pyx_t_8 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_line, __pyx_t_13);
+ __pyx_t_13 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":469
+ *
+ * for offset, line in dis.findlinestarts(code_obj):
+ * line_to_offset[line] = offset # <<<<<<<<<<<<<<
+ *
+ * if line_to_offset:
+ */
+ if (unlikely((PyDict_SetItem(__pyx_v_line_to_offset, __pyx_v_line, __pyx_v_offset) < 0))) __PYX_ERR(0, 469, __pyx_L5_except_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":468
+ * last_line = None
+ *
+ * for offset, line in dis.findlinestarts(code_obj): # <<<<<<<<<<<<<<
+ * line_to_offset[line] = offset
+ *
+ */
+ }
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":471
+ * line_to_offset[line] = offset
+ *
+ * if line_to_offset: # <<<<<<<<<<<<<<
+ * first_line = min(line_to_offset)
+ * last_line = max(line_to_offset)
+ */
+ __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_v_line_to_offset); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 471, __pyx_L5_except_error)
+ if (__pyx_t_16) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":472
+ *
+ * if line_to_offset:
+ * first_line = min(line_to_offset) # <<<<<<<<<<<<<<
+ * last_line = max(line_to_offset)
+ * ret = _CodeLineInfo(line_to_offset, first_line, last_line)
+ */
+ __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_builtin_min, __pyx_v_line_to_offset); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 472, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF_SET(__pyx_v_first_line, __pyx_t_9);
+ __pyx_t_9 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":473
+ * if line_to_offset:
+ * first_line = min(line_to_offset)
+ * last_line = max(line_to_offset) # <<<<<<<<<<<<<<
+ * ret = _CodeLineInfo(line_to_offset, first_line, last_line)
+ * _cache[code_obj] = ret
+ */
+ __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_v_line_to_offset); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 473, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF_SET(__pyx_v_last_line, __pyx_t_9);
+ __pyx_t_9 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":471
+ * line_to_offset[line] = offset
+ *
+ * if line_to_offset: # <<<<<<<<<<<<<<
+ * first_line = min(line_to_offset)
+ * last_line = max(line_to_offset)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":474
+ * first_line = min(line_to_offset)
+ * last_line = max(line_to_offset)
+ * ret = _CodeLineInfo(line_to_offset, first_line, last_line) # <<<<<<<<<<<<<<
+ * _cache[code_obj] = ret
+ * return ret
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_CodeLineInfo); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 474, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_13 = NULL;
+ __pyx_t_10 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_13)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_13);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_10 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_v_line_to_offset, __pyx_v_first_line, __pyx_v_last_line};
+ __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_10, 3+__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 474, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __pyx_v_ret = __pyx_t_9;
+ __pyx_t_9 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":475
+ * last_line = max(line_to_offset)
+ * ret = _CodeLineInfo(line_to_offset, first_line, last_line)
+ * _cache[code_obj] = ret # <<<<<<<<<<<<<<
+ * return ret
+ *
+ */
+ if (unlikely((PyObject_SetItem(__pyx_v__cache, __pyx_v_code_obj, __pyx_v_ret) < 0))) __PYX_ERR(0, 475, __pyx_L5_except_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":476
+ * ret = _CodeLineInfo(line_to_offset, first_line, last_line)
+ * _cache[code_obj] = ret
+ * return ret # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_ret);
+ __pyx_r = __pyx_v_ret;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L6_except_return;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":461
+ * # ENDIF
+ * # fmt: on
+ * try: # <<<<<<<<<<<<<<
+ * return _cache[code_obj]
+ * except:
+ */
+ __pyx_L5_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L1_error;
+ __pyx_L7_try_return:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L0;
+ __pyx_L6_except_return:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L0;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":456
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _get_code_line_info(code_obj, _cache={}): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _get_code_line_info(code_obj, _cache={}):
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_13);
+ __Pyx_XDECREF(__pyx_t_14);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._get_code_line_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_line_to_offset);
+ __Pyx_XDECREF(__pyx_v_first_line);
+ __Pyx_XDECREF(__pyx_v_last_line);
+ __Pyx_XDECREF(__pyx_v_offset);
+ __Pyx_XDECREF(__pyx_v_line);
+ __Pyx_XDECREF(__pyx_v_ret);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":484
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef FuncCodeInfo _get_func_code_info(code_obj, frame_or_depth): # <<<<<<<<<<<<<<
+ * cdef FuncCodeInfo func_code_info
+ * # ELSE
+ */
+
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_3_get_func_code_info(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_f_29_pydevd_sys_monitoring_cython__get_func_code_info(PyObject *__pyx_v_code_obj, PyObject *__pyx_v_frame_or_depth, CYTHON_UNUSED int __pyx_skip_dispatch) {
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v_func_code_info = 0;
+ PyObject *__pyx_v_py_db = NULL;
+ PyObject *__pyx_v_cache_file_type = 0;
+ PyObject *__pyx_v_cache_file_type_key = 0;
+ PyCodeObject *__pyx_v_code;
+ PyObject *__pyx_v_co_filename = 0;
+ PyObject *__pyx_v_co_name = 0;
+ PyObject *__pyx_v_code_line_info = NULL;
+ PyObject *__pyx_v_line_to_offset = NULL;
+ PyObject *__pyx_v_abs_path_real_path_and_base = NULL;
+ PyObject *__pyx_v_frame = NULL;
+ PyObject *__pyx_v_file_type = NULL;
+ PyObject *__pyx_v_breakpoints = 0;
+ PyObject *__pyx_v_function_breakpoint = 0;
+ PyObject *__pyx_v_bp_line_to_breakpoint = NULL;
+ PyObject *__pyx_v_breakpoint_line = NULL;
+ PyObject *__pyx_v_bp = NULL;
+ PyObject *__pyx_v_plugin_manager = NULL;
+ PyObject *__pyx_v_is_tracked_frame = NULL;
+ PyObject *__pyx_v_required_events_breakpoint = NULL;
+ PyObject *__pyx_v_required_events_stepping = NULL;
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ int __pyx_t_3;
+ PyObject *__pyx_t_4 = NULL;
+ unsigned int __pyx_t_5;
+ int __pyx_t_6;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_10 = NULL;
+ PyObject *__pyx_t_11 = NULL;
+ PyObject *__pyx_t_12 = NULL;
+ struct __pyx_opt_args_29_pydevd_sys_monitoring_cython__getframe __pyx_t_13;
+ int __pyx_t_14;
+ Py_ssize_t __pyx_t_15;
+ Py_ssize_t __pyx_t_16;
+ int __pyx_t_17;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_get_func_code_info", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":498
+ * Note that this can be called by any thread.
+ * """
+ * py_db = GlobalDebuggerHolder.global_dbg # <<<<<<<<<<<<<<
+ * if py_db is None:
+ * return None
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 498, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_global_dbg); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 498, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v_py_db = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":499
+ * """
+ * py_db = GlobalDebuggerHolder.global_dbg
+ * if py_db is None: # <<<<<<<<<<<<<<
+ * return None
+ *
+ */
+ __pyx_t_3 = (__pyx_v_py_db == Py_None);
+ if (__pyx_t_3) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":500
+ * py_db = GlobalDebuggerHolder.global_dbg
+ * if py_db is None:
+ * return None # <<<<<<<<<<<<<<
+ *
+ * func_code_info = _code_to_func_code_info_cache.get(code_obj)
+ */
+ __Pyx_XDECREF((PyObject *)__pyx_r);
+ __pyx_r = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)Py_None); __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":499
+ * """
+ * py_db = GlobalDebuggerHolder.global_dbg
+ * if py_db is None: # <<<<<<<<<<<<<<
+ * return None
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":502
+ * return None
+ *
+ * func_code_info = _code_to_func_code_info_cache.get(code_obj) # <<<<<<<<<<<<<<
+ * if func_code_info is not None:
+ * if func_code_info.pydb_mtime == py_db.mtime:
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_code_to_func_code_info_cache); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 502, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 502, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_code_obj};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 502, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo))))) __PYX_ERR(0, 502, __pyx_L1_error)
+ __pyx_v_func_code_info = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)__pyx_t_2);
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":503
+ *
+ * func_code_info = _code_to_func_code_info_cache.get(code_obj)
+ * if func_code_info is not None: # <<<<<<<<<<<<<<
+ * if func_code_info.pydb_mtime == py_db.mtime:
+ * # if DEBUG:
+ */
+ __pyx_t_3 = (((PyObject *)__pyx_v_func_code_info) != Py_None);
+ if (__pyx_t_3) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":504
+ * func_code_info = _code_to_func_code_info_cache.get(code_obj)
+ * if func_code_info is not None:
+ * if func_code_info.pydb_mtime == py_db.mtime: # <<<<<<<<<<<<<<
+ * # if DEBUG:
+ * # print('_get_func_code_info: matched mtime', key, code_obj)
+ */
+ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_func_code_info->pydb_mtime); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 504, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_mtime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 504, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 504, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_3) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":507
+ * # if DEBUG:
+ * # print('_get_func_code_info: matched mtime', key, code_obj)
+ * return func_code_info # <<<<<<<<<<<<<<
+ *
+ * # fmt: off
+ */
+ __Pyx_XDECREF((PyObject *)__pyx_r);
+ __Pyx_INCREF((PyObject *)__pyx_v_func_code_info);
+ __pyx_r = __pyx_v_func_code_info;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":504
+ * func_code_info = _code_to_func_code_info_cache.get(code_obj)
+ * if func_code_info is not None:
+ * if func_code_info.pydb_mtime == py_db.mtime: # <<<<<<<<<<<<<<
+ * # if DEBUG:
+ * # print('_get_func_code_info: matched mtime', key, code_obj)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":503
+ *
+ * func_code_info = _code_to_func_code_info_cache.get(code_obj)
+ * if func_code_info is not None: # <<<<<<<<<<<<<<
+ * if func_code_info.pydb_mtime == py_db.mtime:
+ * # if DEBUG:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":516
+ * cdef str co_filename
+ * cdef str co_name
+ * code = code_obj # <<<<<<<<<<<<<<
+ * co_filename = code.co_filename
+ * co_name = code.co_name
+ */
+ __pyx_v_code = ((PyCodeObject *)__pyx_v_code_obj);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":517
+ * cdef str co_name
+ * code = code_obj
+ * co_filename = code.co_filename # <<<<<<<<<<<<<<
+ * co_name = code.co_name
+ * # ELSE
+ */
+ __pyx_t_1 = ((PyObject *)__pyx_v_code->co_filename);
+ __Pyx_INCREF(__pyx_t_1);
+ __pyx_v_co_filename = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":518
+ * code = code_obj
+ * co_filename = code.co_filename
+ * co_name = code.co_name # <<<<<<<<<<<<<<
+ * # ELSE
+ * # cache_file_type: dict
+ */
+ __pyx_t_1 = ((PyObject *)__pyx_v_code->co_name);
+ __Pyx_INCREF(__pyx_t_1);
+ __pyx_v_co_name = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":530
+ * # print('_get_func_code_info: new (mtime did not match)', key, code_obj)
+ *
+ * func_code_info = FuncCodeInfo() # <<<<<<<<<<<<<<
+ * func_code_info.code_obj = code_obj
+ * code_line_info = _get_code_line_info(code_obj)
+ */
+ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF_SET(__pyx_v_func_code_info, ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)__pyx_t_1));
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":531
+ *
+ * func_code_info = FuncCodeInfo()
+ * func_code_info.code_obj = code_obj # <<<<<<<<<<<<<<
+ * code_line_info = _get_code_line_info(code_obj)
+ * line_to_offset = code_line_info.line_to_offset
+ */
+ __Pyx_INCREF(__pyx_v_code_obj);
+ __Pyx_GIVEREF(__pyx_v_code_obj);
+ __Pyx_GOTREF(__pyx_v_func_code_info->code_obj);
+ __Pyx_DECREF(__pyx_v_func_code_info->code_obj);
+ __pyx_v_func_code_info->code_obj = __pyx_v_code_obj;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":532
+ * func_code_info = FuncCodeInfo()
+ * func_code_info.code_obj = code_obj
+ * code_line_info = _get_code_line_info(code_obj) # <<<<<<<<<<<<<<
+ * line_to_offset = code_line_info.line_to_offset
+ * func_code_info.pydb_mtime = py_db.mtime
+ */
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython__get_code_line_info(__pyx_v_code_obj, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 532, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_code_line_info = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":533
+ * func_code_info.code_obj = code_obj
+ * code_line_info = _get_code_line_info(code_obj)
+ * line_to_offset = code_line_info.line_to_offset # <<<<<<<<<<<<<<
+ * func_code_info.pydb_mtime = py_db.mtime
+ *
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_code_line_info, __pyx_n_s_line_to_offset); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 533, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_line_to_offset = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":534
+ * code_line_info = _get_code_line_info(code_obj)
+ * line_to_offset = code_line_info.line_to_offset
+ * func_code_info.pydb_mtime = py_db.mtime # <<<<<<<<<<<<<<
+ *
+ * func_code_info.co_filename = co_filename
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_mtime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 534, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 534, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v_func_code_info->pydb_mtime = __pyx_t_6;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":536
+ * func_code_info.pydb_mtime = py_db.mtime
+ *
+ * func_code_info.co_filename = co_filename # <<<<<<<<<<<<<<
+ * func_code_info.co_name = co_name
+ *
+ */
+ __Pyx_INCREF(__pyx_v_co_filename);
+ __Pyx_GIVEREF(__pyx_v_co_filename);
+ __Pyx_GOTREF(__pyx_v_func_code_info->co_filename);
+ __Pyx_DECREF(__pyx_v_func_code_info->co_filename);
+ __pyx_v_func_code_info->co_filename = __pyx_v_co_filename;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":537
+ *
+ * func_code_info.co_filename = co_filename
+ * func_code_info.co_name = co_name # <<<<<<<<<<<<<<
+ *
+ * # Compute whether to always skip this.
+ */
+ __Pyx_INCREF(__pyx_v_co_name);
+ __Pyx_GIVEREF(__pyx_v_co_name);
+ __Pyx_GOTREF(__pyx_v_func_code_info->co_name);
+ __Pyx_DECREF(__pyx_v_func_code_info->co_name);
+ __pyx_v_func_code_info->co_name = __pyx_v_co_name;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":540
+ *
+ * # Compute whether to always skip this.
+ * try: # <<<<<<<<<<<<<<
+ * abs_path_real_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[co_filename]
+ * except:
+ */
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
+ __Pyx_XGOTREF(__pyx_t_7);
+ __Pyx_XGOTREF(__pyx_t_8);
+ __Pyx_XGOTREF(__pyx_t_9);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":541
+ * # Compute whether to always skip this.
+ * try:
+ * abs_path_real_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[co_filename] # <<<<<<<<<<<<<<
+ * except:
+ * abs_path_real_path_and_base = get_abs_path_real_path_and_base_from_file(co_filename)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 541, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_t_1, __pyx_v_co_filename); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 541, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v_abs_path_real_path_and_base = __pyx_t_4;
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":540
+ *
+ * # Compute whether to always skip this.
+ * try: # <<<<<<<<<<<<<<
+ * abs_path_real_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[co_filename]
+ * except:
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ goto __pyx_L11_try_end;
+ __pyx_L6_error:;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":542
+ * try:
+ * abs_path_real_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[co_filename]
+ * except: # <<<<<<<<<<<<<<
+ * abs_path_real_path_and_base = get_abs_path_real_path_and_base_from_file(co_filename)
+ *
+ */
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._get_func_code_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(0, 542, __pyx_L8_except_error)
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_2);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":543
+ * abs_path_real_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[co_filename]
+ * except:
+ * abs_path_real_path_and_base = get_abs_path_real_path_and_base_from_file(co_filename) # <<<<<<<<<<<<<<
+ *
+ * func_code_info.abs_path_filename = abs_path_real_path_and_base[0]
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_get_abs_path_real_path_and_base); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 543, __pyx_L8_except_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_12 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_11))) {
+ __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_12)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
+ __Pyx_INCREF(__pyx_t_12);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_11, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_v_co_filename};
+ __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 543, __pyx_L8_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ }
+ __Pyx_XDECREF_SET(__pyx_v_abs_path_real_path_and_base, __pyx_t_10);
+ __pyx_t_10 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ goto __pyx_L7_exception_handled;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":540
+ *
+ * # Compute whether to always skip this.
+ * try: # <<<<<<<<<<<<<<
+ * abs_path_real_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[co_filename]
+ * except:
+ */
+ __pyx_L8_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+ goto __pyx_L1_error;
+ __pyx_L7_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+ __pyx_L11_try_end:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":545
+ * abs_path_real_path_and_base = get_abs_path_real_path_and_base_from_file(co_filename)
+ *
+ * func_code_info.abs_path_filename = abs_path_real_path_and_base[0] # <<<<<<<<<<<<<<
+ * func_code_info.canonical_normalized_filename = abs_path_real_path_and_base[1]
+ *
+ */
+ __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_abs_path_real_path_and_base, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(0, 545, __pyx_L1_error)
+ __Pyx_GIVEREF(__pyx_t_2);
+ __Pyx_GOTREF(__pyx_v_func_code_info->abs_path_filename);
+ __Pyx_DECREF(__pyx_v_func_code_info->abs_path_filename);
+ __pyx_v_func_code_info->abs_path_filename = ((PyObject*)__pyx_t_2);
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":546
+ *
+ * func_code_info.abs_path_filename = abs_path_real_path_and_base[0]
+ * func_code_info.canonical_normalized_filename = abs_path_real_path_and_base[1] # <<<<<<<<<<<<<<
+ *
+ * frame = None
+ */
+ __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_abs_path_real_path_and_base, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 546, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(0, 546, __pyx_L1_error)
+ __Pyx_GIVEREF(__pyx_t_2);
+ __Pyx_GOTREF(__pyx_v_func_code_info->canonical_normalized_filename);
+ __Pyx_DECREF(__pyx_v_func_code_info->canonical_normalized_filename);
+ __pyx_v_func_code_info->canonical_normalized_filename = ((PyObject*)__pyx_t_2);
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":548
+ * func_code_info.canonical_normalized_filename = abs_path_real_path_and_base[1]
+ *
+ * frame = None # <<<<<<<<<<<<<<
+ * cache_file_type = py_db.get_cache_file_type()
+ * # Note: this cache key must be the same from PyDB.get_file_type() -- see it for comments
+ */
+ __Pyx_INCREF(Py_None);
+ __pyx_v_frame = Py_None;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":549
+ *
+ * frame = None
+ * cache_file_type = py_db.get_cache_file_type() # <<<<<<<<<<<<<<
+ * # Note: this cache key must be the same from PyDB.get_file_type() -- see it for comments
+ * # on the cache.
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_get_cache_file_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 549, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ if (!(likely(PyDict_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_2))) __PYX_ERR(0, 549, __pyx_L1_error)
+ __pyx_v_cache_file_type = ((PyObject*)__pyx_t_2);
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":552
+ * # Note: this cache key must be the same from PyDB.get_file_type() -- see it for comments
+ * # on the cache.
+ * cache_file_type_key = (code.co_firstlineno, abs_path_real_path_and_base[0], code_obj) # <<<<<<<<<<<<<<
+ * try:
+ * file_type = cache_file_type[cache_file_type_key] # Make it faster
+ */
+ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_code->co_firstlineno); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 552, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_abs_path_real_path_and_base, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 552, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 552, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_2);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(0, 552, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(0, 552, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_code_obj);
+ __Pyx_GIVEREF(__pyx_v_code_obj);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_code_obj)) __PYX_ERR(0, 552, __pyx_L1_error);
+ __pyx_t_2 = 0;
+ __pyx_t_1 = 0;
+ __pyx_v_cache_file_type_key = ((PyObject*)__pyx_t_4);
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":553
+ * # on the cache.
+ * cache_file_type_key = (code.co_firstlineno, abs_path_real_path_and_base[0], code_obj)
+ * try: # <<<<<<<<<<<<<<
+ * file_type = cache_file_type[cache_file_type_key] # Make it faster
+ * except:
+ */
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
+ __Pyx_XGOTREF(__pyx_t_9);
+ __Pyx_XGOTREF(__pyx_t_8);
+ __Pyx_XGOTREF(__pyx_t_7);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":554
+ * cache_file_type_key = (code.co_firstlineno, abs_path_real_path_and_base[0], code_obj)
+ * try:
+ * file_type = cache_file_type[cache_file_type_key] # Make it faster # <<<<<<<<<<<<<<
+ * except:
+ * if frame is None:
+ */
+ if (unlikely(__pyx_v_cache_file_type == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(0, 554, __pyx_L14_error)
+ }
+ __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_cache_file_type, __pyx_v_cache_file_type_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 554, __pyx_L14_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_v_file_type = __pyx_t_4;
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":553
+ * # on the cache.
+ * cache_file_type_key = (code.co_firstlineno, abs_path_real_path_and_base[0], code_obj)
+ * try: # <<<<<<<<<<<<<<
+ * file_type = cache_file_type[cache_file_type_key] # Make it faster
+ * except:
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ goto __pyx_L19_try_end;
+ __pyx_L14_error:;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":555
+ * try:
+ * file_type = cache_file_type[cache_file_type_key] # Make it faster
+ * except: # <<<<<<<<<<<<<<
+ * if frame is None:
+ * if frame_or_depth.__class__ == int:
+ */
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._get_func_code_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(0, 555, __pyx_L16_except_error)
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_2);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":556
+ * file_type = cache_file_type[cache_file_type_key] # Make it faster
+ * except:
+ * if frame is None: # <<<<<<<<<<<<<<
+ * if frame_or_depth.__class__ == int:
+ * frame = _getframe(frame_or_depth + 1)
+ */
+ __pyx_t_3 = (__pyx_v_frame == Py_None);
+ if (__pyx_t_3) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":557
+ * except:
+ * if frame is None:
+ * if frame_or_depth.__class__ == int: # <<<<<<<<<<<<<<
+ * frame = _getframe(frame_or_depth + 1)
+ * else:
+ */
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame_or_depth, __pyx_n_s_class); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 557, __pyx_L16_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_11 = PyObject_RichCompare(__pyx_t_10, ((PyObject *)(&PyInt_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 557, __pyx_L16_except_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 557, __pyx_L16_except_error)
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ if (__pyx_t_3) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":558
+ * if frame is None:
+ * if frame_or_depth.__class__ == int:
+ * frame = _getframe(frame_or_depth + 1) # <<<<<<<<<<<<<<
+ * else:
+ * frame = frame_or_depth
+ */
+ __pyx_t_11 = __Pyx_PyInt_AddObjC(__pyx_v_frame_or_depth, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 558, __pyx_L16_except_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_13.__pyx_n = 1;
+ __pyx_t_13.depth = __pyx_t_11;
+ __pyx_t_10 = __pyx_f_29_pydevd_sys_monitoring_cython__getframe(&__pyx_t_13); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 558, __pyx_L16_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_10);
+ __pyx_t_10 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":557
+ * except:
+ * if frame is None:
+ * if frame_or_depth.__class__ == int: # <<<<<<<<<<<<<<
+ * frame = _getframe(frame_or_depth + 1)
+ * else:
+ */
+ goto __pyx_L23;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":560
+ * frame = _getframe(frame_or_depth + 1)
+ * else:
+ * frame = frame_or_depth # <<<<<<<<<<<<<<
+ * assert frame.f_code is code_obj, "%s != %s" % (frame.f_code, code_obj)
+ *
+ */
+ /*else*/ {
+ __Pyx_INCREF(__pyx_v_frame_or_depth);
+ __Pyx_DECREF_SET(__pyx_v_frame, __pyx_v_frame_or_depth);
+ }
+ __pyx_L23:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":561
+ * else:
+ * frame = frame_or_depth
+ * assert frame.f_code is code_obj, "%s != %s" % (frame.f_code, code_obj) # <<<<<<<<<<<<<<
+ *
+ * file_type = py_db.get_file_type(frame, abs_path_real_path_and_base) # we don't want to debug anything related to pydevd
+ */
+ #ifndef CYTHON_WITHOUT_ASSERTIONS
+ if (unlikely(__pyx_assertions_enabled())) {
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 561, __pyx_L16_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_3 = (__pyx_t_10 == __pyx_v_code_obj);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_3)) {
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 561, __pyx_L16_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 561, __pyx_L16_except_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_GIVEREF(__pyx_t_10);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10)) __PYX_ERR(0, 561, __pyx_L16_except_error);
+ __Pyx_INCREF(__pyx_v_code_obj);
+ __Pyx_GIVEREF(__pyx_v_code_obj);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_v_code_obj)) __PYX_ERR(0, 561, __pyx_L16_except_error);
+ __pyx_t_10 = 0;
+ __pyx_t_10 = __Pyx_PyString_Format(__pyx_kp_s_s_s, __pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 561, __pyx_L16_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_Raise(__pyx_builtin_AssertionError, __pyx_t_10, 0, 0);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __PYX_ERR(0, 561, __pyx_L16_except_error)
+ }
+ }
+ #else
+ if ((1)); else __PYX_ERR(0, 561, __pyx_L16_except_error)
+ #endif
+
+ /* "_pydevd_sys_monitoring_cython.pyx":556
+ * file_type = cache_file_type[cache_file_type_key] # Make it faster
+ * except:
+ * if frame is None: # <<<<<<<<<<<<<<
+ * if frame_or_depth.__class__ == int:
+ * frame = _getframe(frame_or_depth + 1)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":563
+ * assert frame.f_code is code_obj, "%s != %s" % (frame.f_code, code_obj)
+ *
+ * file_type = py_db.get_file_type(frame, abs_path_real_path_and_base) # we don't want to debug anything related to pydevd # <<<<<<<<<<<<<<
+ *
+ * if file_type is not None:
+ */
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_get_file_type); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 563, __pyx_L16_except_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_12 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_11))) {
+ __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_12)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
+ __Pyx_INCREF(__pyx_t_12);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_11, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_v_frame, __pyx_v_abs_path_real_path_and_base};
+ __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 563, __pyx_L16_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ }
+ __Pyx_XDECREF_SET(__pyx_v_file_type, __pyx_t_10);
+ __pyx_t_10 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ goto __pyx_L15_exception_handled;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":553
+ * # on the cache.
+ * cache_file_type_key = (code.co_firstlineno, abs_path_real_path_and_base[0], code_obj)
+ * try: # <<<<<<<<<<<<<<
+ * file_type = cache_file_type[cache_file_type_key] # Make it faster
+ * except:
+ */
+ __pyx_L16_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_8, __pyx_t_7);
+ goto __pyx_L1_error;
+ __pyx_L15_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_8, __pyx_t_7);
+ __pyx_L19_try_end:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":565
+ * file_type = py_db.get_file_type(frame, abs_path_real_path_and_base) # we don't want to debug anything related to pydevd
+ *
+ * if file_type is not None: # <<<<<<<<<<<<<<
+ * func_code_info.always_skip_code = True
+ * func_code_info.always_filtered_out = True
+ */
+ __pyx_t_3 = (__pyx_v_file_type != Py_None);
+ if (__pyx_t_3) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":566
+ *
+ * if file_type is not None:
+ * func_code_info.always_skip_code = True # <<<<<<<<<<<<<<
+ * func_code_info.always_filtered_out = True
+ * _code_to_func_code_info_cache[code_obj] = func_code_info
+ */
+ __pyx_v_func_code_info->always_skip_code = 1;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":567
+ * if file_type is not None:
+ * func_code_info.always_skip_code = True
+ * func_code_info.always_filtered_out = True # <<<<<<<<<<<<<<
+ * _code_to_func_code_info_cache[code_obj] = func_code_info
+ * return func_code_info
+ */
+ __pyx_v_func_code_info->always_filtered_out = 1;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":568
+ * func_code_info.always_skip_code = True
+ * func_code_info.always_filtered_out = True
+ * _code_to_func_code_info_cache[code_obj] = func_code_info # <<<<<<<<<<<<<<
+ * return func_code_info
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_code_to_func_code_info_cache); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 568, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (unlikely((PyObject_SetItem(__pyx_t_2, __pyx_v_code_obj, ((PyObject *)__pyx_v_func_code_info)) < 0))) __PYX_ERR(0, 568, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":569
+ * func_code_info.always_filtered_out = True
+ * _code_to_func_code_info_cache[code_obj] = func_code_info
+ * return func_code_info # <<<<<<<<<<<<<<
+ *
+ * # still not set, check for dont trace comments.
+ */
+ __Pyx_XDECREF((PyObject *)__pyx_r);
+ __Pyx_INCREF((PyObject *)__pyx_v_func_code_info);
+ __pyx_r = __pyx_v_func_code_info;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":565
+ * file_type = py_db.get_file_type(frame, abs_path_real_path_and_base) # we don't want to debug anything related to pydevd
+ *
+ * if file_type is not None: # <<<<<<<<<<<<<<
+ * func_code_info.always_skip_code = True
+ * func_code_info.always_filtered_out = True
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":572
+ *
+ * # still not set, check for dont trace comments.
+ * if pydevd_dont_trace.should_trace_hook is not None: # <<<<<<<<<<<<<<
+ * # I.e.: cache the result skip (no need to evaluate the same frame multiple times).
+ * # Note that on a code reload, we won't re-evaluate this because in practice, the frame.f_code
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pydevd_dont_trace); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 572, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_should_trace_hook); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_3 = (__pyx_t_1 != Py_None);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_3) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":576
+ * # Note that on a code reload, we won't re-evaluate this because in practice, the frame.f_code
+ * # Which will be handled by this frame is read-only, so, we can cache it safely.
+ * if not pydevd_dont_trace.should_trace_hook(code_obj, func_code_info.abs_path_filename): # <<<<<<<<<<<<<<
+ * if frame is None:
+ * if frame_or_depth.__class__ == int:
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pydevd_dont_trace); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 576, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_should_trace_hook); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 576, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_code_obj, __pyx_v_func_code_info->abs_path_filename};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 576, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_14 = (!__pyx_t_3);
+ if (__pyx_t_14) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":577
+ * # Which will be handled by this frame is read-only, so, we can cache it safely.
+ * if not pydevd_dont_trace.should_trace_hook(code_obj, func_code_info.abs_path_filename):
+ * if frame is None: # <<<<<<<<<<<<<<
+ * if frame_or_depth.__class__ == int:
+ * frame = _getframe(frame_or_depth + 1)
+ */
+ __pyx_t_14 = (__pyx_v_frame == Py_None);
+ if (__pyx_t_14) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":578
+ * if not pydevd_dont_trace.should_trace_hook(code_obj, func_code_info.abs_path_filename):
+ * if frame is None:
+ * if frame_or_depth.__class__ == int: # <<<<<<<<<<<<<<
+ * frame = _getframe(frame_or_depth + 1)
+ * else:
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame_or_depth, __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 578, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, ((PyObject *)(&PyInt_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 578, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 578, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (__pyx_t_14) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":579
+ * if frame is None:
+ * if frame_or_depth.__class__ == int:
+ * frame = _getframe(frame_or_depth + 1) # <<<<<<<<<<<<<<
+ * else:
+ * frame = frame_or_depth
+ */
+ __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_v_frame_or_depth, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 579, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_13.__pyx_n = 1;
+ __pyx_t_13.depth = __pyx_t_4;
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython__getframe(&__pyx_t_13); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 579, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":578
+ * if not pydevd_dont_trace.should_trace_hook(code_obj, func_code_info.abs_path_filename):
+ * if frame is None:
+ * if frame_or_depth.__class__ == int: # <<<<<<<<<<<<<<
+ * frame = _getframe(frame_or_depth + 1)
+ * else:
+ */
+ goto __pyx_L28;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":581
+ * frame = _getframe(frame_or_depth + 1)
+ * else:
+ * frame = frame_or_depth # <<<<<<<<<<<<<<
+ * assert frame.f_code is code_obj
+ *
+ */
+ /*else*/ {
+ __Pyx_INCREF(__pyx_v_frame_or_depth);
+ __Pyx_DECREF_SET(__pyx_v_frame, __pyx_v_frame_or_depth);
+ }
+ __pyx_L28:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":577
+ * # Which will be handled by this frame is read-only, so, we can cache it safely.
+ * if not pydevd_dont_trace.should_trace_hook(code_obj, func_code_info.abs_path_filename):
+ * if frame is None: # <<<<<<<<<<<<<<
+ * if frame_or_depth.__class__ == int:
+ * frame = _getframe(frame_or_depth + 1)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":582
+ * else:
+ * frame = frame_or_depth
+ * assert frame.f_code is code_obj # <<<<<<<<<<<<<<
+ *
+ * func_code_info.always_filtered_out = True
+ */
+ #ifndef CYTHON_WITHOUT_ASSERTIONS
+ if (unlikely(__pyx_assertions_enabled())) {
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 582, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_14 = (__pyx_t_1 == __pyx_v_code_obj);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_14)) {
+ __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
+ __PYX_ERR(0, 582, __pyx_L1_error)
+ }
+ }
+ #else
+ if ((1)); else __PYX_ERR(0, 582, __pyx_L1_error)
+ #endif
+
+ /* "_pydevd_sys_monitoring_cython.pyx":584
+ * assert frame.f_code is code_obj
+ *
+ * func_code_info.always_filtered_out = True # <<<<<<<<<<<<<<
+ * _code_to_func_code_info_cache[code_obj] = func_code_info
+ * return func_code_info
+ */
+ __pyx_v_func_code_info->always_filtered_out = 1;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":585
+ *
+ * func_code_info.always_filtered_out = True
+ * _code_to_func_code_info_cache[code_obj] = func_code_info # <<<<<<<<<<<<<<
+ * return func_code_info
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_code_to_func_code_info_cache); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 585, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (unlikely((PyObject_SetItem(__pyx_t_1, __pyx_v_code_obj, ((PyObject *)__pyx_v_func_code_info)) < 0))) __PYX_ERR(0, 585, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":586
+ * func_code_info.always_filtered_out = True
+ * _code_to_func_code_info_cache[code_obj] = func_code_info
+ * return func_code_info # <<<<<<<<<<<<<<
+ *
+ * if frame is None:
+ */
+ __Pyx_XDECREF((PyObject *)__pyx_r);
+ __Pyx_INCREF((PyObject *)__pyx_v_func_code_info);
+ __pyx_r = __pyx_v_func_code_info;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":576
+ * # Note that on a code reload, we won't re-evaluate this because in practice, the frame.f_code
+ * # Which will be handled by this frame is read-only, so, we can cache it safely.
+ * if not pydevd_dont_trace.should_trace_hook(code_obj, func_code_info.abs_path_filename): # <<<<<<<<<<<<<<
+ * if frame is None:
+ * if frame_or_depth.__class__ == int:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":572
+ *
+ * # still not set, check for dont trace comments.
+ * if pydevd_dont_trace.should_trace_hook is not None: # <<<<<<<<<<<<<<
+ * # I.e.: cache the result skip (no need to evaluate the same frame multiple times).
+ * # Note that on a code reload, we won't re-evaluate this because in practice, the frame.f_code
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":588
+ * return func_code_info
+ *
+ * if frame is None: # <<<<<<<<<<<<<<
+ * if frame_or_depth.__class__ == int:
+ * frame = _getframe(frame_or_depth + 1)
+ */
+ __pyx_t_14 = (__pyx_v_frame == Py_None);
+ if (__pyx_t_14) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":589
+ *
+ * if frame is None:
+ * if frame_or_depth.__class__ == int: # <<<<<<<<<<<<<<
+ * frame = _getframe(frame_or_depth + 1)
+ * else:
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame_or_depth, __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 589, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, ((PyObject *)(&PyInt_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 589, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 589, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (__pyx_t_14) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":590
+ * if frame is None:
+ * if frame_or_depth.__class__ == int:
+ * frame = _getframe(frame_or_depth + 1) # <<<<<<<<<<<<<<
+ * else:
+ * frame = frame_or_depth
+ */
+ __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_v_frame_or_depth, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 590, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_13.__pyx_n = 1;
+ __pyx_t_13.depth = __pyx_t_4;
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython__getframe(&__pyx_t_13); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 590, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":589
+ *
+ * if frame is None:
+ * if frame_or_depth.__class__ == int: # <<<<<<<<<<<<<<
+ * frame = _getframe(frame_or_depth + 1)
+ * else:
+ */
+ goto __pyx_L30;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":592
+ * frame = _getframe(frame_or_depth + 1)
+ * else:
+ * frame = frame_or_depth # <<<<<<<<<<<<<<
+ * assert frame.f_code is code_obj
+ *
+ */
+ /*else*/ {
+ __Pyx_INCREF(__pyx_v_frame_or_depth);
+ __Pyx_DECREF_SET(__pyx_v_frame, __pyx_v_frame_or_depth);
+ }
+ __pyx_L30:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":593
+ * else:
+ * frame = frame_or_depth
+ * assert frame.f_code is code_obj # <<<<<<<<<<<<<<
+ *
+ * func_code_info.filtered_out_force_checked = py_db.apply_files_filter(frame, func_code_info.abs_path_filename, True)
+ */
+ #ifndef CYTHON_WITHOUT_ASSERTIONS
+ if (unlikely(__pyx_assertions_enabled())) {
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_14 = (__pyx_t_1 == __pyx_v_code_obj);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_14)) {
+ __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
+ __PYX_ERR(0, 593, __pyx_L1_error)
+ }
+ }
+ #else
+ if ((1)); else __PYX_ERR(0, 593, __pyx_L1_error)
+ #endif
+
+ /* "_pydevd_sys_monitoring_cython.pyx":588
+ * return func_code_info
+ *
+ * if frame is None: # <<<<<<<<<<<<<<
+ * if frame_or_depth.__class__ == int:
+ * frame = _getframe(frame_or_depth + 1)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":595
+ * assert frame.f_code is code_obj
+ *
+ * func_code_info.filtered_out_force_checked = py_db.apply_files_filter(frame, func_code_info.abs_path_filename, True) # <<<<<<<<<<<<<<
+ *
+ * if py_db.is_files_filter_enabled:
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 595, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_2 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_v_frame, __pyx_v_func_code_info->abs_path_filename, Py_True};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 595, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 595, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v_func_code_info->filtered_out_force_checked = __pyx_t_14;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":597
+ * func_code_info.filtered_out_force_checked = py_db.apply_files_filter(frame, func_code_info.abs_path_filename, True)
+ *
+ * if py_db.is_files_filter_enabled: # <<<<<<<<<<<<<<
+ * func_code_info.always_filtered_out = func_code_info.filtered_out_force_checked
+ * if func_code_info.always_filtered_out:
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_is_files_filter_enabled); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 597, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_14) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":598
+ *
+ * if py_db.is_files_filter_enabled:
+ * func_code_info.always_filtered_out = func_code_info.filtered_out_force_checked # <<<<<<<<<<<<<<
+ * if func_code_info.always_filtered_out:
+ * _code_to_func_code_info_cache[code_obj] = func_code_info
+ */
+ __pyx_t_14 = __pyx_v_func_code_info->filtered_out_force_checked;
+ __pyx_v_func_code_info->always_filtered_out = __pyx_t_14;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":599
+ * if py_db.is_files_filter_enabled:
+ * func_code_info.always_filtered_out = func_code_info.filtered_out_force_checked
+ * if func_code_info.always_filtered_out: # <<<<<<<<<<<<<<
+ * _code_to_func_code_info_cache[code_obj] = func_code_info
+ * return func_code_info
+ */
+ if (__pyx_v_func_code_info->always_filtered_out) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":600
+ * func_code_info.always_filtered_out = func_code_info.filtered_out_force_checked
+ * if func_code_info.always_filtered_out:
+ * _code_to_func_code_info_cache[code_obj] = func_code_info # <<<<<<<<<<<<<<
+ * return func_code_info
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_code_to_func_code_info_cache); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 600, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (unlikely((PyObject_SetItem(__pyx_t_1, __pyx_v_code_obj, ((PyObject *)__pyx_v_func_code_info)) < 0))) __PYX_ERR(0, 600, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":601
+ * if func_code_info.always_filtered_out:
+ * _code_to_func_code_info_cache[code_obj] = func_code_info
+ * return func_code_info # <<<<<<<<<<<<<<
+ *
+ * else:
+ */
+ __Pyx_XDECREF((PyObject *)__pyx_r);
+ __Pyx_INCREF((PyObject *)__pyx_v_func_code_info);
+ __pyx_r = __pyx_v_func_code_info;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":599
+ * if py_db.is_files_filter_enabled:
+ * func_code_info.always_filtered_out = func_code_info.filtered_out_force_checked
+ * if func_code_info.always_filtered_out: # <<<<<<<<<<<<<<
+ * _code_to_func_code_info_cache[code_obj] = func_code_info
+ * return func_code_info
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":597
+ * func_code_info.filtered_out_force_checked = py_db.apply_files_filter(frame, func_code_info.abs_path_filename, True)
+ *
+ * if py_db.is_files_filter_enabled: # <<<<<<<<<<<<<<
+ * func_code_info.always_filtered_out = func_code_info.filtered_out_force_checked
+ * if func_code_info.always_filtered_out:
+ */
+ goto __pyx_L31;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":604
+ *
+ * else:
+ * func_code_info.always_filtered_out = False # <<<<<<<<<<<<<<
+ *
+ * # Handle regular breakpoints
+ */
+ /*else*/ {
+ __pyx_v_func_code_info->always_filtered_out = 0;
+ }
+ __pyx_L31:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":607
+ *
+ * # Handle regular breakpoints
+ * breakpoints: dict = py_db.breakpoints.get(func_code_info.canonical_normalized_filename) # <<<<<<<<<<<<<<
+ * function_breakpoint: object = py_db.function_breakpoint_name_to_breakpoint.get(func_code_info.co_name)
+ * # print('\n---')
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_breakpoints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 607, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 607, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_func_code_info->canonical_normalized_filename};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 607, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(0, 607, __pyx_L1_error)
+ __pyx_v_breakpoints = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":608
+ * # Handle regular breakpoints
+ * breakpoints: dict = py_db.breakpoints.get(func_code_info.canonical_normalized_filename)
+ * function_breakpoint: object = py_db.function_breakpoint_name_to_breakpoint.get(func_code_info.co_name) # <<<<<<<<<<<<<<
+ * # print('\n---')
+ * # print(py_db.breakpoints)
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_function_breakpoint_name_to_brea); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 608, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 608, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_func_code_info->co_name};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 608, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_v_function_breakpoint = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":613
+ * # print(func_code_info.canonical_normalized_filename)
+ * # print(py_db.breakpoints.get(func_code_info.canonical_normalized_filename))
+ * if function_breakpoint: # <<<<<<<<<<<<<<
+ * # Go directly into tracing mode
+ * func_code_info.function_breakpoint_found = True
+ */
+ __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_v_function_breakpoint); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 613, __pyx_L1_error)
+ if (__pyx_t_14) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":615
+ * if function_breakpoint:
+ * # Go directly into tracing mode
+ * func_code_info.function_breakpoint_found = True # <<<<<<<<<<<<<<
+ * func_code_info.function_breakpoint = function_breakpoint
+ *
+ */
+ __pyx_v_func_code_info->function_breakpoint_found = 1;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":616
+ * # Go directly into tracing mode
+ * func_code_info.function_breakpoint_found = True
+ * func_code_info.function_breakpoint = function_breakpoint # <<<<<<<<<<<<<<
+ *
+ * if breakpoints:
+ */
+ __Pyx_INCREF(__pyx_v_function_breakpoint);
+ __Pyx_GIVEREF(__pyx_v_function_breakpoint);
+ __Pyx_GOTREF(__pyx_v_func_code_info->function_breakpoint);
+ __Pyx_DECREF(__pyx_v_func_code_info->function_breakpoint);
+ __pyx_v_func_code_info->function_breakpoint = __pyx_v_function_breakpoint;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":613
+ * # print(func_code_info.canonical_normalized_filename)
+ * # print(py_db.breakpoints.get(func_code_info.canonical_normalized_filename))
+ * if function_breakpoint: # <<<<<<<<<<<<<<
+ * # Go directly into tracing mode
+ * func_code_info.function_breakpoint_found = True
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":618
+ * func_code_info.function_breakpoint = function_breakpoint
+ *
+ * if breakpoints: # <<<<<<<<<<<<<<
+ * # if DEBUG:
+ * # print('found breakpoints', code_obj_py.co_name, breakpoints)
+ */
+ __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_v_breakpoints); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 618, __pyx_L1_error)
+ if (__pyx_t_14) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":622
+ * # print('found breakpoints', code_obj_py.co_name, breakpoints)
+ *
+ * bp_line_to_breakpoint = {} # <<<<<<<<<<<<<<
+ *
+ * for breakpoint_line, bp in breakpoints.items():
+ */
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 622, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_bp_line_to_breakpoint = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":624
+ * bp_line_to_breakpoint = {}
+ *
+ * for breakpoint_line, bp in breakpoints.items(): # <<<<<<<<<<<<<<
+ * if breakpoint_line in line_to_offset:
+ * bp_line_to_breakpoint[breakpoint_line] = bp
+ */
+ __pyx_t_15 = 0;
+ if (unlikely(__pyx_v_breakpoints == Py_None)) {
+ PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
+ __PYX_ERR(0, 624, __pyx_L1_error)
+ }
+ __pyx_t_4 = __Pyx_dict_iterator(__pyx_v_breakpoints, 1, __pyx_n_s_items, (&__pyx_t_16), (&__pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 624, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_1);
+ __pyx_t_1 = __pyx_t_4;
+ __pyx_t_4 = 0;
+ while (1) {
+ __pyx_t_17 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_16, &__pyx_t_15, &__pyx_t_4, &__pyx_t_2, NULL, __pyx_t_6);
+ if (unlikely(__pyx_t_17 == 0)) break;
+ if (unlikely(__pyx_t_17 == -1)) __PYX_ERR(0, 624, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_XDECREF_SET(__pyx_v_breakpoint_line, __pyx_t_4);
+ __pyx_t_4 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_bp, __pyx_t_2);
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":625
+ *
+ * for breakpoint_line, bp in breakpoints.items():
+ * if breakpoint_line in line_to_offset: # <<<<<<<<<<<<<<
+ * bp_line_to_breakpoint[breakpoint_line] = bp
+ *
+ */
+ __pyx_t_14 = (__Pyx_PySequence_ContainsTF(__pyx_v_breakpoint_line, __pyx_v_line_to_offset, Py_EQ)); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 625, __pyx_L1_error)
+ if (__pyx_t_14) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":626
+ * for breakpoint_line, bp in breakpoints.items():
+ * if breakpoint_line in line_to_offset:
+ * bp_line_to_breakpoint[breakpoint_line] = bp # <<<<<<<<<<<<<<
+ *
+ * func_code_info.breakpoint_found = bool(bp_line_to_breakpoint)
+ */
+ if (unlikely((PyDict_SetItem(__pyx_v_bp_line_to_breakpoint, __pyx_v_breakpoint_line, __pyx_v_bp) < 0))) __PYX_ERR(0, 626, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":625
+ *
+ * for breakpoint_line, bp in breakpoints.items():
+ * if breakpoint_line in line_to_offset: # <<<<<<<<<<<<<<
+ * bp_line_to_breakpoint[breakpoint_line] = bp
+ *
+ */
+ }
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":628
+ * bp_line_to_breakpoint[breakpoint_line] = bp
+ *
+ * func_code_info.breakpoint_found = bool(bp_line_to_breakpoint) # <<<<<<<<<<<<<<
+ * func_code_info.bp_line_to_breakpoint = bp_line_to_breakpoint
+ *
+ */
+ __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_v_bp_line_to_breakpoint); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 628, __pyx_L1_error)
+ __pyx_v_func_code_info->breakpoint_found = (!(!__pyx_t_14));
+
+ /* "_pydevd_sys_monitoring_cython.pyx":629
+ *
+ * func_code_info.breakpoint_found = bool(bp_line_to_breakpoint)
+ * func_code_info.bp_line_to_breakpoint = bp_line_to_breakpoint # <<<<<<<<<<<<<<
+ *
+ * if py_db.plugin:
+ */
+ __Pyx_INCREF(__pyx_v_bp_line_to_breakpoint);
+ __Pyx_GIVEREF(__pyx_v_bp_line_to_breakpoint);
+ __Pyx_GOTREF(__pyx_v_func_code_info->bp_line_to_breakpoint);
+ __Pyx_DECREF(__pyx_v_func_code_info->bp_line_to_breakpoint);
+ __pyx_v_func_code_info->bp_line_to_breakpoint = __pyx_v_bp_line_to_breakpoint;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":618
+ * func_code_info.function_breakpoint = function_breakpoint
+ *
+ * if breakpoints: # <<<<<<<<<<<<<<
+ * # if DEBUG:
+ * # print('found breakpoints', code_obj_py.co_name, breakpoints)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":631
+ * func_code_info.bp_line_to_breakpoint = bp_line_to_breakpoint
+ *
+ * if py_db.plugin: # <<<<<<<<<<<<<<
+ * plugin_manager = py_db.plugin
+ * is_tracked_frame = plugin_manager.is_tracked_frame(frame)
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_plugin); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 631, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 631, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_14) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":632
+ *
+ * if py_db.plugin:
+ * plugin_manager = py_db.plugin # <<<<<<<<<<<<<<
+ * is_tracked_frame = plugin_manager.is_tracked_frame(frame)
+ *
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_plugin); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 632, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_plugin_manager = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":633
+ * if py_db.plugin:
+ * plugin_manager = py_db.plugin
+ * is_tracked_frame = plugin_manager.is_tracked_frame(frame) # <<<<<<<<<<<<<<
+ *
+ * if is_tracked_frame:
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_is_tracked_frame); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 633, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_frame};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 633, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_v_is_tracked_frame = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":635
+ * is_tracked_frame = plugin_manager.is_tracked_frame(frame)
+ *
+ * if is_tracked_frame: # <<<<<<<<<<<<<<
+ * if py_db.has_plugin_line_breaks:
+ * required_events_breakpoint = plugin_manager.required_events_breakpoint()
+ */
+ __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_v_is_tracked_frame); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 635, __pyx_L1_error)
+ if (__pyx_t_14) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":636
+ *
+ * if is_tracked_frame:
+ * if py_db.has_plugin_line_breaks: # <<<<<<<<<<<<<<
+ * required_events_breakpoint = plugin_manager.required_events_breakpoint()
+ * func_code_info.plugin_line_breakpoint_found = "line" in required_events_breakpoint
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_has_plugin_line_breaks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 636, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 636, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_14) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":637
+ * if is_tracked_frame:
+ * if py_db.has_plugin_line_breaks:
+ * required_events_breakpoint = plugin_manager.required_events_breakpoint() # <<<<<<<<<<<<<<
+ * func_code_info.plugin_line_breakpoint_found = "line" in required_events_breakpoint
+ * func_code_info.plugin_call_breakpoint_found = "call" in required_events_breakpoint
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_required_events_breakpoint); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 637, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 637, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_v_required_events_breakpoint = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":638
+ * if py_db.has_plugin_line_breaks:
+ * required_events_breakpoint = plugin_manager.required_events_breakpoint()
+ * func_code_info.plugin_line_breakpoint_found = "line" in required_events_breakpoint # <<<<<<<<<<<<<<
+ * func_code_info.plugin_call_breakpoint_found = "call" in required_events_breakpoint
+ *
+ */
+ __pyx_t_14 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_line, __pyx_v_required_events_breakpoint, Py_EQ)); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 638, __pyx_L1_error)
+ __pyx_v_func_code_info->plugin_line_breakpoint_found = __pyx_t_14;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":639
+ * required_events_breakpoint = plugin_manager.required_events_breakpoint()
+ * func_code_info.plugin_line_breakpoint_found = "line" in required_events_breakpoint
+ * func_code_info.plugin_call_breakpoint_found = "call" in required_events_breakpoint # <<<<<<<<<<<<<<
+ *
+ * required_events_stepping = plugin_manager.required_events_stepping()
+ */
+ __pyx_t_14 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_call_2, __pyx_v_required_events_breakpoint, Py_EQ)); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 639, __pyx_L1_error)
+ __pyx_v_func_code_info->plugin_call_breakpoint_found = __pyx_t_14;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":636
+ *
+ * if is_tracked_frame:
+ * if py_db.has_plugin_line_breaks: # <<<<<<<<<<<<<<
+ * required_events_breakpoint = plugin_manager.required_events_breakpoint()
+ * func_code_info.plugin_line_breakpoint_found = "line" in required_events_breakpoint
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":641
+ * func_code_info.plugin_call_breakpoint_found = "call" in required_events_breakpoint
+ *
+ * required_events_stepping = plugin_manager.required_events_stepping() # <<<<<<<<<<<<<<
+ * func_code_info.plugin_line_stepping: bool = "line" in required_events_stepping
+ * func_code_info.plugin_call_stepping: bool = "call" in required_events_stepping
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_required_events_stepping); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 641, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 641, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_v_required_events_stepping = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":642
+ *
+ * required_events_stepping = plugin_manager.required_events_stepping()
+ * func_code_info.plugin_line_stepping: bool = "line" in required_events_stepping # <<<<<<<<<<<<<<
+ * func_code_info.plugin_call_stepping: bool = "call" in required_events_stepping
+ * func_code_info.plugin_return_stepping: bool = "return" in required_events_stepping
+ */
+ __pyx_t_14 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_line, __pyx_v_required_events_stepping, Py_EQ)); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 642, __pyx_L1_error)
+ __pyx_v_func_code_info->plugin_line_stepping = __pyx_t_14;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":643
+ * required_events_stepping = plugin_manager.required_events_stepping()
+ * func_code_info.plugin_line_stepping: bool = "line" in required_events_stepping
+ * func_code_info.plugin_call_stepping: bool = "call" in required_events_stepping # <<<<<<<<<<<<<<
+ * func_code_info.plugin_return_stepping: bool = "return" in required_events_stepping
+ *
+ */
+ __pyx_t_14 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_call_2, __pyx_v_required_events_stepping, Py_EQ)); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 643, __pyx_L1_error)
+ __pyx_v_func_code_info->plugin_call_stepping = __pyx_t_14;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":644
+ * func_code_info.plugin_line_stepping: bool = "line" in required_events_stepping
+ * func_code_info.plugin_call_stepping: bool = "call" in required_events_stepping
+ * func_code_info.plugin_return_stepping: bool = "return" in required_events_stepping # <<<<<<<<<<<<<<
+ *
+ * _code_to_func_code_info_cache[code_obj] = func_code_info
+ */
+ __pyx_t_14 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_return, __pyx_v_required_events_stepping, Py_EQ)); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 644, __pyx_L1_error)
+ __pyx_v_func_code_info->plugin_return_stepping = __pyx_t_14;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":635
+ * is_tracked_frame = plugin_manager.is_tracked_frame(frame)
+ *
+ * if is_tracked_frame: # <<<<<<<<<<<<<<
+ * if py_db.has_plugin_line_breaks:
+ * required_events_breakpoint = plugin_manager.required_events_breakpoint()
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":631
+ * func_code_info.bp_line_to_breakpoint = bp_line_to_breakpoint
+ *
+ * if py_db.plugin: # <<<<<<<<<<<<<<
+ * plugin_manager = py_db.plugin
+ * is_tracked_frame = plugin_manager.is_tracked_frame(frame)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":646
+ * func_code_info.plugin_return_stepping: bool = "return" in required_events_stepping
+ *
+ * _code_to_func_code_info_cache[code_obj] = func_code_info # <<<<<<<<<<<<<<
+ * return func_code_info
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_code_to_func_code_info_cache); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 646, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (unlikely((PyObject_SetItem(__pyx_t_1, __pyx_v_code_obj, ((PyObject *)__pyx_v_func_code_info)) < 0))) __PYX_ERR(0, 646, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":647
+ *
+ * _code_to_func_code_info_cache[code_obj] = func_code_info
+ * return func_code_info # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF((PyObject *)__pyx_r);
+ __Pyx_INCREF((PyObject *)__pyx_v_func_code_info);
+ __pyx_r = __pyx_v_func_code_info;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":484
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef FuncCodeInfo _get_func_code_info(code_obj, frame_or_depth): # <<<<<<<<<<<<<<
+ * cdef FuncCodeInfo func_code_info
+ * # ELSE
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_12);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._get_func_code_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF((PyObject *)__pyx_v_func_code_info);
+ __Pyx_XDECREF(__pyx_v_py_db);
+ __Pyx_XDECREF(__pyx_v_cache_file_type);
+ __Pyx_XDECREF(__pyx_v_cache_file_type_key);
+ __Pyx_XDECREF(__pyx_v_co_filename);
+ __Pyx_XDECREF(__pyx_v_co_name);
+ __Pyx_XDECREF(__pyx_v_code_line_info);
+ __Pyx_XDECREF(__pyx_v_line_to_offset);
+ __Pyx_XDECREF(__pyx_v_abs_path_real_path_and_base);
+ __Pyx_XDECREF(__pyx_v_frame);
+ __Pyx_XDECREF(__pyx_v_file_type);
+ __Pyx_XDECREF(__pyx_v_breakpoints);
+ __Pyx_XDECREF(__pyx_v_function_breakpoint);
+ __Pyx_XDECREF(__pyx_v_bp_line_to_breakpoint);
+ __Pyx_XDECREF(__pyx_v_breakpoint_line);
+ __Pyx_XDECREF(__pyx_v_bp);
+ __Pyx_XDECREF(__pyx_v_plugin_manager);
+ __Pyx_XDECREF(__pyx_v_is_tracked_frame);
+ __Pyx_XDECREF(__pyx_v_required_events_breakpoint);
+ __Pyx_XDECREF(__pyx_v_required_events_stepping);
+ __Pyx_XGIVEREF((PyObject *)__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_3_get_func_code_info(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_3_get_func_code_info = {"_get_func_code_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_3_get_func_code_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_3_get_func_code_info(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_code_obj = 0;
+ PyObject *__pyx_v_frame_or_depth = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[2] = {0,0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("_get_func_code_info (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code_obj,&__pyx_n_s_frame_or_depth,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ CYTHON_FALLTHROUGH;
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code_obj)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 484, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ CYTHON_FALLTHROUGH;
+ case 1:
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame_or_depth)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 484, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("_get_func_code_info", 1, 2, 2, 1); __PYX_ERR(0, 484, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_get_func_code_info") < 0)) __PYX_ERR(0, 484, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 2)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ }
+ __pyx_v_code_obj = values[0];
+ __pyx_v_frame_or_depth = values[1];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("_get_func_code_info", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 484, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._get_func_code_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_2_get_func_code_info(__pyx_self, __pyx_v_code_obj, __pyx_v_frame_or_depth);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_2_get_func_code_info(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_code_obj, PyObject *__pyx_v_frame_or_depth) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_get_func_code_info", 1);
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = ((PyObject *)__pyx_f_29_pydevd_sys_monitoring_cython__get_func_code_info(__pyx_v_code_obj, __pyx_v_frame_or_depth, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 484, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._get_func_code_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":652
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _enable_line_tracing(code): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _enable_line_tracing(code):
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__enable_line_tracing(PyObject *__pyx_v_code) {
+ PyObject *__pyx_v_events = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ unsigned int __pyx_t_5;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_enable_line_tracing", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":658
+ * # fmt: on
+ * # print('enable line tracing', code)
+ * _ensure_monitoring() # <<<<<<<<<<<<<<
+ * events = monitor.get_local_events(DEBUGGER_ID, code)
+ * monitor.set_local_events(DEBUGGER_ID, code, events | monitor.events.LINE | monitor.events.JUMP)
+ */
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython__ensure_monitoring(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 658, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":659
+ * # print('enable line tracing', code)
+ * _ensure_monitoring()
+ * events = monitor.get_local_events(DEBUGGER_ID, code) # <<<<<<<<<<<<<<
+ * monitor.set_local_events(DEBUGGER_ID, code, events | monitor.events.LINE | monitor.events.JUMP)
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_monitor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get_local_events); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 659, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_2, __pyx_v_code};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_v_events = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":660
+ * _ensure_monitoring()
+ * events = monitor.get_local_events(DEBUGGER_ID, code)
+ * monitor.set_local_events(DEBUGGER_ID, code, events | monitor.events.LINE | monitor.events.JUMP) # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_monitor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_set_local_events); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_events); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_LINE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = PyNumber_Or(__pyx_v_events, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_events); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_JUMP); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = PyNumber_Or(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_t_3, __pyx_v_code, __pyx_t_7};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":652
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _enable_line_tracing(code): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _enable_line_tracing(code):
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._enable_line_tracing", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_events);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":665
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _enable_return_tracing(code): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _enable_return_tracing(code):
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__enable_return_tracing(PyObject *__pyx_v_code) {
+ PyObject *__pyx_v_events = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ unsigned int __pyx_t_5;
+ PyObject *__pyx_t_6 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_enable_return_tracing", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":671
+ * # fmt: on
+ * # print('enable return tracing', code)
+ * _ensure_monitoring() # <<<<<<<<<<<<<<
+ * events = monitor.get_local_events(DEBUGGER_ID, code)
+ * monitor.set_local_events(DEBUGGER_ID, code, events | monitor.events.PY_RETURN)
+ */
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython__ensure_monitoring(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 671, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":672
+ * # print('enable return tracing', code)
+ * _ensure_monitoring()
+ * events = monitor.get_local_events(DEBUGGER_ID, code) # <<<<<<<<<<<<<<
+ * monitor.set_local_events(DEBUGGER_ID, code, events | monitor.events.PY_RETURN)
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_monitor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 672, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get_local_events); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 672, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 672, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_2, __pyx_v_code};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 672, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_v_events = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":673
+ * _ensure_monitoring()
+ * events = monitor.get_local_events(DEBUGGER_ID, code)
+ * monitor.set_local_events(DEBUGGER_ID, code, events | monitor.events.PY_RETURN) # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_monitor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 673, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_set_local_events); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 673, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 673, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 673, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_events); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 673, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_PY_RETURN); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 673, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = PyNumber_Or(__pyx_v_events, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 673, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_t_3, __pyx_v_code, __pyx_t_6};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 673, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":665
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _enable_return_tracing(code): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _enable_return_tracing(code):
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._enable_return_tracing", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_events);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":678
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef disable_code_tracing(code): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def disable_code_tracing(code):
+ */
+
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_5disable_code_tracing(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython_disable_code_tracing(PyObject *__pyx_v_code, CYTHON_UNUSED int __pyx_skip_dispatch) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ unsigned int __pyx_t_5;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("disable_code_tracing", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":683
+ * # ENDIF
+ * # fmt: on
+ * _ensure_monitoring() # <<<<<<<<<<<<<<
+ * monitor.set_local_events(DEBUGGER_ID, code, 0)
+ *
+ */
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython__ensure_monitoring(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 683, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":684
+ * # fmt: on
+ * _ensure_monitoring()
+ * monitor.set_local_events(DEBUGGER_ID, code, 0) # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_monitor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 684, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_set_local_events); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 684, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 684, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_t_2, __pyx_v_code, __pyx_int_0};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 684, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":678
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef disable_code_tracing(code): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def disable_code_tracing(code):
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.disable_code_tracing", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_5disable_code_tracing(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_5disable_code_tracing = {"disable_code_tracing", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_5disable_code_tracing, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_5disable_code_tracing(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_code = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("disable_code_tracing (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 678, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "disable_code_tracing") < 0)) __PYX_ERR(0, 678, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v_code = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("disable_code_tracing", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 678, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.disable_code_tracing", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_4disable_code_tracing(__pyx_self, __pyx_v_code);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_4disable_code_tracing(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_code) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("disable_code_tracing", 1);
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython_disable_code_tracing(__pyx_v_code, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 678, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.disable_code_tracing", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":689
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef enable_code_tracing(unsigned long thread_ident, code, frame): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def enable_code_tracing(thread_ident: Optional[int], code, frame) -> bool:
+ */
+
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_7enable_code_tracing(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython_enable_code_tracing(unsigned long __pyx_v_thread_ident, PyObject *__pyx_v_code, PyObject *__pyx_v_frame, CYTHON_UNUSED int __pyx_skip_dispatch) {
+ PyObject *__pyx_v_py_db = 0;
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v_func_code_info = 0;
+ PyObject *__pyx_v_thread = NULL;
+ PyObject *__pyx_v_additional_info = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ int __pyx_t_3;
+ int __pyx_t_4;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ PyObject *__pyx_t_9 = NULL;
+ unsigned int __pyx_t_10;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("enable_code_tracing", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":704
+ * # if DEBUG:
+ * # print('==== enable code tracing', code.co_filename[-30:], code.co_name)
+ * py_db: object = GlobalDebuggerHolder.global_dbg # <<<<<<<<<<<<<<
+ * if py_db is None or py_db.pydb_disposed:
+ * return False
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 704, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_global_dbg); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 704, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v_py_db = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":705
+ * # print('==== enable code tracing', code.co_filename[-30:], code.co_name)
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed: # <<<<<<<<<<<<<<
+ * return False
+ *
+ */
+ __pyx_t_4 = (__pyx_v_py_db == Py_None);
+ if (!__pyx_t_4) {
+ } else {
+ __pyx_t_3 = __pyx_t_4;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_pydb_disposed); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 705, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 705, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_3 = __pyx_t_4;
+ __pyx_L4_bool_binop_done:;
+ if (__pyx_t_3) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":706
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed:
+ * return False # <<<<<<<<<<<<<<
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, frame)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_False);
+ __pyx_r = Py_False;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":705
+ * # print('==== enable code tracing', code.co_filename[-30:], code.co_name)
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed: # <<<<<<<<<<<<<<
+ * return False
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":708
+ * return False
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, frame) # <<<<<<<<<<<<<<
+ * if func_code_info.always_skip_code:
+ * # if DEBUG:
+ */
+ __pyx_t_2 = ((PyObject *)__pyx_f_29_pydevd_sys_monitoring_cython__get_func_code_info(__pyx_v_code, __pyx_v_frame, 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 708, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_v_func_code_info = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)__pyx_t_2);
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":709
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, frame)
+ * if func_code_info.always_skip_code: # <<<<<<<<<<<<<<
+ * # if DEBUG:
+ * # print('disable (always skip)')
+ */
+ if (__pyx_v_func_code_info->always_skip_code) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":712
+ * # if DEBUG:
+ * # print('disable (always skip)')
+ * return False # <<<<<<<<<<<<<<
+ *
+ * try:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_False);
+ __pyx_r = Py_False;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":709
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, frame)
+ * if func_code_info.always_skip_code: # <<<<<<<<<<<<<<
+ * # if DEBUG:
+ * # print('disable (always skip)')
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":714
+ * return False
+ *
+ * try: # <<<<<<<<<<<<<<
+ * thread = threading._active.get(thread_ident)
+ * if thread is None:
+ */
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+ __Pyx_XGOTREF(__pyx_t_5);
+ __Pyx_XGOTREF(__pyx_t_6);
+ __Pyx_XGOTREF(__pyx_t_7);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":715
+ *
+ * try:
+ * thread = threading._active.get(thread_ident) # <<<<<<<<<<<<<<
+ * if thread is None:
+ * return False
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_threading); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 715, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_active); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 715, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 715, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = __Pyx_PyInt_From_unsigned_long(__pyx_v_thread_ident); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 715, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_9 = NULL;
+ __pyx_t_10 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_9)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_9);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_10 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_8};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 715, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __pyx_v_thread = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":716
+ * try:
+ * thread = threading._active.get(thread_ident)
+ * if thread is None: # <<<<<<<<<<<<<<
+ * return False
+ * additional_info = set_additional_thread_info(thread)
+ */
+ __pyx_t_3 = (__pyx_v_thread == Py_None);
+ if (__pyx_t_3) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":717
+ * thread = threading._active.get(thread_ident)
+ * if thread is None:
+ * return False # <<<<<<<<<<<<<<
+ * additional_info = set_additional_thread_info(thread)
+ * except:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_False);
+ __pyx_r = Py_False;
+ goto __pyx_L11_try_return;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":716
+ * try:
+ * thread = threading._active.get(thread_ident)
+ * if thread is None: # <<<<<<<<<<<<<<
+ * return False
+ * additional_info = set_additional_thread_info(thread)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":718
+ * if thread is None:
+ * return False
+ * additional_info = set_additional_thread_info(thread) # <<<<<<<<<<<<<<
+ * except:
+ * # Cannot set based on stepping
+ */
+ __pyx_t_2 = __pyx_f_14_pydevd_bundle_13pydevd_cython_set_additional_thread_info(__pyx_v_thread, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 718, __pyx_L7_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_v_additional_info = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":714
+ * return False
+ *
+ * try: # <<<<<<<<<<<<<<
+ * thread = threading._active.get(thread_ident)
+ * if thread is None:
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ goto __pyx_L12_try_end;
+ __pyx_L7_error:;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":719
+ * return False
+ * additional_info = set_additional_thread_info(thread)
+ * except: # <<<<<<<<<<<<<<
+ * # Cannot set based on stepping
+ * return False
+ */
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.enable_code_tracing", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_8) < 0) __PYX_ERR(0, 719, __pyx_L9_except_error)
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_8);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":721
+ * except:
+ * # Cannot set based on stepping
+ * return False # <<<<<<<<<<<<<<
+ *
+ * return _enable_code_tracing(py_db, additional_info, func_code_info, code, frame, False)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_False);
+ __pyx_r = Py_False;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ goto __pyx_L10_except_return;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":714
+ * return False
+ *
+ * try: # <<<<<<<<<<<<<<
+ * thread = threading._active.get(thread_ident)
+ * if thread is None:
+ */
+ __pyx_L9_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_5);
+ __Pyx_XGIVEREF(__pyx_t_6);
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+ goto __pyx_L1_error;
+ __pyx_L11_try_return:;
+ __Pyx_XGIVEREF(__pyx_t_5);
+ __Pyx_XGIVEREF(__pyx_t_6);
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+ goto __pyx_L0;
+ __pyx_L10_except_return:;
+ __Pyx_XGIVEREF(__pyx_t_5);
+ __Pyx_XGIVEREF(__pyx_t_6);
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+ goto __pyx_L0;
+ __pyx_L12_try_end:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":723
+ * return False
+ *
+ * return _enable_code_tracing(py_db, additional_info, func_code_info, code, frame, False) # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ if (!(likely(((__pyx_v_additional_info) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_additional_info, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(0, 723, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_29_pydevd_sys_monitoring_cython__enable_code_tracing(__pyx_v_py_db, ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_additional_info), __pyx_v_func_code_info, __pyx_v_code, __pyx_v_frame, 0); if (unlikely(__pyx_t_3 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 723, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 723, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_r = __pyx_t_8;
+ __pyx_t_8 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":689
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef enable_code_tracing(unsigned long thread_ident, code, frame): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def enable_code_tracing(thread_ident: Optional[int], code, frame) -> bool:
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.enable_code_tracing", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_py_db);
+ __Pyx_XDECREF((PyObject *)__pyx_v_func_code_info);
+ __Pyx_XDECREF(__pyx_v_thread);
+ __Pyx_XDECREF(__pyx_v_additional_info);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_7enable_code_tracing(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_29_pydevd_sys_monitoring_cython_6enable_code_tracing, "\n Note: this must enable code tracing for the given code/frame.\n\n The frame can be from any thread!\n\n :return: Whether code tracing was added in this function to the given code.\n ");
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_7enable_code_tracing = {"enable_code_tracing", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_7enable_code_tracing, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_29_pydevd_sys_monitoring_cython_6enable_code_tracing};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_7enable_code_tracing(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ unsigned long __pyx_v_thread_ident;
+ PyObject *__pyx_v_code = 0;
+ PyObject *__pyx_v_frame = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[3] = {0,0,0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("enable_code_tracing (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_thread_ident,&__pyx_n_s_code,&__pyx_n_s_frame,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ CYTHON_FALLTHROUGH;
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ CYTHON_FALLTHROUGH;
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_thread_ident)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 689, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ CYTHON_FALLTHROUGH;
+ case 1:
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 689, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("enable_code_tracing", 1, 3, 3, 1); __PYX_ERR(0, 689, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 2:
+ if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 689, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("enable_code_tracing", 1, 3, 3, 2); __PYX_ERR(0, 689, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "enable_code_tracing") < 0)) __PYX_ERR(0, 689, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 3)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ }
+ __pyx_v_thread_ident = __Pyx_PyInt_As_unsigned_long(values[0]); if (unlikely((__pyx_v_thread_ident == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 689, __pyx_L3_error)
+ __pyx_v_code = values[1];
+ __pyx_v_frame = values[2];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("enable_code_tracing", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 689, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.enable_code_tracing", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_6enable_code_tracing(__pyx_self, __pyx_v_thread_ident, __pyx_v_code, __pyx_v_frame);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_6enable_code_tracing(CYTHON_UNUSED PyObject *__pyx_self, unsigned long __pyx_v_thread_ident, PyObject *__pyx_v_code, PyObject *__pyx_v_frame) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("enable_code_tracing", 1);
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython_enable_code_tracing(__pyx_v_thread_ident, __pyx_v_code, __pyx_v_frame, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 689, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.enable_code_tracing", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":728
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef bint _enable_code_tracing(py_db, PyDBAdditionalThreadInfo additional_info, FuncCodeInfo func_code_info, code, frame, bint warn_on_filtered_out): # <<<<<<<<<<<<<<
+ * cdef int step_cmd
+ * cdef bint is_stepping
+ */
+
+static int __pyx_f_29_pydevd_sys_monitoring_cython__enable_code_tracing(PyObject *__pyx_v_py_db, struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_additional_info, struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v_func_code_info, PyObject *__pyx_v_code, PyObject *__pyx_v_frame, int __pyx_v_warn_on_filtered_out) {
+ int __pyx_v_step_cmd;
+ int __pyx_v_is_stepping;
+ int __pyx_v_code_tracing_added;
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ int __pyx_t_1;
+ int __pyx_t_2;
+ int __pyx_t_3;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ int __pyx_t_7;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_enable_code_tracing", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":740
+ * """
+ * # DEBUG = False # 'my_code.py' in code.co_filename or 'other.py' in code.co_filename
+ * step_cmd = additional_info.pydev_step_cmd # <<<<<<<<<<<<<<
+ * is_stepping = step_cmd != -1
+ * code_tracing_added = False
+ */
+ __pyx_t_1 = __pyx_v_additional_info->pydev_step_cmd;
+ __pyx_v_step_cmd = __pyx_t_1;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":741
+ * # DEBUG = False # 'my_code.py' in code.co_filename or 'other.py' in code.co_filename
+ * step_cmd = additional_info.pydev_step_cmd
+ * is_stepping = step_cmd != -1 # <<<<<<<<<<<<<<
+ * code_tracing_added = False
+ *
+ */
+ __pyx_v_is_stepping = (__pyx_v_step_cmd != -1L);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":742
+ * step_cmd = additional_info.pydev_step_cmd
+ * is_stepping = step_cmd != -1
+ * code_tracing_added = False # <<<<<<<<<<<<<<
+ *
+ * if func_code_info.always_filtered_out:
+ */
+ __pyx_v_code_tracing_added = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":744
+ * code_tracing_added = False
+ *
+ * if func_code_info.always_filtered_out: # <<<<<<<<<<<<<<
+ * # if DEBUG:
+ * # print('disable (always filtered out)')
+ */
+ if (__pyx_v_func_code_info->always_filtered_out) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":748
+ * # print('disable (always filtered out)')
+ * if (
+ * warn_on_filtered_out # <<<<<<<<<<<<<<
+ * and is_stepping
+ * and additional_info.pydev_original_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE)
+ */
+ if (__pyx_v_warn_on_filtered_out) {
+ } else {
+ __pyx_t_2 = __pyx_v_warn_on_filtered_out;
+ goto __pyx_L5_bool_binop_done;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":749
+ * if (
+ * warn_on_filtered_out
+ * and is_stepping # <<<<<<<<<<<<<<
+ * and additional_info.pydev_original_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE)
+ * and not _global_notify_skipped_step_in
+ */
+ if (__pyx_v_is_stepping) {
+ } else {
+ __pyx_t_2 = __pyx_v_is_stepping;
+ goto __pyx_L5_bool_binop_done;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":750
+ * warn_on_filtered_out
+ * and is_stepping
+ * and additional_info.pydev_original_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE) # <<<<<<<<<<<<<<
+ * and not _global_notify_skipped_step_in
+ * ):
+ */
+ __pyx_t_1 = __pyx_v_additional_info->pydev_original_step_cmd;
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 750, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_CMD_STEP_INTO); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 750, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 750, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 750, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (!__pyx_t_7) {
+ } else {
+ __pyx_t_3 = __pyx_t_7;
+ goto __pyx_L9_bool_binop_done;
+ }
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 750, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_CMD_STEP_INTO_MY_CODE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 750, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 750, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 750, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_3 = __pyx_t_7;
+ __pyx_L9_bool_binop_done:;
+ __pyx_t_7 = __pyx_t_3;
+ if (__pyx_t_7) {
+ } else {
+ __pyx_t_2 = __pyx_t_7;
+ goto __pyx_L5_bool_binop_done;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":751
+ * and is_stepping
+ * and additional_info.pydev_original_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE)
+ * and not _global_notify_skipped_step_in # <<<<<<<<<<<<<<
+ * ):
+ * _notify_skipped_step_in_because_of_filters(py_db, frame)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_global_notify_skipped_step_in); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 751, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 751, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_3 = (!__pyx_t_7);
+ __pyx_t_2 = __pyx_t_3;
+ __pyx_L5_bool_binop_done:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":747
+ * # if DEBUG:
+ * # print('disable (always filtered out)')
+ * if ( # <<<<<<<<<<<<<<
+ * warn_on_filtered_out
+ * and is_stepping
+ */
+ if (__pyx_t_2) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":753
+ * and not _global_notify_skipped_step_in
+ * ):
+ * _notify_skipped_step_in_because_of_filters(py_db, frame) # <<<<<<<<<<<<<<
+ *
+ * if is_stepping:
+ */
+ __pyx_t_4 = __pyx_f_29_pydevd_sys_monitoring_cython__notify_skipped_step_in_because_of_filters(__pyx_v_py_db, __pyx_v_frame); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 753, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":747
+ * # if DEBUG:
+ * # print('disable (always filtered out)')
+ * if ( # <<<<<<<<<<<<<<
+ * warn_on_filtered_out
+ * and is_stepping
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":755
+ * _notify_skipped_step_in_because_of_filters(py_db, frame)
+ *
+ * if is_stepping: # <<<<<<<<<<<<<<
+ * # Tracing may be needed for return value
+ * _enable_step_tracing(py_db, code, step_cmd, additional_info, frame)
+ */
+ if (__pyx_v_is_stepping) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":757
+ * if is_stepping:
+ * # Tracing may be needed for return value
+ * _enable_step_tracing(py_db, code, step_cmd, additional_info, frame) # <<<<<<<<<<<<<<
+ * code_tracing_added = True
+ * return code_tracing_added
+ */
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 757, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __pyx_f_29_pydevd_sys_monitoring_cython__enable_step_tracing(__pyx_v_py_db, __pyx_v_code, __pyx_t_4, __pyx_v_additional_info, __pyx_v_frame); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 757, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":758
+ * # Tracing may be needed for return value
+ * _enable_step_tracing(py_db, code, step_cmd, additional_info, frame)
+ * code_tracing_added = True # <<<<<<<<<<<<<<
+ * return code_tracing_added
+ *
+ */
+ __pyx_v_code_tracing_added = 1;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":755
+ * _notify_skipped_step_in_because_of_filters(py_db, frame)
+ *
+ * if is_stepping: # <<<<<<<<<<<<<<
+ * # Tracing may be needed for return value
+ * _enable_step_tracing(py_db, code, step_cmd, additional_info, frame)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":759
+ * _enable_step_tracing(py_db, code, step_cmd, additional_info, frame)
+ * code_tracing_added = True
+ * return code_tracing_added # <<<<<<<<<<<<<<
+ *
+ * if func_code_info.breakpoint_found or func_code_info.plugin_line_breakpoint_found:
+ */
+ __pyx_r = __pyx_v_code_tracing_added;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":744
+ * code_tracing_added = False
+ *
+ * if func_code_info.always_filtered_out: # <<<<<<<<<<<<<<
+ * # if DEBUG:
+ * # print('disable (always filtered out)')
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":761
+ * return code_tracing_added
+ *
+ * if func_code_info.breakpoint_found or func_code_info.plugin_line_breakpoint_found: # <<<<<<<<<<<<<<
+ * _enable_line_tracing(code)
+ * code_tracing_added = True
+ */
+ if (!__pyx_v_func_code_info->breakpoint_found) {
+ } else {
+ __pyx_t_2 = __pyx_v_func_code_info->breakpoint_found;
+ goto __pyx_L13_bool_binop_done;
+ }
+ __pyx_t_2 = __pyx_v_func_code_info->plugin_line_breakpoint_found;
+ __pyx_L13_bool_binop_done:;
+ if (__pyx_t_2) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":762
+ *
+ * if func_code_info.breakpoint_found or func_code_info.plugin_line_breakpoint_found:
+ * _enable_line_tracing(code) # <<<<<<<<<<<<<<
+ * code_tracing_added = True
+ *
+ */
+ __pyx_t_5 = __pyx_f_29_pydevd_sys_monitoring_cython__enable_line_tracing(__pyx_v_code); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 762, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":763
+ * if func_code_info.breakpoint_found or func_code_info.plugin_line_breakpoint_found:
+ * _enable_line_tracing(code)
+ * code_tracing_added = True # <<<<<<<<<<<<<<
+ *
+ * if is_stepping:
+ */
+ __pyx_v_code_tracing_added = 1;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":761
+ * return code_tracing_added
+ *
+ * if func_code_info.breakpoint_found or func_code_info.plugin_line_breakpoint_found: # <<<<<<<<<<<<<<
+ * _enable_line_tracing(code)
+ * code_tracing_added = True
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":765
+ * code_tracing_added = True
+ *
+ * if is_stepping: # <<<<<<<<<<<<<<
+ * _enable_step_tracing(py_db, code, step_cmd, additional_info, frame)
+ * code_tracing_added = True
+ */
+ if (__pyx_v_is_stepping) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":766
+ *
+ * if is_stepping:
+ * _enable_step_tracing(py_db, code, step_cmd, additional_info, frame) # <<<<<<<<<<<<<<
+ * code_tracing_added = True
+ *
+ */
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 766, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_4 = __pyx_f_29_pydevd_sys_monitoring_cython__enable_step_tracing(__pyx_v_py_db, __pyx_v_code, __pyx_t_5, __pyx_v_additional_info, __pyx_v_frame); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 766, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":767
+ * if is_stepping:
+ * _enable_step_tracing(py_db, code, step_cmd, additional_info, frame)
+ * code_tracing_added = True # <<<<<<<<<<<<<<
+ *
+ * return code_tracing_added
+ */
+ __pyx_v_code_tracing_added = 1;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":765
+ * code_tracing_added = True
+ *
+ * if is_stepping: # <<<<<<<<<<<<<<
+ * _enable_step_tracing(py_db, code, step_cmd, additional_info, frame)
+ * code_tracing_added = True
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":769
+ * code_tracing_added = True
+ *
+ * return code_tracing_added # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __pyx_r = __pyx_v_code_tracing_added;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":728
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef bint _enable_code_tracing(py_db, PyDBAdditionalThreadInfo additional_info, FuncCodeInfo func_code_info, code, frame, bint warn_on_filtered_out): # <<<<<<<<<<<<<<
+ * cdef int step_cmd
+ * cdef bint is_stepping
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._enable_code_tracing", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = -1;
+ __pyx_L0:;
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":774
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _enable_step_tracing(py_db, code, step_cmd, PyDBAdditionalThreadInfo info, frame): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _enable_step_tracing(py_db, code, step_cmd, info, frame):
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__enable_step_tracing(PyObject *__pyx_v_py_db, PyObject *__pyx_v_code, PyObject *__pyx_v_step_cmd, struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info, PyObject *__pyx_v_frame) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ int __pyx_t_5;
+ int __pyx_t_6;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_enable_step_tracing", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":779
+ * # ENDIF
+ * # fmt: on
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO): # <<<<<<<<<<<<<<
+ * # Stepping (must have line/return tracing enabled).
+ * _enable_line_tracing(code)
+ */
+ __Pyx_INCREF(__pyx_v_step_cmd);
+ __pyx_t_1 = __pyx_v_step_cmd;
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_CMD_STEP_INTO); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 779, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 779, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 779, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!__pyx_t_5) {
+ } else {
+ __pyx_t_2 = __pyx_t_5;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CMD_STEP_INTO_MY_CODE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 779, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 779, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 779, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (!__pyx_t_5) {
+ } else {
+ __pyx_t_2 = __pyx_t_5;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_CMD_STEP_INTO_COROUTINE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 779, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 779, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 779, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!__pyx_t_5) {
+ } else {
+ __pyx_t_2 = __pyx_t_5;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CMD_SMART_STEP_INTO); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 779, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 779, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 779, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_2 = __pyx_t_5;
+ __pyx_L4_bool_binop_done:;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_5 = __pyx_t_2;
+ if (__pyx_t_5) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":781
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO):
+ * # Stepping (must have line/return tracing enabled).
+ * _enable_line_tracing(code) # <<<<<<<<<<<<<<
+ * _enable_return_tracing(code)
+ *
+ */
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython__enable_line_tracing(__pyx_v_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 781, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":782
+ * # Stepping (must have line/return tracing enabled).
+ * _enable_line_tracing(code)
+ * _enable_return_tracing(code) # <<<<<<<<<<<<<<
+ *
+ * elif step_cmd in (CMD_STEP_RETURN, CMD_STEP_RETURN_MY_CODE) and _is_same_frame(info, info.pydev_step_stop, frame):
+ */
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython__enable_return_tracing(__pyx_v_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 782, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":779
+ * # ENDIF
+ * # fmt: on
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO): # <<<<<<<<<<<<<<
+ * # Stepping (must have line/return tracing enabled).
+ * _enable_line_tracing(code)
+ */
+ goto __pyx_L3;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":784
+ * _enable_return_tracing(code)
+ *
+ * elif step_cmd in (CMD_STEP_RETURN, CMD_STEP_RETURN_MY_CODE) and _is_same_frame(info, info.pydev_step_stop, frame): # <<<<<<<<<<<<<<
+ * _enable_return_tracing(code)
+ *
+ */
+ __Pyx_INCREF(__pyx_v_step_cmd);
+ __pyx_t_1 = __pyx_v_step_cmd;
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_CMD_STEP_RETURN); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 784, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 784, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 784, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!__pyx_t_6) {
+ } else {
+ __pyx_t_2 = __pyx_t_6;
+ goto __pyx_L10_bool_binop_done;
+ }
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CMD_STEP_RETURN_MY_CODE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 784, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 784, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 784, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_2 = __pyx_t_6;
+ __pyx_L10_bool_binop_done:;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_6 = __pyx_t_2;
+ if (__pyx_t_6) {
+ } else {
+ __pyx_t_5 = __pyx_t_6;
+ goto __pyx_L8_bool_binop_done;
+ }
+ __pyx_t_1 = __pyx_v_info->pydev_step_stop;
+ __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_3 = __pyx_f_29_pydevd_sys_monitoring_cython__is_same_frame(__pyx_v_info, __pyx_t_1, __pyx_v_frame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 784, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 784, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_5 = __pyx_t_6;
+ __pyx_L8_bool_binop_done:;
+ if (__pyx_t_5) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":785
+ *
+ * elif step_cmd in (CMD_STEP_RETURN, CMD_STEP_RETURN_MY_CODE) and _is_same_frame(info, info.pydev_step_stop, frame):
+ * _enable_return_tracing(code) # <<<<<<<<<<<<<<
+ *
+ * elif step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE):
+ */
+ __pyx_t_3 = __pyx_f_29_pydevd_sys_monitoring_cython__enable_return_tracing(__pyx_v_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 785, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":784
+ * _enable_return_tracing(code)
+ *
+ * elif step_cmd in (CMD_STEP_RETURN, CMD_STEP_RETURN_MY_CODE) and _is_same_frame(info, info.pydev_step_stop, frame): # <<<<<<<<<<<<<<
+ * _enable_return_tracing(code)
+ *
+ */
+ goto __pyx_L3;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":787
+ * _enable_return_tracing(code)
+ *
+ * elif step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE): # <<<<<<<<<<<<<<
+ * if _is_same_frame(info, info.pydev_step_stop, frame):
+ * _enable_line_tracing(code)
+ */
+ __Pyx_INCREF(__pyx_v_step_cmd);
+ __pyx_t_3 = __pyx_v_step_cmd;
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_CMD_STEP_OVER); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 787, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 787, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 787, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!__pyx_t_6) {
+ } else {
+ __pyx_t_5 = __pyx_t_6;
+ goto __pyx_L12_bool_binop_done;
+ }
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CMD_STEP_OVER_MY_CODE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 787, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 787, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 787, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_5 = __pyx_t_6;
+ __pyx_L12_bool_binop_done:;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_6 = __pyx_t_5;
+ if (__pyx_t_6) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":788
+ *
+ * elif step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE):
+ * if _is_same_frame(info, info.pydev_step_stop, frame): # <<<<<<<<<<<<<<
+ * _enable_line_tracing(code)
+ *
+ */
+ __pyx_t_3 = __pyx_v_info->pydev_step_stop;
+ __Pyx_INCREF(__pyx_t_3);
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython__is_same_frame(__pyx_v_info, __pyx_t_3, __pyx_v_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 788, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 788, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_6) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":789
+ * elif step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE):
+ * if _is_same_frame(info, info.pydev_step_stop, frame):
+ * _enable_line_tracing(code) # <<<<<<<<<<<<<<
+ *
+ * # Wee need to enable return tracing because if we have a return during a step over
+ */
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython__enable_line_tracing(__pyx_v_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 789, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":793
+ * # Wee need to enable return tracing because if we have a return during a step over
+ * # we need to stop too.
+ * _enable_return_tracing(code) # <<<<<<<<<<<<<<
+ * elif py_db.show_return_values and _is_same_frame(info, info.pydev_step_stop, frame.f_back):
+ * # Show return values on step over.
+ */
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython__enable_return_tracing(__pyx_v_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 793, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":788
+ *
+ * elif step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE):
+ * if _is_same_frame(info, info.pydev_step_stop, frame): # <<<<<<<<<<<<<<
+ * _enable_line_tracing(code)
+ *
+ */
+ goto __pyx_L14;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":794
+ * # we need to stop too.
+ * _enable_return_tracing(code)
+ * elif py_db.show_return_values and _is_same_frame(info, info.pydev_step_stop, frame.f_back): # <<<<<<<<<<<<<<
+ * # Show return values on step over.
+ * _enable_return_tracing(code)
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_show_return_values); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 794, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 794, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_5) {
+ } else {
+ __pyx_t_6 = __pyx_t_5;
+ goto __pyx_L15_bool_binop_done;
+ }
+ __pyx_t_1 = __pyx_v_info->pydev_step_stop;
+ __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 794, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __pyx_f_29_pydevd_sys_monitoring_cython__is_same_frame(__pyx_v_info, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 794, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 794, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_6 = __pyx_t_5;
+ __pyx_L15_bool_binop_done:;
+ if (__pyx_t_6) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":796
+ * elif py_db.show_return_values and _is_same_frame(info, info.pydev_step_stop, frame.f_back):
+ * # Show return values on step over.
+ * _enable_return_tracing(code) # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __pyx_t_4 = __pyx_f_29_pydevd_sys_monitoring_cython__enable_return_tracing(__pyx_v_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 796, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":794
+ * # we need to stop too.
+ * _enable_return_tracing(code)
+ * elif py_db.show_return_values and _is_same_frame(info, info.pydev_step_stop, frame.f_back): # <<<<<<<<<<<<<<
+ * # Show return values on step over.
+ * _enable_return_tracing(code)
+ */
+ }
+ __pyx_L14:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":787
+ * _enable_return_tracing(code)
+ *
+ * elif step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE): # <<<<<<<<<<<<<<
+ * if _is_same_frame(info, info.pydev_step_stop, frame):
+ * _enable_line_tracing(code)
+ */
+ }
+ __pyx_L3:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":774
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _enable_step_tracing(py_db, code, step_cmd, PyDBAdditionalThreadInfo info, frame): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _enable_step_tracing(py_db, code, step_cmd, info, frame):
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._enable_step_tracing", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":814
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * def __init__(self, list try_except_infos): # <<<<<<<<<<<<<<
+ * self.try_except_infos = try_except_infos
+ * # ELSE
+ */
+
+/* Python wrapper */
+static int __pyx_pw_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_try_except_infos = 0;
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_try_except_infos,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_try_except_infos)) != 0)) {
+ (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 814, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 814, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+ }
+ __pyx_v_try_except_infos = ((PyObject*)values[0]);
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 814, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._TryExceptContainerObj.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return -1;
+ __pyx_L4_argument_unpacking_done:;
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_try_except_infos), (&PyList_Type), 1, "try_except_infos", 1))) __PYX_ERR(0, 814, __pyx_L1_error)
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj___init__(((struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *)__pyx_v_self), __pyx_v_try_except_infos);
+
+ /* function exit code */
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __pyx_r = -1;
+ __pyx_L0:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static int __pyx_pf_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj___init__(struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *__pyx_v_self, PyObject *__pyx_v_try_except_infos) {
+ int __pyx_r;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__init__", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":815
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * def __init__(self, list try_except_infos):
+ * self.try_except_infos = try_except_infos # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def __init__(self, try_except_infos):
+ */
+ __Pyx_INCREF(__pyx_v_try_except_infos);
+ __Pyx_GIVEREF(__pyx_v_try_except_infos);
+ __Pyx_GOTREF(__pyx_v_self->try_except_infos);
+ __Pyx_DECREF(__pyx_v_self->try_except_infos);
+ __pyx_v_self->try_except_infos = __pyx_v_try_except_infos;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":814
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * def __init__(self, list try_except_infos): # <<<<<<<<<<<<<<
+ * self.try_except_infos = try_except_infos
+ * # ELSE
+ */
+
+ /* function exit code */
+ __pyx_r = 0;
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_3__reduce_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_3__reduce_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ if (unlikely(__pyx_nargs > 0)) {
+ __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
+ if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_2__reduce_cython__(((struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *)__pyx_v_self));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_2__reduce_cython__(struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *__pyx_v_self) {
+ PyObject *__pyx_v_state = 0;
+ PyObject *__pyx_v__dict = 0;
+ int __pyx_v_use_setstate;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__reduce_cython__", 1);
+
+ /* "(tree fragment)":5
+ * cdef object _dict
+ * cdef bint use_setstate
+ * state = (self.try_except_infos,) # <<<<<<<<<<<<<<
+ * _dict = getattr(self, '__dict__', None)
+ * if _dict is not None:
+ */
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_v_self->try_except_infos);
+ __Pyx_GIVEREF(__pyx_v_self->try_except_infos);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->try_except_infos)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __pyx_v_state = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "(tree fragment)":6
+ * cdef bint use_setstate
+ * state = (self.try_except_infos,)
+ * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<<
+ * if _dict is not None:
+ * state += (_dict,)
+ */
+ __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v__dict = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "(tree fragment)":7
+ * state = (self.try_except_infos,)
+ * _dict = getattr(self, '__dict__', None)
+ * if _dict is not None: # <<<<<<<<<<<<<<
+ * state += (_dict,)
+ * use_setstate = True
+ */
+ __pyx_t_2 = (__pyx_v__dict != Py_None);
+ if (__pyx_t_2) {
+
+ /* "(tree fragment)":8
+ * _dict = getattr(self, '__dict__', None)
+ * if _dict is not None:
+ * state += (_dict,) # <<<<<<<<<<<<<<
+ * use_setstate = True
+ * else:
+ */
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_v__dict);
+ __Pyx_GIVEREF(__pyx_v__dict);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict)) __PYX_ERR(1, 8, __pyx_L1_error);
+ __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3));
+ __pyx_t_3 = 0;
+
+ /* "(tree fragment)":9
+ * if _dict is not None:
+ * state += (_dict,)
+ * use_setstate = True # <<<<<<<<<<<<<<
+ * else:
+ * use_setstate = self.try_except_infos is not None
+ */
+ __pyx_v_use_setstate = 1;
+
+ /* "(tree fragment)":7
+ * state = (self.try_except_infos,)
+ * _dict = getattr(self, '__dict__', None)
+ * if _dict is not None: # <<<<<<<<<<<<<<
+ * state += (_dict,)
+ * use_setstate = True
+ */
+ goto __pyx_L3;
+ }
+
+ /* "(tree fragment)":11
+ * use_setstate = True
+ * else:
+ * use_setstate = self.try_except_infos is not None # <<<<<<<<<<<<<<
+ * if use_setstate:
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, None), state
+ */
+ /*else*/ {
+ __pyx_t_2 = (__pyx_v_self->try_except_infos != ((PyObject*)Py_None));
+ __pyx_v_use_setstate = __pyx_t_2;
+ }
+ __pyx_L3:;
+
+ /* "(tree fragment)":12
+ * else:
+ * use_setstate = self.try_except_infos is not None
+ * if use_setstate: # <<<<<<<<<<<<<<
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, None), state
+ * else:
+ */
+ if (__pyx_v_use_setstate) {
+
+ /* "(tree fragment)":13
+ * use_setstate = self.try_except_infos is not None
+ * if use_setstate:
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, None), state # <<<<<<<<<<<<<<
+ * else:
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, state)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle__TryExceptContain); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 13, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_int_230645316);
+ __Pyx_GIVEREF(__pyx_int_230645316);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_230645316)) __PYX_ERR(1, 13, __pyx_L1_error);
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(1, 13, __pyx_L1_error);
+ __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_3);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_state);
+ __Pyx_GIVEREF(__pyx_v_state);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state)) __PYX_ERR(1, 13, __pyx_L1_error);
+ __pyx_t_3 = 0;
+ __pyx_t_1 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
+ goto __pyx_L0;
+
+ /* "(tree fragment)":12
+ * else:
+ * use_setstate = self.try_except_infos is not None
+ * if use_setstate: # <<<<<<<<<<<<<<
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, None), state
+ * else:
+ */
+ }
+
+ /* "(tree fragment)":15
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, None), state
+ * else:
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, state) # <<<<<<<<<<<<<<
+ * def __setstate_cython__(self, __pyx_state):
+ * __pyx_unpickle__TryExceptContainerObj__set_state(self, __pyx_state)
+ */
+ /*else*/ {
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle__TryExceptContain); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 15, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_int_230645316);
+ __Pyx_GIVEREF(__pyx_int_230645316);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_230645316)) __PYX_ERR(1, 15, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_state);
+ __Pyx_GIVEREF(__pyx_v_state);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(1, 15, __pyx_L1_error);
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_4);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error);
+ __pyx_t_4 = 0;
+ __pyx_t_1 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+ }
+
+ /* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._TryExceptContainerObj.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_state);
+ __Pyx_XDECREF(__pyx_v__dict);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle__TryExceptContainerObj__set_state(self, __pyx_state)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_5__setstate_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_5__setstate_cython__(PyObject *__pyx_v_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v___pyx_state = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 16, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 16, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 1)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ }
+ __pyx_v___pyx_state = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 16, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._TryExceptContainerObj.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_4__setstate_cython__(((struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *)__pyx_v_self), __pyx_v___pyx_state);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_4__setstate_cython__(struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__setstate_cython__", 1);
+
+ /* "(tree fragment)":17
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, state)
+ * def __setstate_cython__(self, __pyx_state):
+ * __pyx_unpickle__TryExceptContainerObj__set_state(self, __pyx_state) # <<<<<<<<<<<<<<
+ */
+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 17, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython___pyx_unpickle__TryExceptContainerObj__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle__TryExceptContainerObj__set_state(self, __pyx_state)
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._TryExceptContainerObj.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":826
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _unwind_event(code, instruction, exc): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * cdef FuncCodeInfo func_code_info
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__unwind_event(PyObject *__pyx_v_code, CYTHON_UNUSED PyObject *__pyx_v_instruction, PyObject *__pyx_v_exc) {
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_thread_info = 0;
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v_func_code_info = 0;
+ PyObject *__pyx_v_frame = NULL;
+ PyObject *__pyx_v_arg = NULL;
+ PyObject *__pyx_v_py_db = 0;
+ PyObject *__pyx_v_has_caught_exception_breakpoint_in_pydb = NULL;
+ CYTHON_UNUSED PyObject *__pyx_v__should_stop = NULL;
+ PyObject *__pyx_v_user_uncaught_exc_info = NULL;
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *__pyx_v_container_obj = NULL;
+ PyObject *__pyx_v_is_unhandled = NULL;
+ PyObject *__pyx_v_break_on_uncaught_exceptions = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ int __pyx_t_8;
+ struct __pyx_opt_args_29_pydevd_sys_monitoring_cython__getframe __pyx_t_9;
+ int __pyx_t_10;
+ int __pyx_t_11;
+ unsigned int __pyx_t_12;
+ PyObject *__pyx_t_13 = NULL;
+ PyObject *(*__pyx_t_14)(PyObject *);
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_unwind_event", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":833
+ * # ENDIF
+ * # fmt: on
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":834
+ * # fmt: on
+ * try:
+ * thread_info = _thread_local_info.thread_info # <<<<<<<<<<<<<<
+ * except:
+ * thread_info = _get_thread_info(True, 1)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 834, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_thread_info); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 834, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo))))) __PYX_ERR(0, 834, __pyx_L3_error)
+ __pyx_v_thread_info = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_t_5);
+ __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":833
+ * # ENDIF
+ * # fmt: on
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L8_try_end;
+ __pyx_L3_error:;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":835
+ * try:
+ * thread_info = _thread_local_info.thread_info
+ * except: # <<<<<<<<<<<<<<
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None:
+ */
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._unwind_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(0, 835, __pyx_L5_except_error)
+ __Pyx_XGOTREF(__pyx_t_5);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_6);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":836
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ * thread_info = _get_thread_info(True, 1) # <<<<<<<<<<<<<<
+ * if thread_info is None:
+ * return
+ */
+ __pyx_t_7 = __pyx_f_29_pydevd_sys_monitoring_cython__get_thread_info(1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 836, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo))))) __PYX_ERR(0, 836, __pyx_L5_except_error)
+ __Pyx_XDECREF_SET(__pyx_v_thread_info, ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_t_7));
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":837
+ * except:
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_8 = (((PyObject *)__pyx_v_thread_info) == Py_None);
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":838
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None:
+ * return # <<<<<<<<<<<<<<
+ *
+ * frame = _getframe(1)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L6_except_return;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":837
+ * except:
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L4_exception_handled;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":833
+ * # ENDIF
+ * # fmt: on
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ __pyx_L5_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L1_error;
+ __pyx_L6_except_return:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L0;
+ __pyx_L4_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ __pyx_L8_try_end:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":840
+ * return
+ *
+ * frame = _getframe(1) # <<<<<<<<<<<<<<
+ * arg = (type(exc), exc, exc.__traceback__)
+ *
+ */
+ __pyx_t_9.__pyx_n = 1;
+ __pyx_t_9.depth = __pyx_int_1;
+ __pyx_t_6 = __pyx_f_29_pydevd_sys_monitoring_cython__getframe(&__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 840, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_v_frame = __pyx_t_6;
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":841
+ *
+ * frame = _getframe(1)
+ * arg = (type(exc), exc, exc.__traceback__) # <<<<<<<<<<<<<<
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ */
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_n_s_traceback); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 841, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 841, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_exc)));
+ __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_exc)));
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)Py_TYPE(__pyx_v_exc)))) __PYX_ERR(0, 841, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_exc);
+ __Pyx_GIVEREF(__pyx_v_exc);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_exc)) __PYX_ERR(0, 841, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_6);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_6)) __PYX_ERR(0, 841, __pyx_L1_error);
+ __pyx_t_6 = 0;
+ __pyx_v_arg = ((PyObject*)__pyx_t_4);
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":843
+ * arg = (type(exc), exc, exc.__traceback__)
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg # <<<<<<<<<<<<<<
+ * if py_db is None or py_db.pydb_disposed:
+ * return
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 843, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_global_dbg); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 843, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_py_db = __pyx_t_6;
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":844
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_10 = (__pyx_v_py_db == Py_None);
+ if (!__pyx_t_10) {
+ } else {
+ __pyx_t_8 = __pyx_t_10;
+ goto __pyx_L13_bool_binop_done;
+ }
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_pydb_disposed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 844, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 844, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_8 = __pyx_t_10;
+ __pyx_L13_bool_binop_done:;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":845
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed:
+ * return # <<<<<<<<<<<<<<
+ *
+ * if not thread_info.trace or thread_info.thread._is_stopped:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":844
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":847
+ * return
+ *
+ * if not thread_info.trace or thread_info.thread._is_stopped: # <<<<<<<<<<<<<<
+ * # For thread-related stuff we can't disable the code tracing because other
+ * # threads may still want it...
+ */
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_thread_info->trace); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 847, __pyx_L1_error)
+ __pyx_t_11 = (!__pyx_t_10);
+ if (!__pyx_t_11) {
+ } else {
+ __pyx_t_8 = __pyx_t_11;
+ goto __pyx_L16_bool_binop_done;
+ }
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread_info->thread, __pyx_n_s_is_stopped); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 847, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 847, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_8 = __pyx_t_11;
+ __pyx_L16_bool_binop_done:;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":850
+ * # For thread-related stuff we can't disable the code tracing because other
+ * # threads may still want it...
+ * return # <<<<<<<<<<<<<<
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":847
+ * return
+ *
+ * if not thread_info.trace or thread_info.thread._is_stopped: # <<<<<<<<<<<<<<
+ * # For thread-related stuff we can't disable the code tracing because other
+ * # threads may still want it...
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":852
+ * return
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1) # <<<<<<<<<<<<<<
+ * if func_code_info.always_skip_code:
+ * return
+ */
+ __pyx_t_6 = ((PyObject *)__pyx_f_29_pydevd_sys_monitoring_cython__get_func_code_info(__pyx_v_code, __pyx_int_1, 0)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 852, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_v_func_code_info = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)__pyx_t_6);
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":853
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ * if func_code_info.always_skip_code: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ if (__pyx_v_func_code_info->always_skip_code) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":854
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ * if func_code_info.always_skip_code:
+ * return # <<<<<<<<<<<<<<
+ *
+ * # print('_unwind_event', code, exc)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":853
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ * if func_code_info.always_skip_code: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":859
+ *
+ * has_caught_exception_breakpoint_in_pydb = (
+ * py_db.break_on_caught_exceptions or py_db.break_on_user_uncaught_exceptions or py_db.has_plugin_exception_breaks # <<<<<<<<<<<<<<
+ * )
+ *
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_break_on_caught_exceptions); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 859, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 859, __pyx_L1_error)
+ if (!__pyx_t_8) {
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ } else {
+ __Pyx_INCREF(__pyx_t_4);
+ __pyx_t_6 = __pyx_t_4;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ goto __pyx_L19_bool_binop_done;
+ }
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_break_on_user_uncaught_exception); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 859, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 859, __pyx_L1_error)
+ if (!__pyx_t_8) {
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ } else {
+ __Pyx_INCREF(__pyx_t_4);
+ __pyx_t_6 = __pyx_t_4;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ goto __pyx_L19_bool_binop_done;
+ }
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_has_plugin_exception_breaks); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 859, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_4);
+ __pyx_t_6 = __pyx_t_4;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_L19_bool_binop_done:;
+ __pyx_v_has_caught_exception_breakpoint_in_pydb = __pyx_t_6;
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":863
+ *
+ *
+ * if has_caught_exception_breakpoint_in_pydb: # <<<<<<<<<<<<<<
+ * _should_stop, frame, user_uncaught_exc_info = should_stop_on_exception(
+ * py_db, thread_info.additional_info, frame, thread_info.thread, arg, None
+ */
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_has_caught_exception_breakpoint_in_pydb); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 863, __pyx_L1_error)
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":864
+ *
+ * if has_caught_exception_breakpoint_in_pydb:
+ * _should_stop, frame, user_uncaught_exc_info = should_stop_on_exception( # <<<<<<<<<<<<<<
+ * py_db, thread_info.additional_info, frame, thread_info.thread, arg, None
+ * )
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_should_stop_on_exception); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 864, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":865
+ * if has_caught_exception_breakpoint_in_pydb:
+ * _should_stop, frame, user_uncaught_exc_info = should_stop_on_exception(
+ * py_db, thread_info.additional_info, frame, thread_info.thread, arg, None # <<<<<<<<<<<<<<
+ * )
+ * if user_uncaught_exc_info:
+ */
+ __pyx_t_5 = NULL;
+ __pyx_t_12 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_12 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[7] = {__pyx_t_5, __pyx_v_py_db, ((PyObject *)__pyx_v_thread_info->additional_info), __pyx_v_frame, __pyx_v_thread_info->thread, __pyx_v_arg, Py_None};
+ __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_12, 6+__pyx_t_12);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 864, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
+ PyObject* sequence = __pyx_t_6;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 3)) {
+ if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 864, __pyx_L1_error)
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1);
+ __pyx_t_7 = PyTuple_GET_ITEM(sequence, 2);
+ } else {
+ __pyx_t_4 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_5 = PyList_GET_ITEM(sequence, 1);
+ __pyx_t_7 = PyList_GET_ITEM(sequence, 2);
+ }
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_7);
+ #else
+ __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 864, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 864, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 864, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ #endif
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ } else {
+ Py_ssize_t index = -1;
+ __pyx_t_13 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 864, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_13);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_14 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_13);
+ index = 0; __pyx_t_4 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_4)) goto __pyx_L23_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_4);
+ index = 1; __pyx_t_5 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_5)) goto __pyx_L23_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_5);
+ index = 2; __pyx_t_7 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_7)) goto __pyx_L23_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_7);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 3) < 0) __PYX_ERR(0, 864, __pyx_L1_error)
+ __pyx_t_14 = NULL;
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+ goto __pyx_L24_unpacking_done;
+ __pyx_L23_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __pyx_t_14 = NULL;
+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+ __PYX_ERR(0, 864, __pyx_L1_error)
+ __pyx_L24_unpacking_done:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":864
+ *
+ * if has_caught_exception_breakpoint_in_pydb:
+ * _should_stop, frame, user_uncaught_exc_info = should_stop_on_exception( # <<<<<<<<<<<<<<
+ * py_db, thread_info.additional_info, frame, thread_info.thread, arg, None
+ * )
+ */
+ __pyx_v__should_stop = __pyx_t_4;
+ __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_5);
+ __pyx_t_5 = 0;
+ __pyx_v_user_uncaught_exc_info = __pyx_t_7;
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":867
+ * py_db, thread_info.additional_info, frame, thread_info.thread, arg, None
+ * )
+ * if user_uncaught_exc_info: # <<<<<<<<<<<<<<
+ * # TODO: Check: this may no longer be needed as in the unwind we know it's
+ * # an exception bubbling up (wait for all tests to pass to check it).
+ */
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_user_uncaught_exc_info); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 867, __pyx_L1_error)
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":870
+ * # TODO: Check: this may no longer be needed as in the unwind we know it's
+ * # an exception bubbling up (wait for all tests to pass to check it).
+ * if func_code_info.try_except_container_obj is None: # <<<<<<<<<<<<<<
+ * container_obj = _TryExceptContainerObj(py_db.collect_try_except_info(frame.f_code))
+ * func_code_info.try_except_container_obj = container_obj
+ */
+ __pyx_t_8 = (__pyx_v_func_code_info->try_except_container_obj == Py_None);
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":871
+ * # an exception bubbling up (wait for all tests to pass to check it).
+ * if func_code_info.try_except_container_obj is None:
+ * container_obj = _TryExceptContainerObj(py_db.collect_try_except_info(frame.f_code)) # <<<<<<<<<<<<<<
+ * func_code_info.try_except_container_obj = container_obj
+ *
+ */
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_collect_try_except_info); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 871, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 871, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_4 = NULL;
+ __pyx_t_12 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_12 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5};
+ __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 871, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __pyx_t_7 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj), __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 871, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_v_container_obj = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *)__pyx_t_7);
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":872
+ * if func_code_info.try_except_container_obj is None:
+ * container_obj = _TryExceptContainerObj(py_db.collect_try_except_info(frame.f_code))
+ * func_code_info.try_except_container_obj = container_obj # <<<<<<<<<<<<<<
+ *
+ * is_unhandled = is_unhandled_exception(
+ */
+ __Pyx_INCREF((PyObject *)__pyx_v_container_obj);
+ __Pyx_GIVEREF((PyObject *)__pyx_v_container_obj);
+ __Pyx_GOTREF(__pyx_v_func_code_info->try_except_container_obj);
+ __Pyx_DECREF(__pyx_v_func_code_info->try_except_container_obj);
+ __pyx_v_func_code_info->try_except_container_obj = ((PyObject *)__pyx_v_container_obj);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":870
+ * # TODO: Check: this may no longer be needed as in the unwind we know it's
+ * # an exception bubbling up (wait for all tests to pass to check it).
+ * if func_code_info.try_except_container_obj is None: # <<<<<<<<<<<<<<
+ * container_obj = _TryExceptContainerObj(py_db.collect_try_except_info(frame.f_code))
+ * func_code_info.try_except_container_obj = container_obj
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":874
+ * func_code_info.try_except_container_obj = container_obj
+ *
+ * is_unhandled = is_unhandled_exception( # <<<<<<<<<<<<<<
+ * func_code_info.try_except_container_obj, py_db, frame, user_uncaught_exc_info[1], user_uncaught_exc_info[2]
+ * )
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_is_unhandled_exception); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 874, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":875
+ *
+ * is_unhandled = is_unhandled_exception(
+ * func_code_info.try_except_container_obj, py_db, frame, user_uncaught_exc_info[1], user_uncaught_exc_info[2] # <<<<<<<<<<<<<<
+ * )
+ *
+ */
+ __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_user_uncaught_exc_info, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 875, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_user_uncaught_exc_info, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 875, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_13 = NULL;
+ __pyx_t_12 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_13)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_13);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ __pyx_t_12 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[6] = {__pyx_t_13, __pyx_v_func_code_info->try_except_container_obj, __pyx_v_py_db, __pyx_v_frame, __pyx_t_5, __pyx_t_4};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_12, 5+__pyx_t_12);
+ __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 874, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ }
+ __pyx_v_is_unhandled = __pyx_t_7;
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":878
+ * )
+ *
+ * if is_unhandled: # <<<<<<<<<<<<<<
+ * # print('stop in user uncaught')
+ * handle_exception(py_db, thread_info.thread, frame, user_uncaught_exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
+ */
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_is_unhandled); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 878, __pyx_L1_error)
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":880
+ * if is_unhandled:
+ * # print('stop in user uncaught')
+ * handle_exception(py_db, thread_info.thread, frame, user_uncaught_exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED) # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_handle_exception); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 880, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_user_uncaught_exc_info, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 880, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 880, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_13 = NULL;
+ __pyx_t_12 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_13)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_13);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ __pyx_t_12 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[6] = {__pyx_t_13, __pyx_v_py_db, __pyx_v_thread_info->thread, __pyx_v_frame, __pyx_t_4, __pyx_t_5};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_12, 5+__pyx_t_12);
+ __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 880, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":881
+ * # print('stop in user uncaught')
+ * handle_exception(py_db, thread_info.thread, frame, user_uncaught_exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
+ * return # <<<<<<<<<<<<<<
+ *
+ * break_on_uncaught_exceptions = py_db.break_on_uncaught_exceptions
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":878
+ * )
+ *
+ * if is_unhandled: # <<<<<<<<<<<<<<
+ * # print('stop in user uncaught')
+ * handle_exception(py_db, thread_info.thread, frame, user_uncaught_exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":867
+ * py_db, thread_info.additional_info, frame, thread_info.thread, arg, None
+ * )
+ * if user_uncaught_exc_info: # <<<<<<<<<<<<<<
+ * # TODO: Check: this may no longer be needed as in the unwind we know it's
+ * # an exception bubbling up (wait for all tests to pass to check it).
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":863
+ *
+ *
+ * if has_caught_exception_breakpoint_in_pydb: # <<<<<<<<<<<<<<
+ * _should_stop, frame, user_uncaught_exc_info = should_stop_on_exception(
+ * py_db, thread_info.additional_info, frame, thread_info.thread, arg, None
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":883
+ * return
+ *
+ * break_on_uncaught_exceptions = py_db.break_on_uncaught_exceptions # <<<<<<<<<<<<<<
+ * if break_on_uncaught_exceptions and _is_last_user_frame(frame):
+ * stop_on_unhandled_exception(py_db, thread_info.thread, thread_info.additional_info, arg)
+ */
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_break_on_uncaught_exceptions); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 883, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_v_break_on_uncaught_exceptions = __pyx_t_7;
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":884
+ *
+ * break_on_uncaught_exceptions = py_db.break_on_uncaught_exceptions
+ * if break_on_uncaught_exceptions and _is_last_user_frame(frame): # <<<<<<<<<<<<<<
+ * stop_on_unhandled_exception(py_db, thread_info.thread, thread_info.additional_info, arg)
+ *
+ */
+ __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_break_on_uncaught_exceptions); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 884, __pyx_L1_error)
+ if (__pyx_t_11) {
+ } else {
+ __pyx_t_8 = __pyx_t_11;
+ goto __pyx_L29_bool_binop_done;
+ }
+ __pyx_t_7 = __pyx_f_29_pydevd_sys_monitoring_cython__is_last_user_frame(__pyx_v_frame); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 884, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 884, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_8 = __pyx_t_11;
+ __pyx_L29_bool_binop_done:;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":885
+ * break_on_uncaught_exceptions = py_db.break_on_uncaught_exceptions
+ * if break_on_uncaught_exceptions and _is_last_user_frame(frame):
+ * stop_on_unhandled_exception(py_db, thread_info.thread, thread_info.additional_info, arg) # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_stop_on_unhandled_exception); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 885, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = NULL;
+ __pyx_t_12 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ __pyx_t_12 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[5] = {__pyx_t_5, __pyx_v_py_db, __pyx_v_thread_info->thread, ((PyObject *)__pyx_v_thread_info->additional_info), __pyx_v_arg};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_12, 4+__pyx_t_12);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 885, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":884
+ *
+ * break_on_uncaught_exceptions = py_db.break_on_uncaught_exceptions
+ * if break_on_uncaught_exceptions and _is_last_user_frame(frame): # <<<<<<<<<<<<<<
+ * stop_on_unhandled_exception(py_db, thread_info.thread, thread_info.additional_info, arg)
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":826
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _unwind_event(code, instruction, exc): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * cdef FuncCodeInfo func_code_info
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_13);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._unwind_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF((PyObject *)__pyx_v_thread_info);
+ __Pyx_XDECREF((PyObject *)__pyx_v_func_code_info);
+ __Pyx_XDECREF(__pyx_v_frame);
+ __Pyx_XDECREF(__pyx_v_arg);
+ __Pyx_XDECREF(__pyx_v_py_db);
+ __Pyx_XDECREF(__pyx_v_has_caught_exception_breakpoint_in_pydb);
+ __Pyx_XDECREF(__pyx_v__should_stop);
+ __Pyx_XDECREF(__pyx_v_user_uncaught_exc_info);
+ __Pyx_XDECREF((PyObject *)__pyx_v_container_obj);
+ __Pyx_XDECREF(__pyx_v_is_unhandled);
+ __Pyx_XDECREF(__pyx_v_break_on_uncaught_exceptions);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":890
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _raise_event(code, instruction, exc): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * cdef FuncCodeInfo func_code_info
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__raise_event(PyObject *__pyx_v_code, CYTHON_UNUSED PyObject *__pyx_v_instruction, PyObject *__pyx_v_exc) {
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_thread_info = 0;
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v_func_code_info = 0;
+ PyObject *__pyx_v_frame = NULL;
+ PyObject *__pyx_v_arg = NULL;
+ PyObject *__pyx_v_py_db = 0;
+ PyObject *__pyx_v_prev_exc_info = NULL;
+ PyObject *__pyx_v_should_stop = NULL;
+ PyObject *__pyx_v__user_uncaught_exc_info = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ int __pyx_t_8;
+ struct __pyx_opt_args_29_pydevd_sys_monitoring_cython__getframe __pyx_t_9;
+ int __pyx_t_10;
+ int __pyx_t_11;
+ unsigned int __pyx_t_12;
+ PyObject *__pyx_t_13 = NULL;
+ PyObject *(*__pyx_t_14)(PyObject *);
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_raise_event", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":907
+ * it cannot be individually enabled/disabled for a given code object).
+ * """
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":908
+ * """
+ * try:
+ * thread_info = _thread_local_info.thread_info # <<<<<<<<<<<<<<
+ * except:
+ * thread_info = _get_thread_info(True, 1)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 908, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_thread_info); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 908, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo))))) __PYX_ERR(0, 908, __pyx_L3_error)
+ __pyx_v_thread_info = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_t_5);
+ __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":907
+ * it cannot be individually enabled/disabled for a given code object).
+ * """
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L8_try_end;
+ __pyx_L3_error:;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":909
+ * try:
+ * thread_info = _thread_local_info.thread_info
+ * except: # <<<<<<<<<<<<<<
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None:
+ */
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._raise_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(0, 909, __pyx_L5_except_error)
+ __Pyx_XGOTREF(__pyx_t_5);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_6);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":910
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ * thread_info = _get_thread_info(True, 1) # <<<<<<<<<<<<<<
+ * if thread_info is None:
+ * return
+ */
+ __pyx_t_7 = __pyx_f_29_pydevd_sys_monitoring_cython__get_thread_info(1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 910, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo))))) __PYX_ERR(0, 910, __pyx_L5_except_error)
+ __Pyx_XDECREF_SET(__pyx_v_thread_info, ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_t_7));
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":911
+ * except:
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_8 = (((PyObject *)__pyx_v_thread_info) == Py_None);
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":912
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None:
+ * return # <<<<<<<<<<<<<<
+ *
+ * frame = _getframe(1)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L6_except_return;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":911
+ * except:
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L4_exception_handled;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":907
+ * it cannot be individually enabled/disabled for a given code object).
+ * """
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ __pyx_L5_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L1_error;
+ __pyx_L6_except_return:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L0;
+ __pyx_L4_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ __pyx_L8_try_end:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":914
+ * return
+ *
+ * frame = _getframe(1) # <<<<<<<<<<<<<<
+ * arg = (type(exc), exc, exc.__traceback__)
+ *
+ */
+ __pyx_t_9.__pyx_n = 1;
+ __pyx_t_9.depth = __pyx_int_1;
+ __pyx_t_6 = __pyx_f_29_pydevd_sys_monitoring_cython__getframe(&__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 914, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_v_frame = __pyx_t_6;
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":915
+ *
+ * frame = _getframe(1)
+ * arg = (type(exc), exc, exc.__traceback__) # <<<<<<<<<<<<<<
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ */
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_n_s_traceback); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 915, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 915, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_exc)));
+ __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_exc)));
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)Py_TYPE(__pyx_v_exc)))) __PYX_ERR(0, 915, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_v_exc);
+ __Pyx_GIVEREF(__pyx_v_exc);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_exc)) __PYX_ERR(0, 915, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_6);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_6)) __PYX_ERR(0, 915, __pyx_L1_error);
+ __pyx_t_6 = 0;
+ __pyx_v_arg = ((PyObject*)__pyx_t_4);
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":917
+ * arg = (type(exc), exc, exc.__traceback__)
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg # <<<<<<<<<<<<<<
+ * if py_db is None or py_db.pydb_disposed:
+ * return
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 917, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_global_dbg); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 917, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_py_db = __pyx_t_6;
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":918
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_10 = (__pyx_v_py_db == Py_None);
+ if (!__pyx_t_10) {
+ } else {
+ __pyx_t_8 = __pyx_t_10;
+ goto __pyx_L13_bool_binop_done;
+ }
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_pydb_disposed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 918, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 918, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_8 = __pyx_t_10;
+ __pyx_L13_bool_binop_done:;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":919
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed:
+ * return # <<<<<<<<<<<<<<
+ *
+ * if not thread_info.trace or thread_info.thread._is_stopped:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":918
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":921
+ * return
+ *
+ * if not thread_info.trace or thread_info.thread._is_stopped: # <<<<<<<<<<<<<<
+ * # For thread-related stuff we can't disable the code tracing because other
+ * # threads may still want it...
+ */
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_thread_info->trace); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 921, __pyx_L1_error)
+ __pyx_t_11 = (!__pyx_t_10);
+ if (!__pyx_t_11) {
+ } else {
+ __pyx_t_8 = __pyx_t_11;
+ goto __pyx_L16_bool_binop_done;
+ }
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread_info->thread, __pyx_n_s_is_stopped); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 921, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 921, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_8 = __pyx_t_11;
+ __pyx_L16_bool_binop_done:;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":924
+ * # For thread-related stuff we can't disable the code tracing because other
+ * # threads may still want it...
+ * return # <<<<<<<<<<<<<<
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":921
+ * return
+ *
+ * if not thread_info.trace or thread_info.thread._is_stopped: # <<<<<<<<<<<<<<
+ * # For thread-related stuff we can't disable the code tracing because other
+ * # threads may still want it...
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":926
+ * return
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1) # <<<<<<<<<<<<<<
+ * if func_code_info.always_skip_code:
+ * return
+ */
+ __pyx_t_6 = ((PyObject *)__pyx_f_29_pydevd_sys_monitoring_cython__get_func_code_info(__pyx_v_code, __pyx_int_1, 0)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 926, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_v_func_code_info = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)__pyx_t_6);
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":927
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ * if func_code_info.always_skip_code: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ if (__pyx_v_func_code_info->always_skip_code) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":928
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ * if func_code_info.always_skip_code:
+ * return # <<<<<<<<<<<<<<
+ *
+ * # print('_raise_event --- ', code, exc)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":927
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ * if func_code_info.always_skip_code: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":934
+ * # Compute the previous exception info (if any). We use it to check if the exception
+ * # should be stopped
+ * prev_exc_info = _thread_local_info._user_uncaught_exc_info if hasattr(_thread_local_info, "_user_uncaught_exc_info") else None # <<<<<<<<<<<<<<
+ * should_stop, frame, _user_uncaught_exc_info = should_stop_on_exception(
+ * py_db, thread_info.additional_info, frame, thread_info.thread, arg, prev_exc_info
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 934, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_8 = __Pyx_HasAttr(__pyx_t_4, __pyx_n_s_user_uncaught_exc_info); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 934, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (__pyx_t_8) {
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 934, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_user_uncaught_exc_info); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 934, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_6 = __pyx_t_5;
+ __pyx_t_5 = 0;
+ } else {
+ __Pyx_INCREF(Py_None);
+ __pyx_t_6 = Py_None;
+ }
+ __pyx_v_prev_exc_info = __pyx_t_6;
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":935
+ * # should be stopped
+ * prev_exc_info = _thread_local_info._user_uncaught_exc_info if hasattr(_thread_local_info, "_user_uncaught_exc_info") else None
+ * should_stop, frame, _user_uncaught_exc_info = should_stop_on_exception( # <<<<<<<<<<<<<<
+ * py_db, thread_info.additional_info, frame, thread_info.thread, arg, prev_exc_info
+ * )
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_should_stop_on_exception); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 935, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":936
+ * prev_exc_info = _thread_local_info._user_uncaught_exc_info if hasattr(_thread_local_info, "_user_uncaught_exc_info") else None
+ * should_stop, frame, _user_uncaught_exc_info = should_stop_on_exception(
+ * py_db, thread_info.additional_info, frame, thread_info.thread, arg, prev_exc_info # <<<<<<<<<<<<<<
+ * )
+ *
+ */
+ __pyx_t_4 = NULL;
+ __pyx_t_12 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ __pyx_t_12 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[7] = {__pyx_t_4, __pyx_v_py_db, ((PyObject *)__pyx_v_thread_info->additional_info), __pyx_v_frame, __pyx_v_thread_info->thread, __pyx_v_arg, __pyx_v_prev_exc_info};
+ __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_12, 6+__pyx_t_12);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 935, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ }
+ if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
+ PyObject* sequence = __pyx_t_6;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 3)) {
+ if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 935, __pyx_L1_error)
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1);
+ __pyx_t_7 = PyTuple_GET_ITEM(sequence, 2);
+ } else {
+ __pyx_t_5 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_4 = PyList_GET_ITEM(sequence, 1);
+ __pyx_t_7 = PyList_GET_ITEM(sequence, 2);
+ }
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_7);
+ #else
+ __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 935, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 935, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 935, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ #endif
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ } else {
+ Py_ssize_t index = -1;
+ __pyx_t_13 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 935, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_13);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_14 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_13);
+ index = 0; __pyx_t_5 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_5)) goto __pyx_L19_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_5);
+ index = 1; __pyx_t_4 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_4)) goto __pyx_L19_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_4);
+ index = 2; __pyx_t_7 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_7)) goto __pyx_L19_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_7);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 3) < 0) __PYX_ERR(0, 935, __pyx_L1_error)
+ __pyx_t_14 = NULL;
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+ goto __pyx_L20_unpacking_done;
+ __pyx_L19_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __pyx_t_14 = NULL;
+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+ __PYX_ERR(0, 935, __pyx_L1_error)
+ __pyx_L20_unpacking_done:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":935
+ * # should be stopped
+ * prev_exc_info = _thread_local_info._user_uncaught_exc_info if hasattr(_thread_local_info, "_user_uncaught_exc_info") else None
+ * should_stop, frame, _user_uncaught_exc_info = should_stop_on_exception( # <<<<<<<<<<<<<<
+ * py_db, thread_info.additional_info, frame, thread_info.thread, arg, prev_exc_info
+ * )
+ */
+ __pyx_v_should_stop = __pyx_t_5;
+ __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_4);
+ __pyx_t_4 = 0;
+ __pyx_v__user_uncaught_exc_info = __pyx_t_7;
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":940
+ *
+ * # Save the current exception info for the next raise event.
+ * _thread_local_info._user_uncaught_exc_info = _user_uncaught_exc_info # <<<<<<<<<<<<<<
+ *
+ * # print('!!!! should_stop (in raise)', should_stop)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 940, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (__Pyx_PyObject_SetAttrStr(__pyx_t_6, __pyx_n_s_user_uncaught_exc_info, __pyx_v__user_uncaught_exc_info) < 0) __PYX_ERR(0, 940, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":943
+ *
+ * # print('!!!! should_stop (in raise)', should_stop)
+ * if should_stop: # <<<<<<<<<<<<<<
+ * handle_exception(py_db, thread_info.thread, frame, arg, EXCEPTION_TYPE_HANDLED)
+ *
+ */
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_should_stop); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 943, __pyx_L1_error)
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":944
+ * # print('!!!! should_stop (in raise)', should_stop)
+ * if should_stop:
+ * handle_exception(py_db, thread_info.thread, frame, arg, EXCEPTION_TYPE_HANDLED) # <<<<<<<<<<<<<<
+ *
+ * # Once we leave the raise event, we are no longer in the state of 'just_raised', so
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_handle_exception); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 944, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_EXCEPTION_TYPE_HANDLED); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 944, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = NULL;
+ __pyx_t_12 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_12 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[6] = {__pyx_t_5, __pyx_v_py_db, __pyx_v_thread_info->thread, __pyx_v_frame, __pyx_v_arg, __pyx_t_4};
+ __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_12, 5+__pyx_t_12);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 944, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":943
+ *
+ * # print('!!!! should_stop (in raise)', should_stop)
+ * if should_stop: # <<<<<<<<<<<<<<
+ * handle_exception(py_db, thread_info.thread, frame, arg, EXCEPTION_TYPE_HANDLED)
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":948
+ * # Once we leave the raise event, we are no longer in the state of 'just_raised', so
+ * # indicate that this traceback is for an exception in the unwinding state
+ * flag_as_unwinding(exc.__traceback__) # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_flag_as_unwinding); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 948, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_n_s_traceback); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 948, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = NULL;
+ __pyx_t_12 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_12 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
+ __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 948, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":890
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _raise_event(code, instruction, exc): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * cdef FuncCodeInfo func_code_info
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_13);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._raise_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF((PyObject *)__pyx_v_thread_info);
+ __Pyx_XDECREF((PyObject *)__pyx_v_func_code_info);
+ __Pyx_XDECREF(__pyx_v_frame);
+ __Pyx_XDECREF(__pyx_v_arg);
+ __Pyx_XDECREF(__pyx_v_py_db);
+ __Pyx_XDECREF(__pyx_v_prev_exc_info);
+ __Pyx_XDECREF(__pyx_v_should_stop);
+ __Pyx_XDECREF(__pyx_v__user_uncaught_exc_info);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":953
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef str get_func_name(frame): # <<<<<<<<<<<<<<
+ * cdef str func_name
+ * # ELSE
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython_get_func_name(PyObject *__pyx_v_frame) {
+ PyObject *__pyx_v_func_name = 0;
+ PyObject *__pyx_v_code_obj = NULL;
+ PyObject *__pyx_v_cls_name = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ unsigned int __pyx_t_7;
+ int __pyx_t_8;
+ PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_10 = NULL;
+ PyObject *__pyx_t_11 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("get_func_name", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":959
+ * # ENDIF
+ * # fmt: on
+ * code_obj = frame.f_code # <<<<<<<<<<<<<<
+ * func_name = code_obj.co_name
+ * try:
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 959, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_code_obj = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":960
+ * # fmt: on
+ * code_obj = frame.f_code
+ * func_name = code_obj.co_name # <<<<<<<<<<<<<<
+ * try:
+ * cls_name = get_clsname_for_code(code_obj, frame)
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_code_obj, __pyx_n_s_co_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 960, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(0, 960, __pyx_L1_error)
+ __pyx_v_func_name = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":961
+ * code_obj = frame.f_code
+ * func_name = code_obj.co_name
+ * try: # <<<<<<<<<<<<<<
+ * cls_name = get_clsname_for_code(code_obj, frame)
+ * if cls_name is not None:
+ */
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_4);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":962
+ * func_name = code_obj.co_name
+ * try:
+ * cls_name = get_clsname_for_code(code_obj, frame) # <<<<<<<<<<<<<<
+ * if cls_name is not None:
+ * return "%s.%s" % (cls_name, func_name)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_get_clsname_for_code); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 962, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = NULL;
+ __pyx_t_7 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ __pyx_t_7 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_code_obj, __pyx_v_frame};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 962, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ }
+ __pyx_v_cls_name = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":963
+ * try:
+ * cls_name = get_clsname_for_code(code_obj, frame)
+ * if cls_name is not None: # <<<<<<<<<<<<<<
+ * return "%s.%s" % (cls_name, func_name)
+ * else:
+ */
+ __pyx_t_8 = (__pyx_v_cls_name != Py_None);
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":964
+ * cls_name = get_clsname_for_code(code_obj, frame)
+ * if cls_name is not None:
+ * return "%s.%s" % (cls_name, func_name) # <<<<<<<<<<<<<<
+ * else:
+ * return func_name
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 964, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_v_cls_name);
+ __Pyx_GIVEREF(__pyx_v_cls_name);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_cls_name)) __PYX_ERR(0, 964, __pyx_L3_error);
+ __Pyx_INCREF(__pyx_v_func_name);
+ __Pyx_GIVEREF(__pyx_v_func_name);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_func_name)) __PYX_ERR(0, 964, __pyx_L3_error);
+ __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_s_s_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 964, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (!(likely(PyString_CheckExact(__pyx_t_5)) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_5))) __PYX_ERR(0, 964, __pyx_L3_error)
+ __pyx_r = ((PyObject*)__pyx_t_5);
+ __pyx_t_5 = 0;
+ goto __pyx_L7_try_return;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":963
+ * try:
+ * cls_name = get_clsname_for_code(code_obj, frame)
+ * if cls_name is not None: # <<<<<<<<<<<<<<
+ * return "%s.%s" % (cls_name, func_name)
+ * else:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":966
+ * return "%s.%s" % (cls_name, func_name)
+ * else:
+ * return func_name # <<<<<<<<<<<<<<
+ * except:
+ * pydev_log.exception()
+ */
+ /*else*/ {
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_func_name);
+ __pyx_r = __pyx_v_func_name;
+ goto __pyx_L7_try_return;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":961
+ * code_obj = frame.f_code
+ * func_name = code_obj.co_name
+ * try: # <<<<<<<<<<<<<<
+ * cls_name = get_clsname_for_code(code_obj, frame)
+ * if cls_name is not None:
+ */
+ }
+ __pyx_L3_error:;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":967
+ * else:
+ * return func_name
+ * except: # <<<<<<<<<<<<<<
+ * pydev_log.exception()
+ * return func_name
+ */
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.get_func_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_6) < 0) __PYX_ERR(0, 967, __pyx_L5_except_error)
+ __Pyx_XGOTREF(__pyx_t_5);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_6);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":968
+ * return func_name
+ * except:
+ * pydev_log.exception() # <<<<<<<<<<<<<<
+ * return func_name
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 968, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_exception); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 968, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = NULL;
+ __pyx_t_7 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_11))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
+ __Pyx_INCREF(__pyx_t_10);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_11, function);
+ __pyx_t_7 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
+ __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 968, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":969
+ * except:
+ * pydev_log.exception()
+ * return func_name # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_func_name);
+ __pyx_r = __pyx_v_func_name;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L6_except_return;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":961
+ * code_obj = frame.f_code
+ * func_name = code_obj.co_name
+ * try: # <<<<<<<<<<<<<<
+ * cls_name = get_clsname_for_code(code_obj, frame)
+ * if cls_name is not None:
+ */
+ __pyx_L5_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_XGIVEREF(__pyx_t_4);
+ __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+ goto __pyx_L1_error;
+ __pyx_L7_try_return:;
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_XGIVEREF(__pyx_t_4);
+ __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+ goto __pyx_L0;
+ __pyx_L6_except_return:;
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_XGIVEREF(__pyx_t_4);
+ __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+ goto __pyx_L0;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":953
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef str get_func_name(frame): # <<<<<<<<<<<<<<
+ * cdef str func_name
+ * # ELSE
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_11);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.get_func_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_func_name);
+ __Pyx_XDECREF(__pyx_v_code_obj);
+ __Pyx_XDECREF(__pyx_v_cls_name);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":974
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _show_return_values(frame, arg): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _show_return_values(frame, arg):
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__show_return_values(PyObject *__pyx_v_frame, PyObject *__pyx_v_arg) {
+ PyObject *__pyx_v_f_locals_back = NULL;
+ PyObject *__pyx_v_return_values_dict = NULL;
+ PyObject *__pyx_v_name = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ int __pyx_t_6;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ unsigned int __pyx_t_9;
+ PyObject *__pyx_t_10 = NULL;
+ PyObject *__pyx_t_11 = NULL;
+ int __pyx_t_12;
+ int __pyx_t_13;
+ char const *__pyx_t_14;
+ PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_16 = NULL;
+ PyObject *__pyx_t_17 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_show_return_values", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":979
+ * # ENDIF
+ * # fmt: on
+ * try: # <<<<<<<<<<<<<<
+ * try:
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ */
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":980
+ * # fmt: on
+ * try:
+ * try: # <<<<<<<<<<<<<<
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ * if f_locals_back is not None:
+ */
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":981
+ * try:
+ * try:
+ * f_locals_back = getattr(frame.f_back, "f_locals", None) # <<<<<<<<<<<<<<
+ * if f_locals_back is not None:
+ * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None)
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 981, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_GetAttr3(__pyx_t_4, __pyx_n_s_f_locals, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 981, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_f_locals_back = __pyx_t_5;
+ __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":982
+ * try:
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ * if f_locals_back is not None: # <<<<<<<<<<<<<<
+ * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None)
+ * if return_values_dict is None:
+ */
+ __pyx_t_6 = (__pyx_v_f_locals_back != Py_None);
+ if (__pyx_t_6) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":983
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ * if f_locals_back is not None:
+ * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None) # <<<<<<<<<<<<<<
+ * if return_values_dict is None:
+ * return_values_dict = {}
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_locals_back, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 983, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_RETURN_VALUES_DICT); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 983, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_9 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_t_7, Py_None};
+ __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_9, 2+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 983, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_v_return_values_dict = __pyx_t_5;
+ __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":984
+ * if f_locals_back is not None:
+ * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None)
+ * if return_values_dict is None: # <<<<<<<<<<<<<<
+ * return_values_dict = {}
+ * f_locals_back[RETURN_VALUES_DICT] = return_values_dict
+ */
+ __pyx_t_6 = (__pyx_v_return_values_dict == Py_None);
+ if (__pyx_t_6) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":985
+ * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None)
+ * if return_values_dict is None:
+ * return_values_dict = {} # <<<<<<<<<<<<<<
+ * f_locals_back[RETURN_VALUES_DICT] = return_values_dict
+ * name = get_func_name(frame)
+ */
+ __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 985, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF_SET(__pyx_v_return_values_dict, __pyx_t_5);
+ __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":986
+ * if return_values_dict is None:
+ * return_values_dict = {}
+ * f_locals_back[RETURN_VALUES_DICT] = return_values_dict # <<<<<<<<<<<<<<
+ * name = get_func_name(frame)
+ * return_values_dict[name] = arg
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_RETURN_VALUES_DICT); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 986, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ if (unlikely((PyObject_SetItem(__pyx_v_f_locals_back, __pyx_t_5, __pyx_v_return_values_dict) < 0))) __PYX_ERR(0, 986, __pyx_L6_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":984
+ * if f_locals_back is not None:
+ * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None)
+ * if return_values_dict is None: # <<<<<<<<<<<<<<
+ * return_values_dict = {}
+ * f_locals_back[RETURN_VALUES_DICT] = return_values_dict
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":987
+ * return_values_dict = {}
+ * f_locals_back[RETURN_VALUES_DICT] = return_values_dict
+ * name = get_func_name(frame) # <<<<<<<<<<<<<<
+ * return_values_dict[name] = arg
+ * except:
+ */
+ __pyx_t_5 = __pyx_f_29_pydevd_sys_monitoring_cython_get_func_name(__pyx_v_frame); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 987, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_v_name = __pyx_t_5;
+ __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":988
+ * f_locals_back[RETURN_VALUES_DICT] = return_values_dict
+ * name = get_func_name(frame)
+ * return_values_dict[name] = arg # <<<<<<<<<<<<<<
+ * except:
+ * pydev_log.exception()
+ */
+ if (unlikely((PyObject_SetItem(__pyx_v_return_values_dict, __pyx_v_name, __pyx_v_arg) < 0))) __PYX_ERR(0, 988, __pyx_L6_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":982
+ * try:
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ * if f_locals_back is not None: # <<<<<<<<<<<<<<
+ * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None)
+ * if return_values_dict is None:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":980
+ * # fmt: on
+ * try:
+ * try: # <<<<<<<<<<<<<<
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ * if f_locals_back is not None:
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L11_try_end;
+ __pyx_L6_error:;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":989
+ * name = get_func_name(frame)
+ * return_values_dict[name] = arg
+ * except: # <<<<<<<<<<<<<<
+ * pydev_log.exception()
+ * finally:
+ */
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._show_return_values", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 989, __pyx_L8_except_error)
+ __Pyx_XGOTREF(__pyx_t_5);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_7);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":990
+ * return_values_dict[name] = arg
+ * except:
+ * pydev_log.exception() # <<<<<<<<<<<<<<
+ * finally:
+ * f_locals_back = None
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 990, __pyx_L8_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_exception); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 990, __pyx_L8_except_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_11))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
+ __Pyx_INCREF(__pyx_t_10);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_11, function);
+ __pyx_t_9 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 990, __pyx_L8_except_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ goto __pyx_L7_exception_handled;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":980
+ * # fmt: on
+ * try:
+ * try: # <<<<<<<<<<<<<<
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ * if f_locals_back is not None:
+ */
+ __pyx_L8_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L4_error;
+ __pyx_L7_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ __pyx_L11_try_end:;
+ }
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":992
+ * pydev_log.exception()
+ * finally:
+ * f_locals_back = None # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ /*finally:*/ {
+ /*normal exit:*/{
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_f_locals_back, Py_None);
+ goto __pyx_L5;
+ }
+ __pyx_L4_error:;
+ /*exception exit:*/{
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
+ if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0)) __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_15);
+ __Pyx_XGOTREF(__pyx_t_16);
+ __Pyx_XGOTREF(__pyx_t_17);
+ __pyx_t_12 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
+ {
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_f_locals_back, Py_None);
+ }
+ if (PY_MAJOR_VERSION >= 3) {
+ __Pyx_XGIVEREF(__pyx_t_15);
+ __Pyx_XGIVEREF(__pyx_t_16);
+ __Pyx_XGIVEREF(__pyx_t_17);
+ __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
+ }
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_ErrRestore(__pyx_t_3, __pyx_t_2, __pyx_t_1);
+ __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
+ __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
+ goto __pyx_L1_error;
+ }
+ __pyx_L5:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":974
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _show_return_values(frame, arg): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _show_return_values(frame, arg):
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_11);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._show_return_values", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_f_locals_back);
+ __Pyx_XDECREF(__pyx_v_return_values_dict);
+ __Pyx_XDECREF(__pyx_v_name);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":997
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _remove_return_values(py_db, frame): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _remove_return_values(py_db, frame):
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__remove_return_values(CYTHON_UNUSED PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame) {
+ PyObject *__pyx_v_f_locals_back = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ unsigned int __pyx_t_8;
+ int __pyx_t_9;
+ PyObject *__pyx_t_10 = NULL;
+ PyObject *__pyx_t_11 = NULL;
+ int __pyx_t_12;
+ int __pyx_t_13;
+ char const *__pyx_t_14;
+ PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_16 = NULL;
+ PyObject *__pyx_t_17 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_remove_return_values", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1002
+ * # ENDIF
+ * # fmt: on
+ * try: # <<<<<<<<<<<<<<
+ * try:
+ * # Showing return values was turned off, we should remove them from locals dict.
+ */
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1003
+ * # fmt: on
+ * try:
+ * try: # <<<<<<<<<<<<<<
+ * # Showing return values was turned off, we should remove them from locals dict.
+ * # The values can be in the current frame or in the back one
+ */
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1006
+ * # Showing return values was turned off, we should remove them from locals dict.
+ * # The values can be in the current frame or in the back one
+ * frame.f_locals.pop(RETURN_VALUES_DICT, None) # <<<<<<<<<<<<<<
+ *
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ */
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_locals); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1006, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_pop); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1006, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_RETURN_VALUES_DICT); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1006, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = NULL;
+ __pyx_t_8 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ __pyx_t_8 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_5, Py_None};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1006, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1008
+ * frame.f_locals.pop(RETURN_VALUES_DICT, None)
+ *
+ * f_locals_back = getattr(frame.f_back, "f_locals", None) # <<<<<<<<<<<<<<
+ * if f_locals_back is not None:
+ * f_locals_back.pop(RETURN_VALUES_DICT, None)
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1008, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_GetAttr3(__pyx_t_4, __pyx_n_s_f_locals, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1008, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_f_locals_back = __pyx_t_6;
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1009
+ *
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ * if f_locals_back is not None: # <<<<<<<<<<<<<<
+ * f_locals_back.pop(RETURN_VALUES_DICT, None)
+ * except:
+ */
+ __pyx_t_9 = (__pyx_v_f_locals_back != Py_None);
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1010
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ * if f_locals_back is not None:
+ * f_locals_back.pop(RETURN_VALUES_DICT, None) # <<<<<<<<<<<<<<
+ * except:
+ * pydev_log.exception()
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_locals_back, __pyx_n_s_pop); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1010, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_RETURN_VALUES_DICT); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1010, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = NULL;
+ __pyx_t_8 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_8 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_5, Py_None};
+ __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1010, __pyx_L6_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1009
+ *
+ * f_locals_back = getattr(frame.f_back, "f_locals", None)
+ * if f_locals_back is not None: # <<<<<<<<<<<<<<
+ * f_locals_back.pop(RETURN_VALUES_DICT, None)
+ * except:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1003
+ * # fmt: on
+ * try:
+ * try: # <<<<<<<<<<<<<<
+ * # Showing return values was turned off, we should remove them from locals dict.
+ * # The values can be in the current frame or in the back one
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L11_try_end;
+ __pyx_L6_error:;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1011
+ * if f_locals_back is not None:
+ * f_locals_back.pop(RETURN_VALUES_DICT, None)
+ * except: # <<<<<<<<<<<<<<
+ * pydev_log.exception()
+ * finally:
+ */
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._remove_return_values", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_4, &__pyx_t_5) < 0) __PYX_ERR(0, 1011, __pyx_L8_except_error)
+ __Pyx_XGOTREF(__pyx_t_6);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_5);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1012
+ * f_locals_back.pop(RETURN_VALUES_DICT, None)
+ * except:
+ * pydev_log.exception() # <<<<<<<<<<<<<<
+ * finally:
+ * f_locals_back = None
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1012, __pyx_L8_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_exception); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1012, __pyx_L8_except_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = NULL;
+ __pyx_t_8 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_11))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
+ __Pyx_INCREF(__pyx_t_10);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_11, function);
+ __pyx_t_8 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1012, __pyx_L8_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ goto __pyx_L7_exception_handled;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1003
+ * # fmt: on
+ * try:
+ * try: # <<<<<<<<<<<<<<
+ * # Showing return values was turned off, we should remove them from locals dict.
+ * # The values can be in the current frame or in the back one
+ */
+ __pyx_L8_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L4_error;
+ __pyx_L7_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ __pyx_L11_try_end:;
+ }
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1014
+ * pydev_log.exception()
+ * finally:
+ * f_locals_back = None # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ /*finally:*/ {
+ /*normal exit:*/{
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_f_locals_back, Py_None);
+ goto __pyx_L5;
+ }
+ __pyx_L4_error:;
+ /*exception exit:*/{
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
+ if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0)) __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_15);
+ __Pyx_XGOTREF(__pyx_t_16);
+ __Pyx_XGOTREF(__pyx_t_17);
+ __pyx_t_12 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
+ {
+ __Pyx_INCREF(Py_None);
+ __Pyx_XDECREF_SET(__pyx_v_f_locals_back, Py_None);
+ }
+ if (PY_MAJOR_VERSION >= 3) {
+ __Pyx_XGIVEREF(__pyx_t_15);
+ __Pyx_XGIVEREF(__pyx_t_16);
+ __Pyx_XGIVEREF(__pyx_t_17);
+ __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
+ }
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_ErrRestore(__pyx_t_3, __pyx_t_2, __pyx_t_1);
+ __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
+ __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
+ goto __pyx_L1_error;
+ }
+ __pyx_L5:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":997
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _remove_return_values(py_db, frame): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _remove_return_values(py_db, frame):
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_11);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._remove_return_values", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_f_locals_back);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":1019
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _return_event(code, instruction, retval): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * cdef FuncCodeInfo func_code_info
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__return_event(PyObject *__pyx_v_code, CYTHON_UNUSED PyObject *__pyx_v_instruction, PyObject *__pyx_v_retval) {
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_thread_info = 0;
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v_func_code_info = 0;
+ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info = 0;
+ int __pyx_v_step_cmd;
+ PyObject *__pyx_v_py_db = 0;
+ PyObject *__pyx_v_frame = NULL;
+ PyObject *__pyx_v_stop_frame = NULL;
+ PyObject *__pyx_v_force_check_project_scope = NULL;
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v_back_func_code_info = NULL;
+ PyObject *__pyx_v_f_back = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ int __pyx_t_8;
+ int __pyx_t_9;
+ int __pyx_t_10;
+ struct __pyx_opt_args_29_pydevd_sys_monitoring_cython__getframe __pyx_t_11;
+ int __pyx_t_12;
+ PyObject *__pyx_t_13 = NULL;
+ unsigned int __pyx_t_14;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_return_event", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1028
+ * # ENDIF
+ * # fmt: on
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1029
+ * # fmt: on
+ * try:
+ * thread_info = _thread_local_info.thread_info # <<<<<<<<<<<<<<
+ * except:
+ * thread_info = _get_thread_info(True, 1)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1029, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_thread_info); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1029, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo))))) __PYX_ERR(0, 1029, __pyx_L3_error)
+ __pyx_v_thread_info = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_t_5);
+ __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1028
+ * # ENDIF
+ * # fmt: on
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L8_try_end;
+ __pyx_L3_error:;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1030
+ * try:
+ * thread_info = _thread_local_info.thread_info
+ * except: # <<<<<<<<<<<<<<
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None:
+ */
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._return_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(0, 1030, __pyx_L5_except_error)
+ __Pyx_XGOTREF(__pyx_t_5);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_6);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1031
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ * thread_info = _get_thread_info(True, 1) # <<<<<<<<<<<<<<
+ * if thread_info is None:
+ * return
+ */
+ __pyx_t_7 = __pyx_f_29_pydevd_sys_monitoring_cython__get_thread_info(1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1031, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo))))) __PYX_ERR(0, 1031, __pyx_L5_except_error)
+ __Pyx_XDECREF_SET(__pyx_v_thread_info, ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_t_7));
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1032
+ * except:
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_8 = (((PyObject *)__pyx_v_thread_info) == Py_None);
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1033
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None:
+ * return # <<<<<<<<<<<<<<
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L6_except_return;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1032
+ * except:
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L4_exception_handled;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1028
+ * # ENDIF
+ * # fmt: on
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ __pyx_L5_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L1_error;
+ __pyx_L6_except_return:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L0;
+ __pyx_L4_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ __pyx_L8_try_end:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1035
+ * return
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg # <<<<<<<<<<<<<<
+ * if py_db is None or py_db.pydb_disposed:
+ * return monitor.DISABLE
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1035, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_global_dbg); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1035, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_v_py_db = __pyx_t_4;
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1036
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed: # <<<<<<<<<<<<<<
+ * return monitor.DISABLE
+ *
+ */
+ __pyx_t_9 = (__pyx_v_py_db == Py_None);
+ if (!__pyx_t_9) {
+ } else {
+ __pyx_t_8 = __pyx_t_9;
+ goto __pyx_L13_bool_binop_done;
+ }
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_pydb_disposed); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1036, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1036, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __pyx_t_9;
+ __pyx_L13_bool_binop_done:;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1037
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed:
+ * return monitor.DISABLE # <<<<<<<<<<<<<<
+ *
+ * if not thread_info.trace or thread_info.thread._is_stopped:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1037, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_DISABLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1037, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_r = __pyx_t_6;
+ __pyx_t_6 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1036
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed: # <<<<<<<<<<<<<<
+ * return monitor.DISABLE
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1039
+ * return monitor.DISABLE
+ *
+ * if not thread_info.trace or thread_info.thread._is_stopped: # <<<<<<<<<<<<<<
+ * # For thread-related stuff we can't disable the code tracing because other
+ * # threads may still want it...
+ */
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_thread_info->trace); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1039, __pyx_L1_error)
+ __pyx_t_10 = (!__pyx_t_9);
+ if (!__pyx_t_10) {
+ } else {
+ __pyx_t_8 = __pyx_t_10;
+ goto __pyx_L16_bool_binop_done;
+ }
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread_info->thread, __pyx_n_s_is_stopped); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1039, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1039, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_8 = __pyx_t_10;
+ __pyx_L16_bool_binop_done:;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1042
+ * # For thread-related stuff we can't disable the code tracing because other
+ * # threads may still want it...
+ * return # <<<<<<<<<<<<<<
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1039
+ * return monitor.DISABLE
+ *
+ * if not thread_info.trace or thread_info.thread._is_stopped: # <<<<<<<<<<<<<<
+ * # For thread-related stuff we can't disable the code tracing because other
+ * # threads may still want it...
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1044
+ * return
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1) # <<<<<<<<<<<<<<
+ * if func_code_info.always_skip_code:
+ * return monitor.DISABLE
+ */
+ __pyx_t_6 = ((PyObject *)__pyx_f_29_pydevd_sys_monitoring_cython__get_func_code_info(__pyx_v_code, __pyx_int_1, 0)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1044, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_v_func_code_info = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)__pyx_t_6);
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1045
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ * if func_code_info.always_skip_code: # <<<<<<<<<<<<<<
+ * return monitor.DISABLE
+ *
+ */
+ if (__pyx_v_func_code_info->always_skip_code) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1046
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ * if func_code_info.always_skip_code:
+ * return monitor.DISABLE # <<<<<<<<<<<<<<
+ *
+ * info = thread_info.additional_info
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_monitor); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1046, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_DISABLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1046, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1045
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ * if func_code_info.always_skip_code: # <<<<<<<<<<<<<<
+ * return monitor.DISABLE
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1048
+ * return monitor.DISABLE
+ *
+ * info = thread_info.additional_info # <<<<<<<<<<<<<<
+ *
+ * # We know the frame depth.
+ */
+ __pyx_t_4 = ((PyObject *)__pyx_v_thread_info->additional_info);
+ __Pyx_INCREF(__pyx_t_4);
+ __pyx_v_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_4);
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1051
+ *
+ * # We know the frame depth.
+ * frame = _getframe(1) # <<<<<<<<<<<<<<
+ *
+ * step_cmd = info.pydev_step_cmd
+ */
+ __pyx_t_11.__pyx_n = 1;
+ __pyx_t_11.depth = __pyx_int_1;
+ __pyx_t_4 = __pyx_f_29_pydevd_sys_monitoring_cython__getframe(&__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1051, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_v_frame = __pyx_t_4;
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1053
+ * frame = _getframe(1)
+ *
+ * step_cmd = info.pydev_step_cmd # <<<<<<<<<<<<<<
+ * if step_cmd == -1:
+ * return
+ */
+ __pyx_t_12 = __pyx_v_info->pydev_step_cmd;
+ __pyx_v_step_cmd = __pyx_t_12;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1054
+ *
+ * step_cmd = info.pydev_step_cmd
+ * if step_cmd == -1: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_8 = (__pyx_v_step_cmd == -1L);
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1055
+ * step_cmd = info.pydev_step_cmd
+ * if step_cmd == -1:
+ * return # <<<<<<<<<<<<<<
+ *
+ * if info.suspend_type != PYTHON_SUSPEND:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1054
+ *
+ * step_cmd = info.pydev_step_cmd
+ * if step_cmd == -1: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1057
+ * return
+ *
+ * if info.suspend_type != PYTHON_SUSPEND: # <<<<<<<<<<<<<<
+ * # Plugin stepping
+ * if func_code_info.plugin_return_stepping:
+ */
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_info->suspend_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1057, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_PYTHON_SUSPEND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1057, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_6, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1057, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1057, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1059
+ * if info.suspend_type != PYTHON_SUSPEND:
+ * # Plugin stepping
+ * if func_code_info.plugin_return_stepping: # <<<<<<<<<<<<<<
+ * _plugin_stepping(py_db, step_cmd, "return", frame, thread_info)
+ * return
+ */
+ if (__pyx_v_func_code_info->plugin_return_stepping) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1060
+ * # Plugin stepping
+ * if func_code_info.plugin_return_stepping:
+ * _plugin_stepping(py_db, step_cmd, "return", frame, thread_info) # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_5 = __pyx_f_29_pydevd_sys_monitoring_cython__plugin_stepping(__pyx_v_py_db, __pyx_v_step_cmd, __pyx_n_s_return, __pyx_v_frame, __pyx_v_thread_info); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1060, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1059
+ * if info.suspend_type != PYTHON_SUSPEND:
+ * # Plugin stepping
+ * if func_code_info.plugin_return_stepping: # <<<<<<<<<<<<<<
+ * _plugin_stepping(py_db, step_cmd, "return", frame, thread_info)
+ * return
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1061
+ * if func_code_info.plugin_return_stepping:
+ * _plugin_stepping(py_db, step_cmd, "return", frame, thread_info)
+ * return # <<<<<<<<<<<<<<
+ *
+ * # Python line stepping
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1057
+ * return
+ *
+ * if info.suspend_type != PYTHON_SUSPEND: # <<<<<<<<<<<<<<
+ * # Plugin stepping
+ * if func_code_info.plugin_return_stepping:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1064
+ *
+ * # Python line stepping
+ * stop_frame = info.pydev_step_stop # <<<<<<<<<<<<<<
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE):
+ * force_check_project_scope = step_cmd == CMD_STEP_INTO_MY_CODE
+ */
+ __pyx_t_5 = __pyx_v_info->pydev_step_stop;
+ __Pyx_INCREF(__pyx_t_5);
+ __pyx_v_stop_frame = __pyx_t_5;
+ __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1065
+ * # Python line stepping
+ * stop_frame = info.pydev_step_stop
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE): # <<<<<<<<<<<<<<
+ * force_check_project_scope = step_cmd == CMD_STEP_INTO_MY_CODE
+ * if frame.f_back is not None and not info.pydev_use_scoped_step_frame:
+ */
+ __pyx_t_12 = __pyx_v_step_cmd;
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1065, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CMD_STEP_INTO); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1065, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1065, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1065, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!__pyx_t_10) {
+ } else {
+ __pyx_t_8 = __pyx_t_10;
+ goto __pyx_L23_bool_binop_done;
+ }
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1065, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CMD_STEP_INTO_MY_CODE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1065, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1065, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1065, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (!__pyx_t_10) {
+ } else {
+ __pyx_t_8 = __pyx_t_10;
+ goto __pyx_L23_bool_binop_done;
+ }
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1065, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CMD_STEP_INTO_COROUTINE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1065, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1065, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1065, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __pyx_t_10;
+ __pyx_L23_bool_binop_done:;
+ __pyx_t_10 = __pyx_t_8;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1066
+ * stop_frame = info.pydev_step_stop
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE):
+ * force_check_project_scope = step_cmd == CMD_STEP_INTO_MY_CODE # <<<<<<<<<<<<<<
+ * if frame.f_back is not None and not info.pydev_use_scoped_step_frame:
+ * back_func_code_info = _get_func_code_info(frame.f_back.f_code, frame.f_back)
+ */
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1066, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CMD_STEP_INTO_MY_CODE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1066, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1066, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_v_force_check_project_scope = __pyx_t_5;
+ __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1067
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE):
+ * force_check_project_scope = step_cmd == CMD_STEP_INTO_MY_CODE
+ * if frame.f_back is not None and not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
+ * back_func_code_info = _get_func_code_info(frame.f_back.f_code, frame.f_back)
+ * if (
+ */
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1067, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_8 = (__pyx_t_5 != Py_None);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (__pyx_t_8) {
+ } else {
+ __pyx_t_10 = __pyx_t_8;
+ goto __pyx_L27_bool_binop_done;
+ }
+ __pyx_t_8 = (!__pyx_v_info->pydev_use_scoped_step_frame);
+ __pyx_t_10 = __pyx_t_8;
+ __pyx_L27_bool_binop_done:;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1068
+ * force_check_project_scope = step_cmd == CMD_STEP_INTO_MY_CODE
+ * if frame.f_back is not None and not info.pydev_use_scoped_step_frame:
+ * back_func_code_info = _get_func_code_info(frame.f_back.f_code, frame.f_back) # <<<<<<<<<<<<<<
+ * if (
+ * # Not filtered out.
+ */
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1068, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_f_code); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1068, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1068, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_4 = ((PyObject *)__pyx_f_29_pydevd_sys_monitoring_cython__get_func_code_info(__pyx_t_6, __pyx_t_5, 0)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1068, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_v_back_func_code_info = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)__pyx_t_4);
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1071
+ * if (
+ * # Not filtered out.
+ * not back_func_code_info.always_skip_code # <<<<<<<<<<<<<<
+ * and not back_func_code_info.always_filtered_out
+ * and not (force_check_project_scope and back_func_code_info.filtered_out_force_checked)
+ */
+ __pyx_t_8 = (!__pyx_v_back_func_code_info->always_skip_code);
+ if (__pyx_t_8) {
+ } else {
+ __pyx_t_10 = __pyx_t_8;
+ goto __pyx_L30_bool_binop_done;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1072
+ * # Not filtered out.
+ * not back_func_code_info.always_skip_code
+ * and not back_func_code_info.always_filtered_out # <<<<<<<<<<<<<<
+ * and not (force_check_project_scope and back_func_code_info.filtered_out_force_checked)
+ * # Prevent stopping in a return to the same location we were initially
+ */
+ __pyx_t_8 = (!__pyx_v_back_func_code_info->always_filtered_out);
+ if (__pyx_t_8) {
+ } else {
+ __pyx_t_10 = __pyx_t_8;
+ goto __pyx_L30_bool_binop_done;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1073
+ * not back_func_code_info.always_skip_code
+ * and not back_func_code_info.always_filtered_out
+ * and not (force_check_project_scope and back_func_code_info.filtered_out_force_checked) # <<<<<<<<<<<<<<
+ * # Prevent stopping in a return to the same location we were initially
+ * # (i.e.: double-stop at the same place due to some filtering).
+ */
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_force_check_project_scope); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1073, __pyx_L1_error)
+ if (__pyx_t_9) {
+ } else {
+ __pyx_t_8 = __pyx_t_9;
+ goto __pyx_L34_bool_binop_done;
+ }
+ __pyx_t_8 = __pyx_v_back_func_code_info->filtered_out_force_checked;
+ __pyx_L34_bool_binop_done:;
+ __pyx_t_9 = (!__pyx_t_8);
+ if (__pyx_t_9) {
+ } else {
+ __pyx_t_10 = __pyx_t_9;
+ goto __pyx_L30_bool_binop_done;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1076
+ * # Prevent stopping in a return to the same location we were initially
+ * # (i.e.: double-stop at the same place due to some filtering).
+ * and info.step_in_initial_location != (frame.f_back, frame.f_back.f_lineno) # <<<<<<<<<<<<<<
+ * ):
+ * if py_db.show_return_values:
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1076, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1076, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1076, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1076, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_4);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4)) __PYX_ERR(0, 1076, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_6);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6)) __PYX_ERR(0, 1076, __pyx_L1_error);
+ __pyx_t_4 = 0;
+ __pyx_t_6 = 0;
+ __pyx_t_6 = PyObject_RichCompare(__pyx_v_info->step_in_initial_location, __pyx_t_5, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1076, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1076, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_10 = __pyx_t_9;
+ __pyx_L30_bool_binop_done:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1069
+ * if frame.f_back is not None and not info.pydev_use_scoped_step_frame:
+ * back_func_code_info = _get_func_code_info(frame.f_back.f_code, frame.f_back)
+ * if ( # <<<<<<<<<<<<<<
+ * # Not filtered out.
+ * not back_func_code_info.always_skip_code
+ */
+ if (__pyx_t_10) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1078
+ * and info.step_in_initial_location != (frame.f_back, frame.f_back.f_lineno)
+ * ):
+ * if py_db.show_return_values: # <<<<<<<<<<<<<<
+ * _show_return_values(frame, retval)
+ *
+ */
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_show_return_values); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1078, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1078, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1079
+ * ):
+ * if py_db.show_return_values:
+ * _show_return_values(frame, retval) # <<<<<<<<<<<<<<
+ *
+ * _stop_on_return(py_db, thread_info, info, step_cmd, frame, retval)
+ */
+ __pyx_t_6 = __pyx_f_29_pydevd_sys_monitoring_cython__show_return_values(__pyx_v_frame, __pyx_v_retval); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1079, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1078
+ * and info.step_in_initial_location != (frame.f_back, frame.f_back.f_lineno)
+ * ):
+ * if py_db.show_return_values: # <<<<<<<<<<<<<<
+ * _show_return_values(frame, retval)
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1081
+ * _show_return_values(frame, retval)
+ *
+ * _stop_on_return(py_db, thread_info, info, step_cmd, frame, retval) # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_6 = __pyx_f_29_pydevd_sys_monitoring_cython__stop_on_return(__pyx_v_py_db, __pyx_v_thread_info, __pyx_v_info, __pyx_v_step_cmd, __pyx_v_frame, __pyx_v_retval); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1081, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1082
+ *
+ * _stop_on_return(py_db, thread_info, info, step_cmd, frame, retval)
+ * return # <<<<<<<<<<<<<<
+ *
+ * if step_cmd in (CMD_STEP_RETURN, CMD_STEP_RETURN_MY_CODE) and _is_same_frame(info, stop_frame, frame):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1069
+ * if frame.f_back is not None and not info.pydev_use_scoped_step_frame:
+ * back_func_code_info = _get_func_code_info(frame.f_back.f_code, frame.f_back)
+ * if ( # <<<<<<<<<<<<<<
+ * # Not filtered out.
+ * not back_func_code_info.always_skip_code
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1067
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE):
+ * force_check_project_scope = step_cmd == CMD_STEP_INTO_MY_CODE
+ * if frame.f_back is not None and not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
+ * back_func_code_info = _get_func_code_info(frame.f_back.f_code, frame.f_back)
+ * if (
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1065
+ * # Python line stepping
+ * stop_frame = info.pydev_step_stop
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE): # <<<<<<<<<<<<<<
+ * force_check_project_scope = step_cmd == CMD_STEP_INTO_MY_CODE
+ * if frame.f_back is not None and not info.pydev_use_scoped_step_frame:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1084
+ * return
+ *
+ * if step_cmd in (CMD_STEP_RETURN, CMD_STEP_RETURN_MY_CODE) and _is_same_frame(info, stop_frame, frame): # <<<<<<<<<<<<<<
+ * if py_db.show_return_values:
+ * _show_return_values(frame, retval)
+ */
+ __pyx_t_12 = __pyx_v_step_cmd;
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1084, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_CMD_STEP_RETURN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1084, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1084, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1084, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!__pyx_t_8) {
+ } else {
+ __pyx_t_9 = __pyx_t_8;
+ goto __pyx_L40_bool_binop_done;
+ }
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1084, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_CMD_STEP_RETURN_MY_CODE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1084, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1084, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1084, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __pyx_t_8;
+ __pyx_L40_bool_binop_done:;
+ __pyx_t_8 = __pyx_t_9;
+ if (__pyx_t_8) {
+ } else {
+ __pyx_t_10 = __pyx_t_8;
+ goto __pyx_L38_bool_binop_done;
+ }
+ __pyx_t_6 = __pyx_f_29_pydevd_sys_monitoring_cython__is_same_frame(__pyx_v_info, __pyx_v_stop_frame, __pyx_v_frame); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1084, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1084, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_10 = __pyx_t_8;
+ __pyx_L38_bool_binop_done:;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1085
+ *
+ * if step_cmd in (CMD_STEP_RETURN, CMD_STEP_RETURN_MY_CODE) and _is_same_frame(info, stop_frame, frame):
+ * if py_db.show_return_values: # <<<<<<<<<<<<<<
+ * _show_return_values(frame, retval)
+ *
+ */
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_show_return_values); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1085, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1085, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1086
+ * if step_cmd in (CMD_STEP_RETURN, CMD_STEP_RETURN_MY_CODE) and _is_same_frame(info, stop_frame, frame):
+ * if py_db.show_return_values:
+ * _show_return_values(frame, retval) # <<<<<<<<<<<<<<
+ *
+ * _stop_on_return(py_db, thread_info, info, step_cmd, frame, retval)
+ */
+ __pyx_t_6 = __pyx_f_29_pydevd_sys_monitoring_cython__show_return_values(__pyx_v_frame, __pyx_v_retval); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1086, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1085
+ *
+ * if step_cmd in (CMD_STEP_RETURN, CMD_STEP_RETURN_MY_CODE) and _is_same_frame(info, stop_frame, frame):
+ * if py_db.show_return_values: # <<<<<<<<<<<<<<
+ * _show_return_values(frame, retval)
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1088
+ * _show_return_values(frame, retval)
+ *
+ * _stop_on_return(py_db, thread_info, info, step_cmd, frame, retval) # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_6 = __pyx_f_29_pydevd_sys_monitoring_cython__stop_on_return(__pyx_v_py_db, __pyx_v_thread_info, __pyx_v_info, __pyx_v_step_cmd, __pyx_v_frame, __pyx_v_retval); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1088, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1089
+ *
+ * _stop_on_return(py_db, thread_info, info, step_cmd, frame, retval)
+ * return # <<<<<<<<<<<<<<
+ *
+ * elif (
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1084
+ * return
+ *
+ * if step_cmd in (CMD_STEP_RETURN, CMD_STEP_RETURN_MY_CODE) and _is_same_frame(info, stop_frame, frame): # <<<<<<<<<<<<<<
+ * if py_db.show_return_values:
+ * _show_return_values(frame, retval)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1092
+ *
+ * elif (
+ * step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE) # <<<<<<<<<<<<<<
+ * and not info.pydev_use_scoped_step_frame
+ * and _is_same_frame(info, stop_frame, frame)
+ */
+ __pyx_t_12 = __pyx_v_step_cmd;
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1092, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_CMD_STEP_OVER); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1092, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1092, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1092, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!__pyx_t_9) {
+ } else {
+ __pyx_t_8 = __pyx_t_9;
+ goto __pyx_L45_bool_binop_done;
+ }
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1092, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_CMD_STEP_OVER_MY_CODE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1092, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1092, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1092, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_8 = __pyx_t_9;
+ __pyx_L45_bool_binop_done:;
+ __pyx_t_9 = __pyx_t_8;
+ if (__pyx_t_9) {
+ } else {
+ __pyx_t_10 = __pyx_t_9;
+ goto __pyx_L43_bool_binop_done;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1093
+ * elif (
+ * step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE)
+ * and not info.pydev_use_scoped_step_frame # <<<<<<<<<<<<<<
+ * and _is_same_frame(info, stop_frame, frame)
+ * ):
+ */
+ __pyx_t_9 = (!__pyx_v_info->pydev_use_scoped_step_frame);
+ if (__pyx_t_9) {
+ } else {
+ __pyx_t_10 = __pyx_t_9;
+ goto __pyx_L43_bool_binop_done;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1094
+ * step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE)
+ * and not info.pydev_use_scoped_step_frame
+ * and _is_same_frame(info, stop_frame, frame) # <<<<<<<<<<<<<<
+ * ):
+ * # This isn't in the sys.settrace version: on a step over, if we return and the return is valid, show
+ */
+ __pyx_t_6 = __pyx_f_29_pydevd_sys_monitoring_cython__is_same_frame(__pyx_v_info, __pyx_v_stop_frame, __pyx_v_frame); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1094, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1094, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_10 = __pyx_t_9;
+ __pyx_L43_bool_binop_done:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1091
+ * return
+ *
+ * elif ( # <<<<<<<<<<<<<<
+ * step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE)
+ * and not info.pydev_use_scoped_step_frame
+ */
+ if (__pyx_t_10) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1099
+ * # as a step return instead of going back to step into mode (but if the back frame is not valid, then
+ * # go to step into mode).
+ * f_back = frame.f_back # <<<<<<<<<<<<<<
+ * if f_back is not None:
+ * back_func_code_info = _get_func_code_info(f_back.f_code, 2)
+ */
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1099, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_v_f_back = __pyx_t_6;
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1100
+ * # go to step into mode).
+ * f_back = frame.f_back
+ * if f_back is not None: # <<<<<<<<<<<<<<
+ * back_func_code_info = _get_func_code_info(f_back.f_code, 2)
+ * force_check_project_scope = step_cmd == CMD_STEP_OVER_MY_CODE
+ */
+ __pyx_t_10 = (__pyx_v_f_back != Py_None);
+ if (__pyx_t_10) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1101
+ * f_back = frame.f_back
+ * if f_back is not None:
+ * back_func_code_info = _get_func_code_info(f_back.f_code, 2) # <<<<<<<<<<<<<<
+ * force_check_project_scope = step_cmd == CMD_STEP_OVER_MY_CODE
+ *
+ */
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_back, __pyx_n_s_f_code); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1101, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = ((PyObject *)__pyx_f_29_pydevd_sys_monitoring_cython__get_func_code_info(__pyx_t_6, __pyx_int_2, 0)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1101, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_back_func_code_info, ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)__pyx_t_5));
+ __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1102
+ * if f_back is not None:
+ * back_func_code_info = _get_func_code_info(f_back.f_code, 2)
+ * force_check_project_scope = step_cmd == CMD_STEP_OVER_MY_CODE # <<<<<<<<<<<<<<
+ *
+ * if (
+ */
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1102, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CMD_STEP_OVER_MY_CODE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1102, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1102, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_force_check_project_scope, __pyx_t_4);
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1105
+ *
+ * if (
+ * back_func_code_info is not None # <<<<<<<<<<<<<<
+ * and not back_func_code_info.always_skip_code
+ * and not back_func_code_info.always_filtered_out
+ */
+ __pyx_t_9 = (((PyObject *)__pyx_v_back_func_code_info) != Py_None);
+ if (__pyx_t_9) {
+ } else {
+ __pyx_t_10 = __pyx_t_9;
+ goto __pyx_L50_bool_binop_done;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1106
+ * if (
+ * back_func_code_info is not None
+ * and not back_func_code_info.always_skip_code # <<<<<<<<<<<<<<
+ * and not back_func_code_info.always_filtered_out
+ * and not (force_check_project_scope and back_func_code_info.filtered_out_force_checked)
+ */
+ __pyx_t_9 = (!__pyx_v_back_func_code_info->always_skip_code);
+ if (__pyx_t_9) {
+ } else {
+ __pyx_t_10 = __pyx_t_9;
+ goto __pyx_L50_bool_binop_done;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1107
+ * back_func_code_info is not None
+ * and not back_func_code_info.always_skip_code
+ * and not back_func_code_info.always_filtered_out # <<<<<<<<<<<<<<
+ * and not (force_check_project_scope and back_func_code_info.filtered_out_force_checked)
+ * ):
+ */
+ __pyx_t_9 = (!__pyx_v_back_func_code_info->always_filtered_out);
+ if (__pyx_t_9) {
+ } else {
+ __pyx_t_10 = __pyx_t_9;
+ goto __pyx_L50_bool_binop_done;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1108
+ * and not back_func_code_info.always_skip_code
+ * and not back_func_code_info.always_filtered_out
+ * and not (force_check_project_scope and back_func_code_info.filtered_out_force_checked) # <<<<<<<<<<<<<<
+ * ):
+ * if py_db.show_return_values:
+ */
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_force_check_project_scope); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1108, __pyx_L1_error)
+ if (__pyx_t_8) {
+ } else {
+ __pyx_t_9 = __pyx_t_8;
+ goto __pyx_L54_bool_binop_done;
+ }
+ __pyx_t_9 = __pyx_v_back_func_code_info->filtered_out_force_checked;
+ __pyx_L54_bool_binop_done:;
+ __pyx_t_8 = (!__pyx_t_9);
+ __pyx_t_10 = __pyx_t_8;
+ __pyx_L50_bool_binop_done:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1104
+ * force_check_project_scope = step_cmd == CMD_STEP_OVER_MY_CODE
+ *
+ * if ( # <<<<<<<<<<<<<<
+ * back_func_code_info is not None
+ * and not back_func_code_info.always_skip_code
+ */
+ if (__pyx_t_10) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1110
+ * and not (force_check_project_scope and back_func_code_info.filtered_out_force_checked)
+ * ):
+ * if py_db.show_return_values: # <<<<<<<<<<<<<<
+ * _show_return_values(frame, retval)
+ *
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_show_return_values); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1110, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1110, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1111
+ * ):
+ * if py_db.show_return_values:
+ * _show_return_values(frame, retval) # <<<<<<<<<<<<<<
+ *
+ * _stop_on_return(py_db, thread_info, info, step_cmd, frame, retval)
+ */
+ __pyx_t_4 = __pyx_f_29_pydevd_sys_monitoring_cython__show_return_values(__pyx_v_frame, __pyx_v_retval); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1111, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1110
+ * and not (force_check_project_scope and back_func_code_info.filtered_out_force_checked)
+ * ):
+ * if py_db.show_return_values: # <<<<<<<<<<<<<<
+ * _show_return_values(frame, retval)
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1113
+ * _show_return_values(frame, retval)
+ *
+ * _stop_on_return(py_db, thread_info, info, step_cmd, frame, retval) # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_4 = __pyx_f_29_pydevd_sys_monitoring_cython__stop_on_return(__pyx_v_py_db, __pyx_v_thread_info, __pyx_v_info, __pyx_v_step_cmd, __pyx_v_frame, __pyx_v_retval); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1113, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1114
+ *
+ * _stop_on_return(py_db, thread_info, info, step_cmd, frame, retval)
+ * return # <<<<<<<<<<<<<<
+ *
+ * elif step_cmd == CMD_SMART_STEP_INTO:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1104
+ * force_check_project_scope = step_cmd == CMD_STEP_OVER_MY_CODE
+ *
+ * if ( # <<<<<<<<<<<<<<
+ * back_func_code_info is not None
+ * and not back_func_code_info.always_skip_code
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1100
+ * # go to step into mode).
+ * f_back = frame.f_back
+ * if f_back is not None: # <<<<<<<<<<<<<<
+ * back_func_code_info = _get_func_code_info(f_back.f_code, 2)
+ * force_check_project_scope = step_cmd == CMD_STEP_OVER_MY_CODE
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1091
+ * return
+ *
+ * elif ( # <<<<<<<<<<<<<<
+ * step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE)
+ * and not info.pydev_use_scoped_step_frame
+ */
+ goto __pyx_L37;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1116
+ * return
+ *
+ * elif step_cmd == CMD_SMART_STEP_INTO: # <<<<<<<<<<<<<<
+ * if _is_same_frame(info, stop_frame, frame):
+ * # We're exiting the smart step into initial frame (so, we probably didn't find our target).
+ */
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1116, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CMD_SMART_STEP_INTO); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1116, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1116, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1116, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1117
+ *
+ * elif step_cmd == CMD_SMART_STEP_INTO:
+ * if _is_same_frame(info, stop_frame, frame): # <<<<<<<<<<<<<<
+ * # We're exiting the smart step into initial frame (so, we probably didn't find our target).
+ * if py_db.show_return_values:
+ */
+ __pyx_t_5 = __pyx_f_29_pydevd_sys_monitoring_cython__is_same_frame(__pyx_v_info, __pyx_v_stop_frame, __pyx_v_frame); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1117, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1117, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1119
+ * if _is_same_frame(info, stop_frame, frame):
+ * # We're exiting the smart step into initial frame (so, we probably didn't find our target).
+ * if py_db.show_return_values: # <<<<<<<<<<<<<<
+ * _show_return_values(frame, retval)
+ *
+ */
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_show_return_values); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1119, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1119, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1120
+ * # We're exiting the smart step into initial frame (so, we probably didn't find our target).
+ * if py_db.show_return_values:
+ * _show_return_values(frame, retval) # <<<<<<<<<<<<<<
+ *
+ * _stop_on_return(py_db, thread_info, info, step_cmd, frame, retval)
+ */
+ __pyx_t_5 = __pyx_f_29_pydevd_sys_monitoring_cython__show_return_values(__pyx_v_frame, __pyx_v_retval); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1120, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1119
+ * if _is_same_frame(info, stop_frame, frame):
+ * # We're exiting the smart step into initial frame (so, we probably didn't find our target).
+ * if py_db.show_return_values: # <<<<<<<<<<<<<<
+ * _show_return_values(frame, retval)
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1122
+ * _show_return_values(frame, retval)
+ *
+ * _stop_on_return(py_db, thread_info, info, step_cmd, frame, retval) # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_5 = __pyx_f_29_pydevd_sys_monitoring_cython__stop_on_return(__pyx_v_py_db, __pyx_v_thread_info, __pyx_v_info, __pyx_v_step_cmd, __pyx_v_frame, __pyx_v_retval); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1122, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1123
+ *
+ * _stop_on_return(py_db, thread_info, info, step_cmd, frame, retval)
+ * return # <<<<<<<<<<<<<<
+ *
+ * if py_db.show_return_values:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1117
+ *
+ * elif step_cmd == CMD_SMART_STEP_INTO:
+ * if _is_same_frame(info, stop_frame, frame): # <<<<<<<<<<<<<<
+ * # We're exiting the smart step into initial frame (so, we probably didn't find our target).
+ * if py_db.show_return_values:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1116
+ * return
+ *
+ * elif step_cmd == CMD_SMART_STEP_INTO: # <<<<<<<<<<<<<<
+ * if _is_same_frame(info, stop_frame, frame):
+ * # We're exiting the smart step into initial frame (so, we probably didn't find our target).
+ */
+ }
+ __pyx_L37:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1125
+ * return
+ *
+ * if py_db.show_return_values: # <<<<<<<<<<<<<<
+ * if (
+ * (
+ */
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_show_return_values); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1125, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1125, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1128
+ * if (
+ * (
+ * info.pydev_step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE, CMD_SMART_STEP_INTO) # <<<<<<<<<<<<<<
+ * and (_is_same_frame(info, stop_frame, frame.f_back))
+ * )
+ */
+ __pyx_t_12 = __pyx_v_info->pydev_step_cmd;
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1128, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CMD_STEP_OVER); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1128, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1128, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1128, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!__pyx_t_9) {
+ } else {
+ __pyx_t_8 = __pyx_t_9;
+ goto __pyx_L64_bool_binop_done;
+ }
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1128, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CMD_STEP_OVER_MY_CODE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1128, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1128, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1128, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (!__pyx_t_9) {
+ } else {
+ __pyx_t_8 = __pyx_t_9;
+ goto __pyx_L64_bool_binop_done;
+ }
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1128, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CMD_SMART_STEP_INTO); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1128, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1128, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1128, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __pyx_t_9;
+ __pyx_L64_bool_binop_done:;
+ __pyx_t_9 = __pyx_t_8;
+ if (!__pyx_t_9) {
+ goto __pyx_L62_next_or;
+ } else {
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1129
+ * (
+ * info.pydev_step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE, CMD_SMART_STEP_INTO)
+ * and (_is_same_frame(info, stop_frame, frame.f_back)) # <<<<<<<<<<<<<<
+ * )
+ * or (info.pydev_step_cmd in (CMD_STEP_RETURN, CMD_STEP_RETURN_MY_CODE) and (info, _is_same_frame(info, stop_frame, frame)))
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1129, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __pyx_f_29_pydevd_sys_monitoring_cython__is_same_frame(__pyx_v_info, __pyx_v_stop_frame, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1129, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1129, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (!__pyx_t_9) {
+ } else {
+ __pyx_t_10 = __pyx_t_9;
+ goto __pyx_L61_bool_binop_done;
+ }
+ __pyx_L62_next_or:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1131
+ * and (_is_same_frame(info, stop_frame, frame.f_back))
+ * )
+ * or (info.pydev_step_cmd in (CMD_STEP_RETURN, CMD_STEP_RETURN_MY_CODE) and (info, _is_same_frame(info, stop_frame, frame))) # <<<<<<<<<<<<<<
+ * or (info.pydev_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_COROUTINE))
+ * or (
+ */
+ __pyx_t_12 = __pyx_v_info->pydev_step_cmd;
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1131, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CMD_STEP_RETURN); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1131, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1131, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1131, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (!__pyx_t_8) {
+ } else {
+ __pyx_t_9 = __pyx_t_8;
+ goto __pyx_L69_bool_binop_done;
+ }
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1131, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CMD_STEP_RETURN_MY_CODE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1131, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = PyObject_RichCompare(__pyx_t_5, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1131, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1131, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __pyx_t_8;
+ __pyx_L69_bool_binop_done:;
+ __pyx_t_8 = __pyx_t_9;
+ if (!__pyx_t_8) {
+ goto __pyx_L67_next_or;
+ } else {
+ }
+ __pyx_t_6 = __pyx_f_29_pydevd_sys_monitoring_cython__is_same_frame(__pyx_v_info, __pyx_v_stop_frame, __pyx_v_frame); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1131, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1131, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_INCREF((PyObject *)__pyx_v_info);
+ __Pyx_GIVEREF((PyObject *)__pyx_v_info);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_info))) __PYX_ERR(0, 1131, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_6);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6)) __PYX_ERR(0, 1131, __pyx_L1_error);
+ __pyx_t_6 = 0;
+ __pyx_t_8 = (PyTuple_GET_SIZE(__pyx_t_4) != 0);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!__pyx_t_8) {
+ } else {
+ __pyx_t_10 = __pyx_t_8;
+ goto __pyx_L61_bool_binop_done;
+ }
+ __pyx_L67_next_or:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1132
+ * )
+ * or (info.pydev_step_cmd in (CMD_STEP_RETURN, CMD_STEP_RETURN_MY_CODE) and (info, _is_same_frame(info, stop_frame, frame)))
+ * or (info.pydev_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_COROUTINE)) # <<<<<<<<<<<<<<
+ * or (
+ * info.pydev_step_cmd == CMD_STEP_INTO_MY_CODE
+ */
+ __pyx_t_12 = __pyx_v_info->pydev_step_cmd;
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1132, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CMD_STEP_INTO); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1132, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1132, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1132, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (!__pyx_t_9) {
+ } else {
+ __pyx_t_8 = __pyx_t_9;
+ goto __pyx_L72_bool_binop_done;
+ }
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1132, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CMD_STEP_INTO_COROUTINE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1132, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1132, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1132, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __pyx_t_9;
+ __pyx_L72_bool_binop_done:;
+ __pyx_t_9 = __pyx_t_8;
+ if (!__pyx_t_9) {
+ } else {
+ __pyx_t_10 = __pyx_t_9;
+ goto __pyx_L61_bool_binop_done;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1134
+ * or (info.pydev_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_COROUTINE))
+ * or (
+ * info.pydev_step_cmd == CMD_STEP_INTO_MY_CODE # <<<<<<<<<<<<<<
+ * and frame.f_back is not None
+ * and not py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)
+ */
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_info->pydev_step_cmd); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1134, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CMD_STEP_INTO_MY_CODE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1134, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1134, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1134, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (__pyx_t_9) {
+ } else {
+ __pyx_t_10 = __pyx_t_9;
+ goto __pyx_L61_bool_binop_done;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1135
+ * or (
+ * info.pydev_step_cmd == CMD_STEP_INTO_MY_CODE
+ * and frame.f_back is not None # <<<<<<<<<<<<<<
+ * and not py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True)
+ * )
+ */
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1135, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_9 = (__pyx_t_5 != Py_None);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (__pyx_t_9) {
+ } else {
+ __pyx_t_10 = __pyx_t_9;
+ goto __pyx_L61_bool_binop_done;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1136
+ * info.pydev_step_cmd == CMD_STEP_INTO_MY_CODE
+ * and frame.f_back is not None
+ * and not py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) # <<<<<<<<<<<<<<
+ * )
+ * ):
+ */
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1136, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1136, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1136, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_f_code); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1136, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_13);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1136, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __pyx_t_13 = NULL;
+ __pyx_t_14 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_13)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_13);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ __pyx_t_14 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_4, __pyx_t_7, Py_True};
+ __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
+ __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1136, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ }
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1136, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_8 = (!__pyx_t_9);
+ __pyx_t_10 = __pyx_t_8;
+ __pyx_L61_bool_binop_done:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1126
+ *
+ * if py_db.show_return_values:
+ * if ( # <<<<<<<<<<<<<<
+ * (
+ * info.pydev_step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE, CMD_SMART_STEP_INTO)
+ */
+ if (__pyx_t_10) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1139
+ * )
+ * ):
+ * _show_return_values(frame, retval) # <<<<<<<<<<<<<<
+ *
+ * if step_cmd in (CMD_STEP_OVER, CMD_STEP_RETURN, CMD_STEP_OVER_MY_CODE, CMD_STEP_RETURN_MY_CODE, CMD_SMART_STEP_INTO):
+ */
+ __pyx_t_5 = __pyx_f_29_pydevd_sys_monitoring_cython__show_return_values(__pyx_v_frame, __pyx_v_retval); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1139, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1126
+ *
+ * if py_db.show_return_values:
+ * if ( # <<<<<<<<<<<<<<
+ * (
+ * info.pydev_step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE, CMD_SMART_STEP_INTO)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1125
+ * return
+ *
+ * if py_db.show_return_values: # <<<<<<<<<<<<<<
+ * if (
+ * (
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1141
+ * _show_return_values(frame, retval)
+ *
+ * if step_cmd in (CMD_STEP_OVER, CMD_STEP_RETURN, CMD_STEP_OVER_MY_CODE, CMD_STEP_RETURN_MY_CODE, CMD_SMART_STEP_INTO): # <<<<<<<<<<<<<<
+ * # If we are in single step mode and something causes us to exit the current frame, we need to make sure we break
+ * # eventually. Force the step mode to step into and the step stop frame to None.
+ */
+ __pyx_t_12 = __pyx_v_step_cmd;
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CMD_STEP_OVER); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (!__pyx_t_8) {
+ } else {
+ __pyx_t_10 = __pyx_t_8;
+ goto __pyx_L77_bool_binop_done;
+ }
+ __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CMD_STEP_RETURN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_7, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (!__pyx_t_8) {
+ } else {
+ __pyx_t_10 = __pyx_t_8;
+ goto __pyx_L77_bool_binop_done;
+ }
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CMD_STEP_OVER_MY_CODE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (!__pyx_t_8) {
+ } else {
+ __pyx_t_10 = __pyx_t_8;
+ goto __pyx_L77_bool_binop_done;
+ }
+ __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CMD_STEP_RETURN_MY_CODE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_7, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (!__pyx_t_8) {
+ } else {
+ __pyx_t_10 = __pyx_t_8;
+ goto __pyx_L77_bool_binop_done;
+ }
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CMD_SMART_STEP_INTO); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_10 = __pyx_t_8;
+ __pyx_L77_bool_binop_done:;
+ __pyx_t_8 = __pyx_t_10;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1148
+ * # Note: this is especially troublesome when we're skipping code with the
+ * # @DontTrace comment.
+ * stop_frame = info.pydev_step_stop # <<<<<<<<<<<<<<
+ * if stop_frame is frame and not info.pydev_use_scoped_step_frame:
+ * if step_cmd in (CMD_STEP_OVER, CMD_STEP_RETURN, CMD_SMART_STEP_INTO):
+ */
+ __pyx_t_7 = __pyx_v_info->pydev_step_stop;
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_DECREF_SET(__pyx_v_stop_frame, __pyx_t_7);
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1149
+ * # @DontTrace comment.
+ * stop_frame = info.pydev_step_stop
+ * if stop_frame is frame and not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
+ * if step_cmd in (CMD_STEP_OVER, CMD_STEP_RETURN, CMD_SMART_STEP_INTO):
+ * info.pydev_step_cmd = CMD_STEP_INTO
+ */
+ __pyx_t_10 = (__pyx_v_stop_frame == __pyx_v_frame);
+ if (__pyx_t_10) {
+ } else {
+ __pyx_t_8 = __pyx_t_10;
+ goto __pyx_L83_bool_binop_done;
+ }
+ __pyx_t_10 = (!__pyx_v_info->pydev_use_scoped_step_frame);
+ __pyx_t_8 = __pyx_t_10;
+ __pyx_L83_bool_binop_done:;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1150
+ * stop_frame = info.pydev_step_stop
+ * if stop_frame is frame and not info.pydev_use_scoped_step_frame:
+ * if step_cmd in (CMD_STEP_OVER, CMD_STEP_RETURN, CMD_SMART_STEP_INTO): # <<<<<<<<<<<<<<
+ * info.pydev_step_cmd = CMD_STEP_INTO
+ * else:
+ */
+ __pyx_t_12 = __pyx_v_step_cmd;
+ __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CMD_STEP_OVER); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_7, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (!__pyx_t_10) {
+ } else {
+ __pyx_t_8 = __pyx_t_10;
+ goto __pyx_L86_bool_binop_done;
+ }
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CMD_STEP_RETURN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (!__pyx_t_10) {
+ } else {
+ __pyx_t_8 = __pyx_t_10;
+ goto __pyx_L86_bool_binop_done;
+ }
+ __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CMD_SMART_STEP_INTO); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_7, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_8 = __pyx_t_10;
+ __pyx_L86_bool_binop_done:;
+ __pyx_t_10 = __pyx_t_8;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1151
+ * if stop_frame is frame and not info.pydev_use_scoped_step_frame:
+ * if step_cmd in (CMD_STEP_OVER, CMD_STEP_RETURN, CMD_SMART_STEP_INTO):
+ * info.pydev_step_cmd = CMD_STEP_INTO # <<<<<<<<<<<<<<
+ * else:
+ * info.pydev_step_cmd = CMD_STEP_INTO_MY_CODE
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_CMD_STEP_INTO); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1151, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1151, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_v_info->pydev_step_cmd = __pyx_t_12;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1150
+ * stop_frame = info.pydev_step_stop
+ * if stop_frame is frame and not info.pydev_use_scoped_step_frame:
+ * if step_cmd in (CMD_STEP_OVER, CMD_STEP_RETURN, CMD_SMART_STEP_INTO): # <<<<<<<<<<<<<<
+ * info.pydev_step_cmd = CMD_STEP_INTO
+ * else:
+ */
+ goto __pyx_L85;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1153
+ * info.pydev_step_cmd = CMD_STEP_INTO
+ * else:
+ * info.pydev_step_cmd = CMD_STEP_INTO_MY_CODE # <<<<<<<<<<<<<<
+ * info.pydev_step_stop = None
+ * _enable_code_tracing_for_frame_and_parents(thread_info, stop_frame.f_back)
+ */
+ /*else*/ {
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_CMD_STEP_INTO_MY_CODE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1153, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1153, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_v_info->pydev_step_cmd = __pyx_t_12;
+ }
+ __pyx_L85:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1154
+ * else:
+ * info.pydev_step_cmd = CMD_STEP_INTO_MY_CODE
+ * info.pydev_step_stop = None # <<<<<<<<<<<<<<
+ * _enable_code_tracing_for_frame_and_parents(thread_info, stop_frame.f_back)
+ * if py_db.show_return_values:
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ __Pyx_GOTREF(__pyx_v_info->pydev_step_stop);
+ __Pyx_DECREF(__pyx_v_info->pydev_step_stop);
+ __pyx_v_info->pydev_step_stop = Py_None;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1155
+ * info.pydev_step_cmd = CMD_STEP_INTO_MY_CODE
+ * info.pydev_step_stop = None
+ * _enable_code_tracing_for_frame_and_parents(thread_info, stop_frame.f_back) # <<<<<<<<<<<<<<
+ * if py_db.show_return_values:
+ * _show_return_values(frame, retval)
+ */
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_stop_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1155, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __pyx_f_29_pydevd_sys_monitoring_cython__enable_code_tracing_for_frame_and_parents(__pyx_v_thread_info, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1155, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1156
+ * info.pydev_step_stop = None
+ * _enable_code_tracing_for_frame_and_parents(thread_info, stop_frame.f_back)
+ * if py_db.show_return_values: # <<<<<<<<<<<<<<
+ * _show_return_values(frame, retval)
+ *
+ */
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_show_return_values); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1156, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1156, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (__pyx_t_10) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1157
+ * _enable_code_tracing_for_frame_and_parents(thread_info, stop_frame.f_back)
+ * if py_db.show_return_values:
+ * _show_return_values(frame, retval) # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __pyx_t_6 = __pyx_f_29_pydevd_sys_monitoring_cython__show_return_values(__pyx_v_frame, __pyx_v_retval); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1157, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1156
+ * info.pydev_step_stop = None
+ * _enable_code_tracing_for_frame_and_parents(thread_info, stop_frame.f_back)
+ * if py_db.show_return_values: # <<<<<<<<<<<<<<
+ * _show_return_values(frame, retval)
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1149
+ * # @DontTrace comment.
+ * stop_frame = info.pydev_step_stop
+ * if stop_frame is frame and not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
+ * if step_cmd in (CMD_STEP_OVER, CMD_STEP_RETURN, CMD_SMART_STEP_INTO):
+ * info.pydev_step_cmd = CMD_STEP_INTO
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1141
+ * _show_return_values(frame, retval)
+ *
+ * if step_cmd in (CMD_STEP_OVER, CMD_STEP_RETURN, CMD_STEP_OVER_MY_CODE, CMD_STEP_RETURN_MY_CODE, CMD_SMART_STEP_INTO): # <<<<<<<<<<<<<<
+ * # If we are in single step mode and something causes us to exit the current frame, we need to make sure we break
+ * # eventually. Force the step mode to step into and the step stop frame to None.
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1019
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _return_event(code, instruction, retval): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * cdef FuncCodeInfo func_code_info
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_13);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._return_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF((PyObject *)__pyx_v_thread_info);
+ __Pyx_XDECREF((PyObject *)__pyx_v_func_code_info);
+ __Pyx_XDECREF((PyObject *)__pyx_v_info);
+ __Pyx_XDECREF(__pyx_v_py_db);
+ __Pyx_XDECREF(__pyx_v_frame);
+ __Pyx_XDECREF(__pyx_v_stop_frame);
+ __Pyx_XDECREF(__pyx_v_force_check_project_scope);
+ __Pyx_XDECREF((PyObject *)__pyx_v_back_func_code_info);
+ __Pyx_XDECREF(__pyx_v_f_back);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":1162
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _enable_code_tracing_for_frame_and_parents(ThreadInfo thread_info, frame): # <<<<<<<<<<<<<<
+ * cdef FuncCodeInfo func_code_info
+ * # ELSE
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__enable_code_tracing_for_frame_and_parents(struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_thread_info, PyObject *__pyx_v_frame) {
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v_func_code_info = 0;
+ PyObject *__pyx_v_py_db = 0;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ int __pyx_t_3;
+ int __pyx_t_4;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_enable_code_tracing_for_frame_and_parents", 0);
+ __Pyx_INCREF(__pyx_v_frame);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1168
+ * # ENDIF
+ * # fmt: on
+ * py_db: object = GlobalDebuggerHolder.global_dbg # <<<<<<<<<<<<<<
+ * if py_db is None or py_db.pydb_disposed:
+ * return
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1168, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_global_dbg); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1168, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v_py_db = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1169
+ * # fmt: on
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_4 = (__pyx_v_py_db == Py_None);
+ if (!__pyx_t_4) {
+ } else {
+ __pyx_t_3 = __pyx_t_4;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_pydb_disposed); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1169, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1169, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_3 = __pyx_t_4;
+ __pyx_L4_bool_binop_done:;
+ if (__pyx_t_3) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1170
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed:
+ * return # <<<<<<<<<<<<<<
+ *
+ * while frame is not None:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1169
+ * # fmt: on
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1172
+ * return
+ *
+ * while frame is not None: # <<<<<<<<<<<<<<
+ * func_code_info: FuncCodeInfo = _get_func_code_info(frame.f_code, frame)
+ * if func_code_info.always_skip_code:
+ */
+ while (1) {
+ __pyx_t_3 = (__pyx_v_frame != Py_None);
+ if (!__pyx_t_3) break;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1173
+ *
+ * while frame is not None:
+ * func_code_info: FuncCodeInfo = _get_func_code_info(frame.f_code, frame) # <<<<<<<<<<<<<<
+ * if func_code_info.always_skip_code:
+ * frame = frame.f_back
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1173, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = ((PyObject *)__pyx_f_29_pydevd_sys_monitoring_cython__get_func_code_info(__pyx_t_2, __pyx_v_frame, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1173, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_func_code_info, ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)__pyx_t_1));
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1174
+ * while frame is not None:
+ * func_code_info: FuncCodeInfo = _get_func_code_info(frame.f_code, frame)
+ * if func_code_info.always_skip_code: # <<<<<<<<<<<<<<
+ * frame = frame.f_back
+ * continue
+ */
+ if (__pyx_v_func_code_info->always_skip_code) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1175
+ * func_code_info: FuncCodeInfo = _get_func_code_info(frame.f_code, frame)
+ * if func_code_info.always_skip_code:
+ * frame = frame.f_back # <<<<<<<<<<<<<<
+ * continue
+ *
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1175, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1176
+ * if func_code_info.always_skip_code:
+ * frame = frame.f_back
+ * continue # <<<<<<<<<<<<<<
+ *
+ * _enable_code_tracing(py_db, thread_info.additional_info, func_code_info, frame.f_code, frame, False)
+ */
+ goto __pyx_L6_continue;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1174
+ * while frame is not None:
+ * func_code_info: FuncCodeInfo = _get_func_code_info(frame.f_code, frame)
+ * if func_code_info.always_skip_code: # <<<<<<<<<<<<<<
+ * frame = frame.f_back
+ * continue
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1178
+ * continue
+ *
+ * _enable_code_tracing(py_db, thread_info.additional_info, func_code_info, frame.f_code, frame, False) # <<<<<<<<<<<<<<
+ * frame = frame.f_back
+ *
+ */
+ __pyx_t_1 = ((PyObject *)__pyx_v_thread_info->additional_info);
+ __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1178, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __pyx_f_29_pydevd_sys_monitoring_cython__enable_code_tracing(__pyx_v_py_db, ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_1), __pyx_v_func_code_info, __pyx_t_2, __pyx_v_frame, 0); if (unlikely(__pyx_t_3 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1178, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1179
+ *
+ * _enable_code_tracing(py_db, thread_info.additional_info, func_code_info, frame.f_code, frame, False)
+ * frame = frame.f_back # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1179, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_2);
+ __pyx_t_2 = 0;
+ __pyx_L6_continue:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1162
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _enable_code_tracing_for_frame_and_parents(ThreadInfo thread_info, frame): # <<<<<<<<<<<<<<
+ * cdef FuncCodeInfo func_code_info
+ * # ELSE
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._enable_code_tracing_for_frame_and_parents", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF((PyObject *)__pyx_v_func_code_info);
+ __Pyx_XDECREF(__pyx_v_py_db);
+ __Pyx_XDECREF(__pyx_v_frame);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":1184
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _stop_on_return(py_db, ThreadInfo thread_info, PyDBAdditionalThreadInfo info, int step_cmd, frame, retval): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _stop_on_return(py_db, thread_info, info, step_cmd, frame, retval):
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__stop_on_return(PyObject *__pyx_v_py_db, struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_thread_info, struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info, int __pyx_v_step_cmd, PyObject *__pyx_v_frame, PyObject *__pyx_v_retval) {
+ PyObject *__pyx_v_back = NULL;
+ PyObject *__pyx_v_back_absolute_filename = NULL;
+ CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
+ PyObject *__pyx_v_base = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ unsigned int __pyx_t_5;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *(*__pyx_t_8)(PyObject *);
+ int __pyx_t_9;
+ int __pyx_t_10;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_stop_on_return", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1189
+ * # ENDIF
+ * # fmt: on
+ * back = frame.f_back # <<<<<<<<<<<<<<
+ * if back is not None:
+ * # When we get to the pydevd run function, the debugging has actually finished for the main thread
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1189, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_back = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1190
+ * # fmt: on
+ * back = frame.f_back
+ * if back is not None: # <<<<<<<<<<<<<<
+ * # When we get to the pydevd run function, the debugging has actually finished for the main thread
+ * # (note that it can still go on for other threads, but for this one, we just make it finish)
+ */
+ __pyx_t_2 = (__pyx_v_back != Py_None);
+ if (__pyx_t_2) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1194
+ * # (note that it can still go on for other threads, but for this one, we just make it finish)
+ * # So, just setting it to None should be OK
+ * back_absolute_filename, _, base = get_abs_path_real_path_and_base_from_frame(back) # <<<<<<<<<<<<<<
+ * if (base, back.f_code.co_name) in (DEBUG_START, DEBUG_START_PY3K):
+ * back = None
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_get_abs_path_real_path_and_base_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1194, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_back};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1194, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
+ PyObject* sequence = __pyx_t_1;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 3)) {
+ if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 1194, __pyx_L1_error)
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1);
+ __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2);
+ } else {
+ __pyx_t_3 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_4 = PyList_GET_ITEM(sequence, 1);
+ __pyx_t_6 = PyList_GET_ITEM(sequence, 2);
+ }
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_6);
+ #else
+ __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1194, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1194, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1194, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ #endif
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ } else {
+ Py_ssize_t index = -1;
+ __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1194, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7);
+ index = 0; __pyx_t_3 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_3);
+ index = 1; __pyx_t_4 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_4);
+ index = 2; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L4_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_6);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 3) < 0) __PYX_ERR(0, 1194, __pyx_L1_error)
+ __pyx_t_8 = NULL;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ goto __pyx_L5_unpacking_done;
+ __pyx_L4_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_8 = NULL;
+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+ __PYX_ERR(0, 1194, __pyx_L1_error)
+ __pyx_L5_unpacking_done:;
+ }
+ __pyx_v_back_absolute_filename = __pyx_t_3;
+ __pyx_t_3 = 0;
+ __pyx_v__ = __pyx_t_4;
+ __pyx_t_4 = 0;
+ __pyx_v_base = __pyx_t_6;
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1195
+ * # So, just setting it to None should be OK
+ * back_absolute_filename, _, base = get_abs_path_real_path_and_base_from_frame(back)
+ * if (base, back.f_code.co_name) in (DEBUG_START, DEBUG_START_PY3K): # <<<<<<<<<<<<<<
+ * back = None
+ *
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_back, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1195, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_co_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1195, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1195, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_v_base);
+ __Pyx_GIVEREF(__pyx_v_base);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_base)) __PYX_ERR(0, 1195, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_6);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6)) __PYX_ERR(0, 1195, __pyx_L1_error);
+ __pyx_t_6 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_DEBUG_START); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1195, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1195, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1195, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!__pyx_t_9) {
+ } else {
+ __pyx_t_2 = __pyx_t_9;
+ goto __pyx_L7_bool_binop_done;
+ }
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_DEBUG_START_PY3K); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1195, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1195, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1195, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_2 = __pyx_t_9;
+ __pyx_L7_bool_binop_done:;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_9 = __pyx_t_2;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1196
+ * back_absolute_filename, _, base = get_abs_path_real_path_and_base_from_frame(back)
+ * if (base, back.f_code.co_name) in (DEBUG_START, DEBUG_START_PY3K):
+ * back = None # <<<<<<<<<<<<<<
+ *
+ * elif base == TRACE_PROPERTY:
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_DECREF_SET(__pyx_v_back, Py_None);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1195
+ * # So, just setting it to None should be OK
+ * back_absolute_filename, _, base = get_abs_path_real_path_and_base_from_frame(back)
+ * if (base, back.f_code.co_name) in (DEBUG_START, DEBUG_START_PY3K): # <<<<<<<<<<<<<<
+ * back = None
+ *
+ */
+ goto __pyx_L6;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1198
+ * back = None
+ *
+ * elif base == TRACE_PROPERTY: # <<<<<<<<<<<<<<
+ * # We dont want to trace the return event of pydevd_traceproperty (custom property for debugging)
+ * # if we're in a return, we want it to appear to the user in the previous frame!
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_TRACE_PROPERTY); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1198, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = PyObject_RichCompare(__pyx_v_base, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1198, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1198, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1201
+ * # We dont want to trace the return event of pydevd_traceproperty (custom property for debugging)
+ * # if we're in a return, we want it to appear to the user in the previous frame!
+ * return # <<<<<<<<<<<<<<
+ *
+ * elif pydevd_dont_trace.should_trace_hook is not None:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1198
+ * back = None
+ *
+ * elif base == TRACE_PROPERTY: # <<<<<<<<<<<<<<
+ * # We dont want to trace the return event of pydevd_traceproperty (custom property for debugging)
+ * # if we're in a return, we want it to appear to the user in the previous frame!
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1203
+ * return
+ *
+ * elif pydevd_dont_trace.should_trace_hook is not None: # <<<<<<<<<<<<<<
+ * if not pydevd_dont_trace.should_trace_hook(back.f_code, back_absolute_filename):
+ * # In this case, we'll have to skip the previous one because it shouldn't be traced.
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pydevd_dont_trace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1203, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_should_trace_hook); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1203, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = (__pyx_t_1 != Py_None);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1204
+ *
+ * elif pydevd_dont_trace.should_trace_hook is not None:
+ * if not pydevd_dont_trace.should_trace_hook(back.f_code, back_absolute_filename): # <<<<<<<<<<<<<<
+ * # In this case, we'll have to skip the previous one because it shouldn't be traced.
+ * # Also, we have to reset the tracing, because if the parent's parent (or some
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pydevd_dont_trace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1204, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_should_trace_hook); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1204, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_back, __pyx_n_s_f_code); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1204, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_3 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_6, __pyx_v_back_absolute_filename};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1204, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1204, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = (!__pyx_t_9);
+ if (__pyx_t_2) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1210
+ * # we should anymore (so, a step in/over/return may not stop anywhere if no parent is traced).
+ * # Related test: _debugger_case17a.py
+ * py_db.set_trace_for_frame_and_parents(thread_info.thread_ident, back) # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_set_trace_for_frame_and_parents); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1210, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_PyInt_From_unsigned_long(__pyx_v_thread_info->thread_ident); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1210, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_3 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_6, __pyx_v_back};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1210, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1211
+ * # Related test: _debugger_case17a.py
+ * py_db.set_trace_for_frame_and_parents(thread_info.thread_ident, back)
+ * return # <<<<<<<<<<<<<<
+ *
+ * if back is not None:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1204
+ *
+ * elif pydevd_dont_trace.should_trace_hook is not None:
+ * if not pydevd_dont_trace.should_trace_hook(back.f_code, back_absolute_filename): # <<<<<<<<<<<<<<
+ * # In this case, we'll have to skip the previous one because it shouldn't be traced.
+ * # Also, we have to reset the tracing, because if the parent's parent (or some
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1203
+ * return
+ *
+ * elif pydevd_dont_trace.should_trace_hook is not None: # <<<<<<<<<<<<<<
+ * if not pydevd_dont_trace.should_trace_hook(back.f_code, back_absolute_filename):
+ * # In this case, we'll have to skip the previous one because it shouldn't be traced.
+ */
+ }
+ __pyx_L6:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1190
+ * # fmt: on
+ * back = frame.f_back
+ * if back is not None: # <<<<<<<<<<<<<<
+ * # When we get to the pydevd run function, the debugging has actually finished for the main thread
+ * # (note that it can still go on for other threads, but for this one, we just make it finish)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1213
+ * return
+ *
+ * if back is not None: # <<<<<<<<<<<<<<
+ * # if we're in a return, we want it to appear to the user in the previous frame!
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ */
+ __pyx_t_2 = (__pyx_v_back != Py_None);
+ if (__pyx_t_2) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1215
+ * if back is not None:
+ * # if we're in a return, we want it to appear to the user in the previous frame!
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) # <<<<<<<<<<<<<<
+ * _do_wait_suspend(py_db, thread_info, back, "return", retval)
+ * else:
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1215, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1215, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1215, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_v_thread_info->thread);
+ __Pyx_GIVEREF(__pyx_v_thread_info->thread);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_thread_info->thread)) __PYX_ERR(0, 1215, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_4);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4)) __PYX_ERR(0, 1215, __pyx_L1_error);
+ __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1215, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_info->pydev_original_step_cmd); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1215, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_original_step_cmd, __pyx_t_3) < 0) __PYX_ERR(0, 1215, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1215, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1216
+ * # if we're in a return, we want it to appear to the user in the previous frame!
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ * _do_wait_suspend(py_db, thread_info, back, "return", retval) # <<<<<<<<<<<<<<
+ * else:
+ * # in jython we may not have a back frame
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1216, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[6] = {__pyx_t_6, __pyx_v_py_db, ((PyObject *)__pyx_v_thread_info), __pyx_v_back, __pyx_n_s_return, __pyx_v_retval};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 5+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1216, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1213
+ * return
+ *
+ * if back is not None: # <<<<<<<<<<<<<<
+ * # if we're in a return, we want it to appear to the user in the previous frame!
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ */
+ goto __pyx_L10;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1219
+ * else:
+ * # in jython we may not have a back frame
+ * info.pydev_step_stop = None # <<<<<<<<<<<<<<
+ * info.pydev_original_step_cmd = -1
+ * info.pydev_step_cmd = -1
+ */
+ /*else*/ {
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ __Pyx_GOTREF(__pyx_v_info->pydev_step_stop);
+ __Pyx_DECREF(__pyx_v_info->pydev_step_stop);
+ __pyx_v_info->pydev_step_stop = Py_None;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1220
+ * # in jython we may not have a back frame
+ * info.pydev_step_stop = None
+ * info.pydev_original_step_cmd = -1 # <<<<<<<<<<<<<<
+ * info.pydev_step_cmd = -1
+ * info.pydev_state = STATE_RUN
+ */
+ __pyx_v_info->pydev_original_step_cmd = -1;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1221
+ * info.pydev_step_stop = None
+ * info.pydev_original_step_cmd = -1
+ * info.pydev_step_cmd = -1 # <<<<<<<<<<<<<<
+ * info.pydev_state = STATE_RUN
+ * info.update_stepping_info()
+ */
+ __pyx_v_info->pydev_step_cmd = -1;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1222
+ * info.pydev_original_step_cmd = -1
+ * info.pydev_step_cmd = -1
+ * info.pydev_state = STATE_RUN # <<<<<<<<<<<<<<
+ * info.update_stepping_info()
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_STATE_RUN); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1222, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1222, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_v_info->pydev_state = __pyx_t_10;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1223
+ * info.pydev_step_cmd = -1
+ * info.pydev_state = STATE_RUN
+ * info.update_stepping_info() # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __pyx_t_3 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_info->__pyx_vtab)->update_stepping_info(__pyx_v_info, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1223, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_L10:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1184
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _stop_on_return(py_db, ThreadInfo thread_info, PyDBAdditionalThreadInfo info, int step_cmd, frame, retval): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _stop_on_return(py_db, thread_info, info, step_cmd, frame, retval):
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._stop_on_return", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_back);
+ __Pyx_XDECREF(__pyx_v_back_absolute_filename);
+ __Pyx_XDECREF(__pyx_v__);
+ __Pyx_XDECREF(__pyx_v_base);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":1228
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _stop_on_breakpoint(py_db, ThreadInfo thread_info, int stop_reason, bp, frame, new_frame, bint stop, bint stop_on_plugin_breakpoint, str bp_type): # <<<<<<<<<<<<<<
+ * cdef PyDBAdditionalThreadInfo additional_info
+ * # ELSE
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__stop_on_breakpoint(PyObject *__pyx_v_py_db, struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_thread_info, int __pyx_v_stop_reason, PyObject *__pyx_v_bp, PyObject *__pyx_v_frame, PyObject *__pyx_v_new_frame, int __pyx_v_stop, int __pyx_v_stop_on_plugin_breakpoint, PyObject *__pyx_v_bp_type) {
+ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_additional_info = 0;
+ PyObject *__pyx_v_eval_result = NULL;
+ PyObject *__pyx_v_cmd = NULL;
+ PyObject *__pyx_v_stop_at_frame = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ unsigned int __pyx_t_5;
+ int __pyx_t_6;
+ Py_ssize_t __pyx_t_7;
+ PyObject *__pyx_t_8 = NULL;
+ PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_10 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_stop_on_breakpoint", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1247
+ * Note that even if False is returned, it's still possible
+ * """
+ * additional_info = thread_info.additional_info # <<<<<<<<<<<<<<
+ * # ok, hit breakpoint, now, we have to discover if it is a conditional breakpoint
+ * # lets do the conditional stuff here
+ */
+ __pyx_t_1 = ((PyObject *)__pyx_v_thread_info->additional_info);
+ __Pyx_INCREF(__pyx_t_1);
+ __pyx_v_additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1250
+ * # ok, hit breakpoint, now, we have to discover if it is a conditional breakpoint
+ * # lets do the conditional stuff here
+ * if bp.expression is not None: # <<<<<<<<<<<<<<
+ * # If it has an expression, it's always handled even if we don't stop.
+ * py_db.handle_breakpoint_expression(bp, additional_info, new_frame)
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_bp, __pyx_n_s_expression); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1250, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = (__pyx_t_1 != Py_None);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_2) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1252
+ * if bp.expression is not None:
+ * # If it has an expression, it's always handled even if we don't stop.
+ * py_db.handle_breakpoint_expression(bp, additional_info, new_frame) # <<<<<<<<<<<<<<
+ *
+ * if stop or stop_on_plugin_breakpoint:
+ */
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_handle_breakpoint_expression); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1252, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_v_bp, ((PyObject *)__pyx_v_additional_info), __pyx_v_new_frame};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1252, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1250
+ * # ok, hit breakpoint, now, we have to discover if it is a conditional breakpoint
+ * # lets do the conditional stuff here
+ * if bp.expression is not None: # <<<<<<<<<<<<<<
+ * # If it has an expression, it's always handled even if we don't stop.
+ * py_db.handle_breakpoint_expression(bp, additional_info, new_frame)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1254
+ * py_db.handle_breakpoint_expression(bp, additional_info, new_frame)
+ *
+ * if stop or stop_on_plugin_breakpoint: # <<<<<<<<<<<<<<
+ * if bp.has_condition:
+ * eval_result = py_db.handle_breakpoint_condition(additional_info, bp, new_frame)
+ */
+ if (!__pyx_v_stop) {
+ } else {
+ __pyx_t_2 = __pyx_v_stop;
+ goto __pyx_L5_bool_binop_done;
+ }
+ __pyx_t_2 = __pyx_v_stop_on_plugin_breakpoint;
+ __pyx_L5_bool_binop_done:;
+ if (__pyx_t_2) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1255
+ *
+ * if stop or stop_on_plugin_breakpoint:
+ * if bp.has_condition: # <<<<<<<<<<<<<<
+ * eval_result = py_db.handle_breakpoint_condition(additional_info, bp, new_frame)
+ * if not eval_result:
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_bp, __pyx_n_s_has_condition); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1255, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1255, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_2) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1256
+ * if stop or stop_on_plugin_breakpoint:
+ * if bp.has_condition:
+ * eval_result = py_db.handle_breakpoint_condition(additional_info, bp, new_frame) # <<<<<<<<<<<<<<
+ * if not eval_result:
+ * stop = False
+ */
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_handle_breakpoint_condition); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_4, ((PyObject *)__pyx_v_additional_info), __pyx_v_bp, __pyx_v_new_frame};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_v_eval_result = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1257
+ * if bp.has_condition:
+ * eval_result = py_db.handle_breakpoint_condition(additional_info, bp, new_frame)
+ * if not eval_result: # <<<<<<<<<<<<<<
+ * stop = False
+ * stop_on_plugin_breakpoint = False
+ */
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_eval_result); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1257, __pyx_L1_error)
+ __pyx_t_6 = (!__pyx_t_2);
+ if (__pyx_t_6) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1258
+ * eval_result = py_db.handle_breakpoint_condition(additional_info, bp, new_frame)
+ * if not eval_result:
+ * stop = False # <<<<<<<<<<<<<<
+ * stop_on_plugin_breakpoint = False
+ *
+ */
+ __pyx_v_stop = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1259
+ * if not eval_result:
+ * stop = False
+ * stop_on_plugin_breakpoint = False # <<<<<<<<<<<<<<
+ *
+ * # Handle logpoint (on a logpoint we should never stop).
+ */
+ __pyx_v_stop_on_plugin_breakpoint = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1257
+ * if bp.has_condition:
+ * eval_result = py_db.handle_breakpoint_condition(additional_info, bp, new_frame)
+ * if not eval_result: # <<<<<<<<<<<<<<
+ * stop = False
+ * stop_on_plugin_breakpoint = False
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1255
+ *
+ * if stop or stop_on_plugin_breakpoint:
+ * if bp.has_condition: # <<<<<<<<<<<<<<
+ * eval_result = py_db.handle_breakpoint_condition(additional_info, bp, new_frame)
+ * if not eval_result:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1254
+ * py_db.handle_breakpoint_expression(bp, additional_info, new_frame)
+ *
+ * if stop or stop_on_plugin_breakpoint: # <<<<<<<<<<<<<<
+ * if bp.has_condition:
+ * eval_result = py_db.handle_breakpoint_condition(additional_info, bp, new_frame)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1262
+ *
+ * # Handle logpoint (on a logpoint we should never stop).
+ * if (stop or stop_on_plugin_breakpoint) and bp.is_logpoint: # <<<<<<<<<<<<<<
+ * stop = False
+ * stop_on_plugin_breakpoint = False
+ */
+ if (!__pyx_v_stop) {
+ } else {
+ goto __pyx_L11_next_and;
+ }
+ if (__pyx_v_stop_on_plugin_breakpoint) {
+ } else {
+ __pyx_t_6 = __pyx_v_stop_on_plugin_breakpoint;
+ goto __pyx_L10_bool_binop_done;
+ }
+ __pyx_L11_next_and:;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_bp, __pyx_n_s_is_logpoint); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1262, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1262, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_6 = __pyx_t_2;
+ __pyx_L10_bool_binop_done:;
+ if (__pyx_t_6) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1263
+ * # Handle logpoint (on a logpoint we should never stop).
+ * if (stop or stop_on_plugin_breakpoint) and bp.is_logpoint:
+ * stop = False # <<<<<<<<<<<<<<
+ * stop_on_plugin_breakpoint = False
+ *
+ */
+ __pyx_v_stop = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1264
+ * if (stop or stop_on_plugin_breakpoint) and bp.is_logpoint:
+ * stop = False
+ * stop_on_plugin_breakpoint = False # <<<<<<<<<<<<<<
+ *
+ * if additional_info.pydev_message is not None and len(additional_info.pydev_message) > 0:
+ */
+ __pyx_v_stop_on_plugin_breakpoint = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1266
+ * stop_on_plugin_breakpoint = False
+ *
+ * if additional_info.pydev_message is not None and len(additional_info.pydev_message) > 0: # <<<<<<<<<<<<<<
+ * cmd = py_db.cmd_factory.make_io_message(additional_info.pydev_message + os.linesep, "1")
+ * py_db.writer.add_command(cmd)
+ */
+ __pyx_t_2 = (__pyx_v_additional_info->pydev_message != ((PyObject*)Py_None));
+ if (__pyx_t_2) {
+ } else {
+ __pyx_t_6 = __pyx_t_2;
+ goto __pyx_L14_bool_binop_done;
+ }
+ __pyx_t_1 = __pyx_v_additional_info->pydev_message;
+ __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_7 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1266, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = (__pyx_t_7 > 0);
+ __pyx_t_6 = __pyx_t_2;
+ __pyx_L14_bool_binop_done:;
+ if (__pyx_t_6) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1267
+ *
+ * if additional_info.pydev_message is not None and len(additional_info.pydev_message) > 0:
+ * cmd = py_db.cmd_factory.make_io_message(additional_info.pydev_message + os.linesep, "1") # <<<<<<<<<<<<<<
+ * py_db.writer.add_command(cmd)
+ *
+ */
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_cmd_factory); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1267, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_make_io_message); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1267, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1267, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_linesep); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1267, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyNumber_Add(__pyx_v_additional_info->pydev_message, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1267, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_t_3, __pyx_kp_s_1};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1267, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_v_cmd = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1268
+ * if additional_info.pydev_message is not None and len(additional_info.pydev_message) > 0:
+ * cmd = py_db.cmd_factory.make_io_message(additional_info.pydev_message + os.linesep, "1")
+ * py_db.writer.add_command(cmd) # <<<<<<<<<<<<<<
+ *
+ * if stop:
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_writer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1268, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_add_command); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1268, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_cmd};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1268, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1266
+ * stop_on_plugin_breakpoint = False
+ *
+ * if additional_info.pydev_message is not None and len(additional_info.pydev_message) > 0: # <<<<<<<<<<<<<<
+ * cmd = py_db.cmd_factory.make_io_message(additional_info.pydev_message + os.linesep, "1")
+ * py_db.writer.add_command(cmd)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1262
+ *
+ * # Handle logpoint (on a logpoint we should never stop).
+ * if (stop or stop_on_plugin_breakpoint) and bp.is_logpoint: # <<<<<<<<<<<<<<
+ * stop = False
+ * stop_on_plugin_breakpoint = False
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1270
+ * py_db.writer.add_command(cmd)
+ *
+ * if stop: # <<<<<<<<<<<<<<
+ * py_db.set_suspend(
+ * thread_info.thread,
+ */
+ if (__pyx_v_stop) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1271
+ *
+ * if stop:
+ * py_db.set_suspend( # <<<<<<<<<<<<<<
+ * thread_info.thread,
+ * stop_reason,
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1271, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1273
+ * py_db.set_suspend(
+ * thread_info.thread,
+ * stop_reason, # <<<<<<<<<<<<<<
+ * suspend_other_threads=bp and bp.suspend_policy == "ALL",
+ * )
+ */
+ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_stop_reason); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1273, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1271
+ *
+ * if stop:
+ * py_db.set_suspend( # <<<<<<<<<<<<<<
+ * thread_info.thread,
+ * stop_reason,
+ */
+ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1271, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_v_thread_info->thread);
+ __Pyx_GIVEREF(__pyx_v_thread_info->thread);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_thread_info->thread)) __PYX_ERR(0, 1271, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_3);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(0, 1271, __pyx_L1_error);
+ __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1274
+ * thread_info.thread,
+ * stop_reason,
+ * suspend_other_threads=bp and bp.suspend_policy == "ALL", # <<<<<<<<<<<<<<
+ * )
+ * # print('suspend on breakpoint...')
+ */
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1274, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_bp); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1274, __pyx_L1_error)
+ if (__pyx_t_6) {
+ } else {
+ __Pyx_INCREF(__pyx_v_bp);
+ __pyx_t_8 = __pyx_v_bp;
+ goto __pyx_L17_bool_binop_done;
+ }
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_bp, __pyx_n_s_suspend_policy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1274, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_10 = PyObject_RichCompare(__pyx_t_9, __pyx_n_s_ALL, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1274, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_INCREF(__pyx_t_10);
+ __pyx_t_8 = __pyx_t_10;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_L17_bool_binop_done:;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_suspend_other_threads, __pyx_t_8) < 0) __PYX_ERR(0, 1274, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1271
+ *
+ * if stop:
+ * py_db.set_suspend( # <<<<<<<<<<<<<<
+ * thread_info.thread,
+ * stop_reason,
+ */
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1271, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1277
+ * )
+ * # print('suspend on breakpoint...')
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None) # <<<<<<<<<<<<<<
+ * return True
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1277, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[6] = {__pyx_t_4, __pyx_v_py_db, ((PyObject *)__pyx_v_thread_info), __pyx_v_frame, __pyx_n_s_line, Py_None};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 5+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1277, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1278
+ * # print('suspend on breakpoint...')
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ * return True # <<<<<<<<<<<<<<
+ *
+ * elif stop_on_plugin_breakpoint:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_True);
+ __pyx_r = Py_True;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1270
+ * py_db.writer.add_command(cmd)
+ *
+ * if stop: # <<<<<<<<<<<<<<
+ * py_db.set_suspend(
+ * thread_info.thread,
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1280
+ * return True
+ *
+ * elif stop_on_plugin_breakpoint: # <<<<<<<<<<<<<<
+ * stop_at_frame = py_db.plugin.suspend(py_db, thread_info.thread, frame, bp_type)
+ * if stop_at_frame and thread_info.additional_info.pydev_state == STATE_SUSPEND:
+ */
+ if (__pyx_v_stop_on_plugin_breakpoint) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1281
+ *
+ * elif stop_on_plugin_breakpoint:
+ * stop_at_frame = py_db.plugin.suspend(py_db, thread_info.thread, frame, bp_type) # <<<<<<<<<<<<<<
+ * if stop_at_frame and thread_info.additional_info.pydev_state == STATE_SUSPEND:
+ * _do_wait_suspend(py_db, thread_info, stop_at_frame, "line", None)
+ */
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_plugin); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1281, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_suspend); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1281, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[5] = {__pyx_t_3, __pyx_v_py_db, __pyx_v_thread_info->thread, __pyx_v_frame, __pyx_v_bp_type};
+ __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 4+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1281, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_v_stop_at_frame = __pyx_t_8;
+ __pyx_t_8 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1282
+ * elif stop_on_plugin_breakpoint:
+ * stop_at_frame = py_db.plugin.suspend(py_db, thread_info.thread, frame, bp_type)
+ * if stop_at_frame and thread_info.additional_info.pydev_state == STATE_SUSPEND: # <<<<<<<<<<<<<<
+ * _do_wait_suspend(py_db, thread_info, stop_at_frame, "line", None)
+ * return
+ */
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_stop_at_frame); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1282, __pyx_L1_error)
+ if (__pyx_t_2) {
+ } else {
+ __pyx_t_6 = __pyx_t_2;
+ goto __pyx_L20_bool_binop_done;
+ }
+ __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_thread_info->additional_info->pydev_state); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1282, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_STATE_SUSPEND); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1282, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = PyObject_RichCompare(__pyx_t_8, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1282, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1282, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_6 = __pyx_t_2;
+ __pyx_L20_bool_binop_done:;
+ if (__pyx_t_6) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1283
+ * stop_at_frame = py_db.plugin.suspend(py_db, thread_info.thread, frame, bp_type)
+ * if stop_at_frame and thread_info.additional_info.pydev_state == STATE_SUSPEND:
+ * _do_wait_suspend(py_db, thread_info, stop_at_frame, "line", None) # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1283, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_8 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[6] = {__pyx_t_8, __pyx_v_py_db, ((PyObject *)__pyx_v_thread_info), __pyx_v_stop_at_frame, __pyx_n_s_line, Py_None};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 5+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1283, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1282
+ * elif stop_on_plugin_breakpoint:
+ * stop_at_frame = py_db.plugin.suspend(py_db, thread_info.thread, frame, bp_type)
+ * if stop_at_frame and thread_info.additional_info.pydev_state == STATE_SUSPEND: # <<<<<<<<<<<<<<
+ * _do_wait_suspend(py_db, thread_info, stop_at_frame, "line", None)
+ * return
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1284
+ * if stop_at_frame and thread_info.additional_info.pydev_state == STATE_SUSPEND:
+ * _do_wait_suspend(py_db, thread_info, stop_at_frame, "line", None)
+ * return # <<<<<<<<<<<<<<
+ *
+ * return False
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1280
+ * return True
+ *
+ * elif stop_on_plugin_breakpoint: # <<<<<<<<<<<<<<
+ * stop_at_frame = py_db.plugin.suspend(py_db, thread_info.thread, frame, bp_type)
+ * if stop_at_frame and thread_info.additional_info.pydev_state == STATE_SUSPEND:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1286
+ * return
+ *
+ * return False # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_False);
+ __pyx_r = Py_False;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1228
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _stop_on_breakpoint(py_db, ThreadInfo thread_info, int stop_reason, bp, frame, new_frame, bint stop, bint stop_on_plugin_breakpoint, str bp_type): # <<<<<<<<<<<<<<
+ * cdef PyDBAdditionalThreadInfo additional_info
+ * # ELSE
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_10);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._stop_on_breakpoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF((PyObject *)__pyx_v_additional_info);
+ __Pyx_XDECREF(__pyx_v_eval_result);
+ __Pyx_XDECREF(__pyx_v_cmd);
+ __Pyx_XDECREF(__pyx_v_stop_at_frame);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":1291
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _plugin_stepping(py_db, int step_cmd, event, frame, ThreadInfo thread_info): # <<<<<<<<<<<<<<
+ * cdef bint stop
+ * cdef dict stop_info
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__plugin_stepping(PyObject *__pyx_v_py_db, int __pyx_v_step_cmd, PyObject *__pyx_v_event, PyObject *__pyx_v_frame, struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_thread_info) {
+ int __pyx_v_stop;
+ PyObject *__pyx_v_stop_info = 0;
+ PyObject *__pyx_v_plugin_manager = NULL;
+ PyObject *__pyx_v_result = NULL;
+ PyObject *__pyx_v_plugin_stop = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_2;
+ int __pyx_t_3;
+ int __pyx_t_4;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ int __pyx_t_7;
+ PyObject *__pyx_t_8 = NULL;
+ unsigned int __pyx_t_9;
+ PyObject *(*__pyx_t_10)(PyObject *);
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_plugin_stepping", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1298
+ * # ENDIF
+ * # fmt: on
+ * plugin_manager = py_db.plugin # <<<<<<<<<<<<<<
+ * # Step return makes no sense for plugins (I guess?!?), so, just handle as step into.
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or step_cmd in (
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_plugin); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1298, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_plugin_manager = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1300
+ * plugin_manager = py_db.plugin
+ * # Step return makes no sense for plugins (I guess?!?), so, just handle as step into.
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or step_cmd in ( # <<<<<<<<<<<<<<
+ * CMD_STEP_RETURN,
+ * CMD_STEP_RETURN_MY_CODE,
+ */
+ __pyx_t_3 = __pyx_v_step_cmd;
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_CMD_STEP_INTO); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyObject_RichCompare(__pyx_t_1, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (!__pyx_t_7) {
+ } else {
+ __pyx_t_4 = __pyx_t_7;
+ goto __pyx_L6_bool_binop_done;
+ }
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_CMD_STEP_INTO_MY_CODE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (!__pyx_t_7) {
+ } else {
+ __pyx_t_4 = __pyx_t_7;
+ goto __pyx_L6_bool_binop_done;
+ }
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_CMD_STEP_INTO_COROUTINE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyObject_RichCompare(__pyx_t_1, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (!__pyx_t_7) {
+ } else {
+ __pyx_t_4 = __pyx_t_7;
+ goto __pyx_L6_bool_binop_done;
+ }
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_CMD_SMART_STEP_INTO); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_4 = __pyx_t_7;
+ __pyx_L6_bool_binop_done:;
+ __pyx_t_7 = __pyx_t_4;
+ if (!__pyx_t_7) {
+ } else {
+ __pyx_t_2 = __pyx_t_7;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __pyx_t_3 = __pyx_v_step_cmd;
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1301
+ * # Step return makes no sense for plugins (I guess?!?), so, just handle as step into.
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or step_cmd in (
+ * CMD_STEP_RETURN, # <<<<<<<<<<<<<<
+ * CMD_STEP_RETURN_MY_CODE,
+ * ):
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_CMD_STEP_RETURN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1301, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyObject_RichCompare(__pyx_t_1, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1300
+ * plugin_manager = py_db.plugin
+ * # Step return makes no sense for plugins (I guess?!?), so, just handle as step into.
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or step_cmd in ( # <<<<<<<<<<<<<<
+ * CMD_STEP_RETURN,
+ * CMD_STEP_RETURN_MY_CODE,
+ */
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (!__pyx_t_4) {
+ } else {
+ __pyx_t_7 = __pyx_t_4;
+ goto __pyx_L10_bool_binop_done;
+ }
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1302
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or step_cmd in (
+ * CMD_STEP_RETURN,
+ * CMD_STEP_RETURN_MY_CODE, # <<<<<<<<<<<<<<
+ * ):
+ * stop_info = {}
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_CMD_STEP_RETURN_MY_CODE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1302, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1300
+ * plugin_manager = py_db.plugin
+ * # Step return makes no sense for plugins (I guess?!?), so, just handle as step into.
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or step_cmd in ( # <<<<<<<<<<<<<<
+ * CMD_STEP_RETURN,
+ * CMD_STEP_RETURN_MY_CODE,
+ */
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1300, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_7 = __pyx_t_4;
+ __pyx_L10_bool_binop_done:;
+ __pyx_t_4 = __pyx_t_7;
+ __pyx_t_2 = __pyx_t_4;
+ __pyx_L4_bool_binop_done:;
+ if (__pyx_t_2) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1304
+ * CMD_STEP_RETURN_MY_CODE,
+ * ):
+ * stop_info = {} # <<<<<<<<<<<<<<
+ * stop = False
+ * result = plugin_manager.cmd_step_into(py_db, frame, event, thread_info.additional_info, thread_info.thread, stop_info, stop)
+ */
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1304, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_stop_info = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1305
+ * ):
+ * stop_info = {}
+ * stop = False # <<<<<<<<<<<<<<
+ * result = plugin_manager.cmd_step_into(py_db, frame, event, thread_info.additional_info, thread_info.thread, stop_info, stop)
+ * if result:
+ */
+ __pyx_v_stop = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1306
+ * stop_info = {}
+ * stop = False
+ * result = plugin_manager.cmd_step_into(py_db, frame, event, thread_info.additional_info, thread_info.thread, stop_info, stop) # <<<<<<<<<<<<<<
+ * if result:
+ * stop, plugin_stop = result
+ */
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_cmd_step_into); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1306, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyBool_FromLong(__pyx_v_stop); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1306, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ __pyx_t_9 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[8] = {__pyx_t_8, __pyx_v_py_db, __pyx_v_frame, __pyx_v_event, ((PyObject *)__pyx_v_thread_info->additional_info), __pyx_v_thread_info->thread, __pyx_v_stop_info, __pyx_t_6};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 7+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1306, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ }
+ __pyx_v_result = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1307
+ * stop = False
+ * result = plugin_manager.cmd_step_into(py_db, frame, event, thread_info.additional_info, thread_info.thread, stop_info, stop)
+ * if result: # <<<<<<<<<<<<<<
+ * stop, plugin_stop = result
+ * if plugin_stop:
+ */
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1307, __pyx_L1_error)
+ if (__pyx_t_2) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1308
+ * result = plugin_manager.cmd_step_into(py_db, frame, event, thread_info.additional_info, thread_info.thread, stop_info, stop)
+ * if result:
+ * stop, plugin_stop = result # <<<<<<<<<<<<<<
+ * if plugin_stop:
+ * plugin_manager.stop(py_db, frame, event, thread_info.thread, stop_info, None, step_cmd)
+ */
+ if ((likely(PyTuple_CheckExact(__pyx_v_result))) || (PyList_CheckExact(__pyx_v_result))) {
+ PyObject* sequence = __pyx_v_result;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 2)) {
+ if (size > 2) __Pyx_RaiseTooManyValuesError(2);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 1308, __pyx_L1_error)
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1);
+ } else {
+ __pyx_t_1 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_5 = PyList_GET_ITEM(sequence, 1);
+ }
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_5);
+ #else
+ __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1308, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1308, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ #endif
+ } else {
+ Py_ssize_t index = -1;
+ __pyx_t_6 = PyObject_GetIter(__pyx_v_result); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1308, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_6);
+ index = 0; __pyx_t_1 = __pyx_t_10(__pyx_t_6); if (unlikely(!__pyx_t_1)) goto __pyx_L13_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_1);
+ index = 1; __pyx_t_5 = __pyx_t_10(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L13_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_5);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_6), 2) < 0) __PYX_ERR(0, 1308, __pyx_L1_error)
+ __pyx_t_10 = NULL;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L14_unpacking_done;
+ __pyx_L13_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_10 = NULL;
+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+ __PYX_ERR(0, 1308, __pyx_L1_error)
+ __pyx_L14_unpacking_done:;
+ }
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1308, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v_stop = __pyx_t_2;
+ __pyx_v_plugin_stop = __pyx_t_5;
+ __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1309
+ * if result:
+ * stop, plugin_stop = result
+ * if plugin_stop: # <<<<<<<<<<<<<<
+ * plugin_manager.stop(py_db, frame, event, thread_info.thread, stop_info, None, step_cmd)
+ * return
+ */
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_plugin_stop); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1309, __pyx_L1_error)
+ if (__pyx_t_2) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1310
+ * stop, plugin_stop = result
+ * if plugin_stop:
+ * plugin_manager.stop(py_db, frame, event, thread_info.thread, stop_info, None, step_cmd) # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_stop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1310, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1310, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_9 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[8] = {__pyx_t_8, __pyx_v_py_db, __pyx_v_frame, __pyx_v_event, __pyx_v_thread_info->thread, __pyx_v_stop_info, Py_None, __pyx_t_6};
+ __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_9, 7+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1310, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1311
+ * if plugin_stop:
+ * plugin_manager.stop(py_db, frame, event, thread_info.thread, stop_info, None, step_cmd)
+ * return # <<<<<<<<<<<<<<
+ *
+ * elif step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1309
+ * if result:
+ * stop, plugin_stop = result
+ * if plugin_stop: # <<<<<<<<<<<<<<
+ * plugin_manager.stop(py_db, frame, event, thread_info.thread, stop_info, None, step_cmd)
+ * return
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1307
+ * stop = False
+ * result = plugin_manager.cmd_step_into(py_db, frame, event, thread_info.additional_info, thread_info.thread, stop_info, stop)
+ * if result: # <<<<<<<<<<<<<<
+ * stop, plugin_stop = result
+ * if plugin_stop:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1300
+ * plugin_manager = py_db.plugin
+ * # Step return makes no sense for plugins (I guess?!?), so, just handle as step into.
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or step_cmd in ( # <<<<<<<<<<<<<<
+ * CMD_STEP_RETURN,
+ * CMD_STEP_RETURN_MY_CODE,
+ */
+ goto __pyx_L3;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1313
+ * return
+ *
+ * elif step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE): # <<<<<<<<<<<<<<
+ * if plugin_manager is not None:
+ * stop_info = {}
+ */
+ __pyx_t_3 = __pyx_v_step_cmd;
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_CMD_STEP_OVER); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = PyObject_RichCompare(__pyx_t_5, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1313, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1313, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (!__pyx_t_4) {
+ } else {
+ __pyx_t_2 = __pyx_t_4;
+ goto __pyx_L16_bool_binop_done;
+ }
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_CMD_STEP_OVER_MY_CODE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_6, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1313, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1313, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_2 = __pyx_t_4;
+ __pyx_L16_bool_binop_done:;
+ __pyx_t_4 = __pyx_t_2;
+ if (__pyx_t_4) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1314
+ *
+ * elif step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE):
+ * if plugin_manager is not None: # <<<<<<<<<<<<<<
+ * stop_info = {}
+ * stop = False
+ */
+ __pyx_t_4 = (__pyx_v_plugin_manager != Py_None);
+ if (__pyx_t_4) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1315
+ * elif step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE):
+ * if plugin_manager is not None:
+ * stop_info = {} # <<<<<<<<<<<<<<
+ * stop = False
+ * result = plugin_manager.cmd_step_over(py_db, frame, event, thread_info.additional_info, thread_info.thread, stop_info, stop)
+ */
+ __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1315, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_v_stop_info = ((PyObject*)__pyx_t_5);
+ __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1316
+ * if plugin_manager is not None:
+ * stop_info = {}
+ * stop = False # <<<<<<<<<<<<<<
+ * result = plugin_manager.cmd_step_over(py_db, frame, event, thread_info.additional_info, thread_info.thread, stop_info, stop)
+ * if result:
+ */
+ __pyx_v_stop = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1317
+ * stop_info = {}
+ * stop = False
+ * result = plugin_manager.cmd_step_over(py_db, frame, event, thread_info.additional_info, thread_info.thread, stop_info, stop) # <<<<<<<<<<<<<<
+ * if result:
+ * stop, plugin_stop = result
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_cmd_step_over); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1317, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = __Pyx_PyBool_FromLong(__pyx_v_stop); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1317, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_9 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[8] = {__pyx_t_8, __pyx_v_py_db, __pyx_v_frame, __pyx_v_event, ((PyObject *)__pyx_v_thread_info->additional_info), __pyx_v_thread_info->thread, __pyx_v_stop_info, __pyx_t_6};
+ __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_9, 7+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1317, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __pyx_v_result = __pyx_t_5;
+ __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1318
+ * stop = False
+ * result = plugin_manager.cmd_step_over(py_db, frame, event, thread_info.additional_info, thread_info.thread, stop_info, stop)
+ * if result: # <<<<<<<<<<<<<<
+ * stop, plugin_stop = result
+ * if plugin_stop:
+ */
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1318, __pyx_L1_error)
+ if (__pyx_t_4) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1319
+ * result = plugin_manager.cmd_step_over(py_db, frame, event, thread_info.additional_info, thread_info.thread, stop_info, stop)
+ * if result:
+ * stop, plugin_stop = result # <<<<<<<<<<<<<<
+ * if plugin_stop:
+ * plugin_manager.stop(py_db, frame, event, thread_info.thread, stop_info, None, step_cmd)
+ */
+ if ((likely(PyTuple_CheckExact(__pyx_v_result))) || (PyList_CheckExact(__pyx_v_result))) {
+ PyObject* sequence = __pyx_v_result;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 2)) {
+ if (size > 2) __Pyx_RaiseTooManyValuesError(2);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 1319, __pyx_L1_error)
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1);
+ } else {
+ __pyx_t_5 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_1 = PyList_GET_ITEM(sequence, 1);
+ }
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_1);
+ #else
+ __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1319, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1319, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ #endif
+ } else {
+ Py_ssize_t index = -1;
+ __pyx_t_6 = PyObject_GetIter(__pyx_v_result); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1319, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_6);
+ index = 0; __pyx_t_5 = __pyx_t_10(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L20_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_5);
+ index = 1; __pyx_t_1 = __pyx_t_10(__pyx_t_6); if (unlikely(!__pyx_t_1)) goto __pyx_L20_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_1);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_6), 2) < 0) __PYX_ERR(0, 1319, __pyx_L1_error)
+ __pyx_t_10 = NULL;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L21_unpacking_done;
+ __pyx_L20_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_10 = NULL;
+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+ __PYX_ERR(0, 1319, __pyx_L1_error)
+ __pyx_L21_unpacking_done:;
+ }
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1319, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_v_stop = __pyx_t_4;
+ __pyx_v_plugin_stop = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1320
+ * if result:
+ * stop, plugin_stop = result
+ * if plugin_stop: # <<<<<<<<<<<<<<
+ * plugin_manager.stop(py_db, frame, event, thread_info.thread, stop_info, None, step_cmd)
+ * return
+ */
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_plugin_stop); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1320, __pyx_L1_error)
+ if (__pyx_t_4) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1321
+ * stop, plugin_stop = result
+ * if plugin_stop:
+ * plugin_manager.stop(py_db, frame, event, thread_info.thread, stop_info, None, step_cmd) # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_stop); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1321, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1321, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ __pyx_t_9 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[8] = {__pyx_t_8, __pyx_v_py_db, __pyx_v_frame, __pyx_v_event, __pyx_v_thread_info->thread, __pyx_v_stop_info, Py_None, __pyx_t_6};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 7+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1321, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1322
+ * if plugin_stop:
+ * plugin_manager.stop(py_db, frame, event, thread_info.thread, stop_info, None, step_cmd)
+ * return # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1320
+ * if result:
+ * stop, plugin_stop = result
+ * if plugin_stop: # <<<<<<<<<<<<<<
+ * plugin_manager.stop(py_db, frame, event, thread_info.thread, stop_info, None, step_cmd)
+ * return
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1318
+ * stop = False
+ * result = plugin_manager.cmd_step_over(py_db, frame, event, thread_info.additional_info, thread_info.thread, stop_info, stop)
+ * if result: # <<<<<<<<<<<<<<
+ * stop, plugin_stop = result
+ * if plugin_stop:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1314
+ *
+ * elif step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE):
+ * if plugin_manager is not None: # <<<<<<<<<<<<<<
+ * stop_info = {}
+ * stop = False
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1313
+ * return
+ *
+ * elif step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE): # <<<<<<<<<<<<<<
+ * if plugin_manager is not None:
+ * stop_info = {}
+ */
+ }
+ __pyx_L3:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1291
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _plugin_stepping(py_db, int step_cmd, event, frame, ThreadInfo thread_info): # <<<<<<<<<<<<<<
+ * cdef bint stop
+ * cdef dict stop_info
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._plugin_stepping", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_stop_info);
+ __Pyx_XDECREF(__pyx_v_plugin_manager);
+ __Pyx_XDECREF(__pyx_v_result);
+ __Pyx_XDECREF(__pyx_v_plugin_stop);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":1327
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _jump_event(code, int from_offset, int to_offset): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * cdef FuncCodeInfo func_code_info
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__jump_event(PyObject *__pyx_v_code, int __pyx_v_from_offset, int __pyx_v_to_offset) {
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_thread_info = 0;
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v_func_code_info = 0;
+ int __pyx_v_from_line;
+ int __pyx_v_to_line;
+ PyObject *__pyx_v_py_db = 0;
+ PyObject *__pyx_v_frame = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ int __pyx_t_8;
+ int __pyx_t_9;
+ int __pyx_t_10;
+ unsigned int __pyx_t_11;
+ int __pyx_t_12;
+ struct __pyx_opt_args_29_pydevd_sys_monitoring_cython__getframe __pyx_t_13;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_jump_event", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1339
+ * # everything is global, yet, when we start tracing something for stepping that
+ * # needs to be per-thread.
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1340
+ * # needs to be per-thread.
+ * try:
+ * thread_info = _thread_local_info.thread_info # <<<<<<<<<<<<<<
+ * except:
+ * thread_info = _get_thread_info(True, 1)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1340, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_thread_info); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1340, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo))))) __PYX_ERR(0, 1340, __pyx_L3_error)
+ __pyx_v_thread_info = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_t_5);
+ __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1339
+ * # everything is global, yet, when we start tracing something for stepping that
+ * # needs to be per-thread.
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L8_try_end;
+ __pyx_L3_error:;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1341
+ * try:
+ * thread_info = _thread_local_info.thread_info
+ * except: # <<<<<<<<<<<<<<
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None:
+ */
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._jump_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(0, 1341, __pyx_L5_except_error)
+ __Pyx_XGOTREF(__pyx_t_5);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_6);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1342
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ * thread_info = _get_thread_info(True, 1) # <<<<<<<<<<<<<<
+ * if thread_info is None:
+ * return
+ */
+ __pyx_t_7 = __pyx_f_29_pydevd_sys_monitoring_cython__get_thread_info(1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1342, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo))))) __PYX_ERR(0, 1342, __pyx_L5_except_error)
+ __Pyx_XDECREF_SET(__pyx_v_thread_info, ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_t_7));
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1343
+ * except:
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_8 = (((PyObject *)__pyx_v_thread_info) == Py_None);
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1344
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None:
+ * return # <<<<<<<<<<<<<<
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L6_except_return;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1343
+ * except:
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L4_exception_handled;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1339
+ * # everything is global, yet, when we start tracing something for stepping that
+ * # needs to be per-thread.
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ __pyx_L5_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L1_error;
+ __pyx_L6_except_return:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L0;
+ __pyx_L4_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ __pyx_L8_try_end:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1346
+ * return
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg # <<<<<<<<<<<<<<
+ * if py_db is None or py_db.pydb_disposed:
+ * return monitor.DISABLE
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1346, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_global_dbg); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1346, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_v_py_db = __pyx_t_4;
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1347
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed: # <<<<<<<<<<<<<<
+ * return monitor.DISABLE
+ *
+ */
+ __pyx_t_9 = (__pyx_v_py_db == Py_None);
+ if (!__pyx_t_9) {
+ } else {
+ __pyx_t_8 = __pyx_t_9;
+ goto __pyx_L13_bool_binop_done;
+ }
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_pydb_disposed); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1347, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1347, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __pyx_t_9;
+ __pyx_L13_bool_binop_done:;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1348
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed:
+ * return monitor.DISABLE # <<<<<<<<<<<<<<
+ *
+ * if not thread_info.trace or thread_info.thread._is_stopped:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1348, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_DISABLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1348, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_r = __pyx_t_6;
+ __pyx_t_6 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1347
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed: # <<<<<<<<<<<<<<
+ * return monitor.DISABLE
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1350
+ * return monitor.DISABLE
+ *
+ * if not thread_info.trace or thread_info.thread._is_stopped: # <<<<<<<<<<<<<<
+ * # For thread-related stuff we can't disable the code tracing because other
+ * # threads may still want it...
+ */
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_thread_info->trace); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1350, __pyx_L1_error)
+ __pyx_t_10 = (!__pyx_t_9);
+ if (!__pyx_t_10) {
+ } else {
+ __pyx_t_8 = __pyx_t_10;
+ goto __pyx_L16_bool_binop_done;
+ }
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread_info->thread, __pyx_n_s_is_stopped); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1350, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1350, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_8 = __pyx_t_10;
+ __pyx_L16_bool_binop_done:;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1353
+ * # For thread-related stuff we can't disable the code tracing because other
+ * # threads may still want it...
+ * return # <<<<<<<<<<<<<<
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1350
+ * return monitor.DISABLE
+ *
+ * if not thread_info.trace or thread_info.thread._is_stopped: # <<<<<<<<<<<<<<
+ * # For thread-related stuff we can't disable the code tracing because other
+ * # threads may still want it...
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1355
+ * return
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1) # <<<<<<<<<<<<<<
+ * if func_code_info.always_skip_code or func_code_info.always_filtered_out:
+ * return monitor.DISABLE
+ */
+ __pyx_t_6 = ((PyObject *)__pyx_f_29_pydevd_sys_monitoring_cython__get_func_code_info(__pyx_v_code, __pyx_int_1, 0)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1355, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_v_func_code_info = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)__pyx_t_6);
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1356
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ * if func_code_info.always_skip_code or func_code_info.always_filtered_out: # <<<<<<<<<<<<<<
+ * return monitor.DISABLE
+ *
+ */
+ if (!__pyx_v_func_code_info->always_skip_code) {
+ } else {
+ __pyx_t_8 = __pyx_v_func_code_info->always_skip_code;
+ goto __pyx_L19_bool_binop_done;
+ }
+ __pyx_t_8 = __pyx_v_func_code_info->always_filtered_out;
+ __pyx_L19_bool_binop_done:;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1357
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ * if func_code_info.always_skip_code or func_code_info.always_filtered_out:
+ * return monitor.DISABLE # <<<<<<<<<<<<<<
+ *
+ * # Same logic as "sys_trace_jump_func" in https://github.com/python/cpython/blob/main/Python/legacy_tracing.c
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_monitor); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1357, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_DISABLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1357, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1356
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ * if func_code_info.always_skip_code or func_code_info.always_filtered_out: # <<<<<<<<<<<<<<
+ * return monitor.DISABLE
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1363
+ * # Ignore forward jump.
+ * # print('jump event', code.co_name, 'from offset', from_offset, 'to offset', to_offset)
+ * if to_offset > from_offset: # <<<<<<<<<<<<<<
+ * return monitor.DISABLE
+ *
+ */
+ __pyx_t_8 = (__pyx_v_to_offset > __pyx_v_from_offset);
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1364
+ * # print('jump event', code.co_name, 'from offset', from_offset, 'to offset', to_offset)
+ * if to_offset > from_offset:
+ * return monitor.DISABLE # <<<<<<<<<<<<<<
+ *
+ * from_line = func_code_info.get_line_of_offset(from_offset)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1364, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_DISABLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1364, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_r = __pyx_t_6;
+ __pyx_t_6 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1363
+ * # Ignore forward jump.
+ * # print('jump event', code.co_name, 'from offset', from_offset, 'to offset', to_offset)
+ * if to_offset > from_offset: # <<<<<<<<<<<<<<
+ * return monitor.DISABLE
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1366
+ * return monitor.DISABLE
+ *
+ * from_line = func_code_info.get_line_of_offset(from_offset) # <<<<<<<<<<<<<<
+ * to_line = func_code_info.get_line_of_offset(to_offset)
+ * # print('jump event', code.co_name, 'from line', from_line, 'to line', to_line)
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_func_code_info), __pyx_n_s_get_line_of_offset); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1366, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_from_offset); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1366, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = NULL;
+ __pyx_t_11 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_11 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5};
+ __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1366, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1366, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_v_from_line = __pyx_t_12;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1367
+ *
+ * from_line = func_code_info.get_line_of_offset(from_offset)
+ * to_line = func_code_info.get_line_of_offset(to_offset) # <<<<<<<<<<<<<<
+ * # print('jump event', code.co_name, 'from line', from_line, 'to line', to_line)
+ *
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_func_code_info), __pyx_n_s_get_line_of_offset); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1367, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_to_offset); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1367, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = NULL;
+ __pyx_t_11 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_11 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5};
+ __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1367, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1367, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_v_to_line = __pyx_t_12;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1370
+ * # print('jump event', code.co_name, 'from line', from_line, 'to line', to_line)
+ *
+ * if from_line != to_line: # <<<<<<<<<<<<<<
+ * # I.e.: use case: "yield from [j for j in a if j % 2 == 0]"
+ * return monitor.DISABLE
+ */
+ __pyx_t_8 = (__pyx_v_from_line != __pyx_v_to_line);
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1372
+ * if from_line != to_line:
+ * # I.e.: use case: "yield from [j for j in a if j % 2 == 0]"
+ * return monitor.DISABLE # <<<<<<<<<<<<<<
+ *
+ * # We know the frame depth.
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_monitor); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1372, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_DISABLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1372, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1370
+ * # print('jump event', code.co_name, 'from line', from_line, 'to line', to_line)
+ *
+ * if from_line != to_line: # <<<<<<<<<<<<<<
+ * # I.e.: use case: "yield from [j for j in a if j % 2 == 0]"
+ * return monitor.DISABLE
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1375
+ *
+ * # We know the frame depth.
+ * frame = _getframe(1) # <<<<<<<<<<<<<<
+ *
+ * # Disable the next line event as we're jumping to a line. The line event will be redundant.
+ */
+ __pyx_t_13.__pyx_n = 1;
+ __pyx_t_13.depth = __pyx_int_1;
+ __pyx_t_4 = __pyx_f_29_pydevd_sys_monitoring_cython__getframe(&__pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1375, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_v_frame = __pyx_t_4;
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1378
+ *
+ * # Disable the next line event as we're jumping to a line. The line event will be redundant.
+ * _thread_local_info.f_disable_next_line_if_match = frame.f_lineno # <<<<<<<<<<<<<<
+ *
+ * return _internal_line_event(func_code_info, frame, frame.f_lineno)
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1378, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1378, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (__Pyx_PyObject_SetAttrStr(__pyx_t_6, __pyx_n_s_f_disable_next_line_if_match, __pyx_t_4) < 0) __PYX_ERR(0, 1378, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1380
+ * _thread_local_info.f_disable_next_line_if_match = frame.f_lineno
+ *
+ * return _internal_line_event(func_code_info, frame, frame.f_lineno) # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1380, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1380, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __pyx_f_29_pydevd_sys_monitoring_cython__internal_line_event(__pyx_v_func_code_info, __pyx_v_frame, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1380, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_r = __pyx_t_6;
+ __pyx_t_6 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1327
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _jump_event(code, int from_offset, int to_offset): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * cdef FuncCodeInfo func_code_info
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._jump_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF((PyObject *)__pyx_v_thread_info);
+ __Pyx_XDECREF((PyObject *)__pyx_v_func_code_info);
+ __Pyx_XDECREF(__pyx_v_py_db);
+ __Pyx_XDECREF(__pyx_v_frame);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":1385
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _line_event(code, int line): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * cdef FuncCodeInfo func_code_info
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__line_event(PyObject *__pyx_v_code, int __pyx_v_line) {
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_thread_info = 0;
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v_func_code_info = 0;
+ PyObject *__pyx_v_py_db = 0;
+ PyObject *__pyx_v_frame = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ int __pyx_t_8;
+ int __pyx_t_9;
+ int __pyx_t_10;
+ struct __pyx_opt_args_29_pydevd_sys_monitoring_cython__getframe __pyx_t_11;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_line_event", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1396
+ * # everything is global, yet, when we start tracing something for stepping that
+ * # needs to be per-thread.
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1397
+ * # needs to be per-thread.
+ * try:
+ * thread_info = _thread_local_info.thread_info # <<<<<<<<<<<<<<
+ * except:
+ * thread_info = _get_thread_info(True, 1)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1397, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_thread_info); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1397, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo))))) __PYX_ERR(0, 1397, __pyx_L3_error)
+ __pyx_v_thread_info = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_t_5);
+ __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1396
+ * # everything is global, yet, when we start tracing something for stepping that
+ * # needs to be per-thread.
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L8_try_end;
+ __pyx_L3_error:;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1398
+ * try:
+ * thread_info = _thread_local_info.thread_info
+ * except: # <<<<<<<<<<<<<<
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None:
+ */
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._line_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(0, 1398, __pyx_L5_except_error)
+ __Pyx_XGOTREF(__pyx_t_5);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_6);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1399
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ * thread_info = _get_thread_info(True, 1) # <<<<<<<<<<<<<<
+ * if thread_info is None:
+ * return
+ */
+ __pyx_t_7 = __pyx_f_29_pydevd_sys_monitoring_cython__get_thread_info(1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1399, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo))))) __PYX_ERR(0, 1399, __pyx_L5_except_error)
+ __Pyx_XDECREF_SET(__pyx_v_thread_info, ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_t_7));
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1400
+ * except:
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_8 = (((PyObject *)__pyx_v_thread_info) == Py_None);
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1401
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None:
+ * return # <<<<<<<<<<<<<<
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L6_except_return;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1400
+ * except:
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L4_exception_handled;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1396
+ * # everything is global, yet, when we start tracing something for stepping that
+ * # needs to be per-thread.
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ __pyx_L5_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L1_error;
+ __pyx_L6_except_return:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L0;
+ __pyx_L4_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ __pyx_L8_try_end:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1403
+ * return
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg # <<<<<<<<<<<<<<
+ * if py_db is None or py_db.pydb_disposed:
+ * return monitor.DISABLE
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1403, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_global_dbg); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1403, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_v_py_db = __pyx_t_4;
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1404
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed: # <<<<<<<<<<<<<<
+ * return monitor.DISABLE
+ *
+ */
+ __pyx_t_9 = (__pyx_v_py_db == Py_None);
+ if (!__pyx_t_9) {
+ } else {
+ __pyx_t_8 = __pyx_t_9;
+ goto __pyx_L13_bool_binop_done;
+ }
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_pydb_disposed); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1404, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1404, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __pyx_t_9;
+ __pyx_L13_bool_binop_done:;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1405
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed:
+ * return monitor.DISABLE # <<<<<<<<<<<<<<
+ *
+ * if not thread_info.trace or thread_info.thread._is_stopped:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1405, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_DISABLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1405, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_r = __pyx_t_6;
+ __pyx_t_6 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1404
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed: # <<<<<<<<<<<<<<
+ * return monitor.DISABLE
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1407
+ * return monitor.DISABLE
+ *
+ * if not thread_info.trace or thread_info.thread._is_stopped: # <<<<<<<<<<<<<<
+ * # For thread-related stuff we can't disable the code tracing because other
+ * # threads may still want it...
+ */
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_thread_info->trace); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1407, __pyx_L1_error)
+ __pyx_t_10 = (!__pyx_t_9);
+ if (!__pyx_t_10) {
+ } else {
+ __pyx_t_8 = __pyx_t_10;
+ goto __pyx_L16_bool_binop_done;
+ }
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread_info->thread, __pyx_n_s_is_stopped); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1407, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1407, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_8 = __pyx_t_10;
+ __pyx_L16_bool_binop_done:;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1410
+ * # For thread-related stuff we can't disable the code tracing because other
+ * # threads may still want it...
+ * return # <<<<<<<<<<<<<<
+ *
+ * if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1407
+ * return monitor.DISABLE
+ *
+ * if not thread_info.trace or thread_info.thread._is_stopped: # <<<<<<<<<<<<<<
+ * # For thread-related stuff we can't disable the code tracing because other
+ * # threads may still want it...
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1412
+ * return
+ *
+ * if hasattr(_thread_local_info, "f_disable_next_line_if_match"): # <<<<<<<<<<<<<<
+ * if _thread_local_info.f_disable_next_line_if_match is line:
+ * # If we're in a jump, we should skip this line event. The jump would have
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1412, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_HasAttr(__pyx_t_6, __pyx_n_s_f_disable_next_line_if_match); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 1412, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1413
+ *
+ * if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
+ * if _thread_local_info.f_disable_next_line_if_match is line: # <<<<<<<<<<<<<<
+ * # If we're in a jump, we should skip this line event. The jump would have
+ * # been considered a line event for this same line and we don't want to
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1413, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_f_disable_next_line_if_match); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1413, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1413, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = (__pyx_t_4 == __pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1417
+ * # been considered a line event for this same line and we don't want to
+ * # stop twice.
+ * del _thread_local_info.f_disable_next_line_if_match # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1417, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (__Pyx_PyObject_DelAttrStr(__pyx_t_6, __pyx_n_s_f_disable_next_line_if_match) < 0) __PYX_ERR(0, 1417, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1418
+ * # stop twice.
+ * del _thread_local_info.f_disable_next_line_if_match
+ * return # <<<<<<<<<<<<<<
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1413
+ *
+ * if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
+ * if _thread_local_info.f_disable_next_line_if_match is line: # <<<<<<<<<<<<<<
+ * # If we're in a jump, we should skip this line event. The jump would have
+ * # been considered a line event for this same line and we don't want to
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1412
+ * return
+ *
+ * if hasattr(_thread_local_info, "f_disable_next_line_if_match"): # <<<<<<<<<<<<<<
+ * if _thread_local_info.f_disable_next_line_if_match is line:
+ * # If we're in a jump, we should skip this line event. The jump would have
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1420
+ * return
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1) # <<<<<<<<<<<<<<
+ * if func_code_info.always_skip_code or func_code_info.always_filtered_out:
+ * return monitor.DISABLE
+ */
+ __pyx_t_6 = ((PyObject *)__pyx_f_29_pydevd_sys_monitoring_cython__get_func_code_info(__pyx_v_code, __pyx_int_1, 0)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1420, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_v_func_code_info = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)__pyx_t_6);
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1421
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ * if func_code_info.always_skip_code or func_code_info.always_filtered_out: # <<<<<<<<<<<<<<
+ * return monitor.DISABLE
+ *
+ */
+ if (!__pyx_v_func_code_info->always_skip_code) {
+ } else {
+ __pyx_t_8 = __pyx_v_func_code_info->always_skip_code;
+ goto __pyx_L21_bool_binop_done;
+ }
+ __pyx_t_8 = __pyx_v_func_code_info->always_filtered_out;
+ __pyx_L21_bool_binop_done:;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1422
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ * if func_code_info.always_skip_code or func_code_info.always_filtered_out:
+ * return monitor.DISABLE # <<<<<<<<<<<<<<
+ *
+ * # print('line event', code.co_name, line)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_monitor); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1422, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_DISABLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1422, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1421
+ *
+ * func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
+ * if func_code_info.always_skip_code or func_code_info.always_filtered_out: # <<<<<<<<<<<<<<
+ * return monitor.DISABLE
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1427
+ *
+ * # We know the frame depth.
+ * frame = _getframe(1) # <<<<<<<<<<<<<<
+ * return _internal_line_event(func_code_info, frame, line)
+ *
+ */
+ __pyx_t_11.__pyx_n = 1;
+ __pyx_t_11.depth = __pyx_int_1;
+ __pyx_t_4 = __pyx_f_29_pydevd_sys_monitoring_cython__getframe(&__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1427, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_v_frame = __pyx_t_4;
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1428
+ * # We know the frame depth.
+ * frame = _getframe(1)
+ * return _internal_line_event(func_code_info, frame, line) # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_4 = __pyx_f_29_pydevd_sys_monitoring_cython__internal_line_event(__pyx_v_func_code_info, __pyx_v_frame, __pyx_v_line); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1428, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1385
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _line_event(code, int line): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * cdef FuncCodeInfo func_code_info
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._line_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF((PyObject *)__pyx_v_thread_info);
+ __Pyx_XDECREF((PyObject *)__pyx_v_func_code_info);
+ __Pyx_XDECREF(__pyx_v_py_db);
+ __Pyx_XDECREF(__pyx_v_frame);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":1433
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _internal_line_event(FuncCodeInfo func_code_info, frame, int line): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * cdef PyDBAdditionalThreadInfo info
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__internal_line_event(struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v_func_code_info, PyObject *__pyx_v_frame, int __pyx_v_line) {
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_thread_info = 0;
+ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info = 0;
+ int __pyx_v_step_cmd;
+ int __pyx_v_stop;
+ int __pyx_v_stop_on_plugin_breakpoint;
+ int __pyx_v_stop_reason;
+ int __pyx_v_force_check_project_scope;
+ PyObject *__pyx_v_py_db = 0;
+ PyObject *__pyx_v_bp = NULL;
+ CYTHON_UNUSED PyObject *__pyx_v_stop_info = NULL;
+ PyObject *__pyx_v_bp_type = NULL;
+ PyObject *__pyx_v_new_frame = NULL;
+ PyObject *__pyx_v_result = NULL;
+ PyObject *__pyx_v_stop_frame = NULL;
+ PyObject *__pyx_v_filename = NULL;
+ PyObject *__pyx_v_f = NULL;
+ PyObject *__pyx_v_f2 = NULL;
+ PyObject *__pyx_v_back = NULL;
+ int __pyx_v_pydev_smart_parent_offset;
+ PyObject *__pyx_v_pydev_smart_step_into_variants = NULL;
+ PyObject *__pyx_v_curr_func_name = NULL;
+ int __pyx_v_pydev_smart_child_offset;
+ PyObject *__pyx_v_smart_step_into_variant = NULL;
+ PyObject *__pyx_v_children_variants = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ int __pyx_t_3;
+ int __pyx_t_4;
+ PyObject *__pyx_t_5 = NULL;
+ unsigned int __pyx_t_6;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *(*__pyx_t_8)(PyObject *);
+ int __pyx_t_9;
+ PyObject *__pyx_t_10 = NULL;
+ int __pyx_t_11;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_internal_line_event", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1445
+ * # ENDIF
+ * # fmt: on
+ * py_db: object = GlobalDebuggerHolder.global_dbg # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * info = thread_info.additional_info
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1445, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_global_dbg); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1445, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v_py_db = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1446
+ * # fmt: on
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * thread_info = _thread_local_info.thread_info # <<<<<<<<<<<<<<
+ * info = thread_info.additional_info
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1446, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_thread_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1446, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo))))) __PYX_ERR(0, 1446, __pyx_L1_error)
+ __pyx_v_thread_info = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1447
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * thread_info = _thread_local_info.thread_info
+ * info = thread_info.additional_info # <<<<<<<<<<<<<<
+ *
+ * step_cmd = info.pydev_step_cmd
+ */
+ __pyx_t_1 = ((PyObject *)__pyx_v_thread_info->additional_info);
+ __Pyx_INCREF(__pyx_t_1);
+ __pyx_v_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1449
+ * info = thread_info.additional_info
+ *
+ * step_cmd = info.pydev_step_cmd # <<<<<<<<<<<<<<
+ *
+ * # print('line event', info, id(info), thread_info.thread.name)
+ */
+ __pyx_t_3 = __pyx_v_info->pydev_step_cmd;
+ __pyx_v_step_cmd = __pyx_t_3;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1455
+ * # If we reached here, it was not filtered out.
+ *
+ * if func_code_info.breakpoint_found: # <<<<<<<<<<<<<<
+ * bp = None
+ * stop = False
+ */
+ if (__pyx_v_func_code_info->breakpoint_found) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1456
+ *
+ * if func_code_info.breakpoint_found:
+ * bp = None # <<<<<<<<<<<<<<
+ * stop = False
+ * stop_on_plugin_breakpoint = False
+ */
+ __Pyx_INCREF(Py_None);
+ __pyx_v_bp = Py_None;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1457
+ * if func_code_info.breakpoint_found:
+ * bp = None
+ * stop = False # <<<<<<<<<<<<<<
+ * stop_on_plugin_breakpoint = False
+ *
+ */
+ __pyx_v_stop = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1458
+ * bp = None
+ * stop = False
+ * stop_on_plugin_breakpoint = False # <<<<<<<<<<<<<<
+ *
+ * stop_info = {}
+ */
+ __pyx_v_stop_on_plugin_breakpoint = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1460
+ * stop_on_plugin_breakpoint = False
+ *
+ * stop_info = {} # <<<<<<<<<<<<<<
+ * stop_reason = CMD_SET_BREAK
+ * bp_type = None
+ */
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1460, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_stop_info = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1461
+ *
+ * stop_info = {}
+ * stop_reason = CMD_SET_BREAK # <<<<<<<<<<<<<<
+ * bp_type = None
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_CMD_SET_BREAK); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1461, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1461, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v_stop_reason = __pyx_t_3;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1462
+ * stop_info = {}
+ * stop_reason = CMD_SET_BREAK
+ * bp_type = None # <<<<<<<<<<<<<<
+ *
+ * bp = func_code_info.bp_line_to_breakpoint.get(line)
+ */
+ __Pyx_INCREF(Py_None);
+ __pyx_v_bp_type = Py_None;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1464
+ * bp_type = None
+ *
+ * bp = func_code_info.bp_line_to_breakpoint.get(line) # <<<<<<<<<<<<<<
+ * if bp is not None:
+ * new_frame = frame
+ */
+ if (unlikely(__pyx_v_func_code_info->bp_line_to_breakpoint == Py_None)) {
+ PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
+ __PYX_ERR(0, 1464, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1464, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyDict_GetItemDefault(__pyx_v_func_code_info->bp_line_to_breakpoint, __pyx_t_1, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1464, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF_SET(__pyx_v_bp, __pyx_t_2);
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1465
+ *
+ * bp = func_code_info.bp_line_to_breakpoint.get(line)
+ * if bp is not None: # <<<<<<<<<<<<<<
+ * new_frame = frame
+ * stop = True
+ */
+ __pyx_t_4 = (__pyx_v_bp != Py_None);
+ if (__pyx_t_4) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1466
+ * bp = func_code_info.bp_line_to_breakpoint.get(line)
+ * if bp is not None:
+ * new_frame = frame # <<<<<<<<<<<<<<
+ * stop = True
+ *
+ */
+ __Pyx_INCREF(__pyx_v_frame);
+ __pyx_v_new_frame = __pyx_v_frame;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1467
+ * if bp is not None:
+ * new_frame = frame
+ * stop = True # <<<<<<<<<<<<<<
+ *
+ * if bp:
+ */
+ __pyx_v_stop = 1;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1465
+ *
+ * bp = func_code_info.bp_line_to_breakpoint.get(line)
+ * if bp is not None: # <<<<<<<<<<<<<<
+ * new_frame = frame
+ * stop = True
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1469
+ * stop = True
+ *
+ * if bp: # <<<<<<<<<<<<<<
+ * if _stop_on_breakpoint(py_db, thread_info, stop_reason, bp, frame, new_frame, stop, stop_on_plugin_breakpoint, "python-line"):
+ * return
+ */
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_bp); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1469, __pyx_L1_error)
+ if (__pyx_t_4) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1470
+ *
+ * if bp:
+ * if _stop_on_breakpoint(py_db, thread_info, stop_reason, bp, frame, new_frame, stop, stop_on_plugin_breakpoint, "python-line"): # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ if (unlikely(!__pyx_v_new_frame)) { __Pyx_RaiseUnboundLocalError("new_frame"); __PYX_ERR(0, 1470, __pyx_L1_error) }
+ __pyx_t_2 = __pyx_f_29_pydevd_sys_monitoring_cython__stop_on_breakpoint(__pyx_v_py_db, __pyx_v_thread_info, __pyx_v_stop_reason, __pyx_v_bp, __pyx_v_frame, __pyx_v_new_frame, __pyx_v_stop, __pyx_v_stop_on_plugin_breakpoint, __pyx_kp_s_python_line); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1470, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1470, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (__pyx_t_4) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1471
+ * if bp:
+ * if _stop_on_breakpoint(py_db, thread_info, stop_reason, bp, frame, new_frame, stop, stop_on_plugin_breakpoint, "python-line"):
+ * return # <<<<<<<<<<<<<<
+ *
+ * if func_code_info.plugin_line_breakpoint_found:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1470
+ *
+ * if bp:
+ * if _stop_on_breakpoint(py_db, thread_info, stop_reason, bp, frame, new_frame, stop, stop_on_plugin_breakpoint, "python-line"): # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1469
+ * stop = True
+ *
+ * if bp: # <<<<<<<<<<<<<<
+ * if _stop_on_breakpoint(py_db, thread_info, stop_reason, bp, frame, new_frame, stop, stop_on_plugin_breakpoint, "python-line"):
+ * return
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1455
+ * # If we reached here, it was not filtered out.
+ *
+ * if func_code_info.breakpoint_found: # <<<<<<<<<<<<<<
+ * bp = None
+ * stop = False
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1473
+ * return
+ *
+ * if func_code_info.plugin_line_breakpoint_found: # <<<<<<<<<<<<<<
+ * result = py_db.plugin.get_breakpoint(py_db, frame, "line", info)
+ * if result:
+ */
+ if (__pyx_v_func_code_info->plugin_line_breakpoint_found) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1474
+ *
+ * if func_code_info.plugin_line_breakpoint_found:
+ * result = py_db.plugin.get_breakpoint(py_db, frame, "line", info) # <<<<<<<<<<<<<<
+ * if result:
+ * stop_reason = CMD_SET_BREAK
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_plugin); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1474, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get_breakpoint); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1474, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[5] = {__pyx_t_1, __pyx_v_py_db, __pyx_v_frame, __pyx_n_s_line, ((PyObject *)__pyx_v_info)};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 4+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1474, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ }
+ __pyx_v_result = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1475
+ * if func_code_info.plugin_line_breakpoint_found:
+ * result = py_db.plugin.get_breakpoint(py_db, frame, "line", info)
+ * if result: # <<<<<<<<<<<<<<
+ * stop_reason = CMD_SET_BREAK
+ * stop = False
+ */
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1475, __pyx_L1_error)
+ if (__pyx_t_4) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1476
+ * result = py_db.plugin.get_breakpoint(py_db, frame, "line", info)
+ * if result:
+ * stop_reason = CMD_SET_BREAK # <<<<<<<<<<<<<<
+ * stop = False
+ * stop_on_plugin_breakpoint = True
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CMD_SET_BREAK); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1476, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1476, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_v_stop_reason = __pyx_t_3;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1477
+ * if result:
+ * stop_reason = CMD_SET_BREAK
+ * stop = False # <<<<<<<<<<<<<<
+ * stop_on_plugin_breakpoint = True
+ * bp, new_frame, bp_type = result
+ */
+ __pyx_v_stop = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1478
+ * stop_reason = CMD_SET_BREAK
+ * stop = False
+ * stop_on_plugin_breakpoint = True # <<<<<<<<<<<<<<
+ * bp, new_frame, bp_type = result
+ * _stop_on_breakpoint(py_db, thread_info, stop_reason, bp, frame, new_frame, stop, stop_on_plugin_breakpoint, bp_type)
+ */
+ __pyx_v_stop_on_plugin_breakpoint = 1;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1479
+ * stop = False
+ * stop_on_plugin_breakpoint = True
+ * bp, new_frame, bp_type = result # <<<<<<<<<<<<<<
+ * _stop_on_breakpoint(py_db, thread_info, stop_reason, bp, frame, new_frame, stop, stop_on_plugin_breakpoint, bp_type)
+ * return
+ */
+ if ((likely(PyTuple_CheckExact(__pyx_v_result))) || (PyList_CheckExact(__pyx_v_result))) {
+ PyObject* sequence = __pyx_v_result;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 3)) {
+ if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 1479, __pyx_L1_error)
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1);
+ __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2);
+ } else {
+ __pyx_t_2 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_5 = PyList_GET_ITEM(sequence, 1);
+ __pyx_t_1 = PyList_GET_ITEM(sequence, 2);
+ }
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_1);
+ #else
+ __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1479, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1479, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_1 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1479, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ #endif
+ } else {
+ Py_ssize_t index = -1;
+ __pyx_t_7 = PyObject_GetIter(__pyx_v_result); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1479, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7);
+ index = 0; __pyx_t_2 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_2)) goto __pyx_L9_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_2);
+ index = 1; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L9_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_5);
+ index = 2; __pyx_t_1 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_1)) goto __pyx_L9_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_1);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 3) < 0) __PYX_ERR(0, 1479, __pyx_L1_error)
+ __pyx_t_8 = NULL;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ goto __pyx_L10_unpacking_done;
+ __pyx_L9_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_8 = NULL;
+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+ __PYX_ERR(0, 1479, __pyx_L1_error)
+ __pyx_L10_unpacking_done:;
+ }
+ __Pyx_XDECREF_SET(__pyx_v_bp, __pyx_t_2);
+ __pyx_t_2 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_new_frame, __pyx_t_5);
+ __pyx_t_5 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_bp_type, __pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1480
+ * stop_on_plugin_breakpoint = True
+ * bp, new_frame, bp_type = result
+ * _stop_on_breakpoint(py_db, thread_info, stop_reason, bp, frame, new_frame, stop, stop_on_plugin_breakpoint, bp_type) # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ if (!(likely(PyString_CheckExact(__pyx_v_bp_type))||((__pyx_v_bp_type) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_bp_type))) __PYX_ERR(0, 1480, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython__stop_on_breakpoint(__pyx_v_py_db, __pyx_v_thread_info, __pyx_v_stop_reason, __pyx_v_bp, __pyx_v_frame, __pyx_v_new_frame, __pyx_v_stop, __pyx_v_stop_on_plugin_breakpoint, ((PyObject*)__pyx_v_bp_type)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1480, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1481
+ * bp, new_frame, bp_type = result
+ * _stop_on_breakpoint(py_db, thread_info, stop_reason, bp, frame, new_frame, stop, stop_on_plugin_breakpoint, bp_type)
+ * return # <<<<<<<<<<<<<<
+ *
+ * if info.pydev_state == STATE_SUSPEND:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1475
+ * if func_code_info.plugin_line_breakpoint_found:
+ * result = py_db.plugin.get_breakpoint(py_db, frame, "line", info)
+ * if result: # <<<<<<<<<<<<<<
+ * stop_reason = CMD_SET_BREAK
+ * stop = False
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1473
+ * return
+ *
+ * if func_code_info.plugin_line_breakpoint_found: # <<<<<<<<<<<<<<
+ * result = py_db.plugin.get_breakpoint(py_db, frame, "line", info)
+ * if result:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1483
+ * return
+ *
+ * if info.pydev_state == STATE_SUSPEND: # <<<<<<<<<<<<<<
+ * # Note: it's possible that it was suspended with a pause (and we'd stop here too).
+ * # print('suspend (pause)...')
+ */
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_info->pydev_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1483, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_STATE_SUSPEND); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1483, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1483, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1483, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (__pyx_t_4) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1486
+ * # Note: it's possible that it was suspended with a pause (and we'd stop here too).
+ * # print('suspend (pause)...')
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None) # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1486, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_1 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[6] = {__pyx_t_1, __pyx_v_py_db, ((PyObject *)__pyx_v_thread_info), __pyx_v_frame, __pyx_n_s_line, Py_None};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 5+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1486, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1487
+ * # print('suspend (pause)...')
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ * return # <<<<<<<<<<<<<<
+ *
+ * # Ok, did not suspend due to a breakpoint, let's see if we're stepping.
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1483
+ * return
+ *
+ * if info.pydev_state == STATE_SUSPEND: # <<<<<<<<<<<<<<
+ * # Note: it's possible that it was suspended with a pause (and we'd stop here too).
+ * # print('suspend (pause)...')
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1490
+ *
+ * # Ok, did not suspend due to a breakpoint, let's see if we're stepping.
+ * stop_frame = info.pydev_step_stop # <<<<<<<<<<<<<<
+ * if step_cmd == -1:
+ * if func_code_info.breakpoint_found or func_code_info.plugin_line_breakpoint_found or any_thread_stepping():
+ */
+ __pyx_t_2 = __pyx_v_info->pydev_step_stop;
+ __Pyx_INCREF(__pyx_t_2);
+ __pyx_v_stop_frame = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1491
+ * # Ok, did not suspend due to a breakpoint, let's see if we're stepping.
+ * stop_frame = info.pydev_step_stop
+ * if step_cmd == -1: # <<<<<<<<<<<<<<
+ * if func_code_info.breakpoint_found or func_code_info.plugin_line_breakpoint_found or any_thread_stepping():
+ * return None
+ */
+ __pyx_t_4 = (__pyx_v_step_cmd == -1L);
+ if (__pyx_t_4) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1492
+ * stop_frame = info.pydev_step_stop
+ * if step_cmd == -1:
+ * if func_code_info.breakpoint_found or func_code_info.plugin_line_breakpoint_found or any_thread_stepping(): # <<<<<<<<<<<<<<
+ * return None
+ *
+ */
+ if (!__pyx_v_func_code_info->breakpoint_found) {
+ } else {
+ __pyx_t_4 = __pyx_v_func_code_info->breakpoint_found;
+ goto __pyx_L14_bool_binop_done;
+ }
+ if (!__pyx_v_func_code_info->plugin_line_breakpoint_found) {
+ } else {
+ __pyx_t_4 = __pyx_v_func_code_info->plugin_line_breakpoint_found;
+ goto __pyx_L14_bool_binop_done;
+ }
+ __pyx_t_9 = __pyx_f_14_pydevd_bundle_13pydevd_cython_any_thread_stepping(0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1492, __pyx_L1_error)
+ __pyx_t_4 = __pyx_t_9;
+ __pyx_L14_bool_binop_done:;
+ if (__pyx_t_4) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1493
+ * if step_cmd == -1:
+ * if func_code_info.breakpoint_found or func_code_info.plugin_line_breakpoint_found or any_thread_stepping():
+ * return None # <<<<<<<<<<<<<<
+ *
+ * return monitor.DISABLE
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1492
+ * stop_frame = info.pydev_step_stop
+ * if step_cmd == -1:
+ * if func_code_info.breakpoint_found or func_code_info.plugin_line_breakpoint_found or any_thread_stepping(): # <<<<<<<<<<<<<<
+ * return None
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1495
+ * return None
+ *
+ * return monitor.DISABLE # <<<<<<<<<<<<<<
+ *
+ * if info.suspend_type != PYTHON_SUSPEND:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_monitor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1495, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_DISABLE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1495, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_5;
+ __pyx_t_5 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1491
+ * # Ok, did not suspend due to a breakpoint, let's see if we're stepping.
+ * stop_frame = info.pydev_step_stop
+ * if step_cmd == -1: # <<<<<<<<<<<<<<
+ * if func_code_info.breakpoint_found or func_code_info.plugin_line_breakpoint_found or any_thread_stepping():
+ * return None
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1497
+ * return monitor.DISABLE
+ *
+ * if info.suspend_type != PYTHON_SUSPEND: # <<<<<<<<<<<<<<
+ * # Plugin stepping
+ * if func_code_info.plugin_line_stepping:
+ */
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_info->suspend_type); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1497, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PYTHON_SUSPEND); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1497, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1497, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1497, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_4) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1499
+ * if info.suspend_type != PYTHON_SUSPEND:
+ * # Plugin stepping
+ * if func_code_info.plugin_line_stepping: # <<<<<<<<<<<<<<
+ * _plugin_stepping(py_db, step_cmd, "line", frame, thread_info)
+ * return
+ */
+ if (__pyx_v_func_code_info->plugin_line_stepping) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1500
+ * # Plugin stepping
+ * if func_code_info.plugin_line_stepping:
+ * _plugin_stepping(py_db, step_cmd, "line", frame, thread_info) # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython__plugin_stepping(__pyx_v_py_db, __pyx_v_step_cmd, __pyx_n_s_line, __pyx_v_frame, __pyx_v_thread_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1500, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1499
+ * if info.suspend_type != PYTHON_SUSPEND:
+ * # Plugin stepping
+ * if func_code_info.plugin_line_stepping: # <<<<<<<<<<<<<<
+ * _plugin_stepping(py_db, step_cmd, "line", frame, thread_info)
+ * return
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1501
+ * if func_code_info.plugin_line_stepping:
+ * _plugin_stepping(py_db, step_cmd, "line", frame, thread_info)
+ * return # <<<<<<<<<<<<<<
+ *
+ * # Python stepping now
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1497
+ * return monitor.DISABLE
+ *
+ * if info.suspend_type != PYTHON_SUSPEND: # <<<<<<<<<<<<<<
+ * # Plugin stepping
+ * if func_code_info.plugin_line_stepping:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1504
+ *
+ * # Python stepping now
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE): # <<<<<<<<<<<<<<
+ * force_check_project_scope = step_cmd == CMD_STEP_INTO_MY_CODE
+ * if not info.pydev_use_scoped_step_frame:
+ */
+ __pyx_t_3 = __pyx_v_step_cmd;
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1504, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CMD_STEP_INTO); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1504, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1504, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1504, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (!__pyx_t_9) {
+ } else {
+ __pyx_t_4 = __pyx_t_9;
+ goto __pyx_L20_bool_binop_done;
+ }
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1504, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CMD_STEP_INTO_MY_CODE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1504, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1504, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1504, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (!__pyx_t_9) {
+ } else {
+ __pyx_t_4 = __pyx_t_9;
+ goto __pyx_L20_bool_binop_done;
+ }
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1504, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CMD_STEP_INTO_COROUTINE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1504, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1504, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1504, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_4 = __pyx_t_9;
+ __pyx_L20_bool_binop_done:;
+ __pyx_t_9 = __pyx_t_4;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1505
+ * # Python stepping now
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE):
+ * force_check_project_scope = step_cmd == CMD_STEP_INTO_MY_CODE # <<<<<<<<<<<<<<
+ * if not info.pydev_use_scoped_step_frame:
+ * if func_code_info.always_filtered_out or (force_check_project_scope and func_code_info.filtered_out_force_checked):
+ */
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1505, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CMD_STEP_INTO_MY_CODE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1505, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1505, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1505, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v_force_check_project_scope = __pyx_t_9;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1506
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE):
+ * force_check_project_scope = step_cmd == CMD_STEP_INTO_MY_CODE
+ * if not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
+ * if func_code_info.always_filtered_out or (force_check_project_scope and func_code_info.filtered_out_force_checked):
+ * return
+ */
+ __pyx_t_9 = (!__pyx_v_info->pydev_use_scoped_step_frame);
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1507
+ * force_check_project_scope = step_cmd == CMD_STEP_INTO_MY_CODE
+ * if not info.pydev_use_scoped_step_frame:
+ * if func_code_info.always_filtered_out or (force_check_project_scope and func_code_info.filtered_out_force_checked): # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ if (!__pyx_v_func_code_info->always_filtered_out) {
+ } else {
+ __pyx_t_9 = __pyx_v_func_code_info->always_filtered_out;
+ goto __pyx_L25_bool_binop_done;
+ }
+ if (__pyx_v_force_check_project_scope) {
+ } else {
+ __pyx_t_9 = __pyx_v_force_check_project_scope;
+ goto __pyx_L25_bool_binop_done;
+ }
+ __pyx_t_9 = __pyx_v_func_code_info->filtered_out_force_checked;
+ __pyx_L25_bool_binop_done:;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1508
+ * if not info.pydev_use_scoped_step_frame:
+ * if func_code_info.always_filtered_out or (force_check_project_scope and func_code_info.filtered_out_force_checked):
+ * return # <<<<<<<<<<<<<<
+ *
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1507
+ * force_check_project_scope = step_cmd == CMD_STEP_INTO_MY_CODE
+ * if not info.pydev_use_scoped_step_frame:
+ * if func_code_info.always_filtered_out or (force_check_project_scope and func_code_info.filtered_out_force_checked): # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1510
+ * return
+ *
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) # <<<<<<<<<<<<<<
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ * return
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1510, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1510, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1510, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_INCREF(__pyx_v_thread_info->thread);
+ __Pyx_GIVEREF(__pyx_v_thread_info->thread);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_thread_info->thread)) __PYX_ERR(0, 1510, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_2);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2)) __PYX_ERR(0, 1510, __pyx_L1_error);
+ __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1510, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_info->pydev_original_step_cmd); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1510, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_original_step_cmd, __pyx_t_7) < 0) __PYX_ERR(0, 1510, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1510, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1511
+ *
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None) # <<<<<<<<<<<<<<
+ * return
+ * else:
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1511, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_5 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[6] = {__pyx_t_5, __pyx_v_py_db, ((PyObject *)__pyx_v_thread_info), __pyx_v_frame, __pyx_n_s_line, Py_None};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 5+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1511, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1512
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ * return # <<<<<<<<<<<<<<
+ * else:
+ * # Make sure we check the filtering inside ipython calls too...
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1506
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE):
+ * force_check_project_scope = step_cmd == CMD_STEP_INTO_MY_CODE
+ * if not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
+ * if func_code_info.always_filtered_out or (force_check_project_scope and func_code_info.filtered_out_force_checked):
+ * return
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1515
+ * else:
+ * # Make sure we check the filtering inside ipython calls too...
+ * if func_code_info.always_filtered_out or (force_check_project_scope and func_code_info.filtered_out_force_checked): # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ /*else*/ {
+ if (!__pyx_v_func_code_info->always_filtered_out) {
+ } else {
+ __pyx_t_9 = __pyx_v_func_code_info->always_filtered_out;
+ goto __pyx_L29_bool_binop_done;
+ }
+ if (__pyx_v_force_check_project_scope) {
+ } else {
+ __pyx_t_9 = __pyx_v_force_check_project_scope;
+ goto __pyx_L29_bool_binop_done;
+ }
+ __pyx_t_9 = __pyx_v_func_code_info->filtered_out_force_checked;
+ __pyx_L29_bool_binop_done:;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1516
+ * # Make sure we check the filtering inside ipython calls too...
+ * if func_code_info.always_filtered_out or (force_check_project_scope and func_code_info.filtered_out_force_checked):
+ * return # <<<<<<<<<<<<<<
+ *
+ * stop = False
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1515
+ * else:
+ * # Make sure we check the filtering inside ipython calls too...
+ * if func_code_info.always_filtered_out or (force_check_project_scope and func_code_info.filtered_out_force_checked): # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1518
+ * return
+ *
+ * stop = False # <<<<<<<<<<<<<<
+ * # We can only stop inside the ipython call.
+ * filename = frame.f_code.co_filename
+ */
+ __pyx_v_stop = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1520
+ * stop = False
+ * # We can only stop inside the ipython call.
+ * filename = frame.f_code.co_filename # <<<<<<<<<<<<<<
+ * if filename.endswith(".pyc"):
+ * filename = filename[:-1]
+ */
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1520, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1520, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_v_filename = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1521
+ * # We can only stop inside the ipython call.
+ * filename = frame.f_code.co_filename
+ * if filename.endswith(".pyc"): # <<<<<<<<<<<<<<
+ * filename = filename[:-1]
+ *
+ */
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_filename, __pyx_n_s_endswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1521, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_5 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_kp_s_pyc};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1521, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1521, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1522
+ * filename = frame.f_code.co_filename
+ * if filename.endswith(".pyc"):
+ * filename = filename[:-1] # <<<<<<<<<<<<<<
+ *
+ * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]):
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_filename, 0, -1L, NULL, NULL, &__pyx_slice__16, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1522, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_2);
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1521
+ * # We can only stop inside the ipython call.
+ * filename = frame.f_code.co_filename
+ * if filename.endswith(".pyc"): # <<<<<<<<<<<<<<
+ * filename = filename[:-1]
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1524
+ * filename = filename[:-1]
+ *
+ * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]): # <<<<<<<<<<<<<<
+ * f = frame.f_back
+ * while f is not None:
+ */
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_filename, __pyx_n_s_endswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1524, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1524, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1524, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_1};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1524, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1524, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_4 = (!__pyx_t_9);
+ if (__pyx_t_4) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1525
+ *
+ * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]):
+ * f = frame.f_back # <<<<<<<<<<<<<<
+ * while f is not None:
+ * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1525, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_v_f = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1526
+ * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]):
+ * f = frame.f_back
+ * while f is not None: # <<<<<<<<<<<<<<
+ * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
+ * f2 = f.f_back
+ */
+ while (1) {
+ __pyx_t_4 = (__pyx_v_f != Py_None);
+ if (!__pyx_t_4) break;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1527
+ * f = frame.f_back
+ * while f is not None:
+ * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: # <<<<<<<<<<<<<<
+ * f2 = f.f_back
+ * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1527, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_co_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1527, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1527, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1527, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = PyObject_RichCompare(__pyx_t_7, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1527, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1527, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (__pyx_t_4) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1528
+ * while f is not None:
+ * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
+ * f2 = f.f_back # <<<<<<<<<<<<<<
+ * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
+ * pydev_log.debug("Stop inside ipython call")
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1528, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_XDECREF_SET(__pyx_v_f2, __pyx_t_2);
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1529
+ * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
+ * f2 = f.f_back
+ * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: # <<<<<<<<<<<<<<
+ * pydev_log.debug("Stop inside ipython call")
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ */
+ __pyx_t_9 = (__pyx_v_f2 != Py_None);
+ if (__pyx_t_9) {
+ } else {
+ __pyx_t_4 = __pyx_t_9;
+ goto __pyx_L38_bool_binop_done;
+ }
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f2, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1529, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_co_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1529, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1529, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_2, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1529, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1529, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1529, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_4 = __pyx_t_9;
+ __pyx_L38_bool_binop_done:;
+ if (__pyx_t_4) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1530
+ * f2 = f.f_back
+ * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
+ * pydev_log.debug("Stop inside ipython call") # <<<<<<<<<<<<<<
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ * thread_info.additional_info.trace_suspend_type = "sys_monitor"
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1530, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_debug); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1530, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_kp_s_Stop_inside_ipython_call};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1530, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1531
+ * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
+ * pydev_log.debug("Stop inside ipython call")
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) # <<<<<<<<<<<<<<
+ * thread_info.additional_info.trace_suspend_type = "sys_monitor"
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1531, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1531, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1531, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_INCREF(__pyx_v_thread_info->thread);
+ __Pyx_GIVEREF(__pyx_v_thread_info->thread);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_thread_info->thread)) __PYX_ERR(0, 1531, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_1)) __PYX_ERR(0, 1531, __pyx_L1_error);
+ __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1531, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_info->pydev_original_step_cmd); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1531, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_original_step_cmd, __pyx_t_5) < 0) __PYX_ERR(0, 1531, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1531, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1532
+ * pydev_log.debug("Stop inside ipython call")
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ * thread_info.additional_info.trace_suspend_type = "sys_monitor" # <<<<<<<<<<<<<<
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ * break
+ */
+ __Pyx_INCREF(__pyx_n_s_sys_monitor);
+ __Pyx_GIVEREF(__pyx_n_s_sys_monitor);
+ __Pyx_GOTREF(__pyx_v_thread_info->additional_info->trace_suspend_type);
+ __Pyx_DECREF(__pyx_v_thread_info->additional_info->trace_suspend_type);
+ __pyx_v_thread_info->additional_info->trace_suspend_type = __pyx_n_s_sys_monitor;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1533
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ * thread_info.additional_info.trace_suspend_type = "sys_monitor"
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None) # <<<<<<<<<<<<<<
+ * break
+ * f = f.f_back
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1533, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_7 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[6] = {__pyx_t_7, __pyx_v_py_db, ((PyObject *)__pyx_v_thread_info), __pyx_v_frame, __pyx_n_s_line, Py_None};
+ __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 5+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1533, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1534
+ * thread_info.additional_info.trace_suspend_type = "sys_monitor"
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ * break # <<<<<<<<<<<<<<
+ * f = f.f_back
+ *
+ */
+ goto __pyx_L35_break;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1529
+ * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
+ * f2 = f.f_back
+ * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: # <<<<<<<<<<<<<<
+ * pydev_log.debug("Stop inside ipython call")
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1527
+ * f = frame.f_back
+ * while f is not None:
+ * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: # <<<<<<<<<<<<<<
+ * f2 = f.f_back
+ * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1535
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ * break
+ * f = f.f_back # <<<<<<<<<<<<<<
+ *
+ * del f
+ */
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1535, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_5);
+ __pyx_t_5 = 0;
+ }
+ __pyx_L35_break:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1537
+ * f = f.f_back
+ *
+ * del f # <<<<<<<<<<<<<<
+ *
+ * # In scoped mode if step in didn't work in this context it won't work
+ */
+ __Pyx_DECREF(__pyx_v_f); __pyx_v_f = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1524
+ * filename = filename[:-1]
+ *
+ * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]): # <<<<<<<<<<<<<<
+ * f = frame.f_back
+ * while f is not None:
+ */
+ }
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1541
+ * # In scoped mode if step in didn't work in this context it won't work
+ * # afterwards anyways.
+ * return # <<<<<<<<<<<<<<
+ *
+ * elif step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1504
+ *
+ * # Python stepping now
+ * if step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE): # <<<<<<<<<<<<<<
+ * force_check_project_scope = step_cmd == CMD_STEP_INTO_MY_CODE
+ * if not info.pydev_use_scoped_step_frame:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1543
+ * return
+ *
+ * elif step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE): # <<<<<<<<<<<<<<
+ * # Note: when dealing with a step over my code it's the same as a step over (the
+ * # difference is that when we return from a frame in one we go to regular step
+ */
+ __pyx_t_3 = __pyx_v_step_cmd;
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1543, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_CMD_STEP_OVER); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1543, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_7 = PyObject_RichCompare(__pyx_t_5, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1543, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1543, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (!__pyx_t_9) {
+ } else {
+ __pyx_t_4 = __pyx_t_9;
+ goto __pyx_L40_bool_binop_done;
+ }
+ __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1543, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_CMD_STEP_OVER_MY_CODE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1543, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_7, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1543, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1543, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_4 = __pyx_t_9;
+ __pyx_L40_bool_binop_done:;
+ __pyx_t_9 = __pyx_t_4;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1547
+ * # difference is that when we return from a frame in one we go to regular step
+ * # into and in the other we go to a step into my code).
+ * if _is_same_frame(info, stop_frame, frame): # <<<<<<<<<<<<<<
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ */
+ __pyx_t_5 = __pyx_f_29_pydevd_sys_monitoring_cython__is_same_frame(__pyx_v_info, __pyx_v_stop_frame, __pyx_v_frame); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1547, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1547, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1548
+ * # into and in the other we go to a step into my code).
+ * if _is_same_frame(info, stop_frame, frame):
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) # <<<<<<<<<<<<<<
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ * return
+ */
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1548, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1548, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1548, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_INCREF(__pyx_v_thread_info->thread);
+ __Pyx_GIVEREF(__pyx_v_thread_info->thread);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_thread_info->thread)) __PYX_ERR(0, 1548, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_1)) __PYX_ERR(0, 1548, __pyx_L1_error);
+ __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1548, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_info->pydev_original_step_cmd); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1548, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_original_step_cmd, __pyx_t_2) < 0) __PYX_ERR(0, 1548, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1548, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1549
+ * if _is_same_frame(info, stop_frame, frame):
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None) # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1549, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_7 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[6] = {__pyx_t_7, __pyx_v_py_db, ((PyObject *)__pyx_v_thread_info), __pyx_v_frame, __pyx_n_s_line, Py_None};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 5+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1549, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1550
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ * return # <<<<<<<<<<<<<<
+ *
+ * elif step_cmd == CMD_SMART_STEP_INTO:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1547
+ * # difference is that when we return from a frame in one we go to regular step
+ * # into and in the other we go to a step into my code).
+ * if _is_same_frame(info, stop_frame, frame): # <<<<<<<<<<<<<<
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1543
+ * return
+ *
+ * elif step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE): # <<<<<<<<<<<<<<
+ * # Note: when dealing with a step over my code it's the same as a step over (the
+ * # difference is that when we return from a frame in one we go to regular step
+ */
+ goto __pyx_L19;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1552
+ * return
+ *
+ * elif step_cmd == CMD_SMART_STEP_INTO: # <<<<<<<<<<<<<<
+ * stop = False
+ * back = frame.f_back
+ */
+ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1552, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_CMD_SMART_STEP_INTO); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1552, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_7 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1552, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1552, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1553
+ *
+ * elif step_cmd == CMD_SMART_STEP_INTO:
+ * stop = False # <<<<<<<<<<<<<<
+ * back = frame.f_back
+ * if _is_same_frame(info, stop_frame, back):
+ */
+ __pyx_v_stop = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1554
+ * elif step_cmd == CMD_SMART_STEP_INTO:
+ * stop = False
+ * back = frame.f_back # <<<<<<<<<<<<<<
+ * if _is_same_frame(info, stop_frame, back):
+ * if info.pydev_smart_child_offset != -1:
+ */
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1554, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_v_back = __pyx_t_7;
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1555
+ * stop = False
+ * back = frame.f_back
+ * if _is_same_frame(info, stop_frame, back): # <<<<<<<<<<<<<<
+ * if info.pydev_smart_child_offset != -1:
+ * # i.e.: in this case, we're not interested in the pause in the parent, rather
+ */
+ __pyx_t_7 = __pyx_f_29_pydevd_sys_monitoring_cython__is_same_frame(__pyx_v_info, __pyx_v_stop_frame, __pyx_v_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1555, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1555, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1556
+ * back = frame.f_back
+ * if _is_same_frame(info, stop_frame, back):
+ * if info.pydev_smart_child_offset != -1: # <<<<<<<<<<<<<<
+ * # i.e.: in this case, we're not interested in the pause in the parent, rather
+ * # we're interested in the pause in the child (when the parent is at the proper place).
+ */
+ __pyx_t_9 = (__pyx_v_info->pydev_smart_child_offset != -1L);
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1559
+ * # i.e.: in this case, we're not interested in the pause in the parent, rather
+ * # we're interested in the pause in the child (when the parent is at the proper place).
+ * stop = False # <<<<<<<<<<<<<<
+ *
+ * else:
+ */
+ __pyx_v_stop = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1556
+ * back = frame.f_back
+ * if _is_same_frame(info, stop_frame, back):
+ * if info.pydev_smart_child_offset != -1: # <<<<<<<<<<<<<<
+ * # i.e.: in this case, we're not interested in the pause in the parent, rather
+ * # we're interested in the pause in the child (when the parent is at the proper place).
+ */
+ goto __pyx_L44;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1562
+ *
+ * else:
+ * pydev_smart_parent_offset = info.pydev_smart_parent_offset # <<<<<<<<<<<<<<
+ *
+ * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+ */
+ /*else*/ {
+ __pyx_t_3 = __pyx_v_info->pydev_smart_parent_offset;
+ __pyx_v_pydev_smart_parent_offset = __pyx_t_3;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1564
+ * pydev_smart_parent_offset = info.pydev_smart_parent_offset
+ *
+ * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants # <<<<<<<<<<<<<<
+ * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants:
+ * # Preferred mode (when the smart step into variants are available
+ */
+ __pyx_t_7 = __pyx_v_info->pydev_smart_step_into_variants;
+ __Pyx_INCREF(__pyx_t_7);
+ __pyx_v_pydev_smart_step_into_variants = ((PyObject*)__pyx_t_7);
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1565
+ *
+ * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+ * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants: # <<<<<<<<<<<<<<
+ * # Preferred mode (when the smart step into variants are available
+ * # and the offset is set).
+ */
+ __pyx_t_4 = (__pyx_v_pydev_smart_parent_offset >= 0);
+ if (__pyx_t_4) {
+ } else {
+ __pyx_t_9 = __pyx_t_4;
+ goto __pyx_L46_bool_binop_done;
+ }
+ __pyx_t_4 = (__pyx_v_pydev_smart_step_into_variants != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_pydev_smart_step_into_variants) != 0);
+ __pyx_t_9 = __pyx_t_4;
+ __pyx_L46_bool_binop_done:;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1568
+ * # Preferred mode (when the smart step into variants are available
+ * # and the offset is set).
+ * stop = get_smart_step_into_variant_from_frame_offset( # <<<<<<<<<<<<<<
+ * back.f_lasti, pydev_smart_step_into_variants
+ * ) is get_smart_step_into_variant_from_frame_offset(pydev_smart_parent_offset, pydev_smart_step_into_variants)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1568, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1569
+ * # and the offset is set).
+ * stop = get_smart_step_into_variant_from_frame_offset(
+ * back.f_lasti, pydev_smart_step_into_variants # <<<<<<<<<<<<<<
+ * ) is get_smart_step_into_variant_from_frame_offset(pydev_smart_parent_offset, pydev_smart_step_into_variants)
+ *
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_back, __pyx_n_s_f_lasti); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1569, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_5 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_v_pydev_smart_step_into_variants};
+ __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1568, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1570
+ * stop = get_smart_step_into_variant_from_frame_offset(
+ * back.f_lasti, pydev_smart_step_into_variants
+ * ) is get_smart_step_into_variant_from_frame_offset(pydev_smart_parent_offset, pydev_smart_step_into_variants) # <<<<<<<<<<<<<<
+ *
+ * else:
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1570, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_pydev_smart_parent_offset); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1570, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_10 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_10);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_10, __pyx_t_5, __pyx_v_pydev_smart_step_into_variants};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1570, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_t_9 = (__pyx_t_7 == __pyx_t_1);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v_stop = __pyx_t_9;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1565
+ *
+ * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+ * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants: # <<<<<<<<<<<<<<
+ * # Preferred mode (when the smart step into variants are available
+ * # and the offset is set).
+ */
+ goto __pyx_L45;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1574
+ * else:
+ * # Only the name/line is available, so, check that.
+ * curr_func_name = frame.f_code.co_name # <<<<<<<<<<<<<<
+ *
+ * # global context is set with an empty name
+ */
+ /*else*/ {
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1574, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_co_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1574, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v_curr_func_name = __pyx_t_7;
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1577
+ *
+ * # global context is set with an empty name
+ * if curr_func_name in ("?", "") or curr_func_name is None: # <<<<<<<<<<<<<<
+ * curr_func_name = ""
+ * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line:
+ */
+ __Pyx_INCREF(__pyx_v_curr_func_name);
+ __pyx_t_7 = __pyx_v_curr_func_name;
+ __pyx_t_11 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_kp_s__17, Py_EQ)); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 1577, __pyx_L1_error)
+ if (!__pyx_t_11) {
+ } else {
+ __pyx_t_4 = __pyx_t_11;
+ goto __pyx_L51_bool_binop_done;
+ }
+ __pyx_t_11 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_kp_s_module, Py_EQ)); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 1577, __pyx_L1_error)
+ __pyx_t_4 = __pyx_t_11;
+ __pyx_L51_bool_binop_done:;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_11 = __pyx_t_4;
+ if (!__pyx_t_11) {
+ } else {
+ __pyx_t_9 = __pyx_t_11;
+ goto __pyx_L49_bool_binop_done;
+ }
+ __pyx_t_11 = (__pyx_v_curr_func_name == Py_None);
+ __pyx_t_9 = __pyx_t_11;
+ __pyx_L49_bool_binop_done:;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1578
+ * # global context is set with an empty name
+ * if curr_func_name in ("?", "") or curr_func_name is None:
+ * curr_func_name = "" # <<<<<<<<<<<<<<
+ * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line:
+ * stop = True
+ */
+ __Pyx_INCREF(__pyx_kp_s__14);
+ __Pyx_DECREF_SET(__pyx_v_curr_func_name, __pyx_kp_s__14);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1577
+ *
+ * # global context is set with an empty name
+ * if curr_func_name in ("?", "") or curr_func_name is None: # <<<<<<<<<<<<<<
+ * curr_func_name = ""
+ * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1579
+ * if curr_func_name in ("?", "") or curr_func_name is None:
+ * curr_func_name = ""
+ * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line: # <<<<<<<<<<<<<<
+ * stop = True
+ *
+ */
+ __pyx_t_11 = (__Pyx_PyString_Equals(__pyx_v_curr_func_name, __pyx_v_info->pydev_func_name, Py_EQ)); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 1579, __pyx_L1_error)
+ if (__pyx_t_11) {
+ } else {
+ __pyx_t_9 = __pyx_t_11;
+ goto __pyx_L54_bool_binop_done;
+ }
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_stop_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1579, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_info->pydev_next_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1579, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = PyObject_RichCompare(__pyx_t_7, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1579, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 1579, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_9 = __pyx_t_11;
+ __pyx_L54_bool_binop_done:;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1580
+ * curr_func_name = ""
+ * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line:
+ * stop = True # <<<<<<<<<<<<<<
+ *
+ * if not stop:
+ */
+ __pyx_v_stop = 1;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1579
+ * if curr_func_name in ("?", "") or curr_func_name is None:
+ * curr_func_name = ""
+ * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line: # <<<<<<<<<<<<<<
+ * stop = True
+ *
+ */
+ }
+ }
+ __pyx_L45:;
+ }
+ __pyx_L44:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1582
+ * stop = True
+ *
+ * if not stop: # <<<<<<<<<<<<<<
+ * # In smart step into, if we didn't hit it in this frame once, that'll
+ * # not be the case next time either, so, disable tracing for this frame.
+ */
+ __pyx_t_9 = (!__pyx_v_stop);
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1585
+ * # In smart step into, if we didn't hit it in this frame once, that'll
+ * # not be the case next time either, so, disable tracing for this frame.
+ * return # <<<<<<<<<<<<<<
+ *
+ * elif back is not None and _is_same_frame(info, stop_frame, back.f_back):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1582
+ * stop = True
+ *
+ * if not stop: # <<<<<<<<<<<<<<
+ * # In smart step into, if we didn't hit it in this frame once, that'll
+ * # not be the case next time either, so, disable tracing for this frame.
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1555
+ * stop = False
+ * back = frame.f_back
+ * if _is_same_frame(info, stop_frame, back): # <<<<<<<<<<<<<<
+ * if info.pydev_smart_child_offset != -1:
+ * # i.e.: in this case, we're not interested in the pause in the parent, rather
+ */
+ goto __pyx_L43;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1587
+ * return
+ *
+ * elif back is not None and _is_same_frame(info, stop_frame, back.f_back): # <<<<<<<<<<<<<<
+ * # Ok, we have to track 2 stops at this point, the parent and the child offset.
+ * # This happens when handling a step into which targets a function inside a list comprehension
+ */
+ __pyx_t_11 = (__pyx_v_back != Py_None);
+ if (__pyx_t_11) {
+ } else {
+ __pyx_t_9 = __pyx_t_11;
+ goto __pyx_L57_bool_binop_done;
+ }
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_back, __pyx_n_s_f_back); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1587, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython__is_same_frame(__pyx_v_info, __pyx_v_stop_frame, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1587, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 1587, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_9 = __pyx_t_11;
+ __pyx_L57_bool_binop_done:;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1591
+ * # This happens when handling a step into which targets a function inside a list comprehension
+ * # or generator (in which case an intermediary frame is created due to an internal function call).
+ * pydev_smart_parent_offset = info.pydev_smart_parent_offset # <<<<<<<<<<<<<<
+ * pydev_smart_child_offset = info.pydev_smart_child_offset
+ * # print('matched back frame', pydev_smart_parent_offset, pydev_smart_child_offset)
+ */
+ __pyx_t_3 = __pyx_v_info->pydev_smart_parent_offset;
+ __pyx_v_pydev_smart_parent_offset = __pyx_t_3;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1592
+ * # or generator (in which case an intermediary frame is created due to an internal function call).
+ * pydev_smart_parent_offset = info.pydev_smart_parent_offset
+ * pydev_smart_child_offset = info.pydev_smart_child_offset # <<<<<<<<<<<<<<
+ * # print('matched back frame', pydev_smart_parent_offset, pydev_smart_child_offset)
+ * # print('parent f_lasti', back.f_back.f_lasti)
+ */
+ __pyx_t_3 = __pyx_v_info->pydev_smart_child_offset;
+ __pyx_v_pydev_smart_child_offset = __pyx_t_3;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1596
+ * # print('parent f_lasti', back.f_back.f_lasti)
+ * # print('child f_lasti', back.f_lasti)
+ * stop = False # <<<<<<<<<<<<<<
+ * if pydev_smart_child_offset >= 0 and pydev_smart_child_offset >= 0:
+ * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+ */
+ __pyx_v_stop = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1597
+ * # print('child f_lasti', back.f_lasti)
+ * stop = False
+ * if pydev_smart_child_offset >= 0 and pydev_smart_child_offset >= 0: # <<<<<<<<<<<<<<
+ * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+ *
+ */
+ __pyx_t_11 = (__pyx_v_pydev_smart_child_offset >= 0);
+ if (__pyx_t_11) {
+ } else {
+ __pyx_t_9 = __pyx_t_11;
+ goto __pyx_L60_bool_binop_done;
+ }
+ __pyx_t_11 = (__pyx_v_pydev_smart_child_offset >= 0);
+ __pyx_t_9 = __pyx_t_11;
+ __pyx_L60_bool_binop_done:;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1598
+ * stop = False
+ * if pydev_smart_child_offset >= 0 and pydev_smart_child_offset >= 0:
+ * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants # <<<<<<<<<<<<<<
+ *
+ * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants:
+ */
+ __pyx_t_1 = __pyx_v_info->pydev_smart_step_into_variants;
+ __Pyx_INCREF(__pyx_t_1);
+ __pyx_v_pydev_smart_step_into_variants = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1600
+ * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+ *
+ * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants: # <<<<<<<<<<<<<<
+ * # Note that we don't really check the parent offset, only the offset of
+ * # the child (because this is a generator, the parent may have moved forward
+ */
+ __pyx_t_11 = (__pyx_v_pydev_smart_parent_offset >= 0);
+ if (__pyx_t_11) {
+ } else {
+ __pyx_t_9 = __pyx_t_11;
+ goto __pyx_L63_bool_binop_done;
+ }
+ __pyx_t_11 = (__pyx_v_pydev_smart_step_into_variants != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_pydev_smart_step_into_variants) != 0);
+ __pyx_t_9 = __pyx_t_11;
+ __pyx_L63_bool_binop_done:;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1605
+ * # already -- and that's ok, so, we just check that the parent frame
+ * # matches in this case).
+ * smart_step_into_variant = get_smart_step_into_variant_from_frame_offset( # <<<<<<<<<<<<<<
+ * pydev_smart_parent_offset, pydev_smart_step_into_variants
+ * )
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1605, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1606
+ * # matches in this case).
+ * smart_step_into_variant = get_smart_step_into_variant_from_frame_offset(
+ * pydev_smart_parent_offset, pydev_smart_step_into_variants # <<<<<<<<<<<<<<
+ * )
+ * # print('matched parent offset', pydev_smart_parent_offset)
+ */
+ __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_pydev_smart_parent_offset); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1606, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_5 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_7, __pyx_v_pydev_smart_step_into_variants};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1605, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_v_smart_step_into_variant = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1610
+ * # print('matched parent offset', pydev_smart_parent_offset)
+ * # Ok, now, check the child variant
+ * children_variants = smart_step_into_variant.children_variants # <<<<<<<<<<<<<<
+ * stop = children_variants and (
+ * get_smart_step_into_variant_from_frame_offset(back.f_lasti, children_variants)
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_smart_step_into_variant, __pyx_n_s_children_variants); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1610, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_children_variants = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1611
+ * # Ok, now, check the child variant
+ * children_variants = smart_step_into_variant.children_variants
+ * stop = children_variants and ( # <<<<<<<<<<<<<<
+ * get_smart_step_into_variant_from_frame_offset(back.f_lasti, children_variants)
+ * is get_smart_step_into_variant_from_frame_offset(pydev_smart_child_offset, children_variants)
+ */
+ __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_children_variants); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 1611, __pyx_L1_error)
+ if (__pyx_t_11) {
+ } else {
+ __pyx_t_9 = __pyx_t_11;
+ goto __pyx_L65_bool_binop_done;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1612
+ * children_variants = smart_step_into_variant.children_variants
+ * stop = children_variants and (
+ * get_smart_step_into_variant_from_frame_offset(back.f_lasti, children_variants) # <<<<<<<<<<<<<<
+ * is get_smart_step_into_variant_from_frame_offset(pydev_smart_child_offset, children_variants)
+ * )
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1612, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_back, __pyx_n_s_f_lasti); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1612, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_5 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_7, __pyx_v_children_variants};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1612, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1613
+ * stop = children_variants and (
+ * get_smart_step_into_variant_from_frame_offset(back.f_lasti, children_variants)
+ * is get_smart_step_into_variant_from_frame_offset(pydev_smart_child_offset, children_variants) # <<<<<<<<<<<<<<
+ * )
+ * # print('stop at child', stop)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1613, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_pydev_smart_child_offset); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1613, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_10 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_10);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_10, __pyx_t_5, __pyx_v_children_variants};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1613, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __pyx_t_11 = (__pyx_t_1 == __pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_9 = __pyx_t_11;
+ __pyx_L65_bool_binop_done:;
+ __pyx_v_stop = __pyx_t_9;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1600
+ * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+ *
+ * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants: # <<<<<<<<<<<<<<
+ * # Note that we don't really check the parent offset, only the offset of
+ * # the child (because this is a generator, the parent may have moved forward
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1597
+ * # print('child f_lasti', back.f_lasti)
+ * stop = False
+ * if pydev_smart_child_offset >= 0 and pydev_smart_child_offset >= 0: # <<<<<<<<<<<<<<
+ * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1617
+ * # print('stop at child', stop)
+ *
+ * if not stop: # <<<<<<<<<<<<<<
+ * # In smart step into, if we didn't hit it in this frame once, that'll
+ * # not be the case next time either, so, disable tracing for this frame.
+ */
+ __pyx_t_9 = (!__pyx_v_stop);
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1620
+ * # In smart step into, if we didn't hit it in this frame once, that'll
+ * # not be the case next time either, so, disable tracing for this frame.
+ * return # <<<<<<<<<<<<<<
+ *
+ * if stop:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1617
+ * # print('stop at child', stop)
+ *
+ * if not stop: # <<<<<<<<<<<<<<
+ * # In smart step into, if we didn't hit it in this frame once, that'll
+ * # not be the case next time either, so, disable tracing for this frame.
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1587
+ * return
+ *
+ * elif back is not None and _is_same_frame(info, stop_frame, back.f_back): # <<<<<<<<<<<<<<
+ * # Ok, we have to track 2 stops at this point, the parent and the child offset.
+ * # This happens when handling a step into which targets a function inside a list comprehension
+ */
+ }
+ __pyx_L43:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1622
+ * return
+ *
+ * if stop: # <<<<<<<<<<<<<<
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ */
+ if (__pyx_v_stop) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1623
+ *
+ * if stop:
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) # <<<<<<<<<<<<<<
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ * return
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1623, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1623, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1623, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_INCREF(__pyx_v_thread_info->thread);
+ __Pyx_GIVEREF(__pyx_v_thread_info->thread);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_thread_info->thread)) __PYX_ERR(0, 1623, __pyx_L1_error);
+ __Pyx_GIVEREF(__pyx_t_1);
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_1)) __PYX_ERR(0, 1623, __pyx_L1_error);
+ __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1623, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_info->pydev_original_step_cmd); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1623, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_original_step_cmd, __pyx_t_5) < 0) __PYX_ERR(0, 1623, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1623, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1624
+ * if stop:
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None) # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1624, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_7 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[6] = {__pyx_t_7, __pyx_v_py_db, ((PyObject *)__pyx_v_thread_info), __pyx_v_frame, __pyx_n_s_line, Py_None};
+ __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 5+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1624, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1625
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ * return # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1622
+ * return
+ *
+ * if stop: # <<<<<<<<<<<<<<
+ * py_db.set_suspend(thread_info.thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd)
+ * _do_wait_suspend(py_db, thread_info, frame, "line", None)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1552
+ * return
+ *
+ * elif step_cmd == CMD_SMART_STEP_INTO: # <<<<<<<<<<<<<<
+ * stop = False
+ * back = frame.f_back
+ */
+ }
+ __pyx_L19:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1433
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _internal_line_event(FuncCodeInfo func_code_info, frame, int line): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * cdef PyDBAdditionalThreadInfo info
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_10);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._internal_line_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF((PyObject *)__pyx_v_thread_info);
+ __Pyx_XDECREF((PyObject *)__pyx_v_info);
+ __Pyx_XDECREF(__pyx_v_py_db);
+ __Pyx_XDECREF(__pyx_v_bp);
+ __Pyx_XDECREF(__pyx_v_stop_info);
+ __Pyx_XDECREF(__pyx_v_bp_type);
+ __Pyx_XDECREF(__pyx_v_new_frame);
+ __Pyx_XDECREF(__pyx_v_result);
+ __Pyx_XDECREF(__pyx_v_stop_frame);
+ __Pyx_XDECREF(__pyx_v_filename);
+ __Pyx_XDECREF(__pyx_v_f);
+ __Pyx_XDECREF(__pyx_v_f2);
+ __Pyx_XDECREF(__pyx_v_back);
+ __Pyx_XDECREF(__pyx_v_pydev_smart_step_into_variants);
+ __Pyx_XDECREF(__pyx_v_curr_func_name);
+ __Pyx_XDECREF(__pyx_v_smart_step_into_variant);
+ __Pyx_XDECREF(__pyx_v_children_variants);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":1630
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _start_method_event(code, instruction_offset): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * cdef FuncCodeInfo func_code_info
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__start_method_event(PyObject *__pyx_v_code, CYTHON_UNUSED PyObject *__pyx_v_instruction_offset) {
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_thread_info = 0;
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v_func_code_info = 0;
+ int __pyx_v_stop;
+ int __pyx_v_stop_reason;
+ int __pyx_v_stop_on_plugin_breakpoint;
+ struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info = 0;
+ int __pyx_v_step_cmd;
+ PyObject *__pyx_v_py_db = 0;
+ PyObject *__pyx_v_frame = NULL;
+ int __pyx_v_keep_enabled;
+ PyObject *__pyx_v_bp = NULL;
+ PyObject *__pyx_v_new_frame = NULL;
+ PyObject *__pyx_v_plugin_manager = NULL;
+ PyObject *__pyx_v_result = NULL;
+ PyObject *__pyx_v_bp_type = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ int __pyx_t_8;
+ int __pyx_t_9;
+ int __pyx_t_10;
+ struct __pyx_opt_args_29_pydevd_sys_monitoring_cython__getframe __pyx_t_11;
+ int __pyx_t_12;
+ unsigned int __pyx_t_13;
+ PyObject *(*__pyx_t_14)(PyObject *);
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_start_method_event", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1643
+ * # ENDIF
+ * # fmt: on
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1644
+ * # fmt: on
+ * try:
+ * thread_info = _thread_local_info.thread_info # <<<<<<<<<<<<<<
+ * except:
+ * thread_info = _get_thread_info(True, 1)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1644, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_thread_info); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1644, __pyx_L3_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo))))) __PYX_ERR(0, 1644, __pyx_L3_error)
+ __pyx_v_thread_info = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_t_5);
+ __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1643
+ * # ENDIF
+ * # fmt: on
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L8_try_end;
+ __pyx_L3_error:;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1645
+ * try:
+ * thread_info = _thread_local_info.thread_info
+ * except: # <<<<<<<<<<<<<<
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None:
+ */
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._start_method_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(0, 1645, __pyx_L5_except_error)
+ __Pyx_XGOTREF(__pyx_t_5);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_6);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1646
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ * thread_info = _get_thread_info(True, 1) # <<<<<<<<<<<<<<
+ * if thread_info is None:
+ * return
+ */
+ __pyx_t_7 = __pyx_f_29_pydevd_sys_monitoring_cython__get_thread_info(1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1646, __pyx_L5_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo))))) __PYX_ERR(0, 1646, __pyx_L5_except_error)
+ __Pyx_XDECREF_SET(__pyx_v_thread_info, ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_t_7));
+ __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1647
+ * except:
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_8 = (((PyObject *)__pyx_v_thread_info) == Py_None);
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1648
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None:
+ * return # <<<<<<<<<<<<<<
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L6_except_return;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1647
+ * except:
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ goto __pyx_L4_exception_handled;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1643
+ * # ENDIF
+ * # fmt: on
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ __pyx_L5_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L1_error;
+ __pyx_L6_except_return:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ goto __pyx_L0;
+ __pyx_L4_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_2);
+ __Pyx_XGIVEREF(__pyx_t_3);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+ __pyx_L8_try_end:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1650
+ * return
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg # <<<<<<<<<<<<<<
+ * if py_db is None or py_db.pydb_disposed:
+ * return monitor.DISABLE
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1650, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_global_dbg); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1650, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_v_py_db = __pyx_t_4;
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1651
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed: # <<<<<<<<<<<<<<
+ * return monitor.DISABLE
+ *
+ */
+ __pyx_t_9 = (__pyx_v_py_db == Py_None);
+ if (!__pyx_t_9) {
+ } else {
+ __pyx_t_8 = __pyx_t_9;
+ goto __pyx_L13_bool_binop_done;
+ }
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_pydb_disposed); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1651, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1651, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __pyx_t_9;
+ __pyx_L13_bool_binop_done:;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1652
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed:
+ * return monitor.DISABLE # <<<<<<<<<<<<<<
+ *
+ * if not thread_info.trace or thread_info.thread._is_stopped:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1652, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_DISABLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1652, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_r = __pyx_t_6;
+ __pyx_t_6 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1651
+ *
+ * py_db: object = GlobalDebuggerHolder.global_dbg
+ * if py_db is None or py_db.pydb_disposed: # <<<<<<<<<<<<<<
+ * return monitor.DISABLE
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1654
+ * return monitor.DISABLE
+ *
+ * if not thread_info.trace or thread_info.thread._is_stopped: # <<<<<<<<<<<<<<
+ * # For thread-related stuff we can't disable the code tracing because other
+ * # threads may still want it...
+ */
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_thread_info->trace); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1654, __pyx_L1_error)
+ __pyx_t_10 = (!__pyx_t_9);
+ if (!__pyx_t_10) {
+ } else {
+ __pyx_t_8 = __pyx_t_10;
+ goto __pyx_L16_bool_binop_done;
+ }
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread_info->thread, __pyx_n_s_is_stopped); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1654, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1654, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_8 = __pyx_t_10;
+ __pyx_L16_bool_binop_done:;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1657
+ * # For thread-related stuff we can't disable the code tracing because other
+ * # threads may still want it...
+ * return # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1654
+ * return monitor.DISABLE
+ *
+ * if not thread_info.trace or thread_info.thread._is_stopped: # <<<<<<<<<<<<<<
+ * # For thread-related stuff we can't disable the code tracing because other
+ * # threads may still want it...
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1660
+ *
+ *
+ * frame = _getframe(1) # <<<<<<<<<<<<<<
+ * func_code_info = _get_func_code_info(code, frame)
+ * if func_code_info.always_skip_code:
+ */
+ __pyx_t_11.__pyx_n = 1;
+ __pyx_t_11.depth = __pyx_int_1;
+ __pyx_t_6 = __pyx_f_29_pydevd_sys_monitoring_cython__getframe(&__pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1660, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_v_frame = __pyx_t_6;
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1661
+ *
+ * frame = _getframe(1)
+ * func_code_info = _get_func_code_info(code, frame) # <<<<<<<<<<<<<<
+ * if func_code_info.always_skip_code:
+ * # if DEBUG:
+ */
+ __pyx_t_6 = ((PyObject *)__pyx_f_29_pydevd_sys_monitoring_cython__get_func_code_info(__pyx_v_code, __pyx_v_frame, 0)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1661, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_v_func_code_info = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)__pyx_t_6);
+ __pyx_t_6 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1662
+ * frame = _getframe(1)
+ * func_code_info = _get_func_code_info(code, frame)
+ * if func_code_info.always_skip_code: # <<<<<<<<<<<<<<
+ * # if DEBUG:
+ * # print('disable (always skip)')
+ */
+ if (__pyx_v_func_code_info->always_skip_code) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1665
+ * # if DEBUG:
+ * # print('disable (always skip)')
+ * return monitor.DISABLE # <<<<<<<<<<<<<<
+ *
+ * keep_enabled: bool = _enable_code_tracing(py_db, thread_info.additional_info, func_code_info, code, frame, True)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_monitor); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1665, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_DISABLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1665, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1662
+ * frame = _getframe(1)
+ * func_code_info = _get_func_code_info(code, frame)
+ * if func_code_info.always_skip_code: # <<<<<<<<<<<<<<
+ * # if DEBUG:
+ * # print('disable (always skip)')
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1667
+ * return monitor.DISABLE
+ *
+ * keep_enabled: bool = _enable_code_tracing(py_db, thread_info.additional_info, func_code_info, code, frame, True) # <<<<<<<<<<<<<<
+ *
+ * if func_code_info.function_breakpoint_found:
+ */
+ __pyx_t_4 = ((PyObject *)__pyx_v_thread_info->additional_info);
+ __Pyx_INCREF(__pyx_t_4);
+ __pyx_t_8 = __pyx_f_29_pydevd_sys_monitoring_cython__enable_code_tracing(__pyx_v_py_db, ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_4), __pyx_v_func_code_info, __pyx_v_code, __pyx_v_frame, 1); if (unlikely(__pyx_t_8 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1667, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_keep_enabled = __pyx_t_8;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1669
+ * keep_enabled: bool = _enable_code_tracing(py_db, thread_info.additional_info, func_code_info, code, frame, True)
+ *
+ * if func_code_info.function_breakpoint_found: # <<<<<<<<<<<<<<
+ * bp = func_code_info.function_breakpoint
+ * stop = True
+ */
+ if (__pyx_v_func_code_info->function_breakpoint_found) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1670
+ *
+ * if func_code_info.function_breakpoint_found:
+ * bp = func_code_info.function_breakpoint # <<<<<<<<<<<<<<
+ * stop = True
+ * new_frame = frame
+ */
+ __pyx_t_4 = __pyx_v_func_code_info->function_breakpoint;
+ __Pyx_INCREF(__pyx_t_4);
+ __pyx_v_bp = __pyx_t_4;
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1671
+ * if func_code_info.function_breakpoint_found:
+ * bp = func_code_info.function_breakpoint
+ * stop = True # <<<<<<<<<<<<<<
+ * new_frame = frame
+ * stop_reason = CMD_SET_FUNCTION_BREAK
+ */
+ __pyx_v_stop = 1;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1672
+ * bp = func_code_info.function_breakpoint
+ * stop = True
+ * new_frame = frame # <<<<<<<<<<<<<<
+ * stop_reason = CMD_SET_FUNCTION_BREAK
+ * stop_on_plugin_breakpoint = False
+ */
+ __Pyx_INCREF(__pyx_v_frame);
+ __pyx_v_new_frame = __pyx_v_frame;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1673
+ * stop = True
+ * new_frame = frame
+ * stop_reason = CMD_SET_FUNCTION_BREAK # <<<<<<<<<<<<<<
+ * stop_on_plugin_breakpoint = False
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CMD_SET_FUNCTION_BREAK); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1673, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1673, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_stop_reason = __pyx_t_12;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1674
+ * new_frame = frame
+ * stop_reason = CMD_SET_FUNCTION_BREAK
+ * stop_on_plugin_breakpoint = False # <<<<<<<<<<<<<<
+ *
+ * _stop_on_breakpoint(py_db, thread_info, stop_reason, bp, frame, new_frame, stop, stop_on_plugin_breakpoint, "python-function")
+ */
+ __pyx_v_stop_on_plugin_breakpoint = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1676
+ * stop_on_plugin_breakpoint = False
+ *
+ * _stop_on_breakpoint(py_db, thread_info, stop_reason, bp, frame, new_frame, stop, stop_on_plugin_breakpoint, "python-function") # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_4 = __pyx_f_29_pydevd_sys_monitoring_cython__stop_on_breakpoint(__pyx_v_py_db, __pyx_v_thread_info, __pyx_v_stop_reason, __pyx_v_bp, __pyx_v_frame, __pyx_v_new_frame, __pyx_v_stop, __pyx_v_stop_on_plugin_breakpoint, __pyx_kp_s_python_function); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1676, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1677
+ *
+ * _stop_on_breakpoint(py_db, thread_info, stop_reason, bp, frame, new_frame, stop, stop_on_plugin_breakpoint, "python-function")
+ * return # <<<<<<<<<<<<<<
+ *
+ * if py_db.plugin:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1669
+ * keep_enabled: bool = _enable_code_tracing(py_db, thread_info.additional_info, func_code_info, code, frame, True)
+ *
+ * if func_code_info.function_breakpoint_found: # <<<<<<<<<<<<<<
+ * bp = func_code_info.function_breakpoint
+ * stop = True
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1679
+ * return
+ *
+ * if py_db.plugin: # <<<<<<<<<<<<<<
+ * plugin_manager = py_db.plugin
+ *
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_plugin); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1679, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1679, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1680
+ *
+ * if py_db.plugin:
+ * plugin_manager = py_db.plugin # <<<<<<<<<<<<<<
+ *
+ * # Check breaking on breakpoints in a 'call'
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_plugin); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1680, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_v_plugin_manager = __pyx_t_4;
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1683
+ *
+ * # Check breaking on breakpoints in a 'call'
+ * info = thread_info.additional_info # <<<<<<<<<<<<<<
+ * if func_code_info.plugin_call_breakpoint_found:
+ * result = plugin_manager.get_breakpoint(py_db, frame, "call", info)
+ */
+ __pyx_t_4 = ((PyObject *)__pyx_v_thread_info->additional_info);
+ __Pyx_INCREF(__pyx_t_4);
+ __pyx_v_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_4);
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1684
+ * # Check breaking on breakpoints in a 'call'
+ * info = thread_info.additional_info
+ * if func_code_info.plugin_call_breakpoint_found: # <<<<<<<<<<<<<<
+ * result = plugin_manager.get_breakpoint(py_db, frame, "call", info)
+ * if result:
+ */
+ if (__pyx_v_func_code_info->plugin_call_breakpoint_found) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1685
+ * info = thread_info.additional_info
+ * if func_code_info.plugin_call_breakpoint_found:
+ * result = plugin_manager.get_breakpoint(py_db, frame, "call", info) # <<<<<<<<<<<<<<
+ * if result:
+ * stop_reason = CMD_SET_BREAK
+ */
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_get_breakpoint); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1685, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = NULL;
+ __pyx_t_13 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ __pyx_t_13 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[5] = {__pyx_t_5, __pyx_v_py_db, __pyx_v_frame, __pyx_n_s_call_2, ((PyObject *)__pyx_v_info)};
+ __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_13, 4+__pyx_t_13);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1685, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ }
+ __pyx_v_result = __pyx_t_4;
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1686
+ * if func_code_info.plugin_call_breakpoint_found:
+ * result = plugin_manager.get_breakpoint(py_db, frame, "call", info)
+ * if result: # <<<<<<<<<<<<<<
+ * stop_reason = CMD_SET_BREAK
+ * stop = False
+ */
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1686, __pyx_L1_error)
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1687
+ * result = plugin_manager.get_breakpoint(py_db, frame, "call", info)
+ * if result:
+ * stop_reason = CMD_SET_BREAK # <<<<<<<<<<<<<<
+ * stop = False
+ * stop_on_plugin_breakpoint = True
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CMD_SET_BREAK); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1687, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1687, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_stop_reason = __pyx_t_12;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1688
+ * if result:
+ * stop_reason = CMD_SET_BREAK
+ * stop = False # <<<<<<<<<<<<<<
+ * stop_on_plugin_breakpoint = True
+ * bp, new_frame, bp_type = result
+ */
+ __pyx_v_stop = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1689
+ * stop_reason = CMD_SET_BREAK
+ * stop = False
+ * stop_on_plugin_breakpoint = True # <<<<<<<<<<<<<<
+ * bp, new_frame, bp_type = result
+ * _stop_on_breakpoint(py_db, thread_info, stop_reason, bp, frame, new_frame, stop, stop_on_plugin_breakpoint, bp_type)
+ */
+ __pyx_v_stop_on_plugin_breakpoint = 1;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1690
+ * stop = False
+ * stop_on_plugin_breakpoint = True
+ * bp, new_frame, bp_type = result # <<<<<<<<<<<<<<
+ * _stop_on_breakpoint(py_db, thread_info, stop_reason, bp, frame, new_frame, stop, stop_on_plugin_breakpoint, bp_type)
+ * return
+ */
+ if ((likely(PyTuple_CheckExact(__pyx_v_result))) || (PyList_CheckExact(__pyx_v_result))) {
+ PyObject* sequence = __pyx_v_result;
+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+ if (unlikely(size != 3)) {
+ if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+ __PYX_ERR(0, 1690, __pyx_L1_error)
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ if (likely(PyTuple_CheckExact(sequence))) {
+ __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);
+ __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2);
+ } else {
+ __pyx_t_4 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_6 = PyList_GET_ITEM(sequence, 1);
+ __pyx_t_5 = PyList_GET_ITEM(sequence, 2);
+ }
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_5);
+ #else
+ __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1690, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1690, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1690, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ #endif
+ } else {
+ Py_ssize_t index = -1;
+ __pyx_t_7 = PyObject_GetIter(__pyx_v_result); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1690, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_14 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7);
+ index = 0; __pyx_t_4 = __pyx_t_14(__pyx_t_7); if (unlikely(!__pyx_t_4)) goto __pyx_L23_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_4);
+ index = 1; __pyx_t_6 = __pyx_t_14(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L23_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_6);
+ index = 2; __pyx_t_5 = __pyx_t_14(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L23_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_5);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_7), 3) < 0) __PYX_ERR(0, 1690, __pyx_L1_error)
+ __pyx_t_14 = NULL;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ goto __pyx_L24_unpacking_done;
+ __pyx_L23_unpacking_failed:;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_14 = NULL;
+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+ __PYX_ERR(0, 1690, __pyx_L1_error)
+ __pyx_L24_unpacking_done:;
+ }
+ __pyx_v_bp = __pyx_t_4;
+ __pyx_t_4 = 0;
+ __pyx_v_new_frame = __pyx_t_6;
+ __pyx_t_6 = 0;
+ __pyx_v_bp_type = __pyx_t_5;
+ __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1691
+ * stop_on_plugin_breakpoint = True
+ * bp, new_frame, bp_type = result
+ * _stop_on_breakpoint(py_db, thread_info, stop_reason, bp, frame, new_frame, stop, stop_on_plugin_breakpoint, bp_type) # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ if (!(likely(PyString_CheckExact(__pyx_v_bp_type))||((__pyx_v_bp_type) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_bp_type))) __PYX_ERR(0, 1691, __pyx_L1_error)
+ __pyx_t_5 = __pyx_f_29_pydevd_sys_monitoring_cython__stop_on_breakpoint(__pyx_v_py_db, __pyx_v_thread_info, __pyx_v_stop_reason, __pyx_v_bp, __pyx_v_frame, __pyx_v_new_frame, __pyx_v_stop, __pyx_v_stop_on_plugin_breakpoint, ((PyObject*)__pyx_v_bp_type)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1691, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1692
+ * bp, new_frame, bp_type = result
+ * _stop_on_breakpoint(py_db, thread_info, stop_reason, bp, frame, new_frame, stop, stop_on_plugin_breakpoint, bp_type)
+ * return # <<<<<<<<<<<<<<
+ *
+ * keep_enabled = True
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1686
+ * if func_code_info.plugin_call_breakpoint_found:
+ * result = plugin_manager.get_breakpoint(py_db, frame, "call", info)
+ * if result: # <<<<<<<<<<<<<<
+ * stop_reason = CMD_SET_BREAK
+ * stop = False
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1694
+ * return
+ *
+ * keep_enabled = True # <<<<<<<<<<<<<<
+ *
+ * # Check breaking on line stepping in a 'call'
+ */
+ __pyx_v_keep_enabled = 1;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1684
+ * # Check breaking on breakpoints in a 'call'
+ * info = thread_info.additional_info
+ * if func_code_info.plugin_call_breakpoint_found: # <<<<<<<<<<<<<<
+ * result = plugin_manager.get_breakpoint(py_db, frame, "call", info)
+ * if result:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1697
+ *
+ * # Check breaking on line stepping in a 'call'
+ * step_cmd = info.pydev_step_cmd # <<<<<<<<<<<<<<
+ * if step_cmd != -1 and func_code_info.plugin_call_stepping and info.suspend_type != PYTHON_SUSPEND:
+ * _plugin_stepping(py_db, step_cmd, "call", frame, thread_info)
+ */
+ __pyx_t_12 = __pyx_v_info->pydev_step_cmd;
+ __pyx_v_step_cmd = __pyx_t_12;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1698
+ * # Check breaking on line stepping in a 'call'
+ * step_cmd = info.pydev_step_cmd
+ * if step_cmd != -1 and func_code_info.plugin_call_stepping and info.suspend_type != PYTHON_SUSPEND: # <<<<<<<<<<<<<<
+ * _plugin_stepping(py_db, step_cmd, "call", frame, thread_info)
+ * return
+ */
+ __pyx_t_10 = (__pyx_v_step_cmd != -1L);
+ if (__pyx_t_10) {
+ } else {
+ __pyx_t_8 = __pyx_t_10;
+ goto __pyx_L26_bool_binop_done;
+ }
+ if (__pyx_v_func_code_info->plugin_call_stepping) {
+ } else {
+ __pyx_t_8 = __pyx_v_func_code_info->plugin_call_stepping;
+ goto __pyx_L26_bool_binop_done;
+ }
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_info->suspend_type); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1698, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_PYTHON_SUSPEND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1698, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1698, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1698, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __pyx_t_10;
+ __pyx_L26_bool_binop_done:;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1699
+ * step_cmd = info.pydev_step_cmd
+ * if step_cmd != -1 and func_code_info.plugin_call_stepping and info.suspend_type != PYTHON_SUSPEND:
+ * _plugin_stepping(py_db, step_cmd, "call", frame, thread_info) # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_4 = __pyx_f_29_pydevd_sys_monitoring_cython__plugin_stepping(__pyx_v_py_db, __pyx_v_step_cmd, __pyx_n_s_call_2, __pyx_v_frame, __pyx_v_thread_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1699, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1700
+ * if step_cmd != -1 and func_code_info.plugin_call_stepping and info.suspend_type != PYTHON_SUSPEND:
+ * _plugin_stepping(py_db, step_cmd, "call", frame, thread_info)
+ * return # <<<<<<<<<<<<<<
+ *
+ * if keep_enabled or any_thread_stepping():
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1698
+ * # Check breaking on line stepping in a 'call'
+ * step_cmd = info.pydev_step_cmd
+ * if step_cmd != -1 and func_code_info.plugin_call_stepping and info.suspend_type != PYTHON_SUSPEND: # <<<<<<<<<<<<<<
+ * _plugin_stepping(py_db, step_cmd, "call", frame, thread_info)
+ * return
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1679
+ * return
+ *
+ * if py_db.plugin: # <<<<<<<<<<<<<<
+ * plugin_manager = py_db.plugin
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1702
+ * return
+ *
+ * if keep_enabled or any_thread_stepping(): # <<<<<<<<<<<<<<
+ * return None
+ *
+ */
+ if (!__pyx_v_keep_enabled) {
+ } else {
+ __pyx_t_8 = __pyx_v_keep_enabled;
+ goto __pyx_L30_bool_binop_done;
+ }
+ __pyx_t_10 = __pyx_f_14_pydevd_bundle_13pydevd_cython_any_thread_stepping(0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1702, __pyx_L1_error)
+ __pyx_t_8 = __pyx_t_10;
+ __pyx_L30_bool_binop_done:;
+ if (__pyx_t_8) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1703
+ *
+ * if keep_enabled or any_thread_stepping():
+ * return None # <<<<<<<<<<<<<<
+ *
+ * return monitor.DISABLE
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1702
+ * return
+ *
+ * if keep_enabled or any_thread_stepping(): # <<<<<<<<<<<<<<
+ * return None
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1705
+ * return None
+ *
+ * return monitor.DISABLE # <<<<<<<<<<<<<<
+ *
+ * # fmt: off
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1705, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_DISABLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1705, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_r = __pyx_t_6;
+ __pyx_t_6 = 0;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1630
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _start_method_event(code, instruction_offset): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * cdef FuncCodeInfo func_code_info
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._start_method_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF((PyObject *)__pyx_v_thread_info);
+ __Pyx_XDECREF((PyObject *)__pyx_v_func_code_info);
+ __Pyx_XDECREF((PyObject *)__pyx_v_info);
+ __Pyx_XDECREF(__pyx_v_py_db);
+ __Pyx_XDECREF(__pyx_v_frame);
+ __Pyx_XDECREF(__pyx_v_bp);
+ __Pyx_XDECREF(__pyx_v_new_frame);
+ __Pyx_XDECREF(__pyx_v_plugin_manager);
+ __Pyx_XDECREF(__pyx_v_result);
+ __Pyx_XDECREF(__pyx_v_bp_type);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":1709
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef _ensure_monitoring(): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _ensure_monitoring():
+ */
+
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_9_ensure_monitoring(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__ensure_monitoring(CYTHON_UNUSED int __pyx_skip_dispatch) {
+ PyObject *__pyx_v_DEBUGGER_ID = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ unsigned int __pyx_t_4;
+ int __pyx_t_5;
+ int __pyx_t_6;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_ensure_monitoring", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1714
+ * # ENDIF
+ * # fmt: on
+ * DEBUGGER_ID = monitor.DEBUGGER_ID # <<<<<<<<<<<<<<
+ * if not monitor.get_tool(DEBUGGER_ID):
+ * monitor.use_tool_id(DEBUGGER_ID, "pydevd")
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_monitor); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1714, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1714, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v_DEBUGGER_ID = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1715
+ * # fmt: on
+ * DEBUGGER_ID = monitor.DEBUGGER_ID
+ * if not monitor.get_tool(DEBUGGER_ID): # <<<<<<<<<<<<<<
+ * monitor.use_tool_id(DEBUGGER_ID, "pydevd")
+ * update_monitor_events()
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_monitor); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1715, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get_tool); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1715, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_4 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_DEBUGGER_ID};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1715, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 1715, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_6 = (!__pyx_t_5);
+ if (__pyx_t_6) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1716
+ * DEBUGGER_ID = monitor.DEBUGGER_ID
+ * if not monitor.get_tool(DEBUGGER_ID):
+ * monitor.use_tool_id(DEBUGGER_ID, "pydevd") # <<<<<<<<<<<<<<
+ * update_monitor_events()
+ * restart_events()
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_monitor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1716, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_use_tool_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1716, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = NULL;
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_4 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_DEBUGGER_ID, __pyx_n_s_pydevd};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1716, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1717
+ * if not monitor.get_tool(DEBUGGER_ID):
+ * monitor.use_tool_id(DEBUGGER_ID, "pydevd")
+ * update_monitor_events() # <<<<<<<<<<<<<<
+ * restart_events()
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_update_monitor_events); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1717, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = NULL;
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_4 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1717, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1718
+ * monitor.use_tool_id(DEBUGGER_ID, "pydevd")
+ * update_monitor_events()
+ * restart_events() # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_restart_events); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1718, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = NULL;
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_4 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1718, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1715
+ * # fmt: on
+ * DEBUGGER_ID = monitor.DEBUGGER_ID
+ * if not monitor.get_tool(DEBUGGER_ID): # <<<<<<<<<<<<<<
+ * monitor.use_tool_id(DEBUGGER_ID, "pydevd")
+ * update_monitor_events()
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1709
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef _ensure_monitoring(): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _ensure_monitoring():
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._ensure_monitoring", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_DEBUGGER_ID);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_9_ensure_monitoring(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_9_ensure_monitoring = {"_ensure_monitoring", (PyCFunction)__pyx_pw_29_pydevd_sys_monitoring_cython_9_ensure_monitoring, METH_NOARGS, 0};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_9_ensure_monitoring(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("_ensure_monitoring (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_8_ensure_monitoring(__pyx_self);
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_8_ensure_monitoring(CYTHON_UNUSED PyObject *__pyx_self) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_ensure_monitoring", 1);
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython__ensure_monitoring(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1709, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._ensure_monitoring", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":1723
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef start_monitoring(bint all_threads=False): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * # ELSE
+ */
+
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_11start_monitoring(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython_start_monitoring(CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_29_pydevd_sys_monitoring_cython_start_monitoring *__pyx_optional_args) {
+ int __pyx_v_all_threads = ((int)0);
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_thread_info = 0;
+ PyObject *__pyx_v_DEBUGGER_ID = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ unsigned int __pyx_t_4;
+ int __pyx_t_5;
+ int __pyx_t_6;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_10 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("start_monitoring", 1);
+ if (__pyx_optional_args) {
+ if (__pyx_optional_args->__pyx_n > 0) {
+ __pyx_v_all_threads = __pyx_optional_args->all_threads;
+ }
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1729
+ * # ENDIF
+ * # fmt: on
+ * if all_threads: # <<<<<<<<<<<<<<
+ * # print('start monitoring, all_threads=', all_threads)
+ * DEBUGGER_ID = monitor.DEBUGGER_ID
+ */
+ if (__pyx_v_all_threads) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1731
+ * if all_threads:
+ * # print('start monitoring, all_threads=', all_threads)
+ * DEBUGGER_ID = monitor.DEBUGGER_ID # <<<<<<<<<<<<<<
+ * if not monitor.get_tool(DEBUGGER_ID):
+ * monitor.use_tool_id(DEBUGGER_ID, "pydevd")
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_monitor); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1731, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1731, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v_DEBUGGER_ID = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1732
+ * # print('start monitoring, all_threads=', all_threads)
+ * DEBUGGER_ID = monitor.DEBUGGER_ID
+ * if not monitor.get_tool(DEBUGGER_ID): # <<<<<<<<<<<<<<
+ * monitor.use_tool_id(DEBUGGER_ID, "pydevd")
+ * update_monitor_events()
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_monitor); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1732, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get_tool); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1732, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_4 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_DEBUGGER_ID};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1732, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 1732, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_6 = (!__pyx_t_5);
+ if (__pyx_t_6) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1733
+ * DEBUGGER_ID = monitor.DEBUGGER_ID
+ * if not monitor.get_tool(DEBUGGER_ID):
+ * monitor.use_tool_id(DEBUGGER_ID, "pydevd") # <<<<<<<<<<<<<<
+ * update_monitor_events()
+ * restart_events()
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_monitor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1733, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_use_tool_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1733, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = NULL;
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_4 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_DEBUGGER_ID, __pyx_n_s_pydevd};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1733, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1734
+ * if not monitor.get_tool(DEBUGGER_ID):
+ * monitor.use_tool_id(DEBUGGER_ID, "pydevd")
+ * update_monitor_events() # <<<<<<<<<<<<<<
+ * restart_events()
+ * else:
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_update_monitor_events); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1734, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = NULL;
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_4 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1734, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1735
+ * monitor.use_tool_id(DEBUGGER_ID, "pydevd")
+ * update_monitor_events()
+ * restart_events() # <<<<<<<<<<<<<<
+ * else:
+ * try:
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_restart_events); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1735, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = NULL;
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_4 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1735, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1732
+ * # print('start monitoring, all_threads=', all_threads)
+ * DEBUGGER_ID = monitor.DEBUGGER_ID
+ * if not monitor.get_tool(DEBUGGER_ID): # <<<<<<<<<<<<<<
+ * monitor.use_tool_id(DEBUGGER_ID, "pydevd")
+ * update_monitor_events()
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1729
+ * # ENDIF
+ * # fmt: on
+ * if all_threads: # <<<<<<<<<<<<<<
+ * # print('start monitoring, all_threads=', all_threads)
+ * DEBUGGER_ID = monitor.DEBUGGER_ID
+ */
+ goto __pyx_L3;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1737
+ * restart_events()
+ * else:
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ /*else*/ {
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
+ __Pyx_XGOTREF(__pyx_t_7);
+ __Pyx_XGOTREF(__pyx_t_8);
+ __Pyx_XGOTREF(__pyx_t_9);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1738
+ * else:
+ * try:
+ * thread_info = _thread_local_info.thread_info # <<<<<<<<<<<<<<
+ * except:
+ * # code=None means we can already get the threading.current_thread.
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1738, __pyx_L5_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_thread_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1738, __pyx_L5_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo))))) __PYX_ERR(0, 1738, __pyx_L5_error)
+ __pyx_v_thread_info = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1737
+ * restart_events()
+ * else:
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ goto __pyx_L10_try_end;
+ __pyx_L5_error:;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1739
+ * try:
+ * thread_info = _thread_local_info.thread_info
+ * except: # <<<<<<<<<<<<<<
+ * # code=None means we can already get the threading.current_thread.
+ * thread_info = _get_thread_info(True, 1)
+ */
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.start_monitoring", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 1739, __pyx_L7_except_error)
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1741
+ * except:
+ * # code=None means we can already get the threading.current_thread.
+ * thread_info = _get_thread_info(True, 1) # <<<<<<<<<<<<<<
+ * if thread_info is None:
+ * # print('start monitoring, thread=', None)
+ */
+ __pyx_t_10 = __pyx_f_29_pydevd_sys_monitoring_cython__get_thread_info(1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1741, __pyx_L7_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo))))) __PYX_ERR(0, 1741, __pyx_L7_except_error)
+ __Pyx_XDECREF_SET(__pyx_v_thread_info, ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_t_10));
+ __pyx_t_10 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1742
+ * # code=None means we can already get the threading.current_thread.
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None: # <<<<<<<<<<<<<<
+ * # print('start monitoring, thread=', None)
+ * return
+ */
+ __pyx_t_6 = (((PyObject *)__pyx_v_thread_info) == Py_None);
+ if (__pyx_t_6) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1744
+ * if thread_info is None:
+ * # print('start monitoring, thread=', None)
+ * return # <<<<<<<<<<<<<<
+ * # print('start monitoring, thread=', thread_info.thread)
+ * thread_info.trace = True
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L8_except_return;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1742
+ * # code=None means we can already get the threading.current_thread.
+ * thread_info = _get_thread_info(True, 1)
+ * if thread_info is None: # <<<<<<<<<<<<<<
+ * # print('start monitoring, thread=', None)
+ * return
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L6_exception_handled;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1737
+ * restart_events()
+ * else:
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ __pyx_L7_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+ goto __pyx_L1_error;
+ __pyx_L8_except_return:;
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+ goto __pyx_L0;
+ __pyx_L6_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_7);
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+ __pyx_L10_try_end:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1746
+ * return
+ * # print('start monitoring, thread=', thread_info.thread)
+ * thread_info.trace = True # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_INCREF(Py_True);
+ __Pyx_GIVEREF(Py_True);
+ __Pyx_GOTREF(__pyx_v_thread_info->trace);
+ __Pyx_DECREF(__pyx_v_thread_info->trace);
+ __pyx_v_thread_info->trace = Py_True;
+ }
+ __pyx_L3:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1723
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef start_monitoring(bint all_threads=False): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * # ELSE
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_10);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.start_monitoring", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF((PyObject *)__pyx_v_thread_info);
+ __Pyx_XDECREF(__pyx_v_DEBUGGER_ID);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_11start_monitoring(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_11start_monitoring = {"start_monitoring", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_11start_monitoring, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_11start_monitoring(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ int __pyx_v_all_threads;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("start_monitoring (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_all_threads,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (kw_args > 0) {
+ PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_all_threads);
+ if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1723, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "start_monitoring") < 0)) __PYX_ERR(0, 1723, __pyx_L3_error)
+ }
+ } else {
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ }
+ if (values[0]) {
+ __pyx_v_all_threads = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_all_threads == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1723, __pyx_L3_error)
+ } else {
+ __pyx_v_all_threads = ((int)0);
+ }
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("start_monitoring", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 1723, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.start_monitoring", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_10start_monitoring(__pyx_self, __pyx_v_all_threads);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_10start_monitoring(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_all_threads) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ struct __pyx_opt_args_29_pydevd_sys_monitoring_cython_start_monitoring __pyx_t_2;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("start_monitoring", 1);
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_2.__pyx_n = 1;
+ __pyx_t_2.all_threads = __pyx_v_all_threads;
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython_start_monitoring(0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1723, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.start_monitoring", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":1751
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef stop_monitoring(all_threads=False): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * # ELSE
+ */
+
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_13stop_monitoring(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython_stop_monitoring(CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_29_pydevd_sys_monitoring_cython_stop_monitoring *__pyx_optional_args) {
+ PyObject *__pyx_v_all_threads = ((PyObject *)Py_False);
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_thread_info = 0;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ int __pyx_t_1;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ unsigned int __pyx_t_6;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_10 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("stop_monitoring", 1);
+ if (__pyx_optional_args) {
+ if (__pyx_optional_args->__pyx_n > 0) {
+ __pyx_v_all_threads = __pyx_optional_args->all_threads;
+ }
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1757
+ * # ENDIF
+ * # fmt: on
+ * if all_threads: # <<<<<<<<<<<<<<
+ * # print('stop monitoring, all_threads=', all_threads)
+ * if monitor.get_tool(monitor.DEBUGGER_ID) == "pydevd":
+ */
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_all_threads); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1757, __pyx_L1_error)
+ if (__pyx_t_1) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1759
+ * if all_threads:
+ * # print('stop monitoring, all_threads=', all_threads)
+ * if monitor.get_tool(monitor.DEBUGGER_ID) == "pydevd": # <<<<<<<<<<<<<<
+ * monitor.set_events(monitor.DEBUGGER_ID, 0)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, None)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_monitor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1759, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_get_tool); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1759, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_monitor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1759, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1759, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_5};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1759, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_pydevd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1759, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (__pyx_t_1) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1760
+ * # print('stop monitoring, all_threads=', all_threads)
+ * if monitor.get_tool(monitor.DEBUGGER_ID) == "pydevd":
+ * monitor.set_events(monitor.DEBUGGER_ID, 0) # <<<<<<<<<<<<<<
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, None)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1760, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_set_events); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1760, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1760, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1760, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_int_0};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1760, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1761
+ * if monitor.get_tool(monitor.DEBUGGER_ID) == "pydevd":
+ * monitor.set_events(monitor.DEBUGGER_ID, 0)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, None) # <<<<<<<<<<<<<<
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, None)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_monitor); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1761, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_register_callback); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1761, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1761, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1761, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_events); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1761, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_PY_START); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1761, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_5, __pyx_t_4, Py_None};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1761, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1762
+ * monitor.set_events(monitor.DEBUGGER_ID, 0)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, None) # <<<<<<<<<<<<<<
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, None)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_monitor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1762, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_register_callback); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1762, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1762, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_monitor); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1762, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_events); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1762, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_PY_RESUME); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1762, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_3, __pyx_t_5, Py_None};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1762, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1763
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, None) # <<<<<<<<<<<<<<
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, None)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1763, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_register_callback); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1763, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1763, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_monitor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1763, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_events); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1763, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_LINE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1763, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_4, __pyx_t_3, Py_None};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1763, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1764
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, None) # <<<<<<<<<<<<<<
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.RAISE, None)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_monitor); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1764, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_register_callback); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1764, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1764, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1764, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_events); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1764, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_JUMP); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1764, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_5, __pyx_t_4, Py_None};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1764, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1765
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, None) # <<<<<<<<<<<<<<
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.RAISE, None)
+ * monitor.free_tool_id(monitor.DEBUGGER_ID)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_monitor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1765, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_register_callback); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1765, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1765, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_monitor); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1765, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_events); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1765, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_PY_RETURN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1765, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_3, __pyx_t_5, Py_None};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1765, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1766
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.RAISE, None) # <<<<<<<<<<<<<<
+ * monitor.free_tool_id(monitor.DEBUGGER_ID)
+ * else:
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1766, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_register_callback); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1766, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1766, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_monitor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1766, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_events); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1766, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_RAISE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1766, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_4, __pyx_t_3, Py_None};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1766, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1767
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.RAISE, None)
+ * monitor.free_tool_id(monitor.DEBUGGER_ID) # <<<<<<<<<<<<<<
+ * else:
+ * try:
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_monitor); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1767, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_free_tool_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1767, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_monitor); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1767, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1767, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = NULL;
+ __pyx_t_6 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_6 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1767, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1759
+ * if all_threads:
+ * # print('stop monitoring, all_threads=', all_threads)
+ * if monitor.get_tool(monitor.DEBUGGER_ID) == "pydevd": # <<<<<<<<<<<<<<
+ * monitor.set_events(monitor.DEBUGGER_ID, 0)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, None)
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1757
+ * # ENDIF
+ * # fmt: on
+ * if all_threads: # <<<<<<<<<<<<<<
+ * # print('stop monitoring, all_threads=', all_threads)
+ * if monitor.get_tool(monitor.DEBUGGER_ID) == "pydevd":
+ */
+ goto __pyx_L3;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1769
+ * monitor.free_tool_id(monitor.DEBUGGER_ID)
+ * else:
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ /*else*/ {
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+ __Pyx_XGOTREF(__pyx_t_8);
+ __Pyx_XGOTREF(__pyx_t_9);
+ __Pyx_XGOTREF(__pyx_t_10);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1770
+ * else:
+ * try:
+ * thread_info = _thread_local_info.thread_info # <<<<<<<<<<<<<<
+ * except:
+ * thread_info = _get_thread_info(False, 1)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1770, __pyx_L5_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_thread_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1770, __pyx_L5_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo))))) __PYX_ERR(0, 1770, __pyx_L5_error)
+ __pyx_v_thread_info = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_t_3);
+ __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1769
+ * monitor.free_tool_id(monitor.DEBUGGER_ID)
+ * else:
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ goto __pyx_L10_try_end;
+ __pyx_L5_error:;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1771
+ * try:
+ * thread_info = _thread_local_info.thread_info
+ * except: # <<<<<<<<<<<<<<
+ * thread_info = _get_thread_info(False, 1)
+ * if thread_info is None:
+ */
+ /*except:*/ {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.stop_monitoring", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_4) < 0) __PYX_ERR(0, 1771, __pyx_L7_except_error)
+ __Pyx_XGOTREF(__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_4);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1772
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ * thread_info = _get_thread_info(False, 1) # <<<<<<<<<<<<<<
+ * if thread_info is None:
+ * return
+ */
+ __pyx_t_5 = __pyx_f_29_pydevd_sys_monitoring_cython__get_thread_info(0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1772, __pyx_L7_except_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo))))) __PYX_ERR(0, 1772, __pyx_L7_except_error)
+ __Pyx_XDECREF_SET(__pyx_v_thread_info, ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_t_5));
+ __pyx_t_5 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1773
+ * except:
+ * thread_info = _get_thread_info(False, 1)
+ * if thread_info is None: # <<<<<<<<<<<<<<
+ * return
+ * # print('stop monitoring, thread=', thread_info.thread)
+ */
+ __pyx_t_1 = (((PyObject *)__pyx_v_thread_info) == Py_None);
+ if (__pyx_t_1) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1774
+ * thread_info = _get_thread_info(False, 1)
+ * if thread_info is None:
+ * return # <<<<<<<<<<<<<<
+ * # print('stop monitoring, thread=', thread_info.thread)
+ * thread_info.trace = False
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ goto __pyx_L8_except_return;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1773
+ * except:
+ * thread_info = _get_thread_info(False, 1)
+ * if thread_info is None: # <<<<<<<<<<<<<<
+ * return
+ * # print('stop monitoring, thread=', thread_info.thread)
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ goto __pyx_L6_exception_handled;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1769
+ * monitor.free_tool_id(monitor.DEBUGGER_ID)
+ * else:
+ * try: # <<<<<<<<<<<<<<
+ * thread_info = _thread_local_info.thread_info
+ * except:
+ */
+ __pyx_L7_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_XGIVEREF(__pyx_t_10);
+ __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+ goto __pyx_L1_error;
+ __pyx_L8_except_return:;
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_XGIVEREF(__pyx_t_10);
+ __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+ goto __pyx_L0;
+ __pyx_L6_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_8);
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_XGIVEREF(__pyx_t_10);
+ __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+ __pyx_L10_try_end:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1776
+ * return
+ * # print('stop monitoring, thread=', thread_info.thread)
+ * thread_info.trace = False # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_INCREF(Py_False);
+ __Pyx_GIVEREF(Py_False);
+ __Pyx_GOTREF(__pyx_v_thread_info->trace);
+ __Pyx_DECREF(__pyx_v_thread_info->trace);
+ __pyx_v_thread_info->trace = Py_False;
+ }
+ __pyx_L3:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1751
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef stop_monitoring(all_threads=False): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * # ELSE
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.stop_monitoring", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF((PyObject *)__pyx_v_thread_info);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_13stop_monitoring(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_13stop_monitoring = {"stop_monitoring", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_13stop_monitoring, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_13stop_monitoring(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_all_threads = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("stop_monitoring (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_all_threads,0};
+ values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (kw_args > 0) {
+ PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_all_threads);
+ if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1751, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "stop_monitoring") < 0)) __PYX_ERR(0, 1751, __pyx_L3_error)
+ }
+ } else {
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ }
+ __pyx_v_all_threads = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("stop_monitoring", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 1751, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.stop_monitoring", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_12stop_monitoring(__pyx_self, __pyx_v_all_threads);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_12stop_monitoring(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_all_threads) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ struct __pyx_opt_args_29_pydevd_sys_monitoring_cython_stop_monitoring __pyx_t_2;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("stop_monitoring", 1);
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_2.__pyx_n = 1;
+ __pyx_t_2.all_threads = __pyx_v_all_threads;
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython_stop_monitoring(0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1751, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.stop_monitoring", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":1779
+ *
+ *
+ * def update_monitor_events(suspend_requested: Optional[bool] = None) -> None: # <<<<<<<<<<<<<<
+ * """
+ * This should be called when breakpoints change.
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_15update_monitor_events(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_29_pydevd_sys_monitoring_cython_14update_monitor_events, "\n This should be called when breakpoints change.\n\n :param suspend: means the user requested threads to be suspended\n ");
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_15update_monitor_events = {"update_monitor_events", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_15update_monitor_events, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_29_pydevd_sys_monitoring_cython_14update_monitor_events};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_15update_monitor_events(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_suspend_requested = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[1] = {0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("update_monitor_events (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_suspend_requested,0};
+ values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (kw_args > 0) {
+ PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_suspend_requested);
+ if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1779, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "update_monitor_events") < 0)) __PYX_ERR(0, 1779, __pyx_L3_error)
+ }
+ } else {
+ switch (__pyx_nargs) {
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ }
+ __pyx_v_suspend_requested = values[0];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("update_monitor_events", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 1779, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.update_monitor_events", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_14update_monitor_events(__pyx_self, __pyx_v_suspend_requested);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_14update_monitor_events(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_suspend_requested) {
+ PyObject *__pyx_v_py_db = NULL;
+ PyObject *__pyx_v_t = NULL;
+ PyObject *__pyx_v_additional_info = NULL;
+ PyObject *__pyx_v_required_events = NULL;
+ PyObject *__pyx_v_has_caught_exception_breakpoint_in_pydb = NULL;
+ PyObject *__pyx_v_break_on_uncaught_exceptions = NULL;
+ PyObject *__pyx_v_has_breaks = NULL;
+ PyObject *__pyx_v_file_to_line_to_breakpoints = NULL;
+ PyObject *__pyx_v_line_to_breakpoints = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ unsigned int __pyx_t_5;
+ int __pyx_t_6;
+ Py_ssize_t __pyx_t_7;
+ PyObject *(*__pyx_t_8)(PyObject *);
+ PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_10 = NULL;
+ PyObject *__pyx_t_11 = NULL;
+ int __pyx_t_12;
+ int __pyx_t_13;
+ PyObject *__pyx_t_14 = NULL;
+ PyObject *__pyx_t_15 = NULL;
+ Py_ssize_t __pyx_t_16;
+ int __pyx_t_17;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("update_monitor_events", 0);
+ __Pyx_INCREF(__pyx_v_suspend_requested);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1785
+ * :param suspend: means the user requested threads to be suspended
+ * """
+ * if monitor.get_tool(monitor.DEBUGGER_ID) != "pydevd": # <<<<<<<<<<<<<<
+ * # It is still not initialized.
+ * return
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_monitor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1785, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get_tool); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1785, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_monitor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1785, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1785, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1785, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_pydevd, Py_NE)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1785, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_6) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1787
+ * if monitor.get_tool(monitor.DEBUGGER_ID) != "pydevd":
+ * # It is still not initialized.
+ * return # <<<<<<<<<<<<<<
+ *
+ * # When breakpoints change we need to update what we want to track based
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1785
+ * :param suspend: means the user requested threads to be suspended
+ * """
+ * if monitor.get_tool(monitor.DEBUGGER_ID) != "pydevd": # <<<<<<<<<<<<<<
+ * # It is still not initialized.
+ * return
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1791
+ * # When breakpoints change we need to update what we want to track based
+ * # on the breakpoints.
+ * py_db = GlobalDebuggerHolder.global_dbg # <<<<<<<<<<<<<<
+ * if py_db is None:
+ * return
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1791, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_global_dbg); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1791, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v_py_db = __pyx_t_3;
+ __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1792
+ * # on the breakpoints.
+ * py_db = GlobalDebuggerHolder.global_dbg
+ * if py_db is None: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_6 = (__pyx_v_py_db == Py_None);
+ if (__pyx_t_6) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1793
+ * py_db = GlobalDebuggerHolder.global_dbg
+ * if py_db is None:
+ * return # <<<<<<<<<<<<<<
+ *
+ * if suspend_requested is None:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1792
+ * # on the breakpoints.
+ * py_db = GlobalDebuggerHolder.global_dbg
+ * if py_db is None: # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1795
+ * return
+ *
+ * if suspend_requested is None: # <<<<<<<<<<<<<<
+ * suspend_requested = False
+ *
+ */
+ __pyx_t_6 = (__pyx_v_suspend_requested == Py_None);
+ if (__pyx_t_6) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1796
+ *
+ * if suspend_requested is None:
+ * suspend_requested = False # <<<<<<<<<<<<<<
+ *
+ * for t in threading.enumerate():
+ */
+ __Pyx_INCREF(Py_False);
+ __Pyx_DECREF_SET(__pyx_v_suspend_requested, Py_False);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1798
+ * suspend_requested = False
+ *
+ * for t in threading.enumerate(): # <<<<<<<<<<<<<<
+ * if getattr(t, "pydev_do_not_trace", False):
+ * continue
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_threading); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1798, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_enumerate); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1798, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1798, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
+ __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4);
+ __pyx_t_7 = 0;
+ __pyx_t_8 = NULL;
+ } else {
+ __pyx_t_7 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1798, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1798, __pyx_L1_error)
+ }
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ for (;;) {
+ if (likely(!__pyx_t_8)) {
+ if (likely(PyList_CheckExact(__pyx_t_4))) {
+ {
+ Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4);
+ #if !CYTHON_ASSUME_SAFE_MACROS
+ if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1798, __pyx_L1_error)
+ #endif
+ if (__pyx_t_7 >= __pyx_temp) break;
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(0, 1798, __pyx_L1_error)
+ #else
+ __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1798, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ #endif
+ } else {
+ {
+ Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
+ #if !CYTHON_ASSUME_SAFE_MACROS
+ if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1798, __pyx_L1_error)
+ #endif
+ if (__pyx_t_7 >= __pyx_temp) break;
+ }
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(0, 1798, __pyx_L1_error)
+ #else
+ __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1798, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ #endif
+ }
+ } else {
+ __pyx_t_3 = __pyx_t_8(__pyx_t_4);
+ if (unlikely(!__pyx_t_3)) {
+ PyObject* exc_type = PyErr_Occurred();
+ if (exc_type) {
+ if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+ else __PYX_ERR(0, 1798, __pyx_L1_error)
+ }
+ break;
+ }
+ __Pyx_GOTREF(__pyx_t_3);
+ }
+ __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_3);
+ __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1799
+ *
+ * for t in threading.enumerate():
+ * if getattr(t, "pydev_do_not_trace", False): # <<<<<<<<<<<<<<
+ * continue
+ * try:
+ */
+ __pyx_t_3 = __Pyx_GetAttr3(__pyx_v_t, __pyx_n_s_pydev_do_not_trace, Py_False); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1799, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1799, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (__pyx_t_6) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1800
+ * for t in threading.enumerate():
+ * if getattr(t, "pydev_do_not_trace", False):
+ * continue # <<<<<<<<<<<<<<
+ * try:
+ * additional_info = t.additional_info
+ */
+ goto __pyx_L6_continue;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1799
+ *
+ * for t in threading.enumerate():
+ * if getattr(t, "pydev_do_not_trace", False): # <<<<<<<<<<<<<<
+ * continue
+ * try:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1801
+ * if getattr(t, "pydev_do_not_trace", False):
+ * continue
+ * try: # <<<<<<<<<<<<<<
+ * additional_info = t.additional_info
+ * if additional_info is None:
+ */
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
+ __Pyx_XGOTREF(__pyx_t_9);
+ __Pyx_XGOTREF(__pyx_t_10);
+ __Pyx_XGOTREF(__pyx_t_11);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1802
+ * continue
+ * try:
+ * additional_info = t.additional_info # <<<<<<<<<<<<<<
+ * if additional_info is None:
+ * # i.e.: if we don't have it then it makes no sense to check if it was suspended or is stepping
+ */
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_additional_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1802, __pyx_L9_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_XDECREF_SET(__pyx_v_additional_info, __pyx_t_3);
+ __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1803
+ * try:
+ * additional_info = t.additional_info
+ * if additional_info is None: # <<<<<<<<<<<<<<
+ * # i.e.: if we don't have it then it makes no sense to check if it was suspended or is stepping
+ * continue
+ */
+ __pyx_t_6 = (__pyx_v_additional_info == Py_None);
+ if (__pyx_t_6) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1805
+ * if additional_info is None:
+ * # i.e.: if we don't have it then it makes no sense to check if it was suspended or is stepping
+ * continue # <<<<<<<<<<<<<<
+ * except AttributeError:
+ * continue
+ */
+ goto __pyx_L15_try_continue;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1803
+ * try:
+ * additional_info = t.additional_info
+ * if additional_info is None: # <<<<<<<<<<<<<<
+ * # i.e.: if we don't have it then it makes no sense to check if it was suspended or is stepping
+ * continue
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1801
+ * if getattr(t, "pydev_do_not_trace", False):
+ * continue
+ * try: # <<<<<<<<<<<<<<
+ * additional_info = t.additional_info
+ * if additional_info is None:
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ goto __pyx_L16_try_end;
+ __pyx_L9_error:;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1806
+ * # i.e.: if we don't have it then it makes no sense to check if it was suspended or is stepping
+ * continue
+ * except AttributeError: # <<<<<<<<<<<<<<
+ * continue
+ * if additional_info.pydev_step_cmd != -1 or additional_info.pydev_state == 2:
+ */
+ __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
+ if (__pyx_t_12) {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.update_monitor_events", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(0, 1806, __pyx_L11_except_error)
+ __Pyx_XGOTREF(__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_2);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1807
+ * continue
+ * except AttributeError:
+ * continue # <<<<<<<<<<<<<<
+ * if additional_info.pydev_step_cmd != -1 or additional_info.pydev_state == 2:
+ * suspend_requested = True
+ */
+ goto __pyx_L18_except_continue;
+ __pyx_L18_except_continue:;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ goto __pyx_L15_try_continue;
+ }
+ goto __pyx_L11_except_error;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1801
+ * if getattr(t, "pydev_do_not_trace", False):
+ * continue
+ * try: # <<<<<<<<<<<<<<
+ * additional_info = t.additional_info
+ * if additional_info is None:
+ */
+ __pyx_L11_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_XGIVEREF(__pyx_t_10);
+ __Pyx_XGIVEREF(__pyx_t_11);
+ __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
+ goto __pyx_L1_error;
+ __pyx_L15_try_continue:;
+ __Pyx_XGIVEREF(__pyx_t_9);
+ __Pyx_XGIVEREF(__pyx_t_10);
+ __Pyx_XGIVEREF(__pyx_t_11);
+ __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
+ goto __pyx_L6_continue;
+ __pyx_L16_try_end:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1808
+ * except AttributeError:
+ * continue
+ * if additional_info.pydev_step_cmd != -1 or additional_info.pydev_state == 2: # <<<<<<<<<<<<<<
+ * suspend_requested = True
+ * break
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_additional_info, __pyx_n_s_pydev_step_cmd); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1808, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_13 = (__Pyx_PyInt_BoolNeObjC(__pyx_t_2, __pyx_int_neg_1, -1L, 0)); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 1808, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (!__pyx_t_13) {
+ } else {
+ __pyx_t_6 = __pyx_t_13;
+ goto __pyx_L21_bool_binop_done;
+ }
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_additional_info, __pyx_n_s_pydev_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1808, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_13 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_2, __pyx_int_2, 2, 0)); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 1808, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_6 = __pyx_t_13;
+ __pyx_L21_bool_binop_done:;
+ if (__pyx_t_6) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1809
+ * continue
+ * if additional_info.pydev_step_cmd != -1 or additional_info.pydev_state == 2:
+ * suspend_requested = True # <<<<<<<<<<<<<<
+ * break
+ *
+ */
+ __Pyx_INCREF(Py_True);
+ __Pyx_DECREF_SET(__pyx_v_suspend_requested, Py_True);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1810
+ * if additional_info.pydev_step_cmd != -1 or additional_info.pydev_state == 2:
+ * suspend_requested = True
+ * break # <<<<<<<<<<<<<<
+ *
+ * required_events = 0
+ */
+ goto __pyx_L7_break;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1808
+ * except AttributeError:
+ * continue
+ * if additional_info.pydev_step_cmd != -1 or additional_info.pydev_state == 2: # <<<<<<<<<<<<<<
+ * suspend_requested = True
+ * break
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1798
+ * suspend_requested = False
+ *
+ * for t in threading.enumerate(): # <<<<<<<<<<<<<<
+ * if getattr(t, "pydev_do_not_trace", False):
+ * continue
+ */
+ __pyx_L6_continue:;
+ }
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ goto __pyx_L23_for_end;
+ __pyx_L7_break:;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ goto __pyx_L23_for_end;
+ __pyx_L23_for_end:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1795
+ * return
+ *
+ * if suspend_requested is None: # <<<<<<<<<<<<<<
+ * suspend_requested = False
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1812
+ * break
+ *
+ * required_events = 0 # <<<<<<<<<<<<<<
+ *
+ * has_caught_exception_breakpoint_in_pydb = (
+ */
+ __Pyx_INCREF(__pyx_int_0);
+ __pyx_v_required_events = __pyx_int_0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1815
+ *
+ * has_caught_exception_breakpoint_in_pydb = (
+ * py_db.break_on_caught_exceptions or py_db.break_on_user_uncaught_exceptions or py_db.has_plugin_exception_breaks # <<<<<<<<<<<<<<
+ * )
+ *
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_break_on_caught_exceptions); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1815, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1815, __pyx_L1_error)
+ if (!__pyx_t_6) {
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ } else {
+ __Pyx_INCREF(__pyx_t_2);
+ __pyx_t_4 = __pyx_t_2;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ goto __pyx_L24_bool_binop_done;
+ }
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_break_on_user_uncaught_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1815, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1815, __pyx_L1_error)
+ if (!__pyx_t_6) {
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ } else {
+ __Pyx_INCREF(__pyx_t_2);
+ __pyx_t_4 = __pyx_t_2;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ goto __pyx_L24_bool_binop_done;
+ }
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_has_plugin_exception_breaks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1815, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_2);
+ __pyx_t_4 = __pyx_t_2;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_L24_bool_binop_done:;
+ __pyx_v_has_caught_exception_breakpoint_in_pydb = __pyx_t_4;
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1818
+ * )
+ *
+ * break_on_uncaught_exceptions = py_db.break_on_uncaught_exceptions # <<<<<<<<<<<<<<
+ *
+ * if has_caught_exception_breakpoint_in_pydb:
+ */
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_break_on_uncaught_exceptions); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1818, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_v_break_on_uncaught_exceptions = __pyx_t_4;
+ __pyx_t_4 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1820
+ * break_on_uncaught_exceptions = py_db.break_on_uncaught_exceptions
+ *
+ * if has_caught_exception_breakpoint_in_pydb: # <<<<<<<<<<<<<<
+ * required_events |= monitor.events.RAISE | monitor.events.PY_UNWIND
+ * # print('track RAISE')
+ */
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_has_caught_exception_breakpoint_in_pydb); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1820, __pyx_L1_error)
+ if (__pyx_t_6) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1821
+ *
+ * if has_caught_exception_breakpoint_in_pydb:
+ * required_events |= monitor.events.RAISE | monitor.events.PY_UNWIND # <<<<<<<<<<<<<<
+ * # print('track RAISE')
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.RAISE, _raise_event)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1821, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_events); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1821, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_RAISE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1821, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_monitor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1821, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_events); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1821, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_PY_UNWIND); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1821, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyNumber_Or(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1821, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = PyNumber_InPlaceOr(__pyx_v_required_events, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1821, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF_SET(__pyx_v_required_events, __pyx_t_2);
+ __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1823
+ * required_events |= monitor.events.RAISE | monitor.events.PY_UNWIND
+ * # print('track RAISE')
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.RAISE, _raise_event) # <<<<<<<<<<<<<<
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_UNWIND, _unwind_event)
+ * else:
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_monitor); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1823, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_register_callback); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1823, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1823, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_monitor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1823, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_events); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1823, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_RAISE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1823, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __pyx_t_14 = __Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc(__pyx_f_29_pydevd_sys_monitoring_cython__raise_event); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1823, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __pyx_t_15 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_15)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_15);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_15, __pyx_t_1, __pyx_t_3, __pyx_t_14};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1823, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1824
+ * # print('track RAISE')
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.RAISE, _raise_event)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_UNWIND, _unwind_event) # <<<<<<<<<<<<<<
+ * else:
+ * if break_on_uncaught_exceptions:
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1824, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_register_callback); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1824, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1824, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_monitor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1824, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_events); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1824, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_PY_UNWIND); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1824, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc(__pyx_f_29_pydevd_sys_monitoring_cython__unwind_event); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1824, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_15 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_14))) {
+ __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_14);
+ if (likely(__pyx_t_15)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
+ __Pyx_INCREF(__pyx_t_15);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_14, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_15, __pyx_t_4, __pyx_t_3, __pyx_t_1};
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1824, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1820
+ * break_on_uncaught_exceptions = py_db.break_on_uncaught_exceptions
+ *
+ * if has_caught_exception_breakpoint_in_pydb: # <<<<<<<<<<<<<<
+ * required_events |= monitor.events.RAISE | monitor.events.PY_UNWIND
+ * # print('track RAISE')
+ */
+ goto __pyx_L27;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1826
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_UNWIND, _unwind_event)
+ * else:
+ * if break_on_uncaught_exceptions: # <<<<<<<<<<<<<<
+ * required_events |= monitor.events.PY_UNWIND
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_UNWIND, _unwind_event)
+ */
+ /*else*/ {
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_break_on_uncaught_exceptions); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1826, __pyx_L1_error)
+ if (__pyx_t_6) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1827
+ * else:
+ * if break_on_uncaught_exceptions:
+ * required_events |= monitor.events.PY_UNWIND # <<<<<<<<<<<<<<
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_UNWIND, _unwind_event)
+ * else:
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_monitor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1827, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_events); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1827, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_PY_UNWIND); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1827, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __pyx_t_14 = PyNumber_InPlaceOr(__pyx_v_required_events, __pyx_t_2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1827, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF_SET(__pyx_v_required_events, __pyx_t_14);
+ __pyx_t_14 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1828
+ * if break_on_uncaught_exceptions:
+ * required_events |= monitor.events.PY_UNWIND
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_UNWIND, _unwind_event) # <<<<<<<<<<<<<<
+ * else:
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.RAISE, None)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_monitor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1828, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_register_callback); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1828, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1828, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_monitor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1828, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_events); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1828, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_PY_UNWIND); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1828, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc(__pyx_f_29_pydevd_sys_monitoring_cython__unwind_event); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1828, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_15 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_15)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_15);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_15, __pyx_t_2, __pyx_t_3, __pyx_t_4};
+ __pyx_t_14 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1828, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1826
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_UNWIND, _unwind_event)
+ * else:
+ * if break_on_uncaught_exceptions: # <<<<<<<<<<<<<<
+ * required_events |= monitor.events.PY_UNWIND
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_UNWIND, _unwind_event)
+ */
+ goto __pyx_L28;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1830
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_UNWIND, _unwind_event)
+ * else:
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.RAISE, None) # <<<<<<<<<<<<<<
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_UNWIND, None)
+ *
+ */
+ /*else*/ {
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_monitor); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1830, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_register_callback); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1830, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1830, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_monitor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1830, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_events); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1830, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_RAISE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1830, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_t_1, __pyx_t_3, Py_None};
+ __pyx_t_14 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1830, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1831
+ * else:
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.RAISE, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_UNWIND, None) # <<<<<<<<<<<<<<
+ *
+ * has_breaks = py_db.has_plugin_line_breaks
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1831, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_register_callback); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1831, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1831, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_monitor); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1831, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_events); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1831, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_PY_UNWIND); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1831, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_t_4, __pyx_t_1, Py_None};
+ __pyx_t_14 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1831, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ }
+ __pyx_L28:;
+ }
+ __pyx_L27:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1833
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_UNWIND, None)
+ *
+ * has_breaks = py_db.has_plugin_line_breaks # <<<<<<<<<<<<<<
+ * if not has_breaks:
+ * if py_db.function_breakpoint_name_to_breakpoint:
+ */
+ __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_has_plugin_line_breaks); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1833, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __pyx_v_has_breaks = __pyx_t_14;
+ __pyx_t_14 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1834
+ *
+ * has_breaks = py_db.has_plugin_line_breaks
+ * if not has_breaks: # <<<<<<<<<<<<<<
+ * if py_db.function_breakpoint_name_to_breakpoint:
+ * has_breaks = True
+ */
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_has_breaks); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1834, __pyx_L1_error)
+ __pyx_t_13 = (!__pyx_t_6);
+ if (__pyx_t_13) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1835
+ * has_breaks = py_db.has_plugin_line_breaks
+ * if not has_breaks:
+ * if py_db.function_breakpoint_name_to_breakpoint: # <<<<<<<<<<<<<<
+ * has_breaks = True
+ * else:
+ */
+ __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_function_breakpoint_name_to_brea); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1835, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 1835, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ if (__pyx_t_13) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1836
+ * if not has_breaks:
+ * if py_db.function_breakpoint_name_to_breakpoint:
+ * has_breaks = True # <<<<<<<<<<<<<<
+ * else:
+ * file_to_line_to_breakpoints = py_db.breakpoints
+ */
+ __Pyx_INCREF(Py_True);
+ __Pyx_DECREF_SET(__pyx_v_has_breaks, Py_True);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1835
+ * has_breaks = py_db.has_plugin_line_breaks
+ * if not has_breaks:
+ * if py_db.function_breakpoint_name_to_breakpoint: # <<<<<<<<<<<<<<
+ * has_breaks = True
+ * else:
+ */
+ goto __pyx_L30;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1838
+ * has_breaks = True
+ * else:
+ * file_to_line_to_breakpoints = py_db.breakpoints # <<<<<<<<<<<<<<
+ * for line_to_breakpoints in file_to_line_to_breakpoints.values():
+ * if line_to_breakpoints:
+ */
+ /*else*/ {
+ __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_breakpoints); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1838, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __pyx_v_file_to_line_to_breakpoints = __pyx_t_14;
+ __pyx_t_14 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1839
+ * else:
+ * file_to_line_to_breakpoints = py_db.breakpoints
+ * for line_to_breakpoints in file_to_line_to_breakpoints.values(): # <<<<<<<<<<<<<<
+ * if line_to_breakpoints:
+ * has_breaks = True
+ */
+ __pyx_t_7 = 0;
+ if (unlikely(__pyx_v_file_to_line_to_breakpoints == Py_None)) {
+ PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
+ __PYX_ERR(0, 1839, __pyx_L1_error)
+ }
+ __pyx_t_3 = __Pyx_dict_iterator(__pyx_v_file_to_line_to_breakpoints, 0, __pyx_n_s_values, (&__pyx_t_16), (&__pyx_t_12)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1839, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_14);
+ __pyx_t_14 = __pyx_t_3;
+ __pyx_t_3 = 0;
+ while (1) {
+ __pyx_t_17 = __Pyx_dict_iter_next(__pyx_t_14, __pyx_t_16, &__pyx_t_7, NULL, &__pyx_t_3, NULL, __pyx_t_12);
+ if (unlikely(__pyx_t_17 == 0)) break;
+ if (unlikely(__pyx_t_17 == -1)) __PYX_ERR(0, 1839, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_XDECREF_SET(__pyx_v_line_to_breakpoints, __pyx_t_3);
+ __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1840
+ * file_to_line_to_breakpoints = py_db.breakpoints
+ * for line_to_breakpoints in file_to_line_to_breakpoints.values():
+ * if line_to_breakpoints: # <<<<<<<<<<<<<<
+ * has_breaks = True
+ * break
+ */
+ __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_v_line_to_breakpoints); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 1840, __pyx_L1_error)
+ if (__pyx_t_13) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1841
+ * for line_to_breakpoints in file_to_line_to_breakpoints.values():
+ * if line_to_breakpoints:
+ * has_breaks = True # <<<<<<<<<<<<<<
+ * break
+ *
+ */
+ __Pyx_INCREF(Py_True);
+ __Pyx_DECREF_SET(__pyx_v_has_breaks, Py_True);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1842
+ * if line_to_breakpoints:
+ * has_breaks = True
+ * break # <<<<<<<<<<<<<<
+ *
+ * if has_breaks or suspend_requested:
+ */
+ goto __pyx_L32_break;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1840
+ * file_to_line_to_breakpoints = py_db.breakpoints
+ * for line_to_breakpoints in file_to_line_to_breakpoints.values():
+ * if line_to_breakpoints: # <<<<<<<<<<<<<<
+ * has_breaks = True
+ * break
+ */
+ }
+ }
+ __pyx_L32_break:;
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ }
+ __pyx_L30:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1834
+ *
+ * has_breaks = py_db.has_plugin_line_breaks
+ * if not has_breaks: # <<<<<<<<<<<<<<
+ * if py_db.function_breakpoint_name_to_breakpoint:
+ * has_breaks = True
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1844
+ * break
+ *
+ * if has_breaks or suspend_requested: # <<<<<<<<<<<<<<
+ * # print('track PY_START|PY_RESUME, suspend_requested=', suspend_requested)
+ * required_events |= monitor.events.PY_START | monitor.events.PY_RESUME
+ */
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_has_breaks); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1844, __pyx_L1_error)
+ if (!__pyx_t_6) {
+ } else {
+ __pyx_t_13 = __pyx_t_6;
+ goto __pyx_L35_bool_binop_done;
+ }
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_suspend_requested); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1844, __pyx_L1_error)
+ __pyx_t_13 = __pyx_t_6;
+ __pyx_L35_bool_binop_done:;
+ if (__pyx_t_13) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1846
+ * if has_breaks or suspend_requested:
+ * # print('track PY_START|PY_RESUME, suspend_requested=', suspend_requested)
+ * required_events |= monitor.events.PY_START | monitor.events.PY_RESUME # <<<<<<<<<<<<<<
+ *
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, _start_method_event)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_monitor); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1846, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_events); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1846, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_PY_START); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1846, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_monitor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1846, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_events); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1846, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_PY_RESUME); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1846, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyNumber_Or(__pyx_t_14, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1846, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyNumber_InPlaceOr(__pyx_v_required_events, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1846, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF_SET(__pyx_v_required_events, __pyx_t_3);
+ __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1848
+ * required_events |= monitor.events.PY_START | monitor.events.PY_RESUME
+ *
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, _start_method_event) # <<<<<<<<<<<<<<
+ * # monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, _resume_method_event)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, _line_event)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_monitor); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1848, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_register_callback); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1848, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1848, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1848, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_events); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1848, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_PY_START); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1848, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset(__pyx_f_29_pydevd_sys_monitoring_cython__start_method_event); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1848, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_15 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_14))) {
+ __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_14);
+ if (likely(__pyx_t_15)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
+ __Pyx_INCREF(__pyx_t_15);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_14, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_15, __pyx_t_1, __pyx_t_4, __pyx_t_2};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1848, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1850
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, _start_method_event)
+ * # monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, _resume_method_event)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, _line_event) # <<<<<<<<<<<<<<
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, _jump_event)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, _return_event)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_monitor); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1850, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_register_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1850, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1850, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1850, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_events); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1850, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_LINE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1850, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line(__pyx_f_29_pydevd_sys_monitoring_cython__line_event); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1850, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_15 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_15)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_15);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_15, __pyx_t_14, __pyx_t_4, __pyx_t_1};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1850, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1851
+ * # monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, _resume_method_event)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, _line_event)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, _jump_event) # <<<<<<<<<<<<<<
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, _return_event)
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_monitor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1851, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_register_callback); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1851, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1851, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1851, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_events); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1851, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_JUMP); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1851, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __pyx_t_14 = __Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset(__pyx_f_29_pydevd_sys_monitoring_cython__jump_event); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1851, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __pyx_t_15 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_15)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_15);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_15, __pyx_t_2, __pyx_t_4, __pyx_t_14};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1851, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1852
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, _line_event)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, _jump_event)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, _return_event) # <<<<<<<<<<<<<<
+ *
+ * else:
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_monitor); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1852, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_register_callback); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1852, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1852, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1852, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_events); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1852, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_PY_RETURN); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1852, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval(__pyx_f_29_pydevd_sys_monitoring_cython__return_event); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1852, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_15 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_14))) {
+ __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_14);
+ if (likely(__pyx_t_15)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
+ __Pyx_INCREF(__pyx_t_15);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_14, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_15, __pyx_t_1, __pyx_t_4, __pyx_t_2};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1852, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1844
+ * break
+ *
+ * if has_breaks or suspend_requested: # <<<<<<<<<<<<<<
+ * # print('track PY_START|PY_RESUME, suspend_requested=', suspend_requested)
+ * required_events |= monitor.events.PY_START | monitor.events.PY_RESUME
+ */
+ goto __pyx_L34;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1855
+ *
+ * else:
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, None) # <<<<<<<<<<<<<<
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, None)
+ */
+ /*else*/ {
+ __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_monitor); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1855, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_register_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1855, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1855, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1855, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_events); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1855, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_PY_START); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1855, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_1, __pyx_t_14, __pyx_t_4, Py_None};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1855, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1856
+ * else:
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, None) # <<<<<<<<<<<<<<
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, None)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_monitor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1856, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_register_callback); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1856, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1856, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_monitor); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1856, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_events); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1856, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_PY_RESUME); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1856, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_1, __pyx_t_2, __pyx_t_14, Py_None};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1856, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1857
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, None) # <<<<<<<<<<<<<<
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, None)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1857, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_register_callback); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1857, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1857, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_monitor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1857, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_events); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1857, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_LINE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1857, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_14))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_14);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_14, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_1, __pyx_t_4, __pyx_t_2, Py_None};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1857, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1858
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, None) # <<<<<<<<<<<<<<
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, None)
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_monitor); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1858, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_register_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1858, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1858, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1858, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_events); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1858, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_JUMP); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1858, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_1, __pyx_t_14, __pyx_t_4, Py_None};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1858, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1859
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, None)
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, None) # <<<<<<<<<<<<<<
+ *
+ * monitor.set_events(DEBUGGER_ID, required_events)
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_monitor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1859, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_register_callback); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1859, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1859, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_monitor); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1859, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_events); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1859, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_PY_RETURN); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1859, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[4] = {__pyx_t_1, __pyx_t_2, __pyx_t_14, Py_None};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1859, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_L34:;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1861
+ * monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, None)
+ *
+ * monitor.set_events(DEBUGGER_ID, required_events) # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1861, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_set_events); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1861, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1861, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_2 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_14))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_14);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_14, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_4, __pyx_v_required_events};
+ __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1861, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1779
+ *
+ *
+ * def update_monitor_events(suspend_requested: Optional[bool] = None) -> None: # <<<<<<<<<<<<<<
+ * """
+ * This should be called when breakpoints change.
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_14);
+ __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.update_monitor_events", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_py_db);
+ __Pyx_XDECREF(__pyx_v_t);
+ __Pyx_XDECREF(__pyx_v_additional_info);
+ __Pyx_XDECREF(__pyx_v_required_events);
+ __Pyx_XDECREF(__pyx_v_has_caught_exception_breakpoint_in_pydb);
+ __Pyx_XDECREF(__pyx_v_break_on_uncaught_exceptions);
+ __Pyx_XDECREF(__pyx_v_has_breaks);
+ __Pyx_XDECREF(__pyx_v_file_to_line_to_breakpoints);
+ __Pyx_XDECREF(__pyx_v_line_to_breakpoints);
+ __Pyx_XDECREF(__pyx_v_suspend_requested);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":1864
+ *
+ *
+ * def restart_events() -> None: # <<<<<<<<<<<<<<
+ * # Note: if breakpoints change, update_monitor_events usually needs to be
+ * # called first, then the line event tracing must be set for existing frames
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_17restart_events(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_17restart_events = {"restart_events", (PyCFunction)__pyx_pw_29_pydevd_sys_monitoring_cython_17restart_events, METH_NOARGS, 0};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_17restart_events(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("restart_events (wrapper)", 0);
+ __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_16restart_events(__pyx_self);
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_16restart_events(CYTHON_UNUSED PyObject *__pyx_self) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ unsigned int __pyx_t_4;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("restart_events", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1868
+ * # called first, then the line event tracing must be set for existing frames
+ * # and then this function must be called at the end.
+ * monitor.restart_events() # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_monitor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1868, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_restart_events); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1868, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = NULL;
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_4 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1868, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1864
+ *
+ *
+ * def restart_events() -> None: # <<<<<<<<<<<<<<
+ * # Note: if breakpoints change, update_monitor_events usually needs to be
+ * # called first, then the line event tracing must be set for existing frames
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.restart_events", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":1873
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _is_same_frame(PyDBAdditionalThreadInfo info, target_frame, current_frame): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _is_same_frame(info, target_frame, current_frame):
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython__is_same_frame(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info, PyObject *__pyx_v_target_frame, PyObject *__pyx_v_current_frame) {
+ PyObject *__pyx_v_f = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ int __pyx_t_1;
+ int __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_is_same_frame", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1878
+ * # ENDIF
+ * # fmt: on
+ * if target_frame is current_frame: # <<<<<<<<<<<<<<
+ * return True
+ *
+ */
+ __pyx_t_1 = (__pyx_v_target_frame == __pyx_v_current_frame);
+ if (__pyx_t_1) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1879
+ * # fmt: on
+ * if target_frame is current_frame:
+ * return True # <<<<<<<<<<<<<<
+ *
+ * if info.pydev_use_scoped_step_frame:
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_True);
+ __pyx_r = Py_True;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1878
+ * # ENDIF
+ * # fmt: on
+ * if target_frame is current_frame: # <<<<<<<<<<<<<<
+ * return True
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1881
+ * return True
+ *
+ * if info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
+ * # If using scoped step we don't check the target, we just need to check
+ * # if the current matches the same heuristic where the target was defined.
+ */
+ if (__pyx_v_info->pydev_use_scoped_step_frame) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1884
+ * # If using scoped step we don't check the target, we just need to check
+ * # if the current matches the same heuristic where the target was defined.
+ * if target_frame is not None and current_frame is not None: # <<<<<<<<<<<<<<
+ * if target_frame.f_code.co_filename == current_frame.f_code.co_filename:
+ * # The co_name may be different (it may include the line number), but
+ */
+ __pyx_t_2 = (__pyx_v_target_frame != Py_None);
+ if (__pyx_t_2) {
+ } else {
+ __pyx_t_1 = __pyx_t_2;
+ goto __pyx_L6_bool_binop_done;
+ }
+ __pyx_t_2 = (__pyx_v_current_frame != Py_None);
+ __pyx_t_1 = __pyx_t_2;
+ __pyx_L6_bool_binop_done:;
+ if (__pyx_t_1) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1885
+ * # if the current matches the same heuristic where the target was defined.
+ * if target_frame is not None and current_frame is not None:
+ * if target_frame.f_code.co_filename == current_frame.f_code.co_filename: # <<<<<<<<<<<<<<
+ * # The co_name may be different (it may include the line number), but
+ * # the filename must still be the same.
+ */
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_target_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1885, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1885, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_current_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1885, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1885, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1885, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1885, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (__pyx_t_1) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1888
+ * # The co_name may be different (it may include the line number), but
+ * # the filename must still be the same.
+ * f = current_frame.f_back # <<<<<<<<<<<<<<
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
+ * f = f.f_back
+ */
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_current_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1888, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_v_f = __pyx_t_3;
+ __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1889
+ * # the filename must still be the same.
+ * f = current_frame.f_back
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: # <<<<<<<<<<<<<<
+ * f = f.f_back
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
+ */
+ __pyx_t_2 = (__pyx_v_f != Py_None);
+ if (__pyx_t_2) {
+ } else {
+ __pyx_t_1 = __pyx_t_2;
+ goto __pyx_L10_bool_binop_done;
+ }
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1889, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_co_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1889, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1889, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1889, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1889, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1889, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_1 = __pyx_t_2;
+ __pyx_L10_bool_binop_done:;
+ if (__pyx_t_1) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1890
+ * f = current_frame.f_back
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
+ * f = f.f_back # <<<<<<<<<<<<<<
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
+ * return True
+ */
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1890, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_3);
+ __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1891
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
+ * f = f.f_back
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: # <<<<<<<<<<<<<<
+ * return True
+ *
+ */
+ __pyx_t_2 = (__pyx_v_f != Py_None);
+ if (__pyx_t_2) {
+ } else {
+ __pyx_t_1 = __pyx_t_2;
+ goto __pyx_L13_bool_binop_done;
+ }
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1891, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_co_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1891, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1891, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_3, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1891, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1891, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1891, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_1 = __pyx_t_2;
+ __pyx_L13_bool_binop_done:;
+ if (__pyx_t_1) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1892
+ * f = f.f_back
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
+ * return True # <<<<<<<<<<<<<<
+ *
+ * return False
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_True);
+ __pyx_r = Py_True;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1891
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]:
+ * f = f.f_back
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: # <<<<<<<<<<<<<<
+ * return True
+ *
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1889
+ * # the filename must still be the same.
+ * f = current_frame.f_back
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: # <<<<<<<<<<<<<<
+ * f = f.f_back
+ * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]:
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1885
+ * # if the current matches the same heuristic where the target was defined.
+ * if target_frame is not None and current_frame is not None:
+ * if target_frame.f_code.co_filename == current_frame.f_code.co_filename: # <<<<<<<<<<<<<<
+ * # The co_name may be different (it may include the line number), but
+ * # the filename must still be the same.
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1884
+ * # If using scoped step we don't check the target, we just need to check
+ * # if the current matches the same heuristic where the target was defined.
+ * if target_frame is not None and current_frame is not None: # <<<<<<<<<<<<<<
+ * if target_frame.f_code.co_filename == current_frame.f_code.co_filename:
+ * # The co_name may be different (it may include the line number), but
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1881
+ * return True
+ *
+ * if info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<<
+ * # If using scoped step we don't check the target, we just need to check
+ * # if the current matches the same heuristic where the target was defined.
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1894
+ * return True
+ *
+ * return False # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_False);
+ __pyx_r = Py_False;
+ goto __pyx_L0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1873
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _is_same_frame(PyDBAdditionalThreadInfo info, target_frame, current_frame): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _is_same_frame(info, target_frame, current_frame):
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._is_same_frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_f);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "_pydevd_sys_monitoring_cython.pyx":1899
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * def _do_wait_suspend(py_db, ThreadInfo thread_info, frame, event, arg): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _do_wait_suspend(py_db, thread_info, frame, event, arg):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_19_do_wait_suspend(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_19_do_wait_suspend = {"_do_wait_suspend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_19_do_wait_suspend, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_19_do_wait_suspend(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v_py_db = 0;
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_thread_info = 0;
+ PyObject *__pyx_v_frame = 0;
+ PyObject *__pyx_v_event = 0;
+ PyObject *__pyx_v_arg = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[5] = {0,0,0,0,0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("_do_wait_suspend (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_py_db,&__pyx_n_s_thread_info,&__pyx_n_s_frame,&__pyx_n_s_event,&__pyx_n_s_arg,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
+ CYTHON_FALLTHROUGH;
+ case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
+ CYTHON_FALLTHROUGH;
+ case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ CYTHON_FALLTHROUGH;
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ CYTHON_FALLTHROUGH;
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_py_db)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1899, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ CYTHON_FALLTHROUGH;
+ case 1:
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_thread_info)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1899, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("_do_wait_suspend", 1, 5, 5, 1); __PYX_ERR(0, 1899, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 2:
+ if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1899, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("_do_wait_suspend", 1, 5, 5, 2); __PYX_ERR(0, 1899, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 3:
+ if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_event)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1899, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("_do_wait_suspend", 1, 5, 5, 3); __PYX_ERR(0, 1899, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 4:
+ if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1899, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("_do_wait_suspend", 1, 5, 5, 4); __PYX_ERR(0, 1899, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_do_wait_suspend") < 0)) __PYX_ERR(0, 1899, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 5)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
+ values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
+ }
+ __pyx_v_py_db = values[0];
+ __pyx_v_thread_info = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)values[1]);
+ __pyx_v_frame = values[2];
+ __pyx_v_event = values[3];
+ __pyx_v_arg = values[4];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("_do_wait_suspend", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 1899, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._do_wait_suspend", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_thread_info), __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo, 1, "thread_info", 0))) __PYX_ERR(0, 1899, __pyx_L1_error)
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_18_do_wait_suspend(__pyx_self, __pyx_v_py_db, __pyx_v_thread_info, __pyx_v_frame, __pyx_v_event, __pyx_v_arg);
+
+ /* function exit code */
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __pyx_r = NULL;
+ __pyx_L0:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_18_do_wait_suspend(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_py_db, struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v_thread_info, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ unsigned int __pyx_t_4;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("_do_wait_suspend", 1);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1904
+ * # ENDIF
+ * # fmt: on
+ * thread_info.additional_info.trace_suspend_type = "sys_monitor" # <<<<<<<<<<<<<<
+ * py_db.do_wait_suspend(thread_info.thread, frame, event, arg)
+ *
+ */
+ __Pyx_INCREF(__pyx_n_s_sys_monitor);
+ __Pyx_GIVEREF(__pyx_n_s_sys_monitor);
+ __Pyx_GOTREF(__pyx_v_thread_info->additional_info->trace_suspend_type);
+ __Pyx_DECREF(__pyx_v_thread_info->additional_info->trace_suspend_type);
+ __pyx_v_thread_info->additional_info->trace_suspend_type = __pyx_n_s_sys_monitor;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1905
+ * # fmt: on
+ * thread_info.additional_info.trace_suspend_type = "sys_monitor"
+ * py_db.do_wait_suspend(thread_info.thread, frame, event, arg) # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_do_wait_suspend_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1905, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = NULL;
+ __pyx_t_4 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_4 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[5] = {__pyx_t_3, __pyx_v_thread_info->thread, __pyx_v_frame, __pyx_v_event, __pyx_v_arg};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 4+__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1905, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1899
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * def _do_wait_suspend(py_db, ThreadInfo thread_info, frame, event, arg): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _do_wait_suspend(py_db, thread_info, frame, event, arg):
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython._do_wait_suspend", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __pyx_unpickle_ThreadInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
+ * cdef object __pyx_PickleError
+ * cdef object __pyx_result
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_21__pyx_unpickle_ThreadInfo(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_21__pyx_unpickle_ThreadInfo = {"__pyx_unpickle_ThreadInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_21__pyx_unpickle_ThreadInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_21__pyx_unpickle_ThreadInfo(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v___pyx_type = 0;
+ long __pyx_v___pyx_checksum;
+ PyObject *__pyx_v___pyx_state = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[3] = {0,0,0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__pyx_unpickle_ThreadInfo (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ CYTHON_FALLTHROUGH;
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ CYTHON_FALLTHROUGH;
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ CYTHON_FALLTHROUGH;
+ case 1:
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ThreadInfo", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 2:
+ if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ThreadInfo", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_ThreadInfo") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 3)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ }
+ __pyx_v___pyx_type = values[0];
+ __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
+ __pyx_v___pyx_state = values[2];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ThreadInfo", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 1, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.__pyx_unpickle_ThreadInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_20__pyx_unpickle_ThreadInfo(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_20__pyx_unpickle_ThreadInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
+ PyObject *__pyx_v___pyx_PickleError = 0;
+ PyObject *__pyx_v___pyx_result = 0;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ unsigned int __pyx_t_5;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__pyx_unpickle_ThreadInfo", 1);
+
+ /* "(tree fragment)":4
+ * cdef object __pyx_PickleError
+ * cdef object __pyx_result
+ * if __pyx_checksum not in (0xd625bfa, 0xfdc1f18, 0x57c379d): # <<<<<<<<<<<<<<
+ * from pickle import PickleError as __pyx_PickleError
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd625bfa, 0xfdc1f18, 0x57c379d) = (additional_info, thread, thread_ident, trace))" % __pyx_checksum
+ */
+ __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__18, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_2) {
+
+ /* "(tree fragment)":5
+ * cdef object __pyx_result
+ * if __pyx_checksum not in (0xd625bfa, 0xfdc1f18, 0x57c379d):
+ * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<<
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd625bfa, 0xfdc1f18, 0x57c379d) = (additional_info, thread, thread_ident, trace))" % __pyx_checksum
+ * __pyx_result = ThreadInfo.__new__(__pyx_type)
+ */
+ __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_n_s_PickleError);
+ __Pyx_GIVEREF(__pyx_n_s_PickleError);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_1);
+ __pyx_v___pyx_PickleError = __pyx_t_1;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "(tree fragment)":6
+ * if __pyx_checksum not in (0xd625bfa, 0xfdc1f18, 0x57c379d):
+ * from pickle import PickleError as __pyx_PickleError
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd625bfa, 0xfdc1f18, 0x57c379d) = (additional_info, thread, thread_ident, trace))" % __pyx_checksum # <<<<<<<<<<<<<<
+ * __pyx_result = ThreadInfo.__new__(__pyx_type)
+ * if __pyx_state is not None:
+ */
+ __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __PYX_ERR(1, 6, __pyx_L1_error)
+
+ /* "(tree fragment)":4
+ * cdef object __pyx_PickleError
+ * cdef object __pyx_result
+ * if __pyx_checksum not in (0xd625bfa, 0xfdc1f18, 0x57c379d): # <<<<<<<<<<<<<<
+ * from pickle import PickleError as __pyx_PickleError
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd625bfa, 0xfdc1f18, 0x57c379d) = (additional_info, thread, thread_ident, trace))" % __pyx_checksum
+ */
+ }
+
+ /* "(tree fragment)":7
+ * from pickle import PickleError as __pyx_PickleError
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd625bfa, 0xfdc1f18, 0x57c379d) = (additional_info, thread, thread_ident, trace))" % __pyx_checksum
+ * __pyx_result = ThreadInfo.__new__(__pyx_type) # <<<<<<<<<<<<<<
+ * if __pyx_state is not None:
+ * __pyx_unpickle_ThreadInfo__set_state( __pyx_result, __pyx_state)
+ */
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_v___pyx_result = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "(tree fragment)":8
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd625bfa, 0xfdc1f18, 0x57c379d) = (additional_info, thread, thread_ident, trace))" % __pyx_checksum
+ * __pyx_result = ThreadInfo.__new__(__pyx_type)
+ * if __pyx_state is not None: # <<<<<<<<<<<<<<
+ * __pyx_unpickle_ThreadInfo__set_state( __pyx_result, __pyx_state)
+ * return __pyx_result
+ */
+ __pyx_t_2 = (__pyx_v___pyx_state != Py_None);
+ if (__pyx_t_2) {
+
+ /* "(tree fragment)":9
+ * __pyx_result = ThreadInfo.__new__(__pyx_type)
+ * if __pyx_state is not None:
+ * __pyx_unpickle_ThreadInfo__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<<
+ * return __pyx_result
+ * cdef __pyx_unpickle_ThreadInfo__set_state(ThreadInfo __pyx_result, tuple __pyx_state):
+ */
+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 9, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython___pyx_unpickle_ThreadInfo__set_state(((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 9, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "(tree fragment)":8
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd625bfa, 0xfdc1f18, 0x57c379d) = (additional_info, thread, thread_ident, trace))" % __pyx_checksum
+ * __pyx_result = ThreadInfo.__new__(__pyx_type)
+ * if __pyx_state is not None: # <<<<<<<<<<<<<<
+ * __pyx_unpickle_ThreadInfo__set_state( __pyx_result, __pyx_state)
+ * return __pyx_result
+ */
+ }
+
+ /* "(tree fragment)":10
+ * if __pyx_state is not None:
+ * __pyx_unpickle_ThreadInfo__set_state( __pyx_result, __pyx_state)
+ * return __pyx_result # <<<<<<<<<<<<<<
+ * cdef __pyx_unpickle_ThreadInfo__set_state(ThreadInfo __pyx_result, tuple __pyx_state):
+ * __pyx_result.additional_info = __pyx_state[0]; __pyx_result.thread = __pyx_state[1]; __pyx_result.thread_ident = __pyx_state[2]; __pyx_result.trace = __pyx_state[3]
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v___pyx_result);
+ __pyx_r = __pyx_v___pyx_result;
+ goto __pyx_L0;
+
+ /* "(tree fragment)":1
+ * def __pyx_unpickle_ThreadInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
+ * cdef object __pyx_PickleError
+ * cdef object __pyx_result
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.__pyx_unpickle_ThreadInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v___pyx_PickleError);
+ __Pyx_XDECREF(__pyx_v___pyx_result);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "(tree fragment)":11
+ * __pyx_unpickle_ThreadInfo__set_state( __pyx_result, __pyx_state)
+ * return __pyx_result
+ * cdef __pyx_unpickle_ThreadInfo__set_state(ThreadInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_result.additional_info = __pyx_state[0]; __pyx_result.thread = __pyx_state[1]; __pyx_result.thread_ident = __pyx_state[2]; __pyx_result.trace = __pyx_state[3]
+ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython___pyx_unpickle_ThreadInfo__set_state(struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ unsigned long __pyx_t_2;
+ int __pyx_t_3;
+ Py_ssize_t __pyx_t_4;
+ int __pyx_t_5;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ unsigned int __pyx_t_9;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__pyx_unpickle_ThreadInfo__set_state", 1);
+
+ /* "(tree fragment)":12
+ * return __pyx_result
+ * cdef __pyx_unpickle_ThreadInfo__set_state(ThreadInfo __pyx_result, tuple __pyx_state):
+ * __pyx_result.additional_info = __pyx_state[0]; __pyx_result.thread = __pyx_state[1]; __pyx_result.thread_ident = __pyx_state[2]; __pyx_result.trace = __pyx_state[3] # <<<<<<<<<<<<<<
+ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
+ * __pyx_result.__dict__.update(__pyx_state[4])
+ */
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GIVEREF(__pyx_t_1);
+ __Pyx_GOTREF((PyObject *)__pyx_v___pyx_result->additional_info);
+ __Pyx_DECREF((PyObject *)__pyx_v___pyx_result->additional_info);
+ __pyx_v___pyx_result->additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_1);
+ __pyx_t_1 = 0;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GIVEREF(__pyx_t_1);
+ __Pyx_GOTREF(__pyx_v___pyx_result->thread);
+ __Pyx_DECREF(__pyx_v___pyx_result->thread);
+ __pyx_v___pyx_result->thread = __pyx_t_1;
+ __pyx_t_1 = 0;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyInt_As_unsigned_long(__pyx_t_1); if (unlikely((__pyx_t_2 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v___pyx_result->thread_ident = __pyx_t_2;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GIVEREF(__pyx_t_1);
+ __Pyx_GOTREF(__pyx_v___pyx_result->trace);
+ __Pyx_DECREF(__pyx_v___pyx_result->trace);
+ __pyx_v___pyx_result->trace = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "(tree fragment)":13
+ * cdef __pyx_unpickle_ThreadInfo__set_state(ThreadInfo __pyx_result, tuple __pyx_state):
+ * __pyx_result.additional_info = __pyx_state[0]; __pyx_result.thread = __pyx_state[1]; __pyx_result.thread_ident = __pyx_state[2]; __pyx_result.trace = __pyx_state[3]
+ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<<
+ * __pyx_result.__dict__.update(__pyx_state[4])
+ */
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
+ __PYX_ERR(1, 13, __pyx_L1_error)
+ }
+ __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
+ __pyx_t_5 = (__pyx_t_4 > 4);
+ if (__pyx_t_5) {
+ } else {
+ __pyx_t_3 = __pyx_t_5;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
+ __pyx_t_3 = __pyx_t_5;
+ __pyx_L4_bool_binop_done:;
+ if (__pyx_t_3) {
+
+ /* "(tree fragment)":14
+ * __pyx_result.additional_info = __pyx_state[0]; __pyx_result.thread = __pyx_state[1]; __pyx_result.thread_ident = __pyx_state[2]; __pyx_result.trace = __pyx_state[3]
+ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
+ * __pyx_result.__dict__.update(__pyx_state[4]) # <<<<<<<<<<<<<<
+ */
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 14, __pyx_L1_error)
+ }
+ __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_9 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_6};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "(tree fragment)":13
+ * cdef __pyx_unpickle_ThreadInfo__set_state(ThreadInfo __pyx_result, tuple __pyx_state):
+ * __pyx_result.additional_info = __pyx_state[0]; __pyx_result.thread = __pyx_state[1]; __pyx_result.thread_ident = __pyx_state[2]; __pyx_result.trace = __pyx_state[3]
+ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<<
+ * __pyx_result.__dict__.update(__pyx_state[4])
+ */
+ }
+
+ /* "(tree fragment)":11
+ * __pyx_unpickle_ThreadInfo__set_state( __pyx_result, __pyx_state)
+ * return __pyx_result
+ * cdef __pyx_unpickle_ThreadInfo__set_state(ThreadInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_result.additional_info = __pyx_state[0]; __pyx_result.thread = __pyx_state[1]; __pyx_result.thread_ident = __pyx_state[2]; __pyx_result.trace = __pyx_state[3]
+ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_8);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.__pyx_unpickle_ThreadInfo__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __pyx_unpickle_FuncCodeInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
+ * cdef object __pyx_PickleError
+ * cdef object __pyx_result
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_23__pyx_unpickle_FuncCodeInfo(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_23__pyx_unpickle_FuncCodeInfo = {"__pyx_unpickle_FuncCodeInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_23__pyx_unpickle_FuncCodeInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_23__pyx_unpickle_FuncCodeInfo(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v___pyx_type = 0;
+ long __pyx_v___pyx_checksum;
+ PyObject *__pyx_v___pyx_state = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[3] = {0,0,0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__pyx_unpickle_FuncCodeInfo (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ CYTHON_FALLTHROUGH;
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ CYTHON_FALLTHROUGH;
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ CYTHON_FALLTHROUGH;
+ case 1:
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FuncCodeInfo", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 2:
+ if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FuncCodeInfo", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_FuncCodeInfo") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 3)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ }
+ __pyx_v___pyx_type = values[0];
+ __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
+ __pyx_v___pyx_state = values[2];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FuncCodeInfo", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 1, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.__pyx_unpickle_FuncCodeInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_22__pyx_unpickle_FuncCodeInfo(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_22__pyx_unpickle_FuncCodeInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
+ PyObject *__pyx_v___pyx_PickleError = 0;
+ PyObject *__pyx_v___pyx_result = 0;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ unsigned int __pyx_t_5;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__pyx_unpickle_FuncCodeInfo", 1);
+
+ /* "(tree fragment)":4
+ * cdef object __pyx_PickleError
+ * cdef object __pyx_result
+ * if __pyx_checksum not in (0x3f403d2, 0x5f5636f, 0xb44aa80): # <<<<<<<<<<<<<<
+ * from pickle import PickleError as __pyx_PickleError
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3f403d2, 0x5f5636f, 0xb44aa80) = (abs_path_filename, always_filtered_out, always_skip_code, bp_line_to_breakpoint, breakpoint_found, canonical_normalized_filename, co_filename, co_name, code_obj, filtered_out_force_checked, function_breakpoint, function_breakpoint_found, plugin_call_breakpoint_found, plugin_call_stepping, plugin_line_breakpoint_found, plugin_line_stepping, plugin_return_stepping, pydb_mtime, try_except_container_obj))" % __pyx_checksum
+ */
+ __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__20, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_2) {
+
+ /* "(tree fragment)":5
+ * cdef object __pyx_result
+ * if __pyx_checksum not in (0x3f403d2, 0x5f5636f, 0xb44aa80):
+ * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<<
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3f403d2, 0x5f5636f, 0xb44aa80) = (abs_path_filename, always_filtered_out, always_skip_code, bp_line_to_breakpoint, breakpoint_found, canonical_normalized_filename, co_filename, co_name, code_obj, filtered_out_force_checked, function_breakpoint, function_breakpoint_found, plugin_call_breakpoint_found, plugin_call_stepping, plugin_line_breakpoint_found, plugin_line_stepping, plugin_return_stepping, pydb_mtime, try_except_container_obj))" % __pyx_checksum
+ * __pyx_result = FuncCodeInfo.__new__(__pyx_type)
+ */
+ __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_n_s_PickleError);
+ __Pyx_GIVEREF(__pyx_n_s_PickleError);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_1);
+ __pyx_v___pyx_PickleError = __pyx_t_1;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "(tree fragment)":6
+ * if __pyx_checksum not in (0x3f403d2, 0x5f5636f, 0xb44aa80):
+ * from pickle import PickleError as __pyx_PickleError
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3f403d2, 0x5f5636f, 0xb44aa80) = (abs_path_filename, always_filtered_out, always_skip_code, bp_line_to_breakpoint, breakpoint_found, canonical_normalized_filename, co_filename, co_name, code_obj, filtered_out_force_checked, function_breakpoint, function_breakpoint_found, plugin_call_breakpoint_found, plugin_call_stepping, plugin_line_breakpoint_found, plugin_line_stepping, plugin_return_stepping, pydb_mtime, try_except_container_obj))" % __pyx_checksum # <<<<<<<<<<<<<<
+ * __pyx_result = FuncCodeInfo.__new__(__pyx_type)
+ * if __pyx_state is not None:
+ */
+ __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __PYX_ERR(1, 6, __pyx_L1_error)
+
+ /* "(tree fragment)":4
+ * cdef object __pyx_PickleError
+ * cdef object __pyx_result
+ * if __pyx_checksum not in (0x3f403d2, 0x5f5636f, 0xb44aa80): # <<<<<<<<<<<<<<
+ * from pickle import PickleError as __pyx_PickleError
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3f403d2, 0x5f5636f, 0xb44aa80) = (abs_path_filename, always_filtered_out, always_skip_code, bp_line_to_breakpoint, breakpoint_found, canonical_normalized_filename, co_filename, co_name, code_obj, filtered_out_force_checked, function_breakpoint, function_breakpoint_found, plugin_call_breakpoint_found, plugin_call_stepping, plugin_line_breakpoint_found, plugin_line_stepping, plugin_return_stepping, pydb_mtime, try_except_container_obj))" % __pyx_checksum
+ */
+ }
+
+ /* "(tree fragment)":7
+ * from pickle import PickleError as __pyx_PickleError
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3f403d2, 0x5f5636f, 0xb44aa80) = (abs_path_filename, always_filtered_out, always_skip_code, bp_line_to_breakpoint, breakpoint_found, canonical_normalized_filename, co_filename, co_name, code_obj, filtered_out_force_checked, function_breakpoint, function_breakpoint_found, plugin_call_breakpoint_found, plugin_call_stepping, plugin_line_breakpoint_found, plugin_line_stepping, plugin_return_stepping, pydb_mtime, try_except_container_obj))" % __pyx_checksum
+ * __pyx_result = FuncCodeInfo.__new__(__pyx_type) # <<<<<<<<<<<<<<
+ * if __pyx_state is not None:
+ * __pyx_unpickle_FuncCodeInfo__set_state( __pyx_result, __pyx_state)
+ */
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_v___pyx_result = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "(tree fragment)":8
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3f403d2, 0x5f5636f, 0xb44aa80) = (abs_path_filename, always_filtered_out, always_skip_code, bp_line_to_breakpoint, breakpoint_found, canonical_normalized_filename, co_filename, co_name, code_obj, filtered_out_force_checked, function_breakpoint, function_breakpoint_found, plugin_call_breakpoint_found, plugin_call_stepping, plugin_line_breakpoint_found, plugin_line_stepping, plugin_return_stepping, pydb_mtime, try_except_container_obj))" % __pyx_checksum
+ * __pyx_result = FuncCodeInfo.__new__(__pyx_type)
+ * if __pyx_state is not None: # <<<<<<<<<<<<<<
+ * __pyx_unpickle_FuncCodeInfo__set_state( __pyx_result, __pyx_state)
+ * return __pyx_result
+ */
+ __pyx_t_2 = (__pyx_v___pyx_state != Py_None);
+ if (__pyx_t_2) {
+
+ /* "(tree fragment)":9
+ * __pyx_result = FuncCodeInfo.__new__(__pyx_type)
+ * if __pyx_state is not None:
+ * __pyx_unpickle_FuncCodeInfo__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<<
+ * return __pyx_result
+ * cdef __pyx_unpickle_FuncCodeInfo__set_state(FuncCodeInfo __pyx_result, tuple __pyx_state):
+ */
+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 9, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython___pyx_unpickle_FuncCodeInfo__set_state(((struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 9, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "(tree fragment)":8
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3f403d2, 0x5f5636f, 0xb44aa80) = (abs_path_filename, always_filtered_out, always_skip_code, bp_line_to_breakpoint, breakpoint_found, canonical_normalized_filename, co_filename, co_name, code_obj, filtered_out_force_checked, function_breakpoint, function_breakpoint_found, plugin_call_breakpoint_found, plugin_call_stepping, plugin_line_breakpoint_found, plugin_line_stepping, plugin_return_stepping, pydb_mtime, try_except_container_obj))" % __pyx_checksum
+ * __pyx_result = FuncCodeInfo.__new__(__pyx_type)
+ * if __pyx_state is not None: # <<<<<<<<<<<<<<
+ * __pyx_unpickle_FuncCodeInfo__set_state( __pyx_result, __pyx_state)
+ * return __pyx_result
+ */
+ }
+
+ /* "(tree fragment)":10
+ * if __pyx_state is not None:
+ * __pyx_unpickle_FuncCodeInfo__set_state( __pyx_result, __pyx_state)
+ * return __pyx_result # <<<<<<<<<<<<<<
+ * cdef __pyx_unpickle_FuncCodeInfo__set_state(FuncCodeInfo __pyx_result, tuple __pyx_state):
+ * __pyx_result.abs_path_filename = __pyx_state[0]; __pyx_result.always_filtered_out = __pyx_state[1]; __pyx_result.always_skip_code = __pyx_state[2]; __pyx_result.bp_line_to_breakpoint = __pyx_state[3]; __pyx_result.breakpoint_found = __pyx_state[4]; __pyx_result.canonical_normalized_filename = __pyx_state[5]; __pyx_result.co_filename = __pyx_state[6]; __pyx_result.co_name = __pyx_state[7]; __pyx_result.code_obj = __pyx_state[8]; __pyx_result.filtered_out_force_checked = __pyx_state[9]; __pyx_result.function_breakpoint = __pyx_state[10]; __pyx_result.function_breakpoint_found = __pyx_state[11]; __pyx_result.plugin_call_breakpoint_found = __pyx_state[12]; __pyx_result.plugin_call_stepping = __pyx_state[13]; __pyx_result.plugin_line_breakpoint_found = __pyx_state[14]; __pyx_result.plugin_line_stepping = __pyx_state[15]; __pyx_result.plugin_return_stepping = __pyx_state[16]; __pyx_result.pydb_mtime = __pyx_state[17]; __pyx_result.try_except_container_obj = __pyx_state[18]
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v___pyx_result);
+ __pyx_r = __pyx_v___pyx_result;
+ goto __pyx_L0;
+
+ /* "(tree fragment)":1
+ * def __pyx_unpickle_FuncCodeInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
+ * cdef object __pyx_PickleError
+ * cdef object __pyx_result
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.__pyx_unpickle_FuncCodeInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v___pyx_PickleError);
+ __Pyx_XDECREF(__pyx_v___pyx_result);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "(tree fragment)":11
+ * __pyx_unpickle_FuncCodeInfo__set_state( __pyx_result, __pyx_state)
+ * return __pyx_result
+ * cdef __pyx_unpickle_FuncCodeInfo__set_state(FuncCodeInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_result.abs_path_filename = __pyx_state[0]; __pyx_result.always_filtered_out = __pyx_state[1]; __pyx_result.always_skip_code = __pyx_state[2]; __pyx_result.bp_line_to_breakpoint = __pyx_state[3]; __pyx_result.breakpoint_found = __pyx_state[4]; __pyx_result.canonical_normalized_filename = __pyx_state[5]; __pyx_result.co_filename = __pyx_state[6]; __pyx_result.co_name = __pyx_state[7]; __pyx_result.code_obj = __pyx_state[8]; __pyx_result.filtered_out_force_checked = __pyx_state[9]; __pyx_result.function_breakpoint = __pyx_state[10]; __pyx_result.function_breakpoint_found = __pyx_state[11]; __pyx_result.plugin_call_breakpoint_found = __pyx_state[12]; __pyx_result.plugin_call_stepping = __pyx_state[13]; __pyx_result.plugin_line_breakpoint_found = __pyx_state[14]; __pyx_result.plugin_line_stepping = __pyx_state[15]; __pyx_result.plugin_return_stepping = __pyx_state[16]; __pyx_result.pydb_mtime = __pyx_state[17]; __pyx_result.try_except_container_obj = __pyx_state[18]
+ * if len(__pyx_state) > 19 and hasattr(__pyx_result, '__dict__'):
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython___pyx_unpickle_FuncCodeInfo__set_state(struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_2;
+ int __pyx_t_3;
+ Py_ssize_t __pyx_t_4;
+ int __pyx_t_5;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ unsigned int __pyx_t_9;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__pyx_unpickle_FuncCodeInfo__set_state", 1);
+
+ /* "(tree fragment)":12
+ * return __pyx_result
+ * cdef __pyx_unpickle_FuncCodeInfo__set_state(FuncCodeInfo __pyx_result, tuple __pyx_state):
+ * __pyx_result.abs_path_filename = __pyx_state[0]; __pyx_result.always_filtered_out = __pyx_state[1]; __pyx_result.always_skip_code = __pyx_state[2]; __pyx_result.bp_line_to_breakpoint = __pyx_state[3]; __pyx_result.breakpoint_found = __pyx_state[4]; __pyx_result.canonical_normalized_filename = __pyx_state[5]; __pyx_result.co_filename = __pyx_state[6]; __pyx_result.co_name = __pyx_state[7]; __pyx_result.code_obj = __pyx_state[8]; __pyx_result.filtered_out_force_checked = __pyx_state[9]; __pyx_result.function_breakpoint = __pyx_state[10]; __pyx_result.function_breakpoint_found = __pyx_state[11]; __pyx_result.plugin_call_breakpoint_found = __pyx_state[12]; __pyx_result.plugin_call_stepping = __pyx_state[13]; __pyx_result.plugin_line_breakpoint_found = __pyx_state[14]; __pyx_result.plugin_line_stepping = __pyx_state[15]; __pyx_result.plugin_return_stepping = __pyx_state[16]; __pyx_result.pydb_mtime = __pyx_state[17]; __pyx_result.try_except_container_obj = __pyx_state[18] # <<<<<<<<<<<<<<
+ * if len(__pyx_state) > 19 and hasattr(__pyx_result, '__dict__'):
+ * __pyx_result.__dict__.update(__pyx_state[19])
+ */
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GIVEREF(__pyx_t_1);
+ __Pyx_GOTREF(__pyx_v___pyx_result->abs_path_filename);
+ __Pyx_DECREF(__pyx_v___pyx_result->abs_path_filename);
+ __pyx_v___pyx_result->abs_path_filename = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v___pyx_result->always_filtered_out = __pyx_t_2;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v___pyx_result->always_skip_code = __pyx_t_2;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GIVEREF(__pyx_t_1);
+ __Pyx_GOTREF(__pyx_v___pyx_result->bp_line_to_breakpoint);
+ __Pyx_DECREF(__pyx_v___pyx_result->bp_line_to_breakpoint);
+ __pyx_v___pyx_result->bp_line_to_breakpoint = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v___pyx_result->breakpoint_found = __pyx_t_2;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GIVEREF(__pyx_t_1);
+ __Pyx_GOTREF(__pyx_v___pyx_result->canonical_normalized_filename);
+ __Pyx_DECREF(__pyx_v___pyx_result->canonical_normalized_filename);
+ __pyx_v___pyx_result->canonical_normalized_filename = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 6, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GIVEREF(__pyx_t_1);
+ __Pyx_GOTREF(__pyx_v___pyx_result->co_filename);
+ __Pyx_DECREF(__pyx_v___pyx_result->co_filename);
+ __pyx_v___pyx_result->co_filename = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 7, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GIVEREF(__pyx_t_1);
+ __Pyx_GOTREF(__pyx_v___pyx_result->co_name);
+ __Pyx_DECREF(__pyx_v___pyx_result->co_name);
+ __pyx_v___pyx_result->co_name = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 8, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GIVEREF(__pyx_t_1);
+ __Pyx_GOTREF(__pyx_v___pyx_result->code_obj);
+ __Pyx_DECREF(__pyx_v___pyx_result->code_obj);
+ __pyx_v___pyx_result->code_obj = __pyx_t_1;
+ __pyx_t_1 = 0;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 9, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v___pyx_result->filtered_out_force_checked = __pyx_t_2;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 10, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GIVEREF(__pyx_t_1);
+ __Pyx_GOTREF(__pyx_v___pyx_result->function_breakpoint);
+ __Pyx_DECREF(__pyx_v___pyx_result->function_breakpoint);
+ __pyx_v___pyx_result->function_breakpoint = __pyx_t_1;
+ __pyx_t_1 = 0;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 11, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v___pyx_result->function_breakpoint_found = __pyx_t_2;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 12, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v___pyx_result->plugin_call_breakpoint_found = __pyx_t_2;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 13, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v___pyx_result->plugin_call_stepping = __pyx_t_2;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 14, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v___pyx_result->plugin_line_breakpoint_found = __pyx_t_2;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 15, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v___pyx_result->plugin_line_stepping = __pyx_t_2;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 16, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v___pyx_result->plugin_return_stepping = __pyx_t_2;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 17, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v___pyx_result->pydb_mtime = __pyx_t_3;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 18, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GIVEREF(__pyx_t_1);
+ __Pyx_GOTREF(__pyx_v___pyx_result->try_except_container_obj);
+ __Pyx_DECREF(__pyx_v___pyx_result->try_except_container_obj);
+ __pyx_v___pyx_result->try_except_container_obj = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "(tree fragment)":13
+ * cdef __pyx_unpickle_FuncCodeInfo__set_state(FuncCodeInfo __pyx_result, tuple __pyx_state):
+ * __pyx_result.abs_path_filename = __pyx_state[0]; __pyx_result.always_filtered_out = __pyx_state[1]; __pyx_result.always_skip_code = __pyx_state[2]; __pyx_result.bp_line_to_breakpoint = __pyx_state[3]; __pyx_result.breakpoint_found = __pyx_state[4]; __pyx_result.canonical_normalized_filename = __pyx_state[5]; __pyx_result.co_filename = __pyx_state[6]; __pyx_result.co_name = __pyx_state[7]; __pyx_result.code_obj = __pyx_state[8]; __pyx_result.filtered_out_force_checked = __pyx_state[9]; __pyx_result.function_breakpoint = __pyx_state[10]; __pyx_result.function_breakpoint_found = __pyx_state[11]; __pyx_result.plugin_call_breakpoint_found = __pyx_state[12]; __pyx_result.plugin_call_stepping = __pyx_state[13]; __pyx_result.plugin_line_breakpoint_found = __pyx_state[14]; __pyx_result.plugin_line_stepping = __pyx_state[15]; __pyx_result.plugin_return_stepping = __pyx_state[16]; __pyx_result.pydb_mtime = __pyx_state[17]; __pyx_result.try_except_container_obj = __pyx_state[18]
+ * if len(__pyx_state) > 19 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<<
+ * __pyx_result.__dict__.update(__pyx_state[19])
+ */
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
+ __PYX_ERR(1, 13, __pyx_L1_error)
+ }
+ __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
+ __pyx_t_5 = (__pyx_t_4 > 19);
+ if (__pyx_t_5) {
+ } else {
+ __pyx_t_2 = __pyx_t_5;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
+ __pyx_t_2 = __pyx_t_5;
+ __pyx_L4_bool_binop_done:;
+ if (__pyx_t_2) {
+
+ /* "(tree fragment)":14
+ * __pyx_result.abs_path_filename = __pyx_state[0]; __pyx_result.always_filtered_out = __pyx_state[1]; __pyx_result.always_skip_code = __pyx_state[2]; __pyx_result.bp_line_to_breakpoint = __pyx_state[3]; __pyx_result.breakpoint_found = __pyx_state[4]; __pyx_result.canonical_normalized_filename = __pyx_state[5]; __pyx_result.co_filename = __pyx_state[6]; __pyx_result.co_name = __pyx_state[7]; __pyx_result.code_obj = __pyx_state[8]; __pyx_result.filtered_out_force_checked = __pyx_state[9]; __pyx_result.function_breakpoint = __pyx_state[10]; __pyx_result.function_breakpoint_found = __pyx_state[11]; __pyx_result.plugin_call_breakpoint_found = __pyx_state[12]; __pyx_result.plugin_call_stepping = __pyx_state[13]; __pyx_result.plugin_line_breakpoint_found = __pyx_state[14]; __pyx_result.plugin_line_stepping = __pyx_state[15]; __pyx_result.plugin_return_stepping = __pyx_state[16]; __pyx_result.pydb_mtime = __pyx_state[17]; __pyx_result.try_except_container_obj = __pyx_state[18]
+ * if len(__pyx_state) > 19 and hasattr(__pyx_result, '__dict__'):
+ * __pyx_result.__dict__.update(__pyx_state[19]) # <<<<<<<<<<<<<<
+ */
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 14, __pyx_L1_error)
+ }
+ __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 19, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = NULL;
+ __pyx_t_9 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ __pyx_t_9 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_6};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "(tree fragment)":13
+ * cdef __pyx_unpickle_FuncCodeInfo__set_state(FuncCodeInfo __pyx_result, tuple __pyx_state):
+ * __pyx_result.abs_path_filename = __pyx_state[0]; __pyx_result.always_filtered_out = __pyx_state[1]; __pyx_result.always_skip_code = __pyx_state[2]; __pyx_result.bp_line_to_breakpoint = __pyx_state[3]; __pyx_result.breakpoint_found = __pyx_state[4]; __pyx_result.canonical_normalized_filename = __pyx_state[5]; __pyx_result.co_filename = __pyx_state[6]; __pyx_result.co_name = __pyx_state[7]; __pyx_result.code_obj = __pyx_state[8]; __pyx_result.filtered_out_force_checked = __pyx_state[9]; __pyx_result.function_breakpoint = __pyx_state[10]; __pyx_result.function_breakpoint_found = __pyx_state[11]; __pyx_result.plugin_call_breakpoint_found = __pyx_state[12]; __pyx_result.plugin_call_stepping = __pyx_state[13]; __pyx_result.plugin_line_breakpoint_found = __pyx_state[14]; __pyx_result.plugin_line_stepping = __pyx_state[15]; __pyx_result.plugin_return_stepping = __pyx_state[16]; __pyx_result.pydb_mtime = __pyx_state[17]; __pyx_result.try_except_container_obj = __pyx_state[18]
+ * if len(__pyx_state) > 19 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<<
+ * __pyx_result.__dict__.update(__pyx_state[19])
+ */
+ }
+
+ /* "(tree fragment)":11
+ * __pyx_unpickle_FuncCodeInfo__set_state( __pyx_result, __pyx_state)
+ * return __pyx_result
+ * cdef __pyx_unpickle_FuncCodeInfo__set_state(FuncCodeInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_result.abs_path_filename = __pyx_state[0]; __pyx_result.always_filtered_out = __pyx_state[1]; __pyx_result.always_skip_code = __pyx_state[2]; __pyx_result.bp_line_to_breakpoint = __pyx_state[3]; __pyx_result.breakpoint_found = __pyx_state[4]; __pyx_result.canonical_normalized_filename = __pyx_state[5]; __pyx_result.co_filename = __pyx_state[6]; __pyx_result.co_name = __pyx_state[7]; __pyx_result.code_obj = __pyx_state[8]; __pyx_result.filtered_out_force_checked = __pyx_state[9]; __pyx_result.function_breakpoint = __pyx_state[10]; __pyx_result.function_breakpoint_found = __pyx_state[11]; __pyx_result.plugin_call_breakpoint_found = __pyx_state[12]; __pyx_result.plugin_call_stepping = __pyx_state[13]; __pyx_result.plugin_line_breakpoint_found = __pyx_state[14]; __pyx_result.plugin_line_stepping = __pyx_state[15]; __pyx_result.plugin_return_stepping = __pyx_state[16]; __pyx_result.pydb_mtime = __pyx_state[17]; __pyx_result.try_except_container_obj = __pyx_state[18]
+ * if len(__pyx_state) > 19 and hasattr(__pyx_result, '__dict__'):
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_8);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.__pyx_unpickle_FuncCodeInfo__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __pyx_unpickle__TryExceptContainerObj(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
+ * cdef object __pyx_PickleError
+ * cdef object __pyx_result
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_25__pyx_unpickle__TryExceptContainerObj(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_29_pydevd_sys_monitoring_cython_25__pyx_unpickle__TryExceptContainerObj = {"__pyx_unpickle__TryExceptContainerObj", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_25__pyx_unpickle__TryExceptContainerObj, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_29_pydevd_sys_monitoring_cython_25__pyx_unpickle__TryExceptContainerObj(PyObject *__pyx_self,
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+ PyObject *__pyx_v___pyx_type = 0;
+ long __pyx_v___pyx_checksum;
+ PyObject *__pyx_v___pyx_state = 0;
+ #if !CYTHON_METH_FASTCALL
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+ #endif
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+ PyObject* values[3] = {0,0,0};
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__pyx_unpickle__TryExceptContainerObj (wrapper)", 0);
+ #if !CYTHON_METH_FASTCALL
+ #if CYTHON_ASSUME_SAFE_MACROS
+ __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+ #else
+ __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
+ #endif
+ #endif
+ __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
+ {
+ PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
+ if (__pyx_kwds) {
+ Py_ssize_t kw_args;
+ switch (__pyx_nargs) {
+ case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ CYTHON_FALLTHROUGH;
+ case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ CYTHON_FALLTHROUGH;
+ case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
+ switch (__pyx_nargs) {
+ case 0:
+ if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
+ else goto __pyx_L5_argtuple_error;
+ CYTHON_FALLTHROUGH;
+ case 1:
+ if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__TryExceptContainerObj", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 2:
+ if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
+ (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+ kw_args--;
+ }
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
+ else {
+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__TryExceptContainerObj", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle__TryExceptContainerObj") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
+ }
+ } else if (unlikely(__pyx_nargs != 3)) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+ values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
+ values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
+ }
+ __pyx_v___pyx_type = values[0];
+ __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
+ __pyx_v___pyx_state = values[2];
+ }
+ goto __pyx_L6_skip;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__TryExceptContainerObj", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 1, __pyx_L3_error)
+ __pyx_L6_skip:;
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L3_error:;
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.__pyx_unpickle__TryExceptContainerObj", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_29_pydevd_sys_monitoring_cython_24__pyx_unpickle__TryExceptContainerObj(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);
+
+ /* function exit code */
+ {
+ Py_ssize_t __pyx_temp;
+ for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
+ __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
+ }
+ }
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_29_pydevd_sys_monitoring_cython_24__pyx_unpickle__TryExceptContainerObj(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
+ PyObject *__pyx_v___pyx_PickleError = 0;
+ PyObject *__pyx_v___pyx_result = 0;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ unsigned int __pyx_t_5;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__pyx_unpickle__TryExceptContainerObj", 1);
+
+ /* "(tree fragment)":4
+ * cdef object __pyx_PickleError
+ * cdef object __pyx_result
+ * if __pyx_checksum not in (0xdbf5e44, 0xde17cd3, 0xc8b6eb1): # <<<<<<<<<<<<<<
+ * from pickle import PickleError as __pyx_PickleError
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdbf5e44, 0xde17cd3, 0xc8b6eb1) = (try_except_infos))" % __pyx_checksum
+ */
+ __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__21, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_2) {
+
+ /* "(tree fragment)":5
+ * cdef object __pyx_result
+ * if __pyx_checksum not in (0xdbf5e44, 0xde17cd3, 0xc8b6eb1):
+ * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<<
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdbf5e44, 0xde17cd3, 0xc8b6eb1) = (try_except_infos))" % __pyx_checksum
+ * __pyx_result = _TryExceptContainerObj.__new__(__pyx_type)
+ */
+ __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_n_s_PickleError);
+ __Pyx_GIVEREF(__pyx_n_s_PickleError);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(1, 5, __pyx_L1_error);
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_1);
+ __pyx_v___pyx_PickleError = __pyx_t_1;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "(tree fragment)":6
+ * if __pyx_checksum not in (0xdbf5e44, 0xde17cd3, 0xc8b6eb1):
+ * from pickle import PickleError as __pyx_PickleError
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdbf5e44, 0xde17cd3, 0xc8b6eb1) = (try_except_infos))" % __pyx_checksum # <<<<<<<<<<<<<<
+ * __pyx_result = _TryExceptContainerObj.__new__(__pyx_type)
+ * if __pyx_state is not None:
+ */
+ __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __PYX_ERR(1, 6, __pyx_L1_error)
+
+ /* "(tree fragment)":4
+ * cdef object __pyx_PickleError
+ * cdef object __pyx_result
+ * if __pyx_checksum not in (0xdbf5e44, 0xde17cd3, 0xc8b6eb1): # <<<<<<<<<<<<<<
+ * from pickle import PickleError as __pyx_PickleError
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdbf5e44, 0xde17cd3, 0xc8b6eb1) = (try_except_infos))" % __pyx_checksum
+ */
+ }
+
+ /* "(tree fragment)":7
+ * from pickle import PickleError as __pyx_PickleError
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdbf5e44, 0xde17cd3, 0xc8b6eb1) = (try_except_infos))" % __pyx_checksum
+ * __pyx_result = _TryExceptContainerObj.__new__(__pyx_type) # <<<<<<<<<<<<<<
+ * if __pyx_state is not None:
+ * __pyx_unpickle__TryExceptContainerObj__set_state(<_TryExceptContainerObj> __pyx_result, __pyx_state)
+ */
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = NULL;
+ __pyx_t_5 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ __pyx_t_5 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __pyx_v___pyx_result = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "(tree fragment)":8
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdbf5e44, 0xde17cd3, 0xc8b6eb1) = (try_except_infos))" % __pyx_checksum
+ * __pyx_result = _TryExceptContainerObj.__new__(__pyx_type)
+ * if __pyx_state is not None: # <<<<<<<<<<<<<<
+ * __pyx_unpickle__TryExceptContainerObj__set_state(<_TryExceptContainerObj> __pyx_result, __pyx_state)
+ * return __pyx_result
+ */
+ __pyx_t_2 = (__pyx_v___pyx_state != Py_None);
+ if (__pyx_t_2) {
+
+ /* "(tree fragment)":9
+ * __pyx_result = _TryExceptContainerObj.__new__(__pyx_type)
+ * if __pyx_state is not None:
+ * __pyx_unpickle__TryExceptContainerObj__set_state(<_TryExceptContainerObj> __pyx_result, __pyx_state) # <<<<<<<<<<<<<<
+ * return __pyx_result
+ * cdef __pyx_unpickle__TryExceptContainerObj__set_state(_TryExceptContainerObj __pyx_result, tuple __pyx_state):
+ */
+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 9, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_29_pydevd_sys_monitoring_cython___pyx_unpickle__TryExceptContainerObj__set_state(((struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 9, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "(tree fragment)":8
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdbf5e44, 0xde17cd3, 0xc8b6eb1) = (try_except_infos))" % __pyx_checksum
+ * __pyx_result = _TryExceptContainerObj.__new__(__pyx_type)
+ * if __pyx_state is not None: # <<<<<<<<<<<<<<
+ * __pyx_unpickle__TryExceptContainerObj__set_state(<_TryExceptContainerObj> __pyx_result, __pyx_state)
+ * return __pyx_result
+ */
+ }
+
+ /* "(tree fragment)":10
+ * if __pyx_state is not None:
+ * __pyx_unpickle__TryExceptContainerObj__set_state(<_TryExceptContainerObj> __pyx_result, __pyx_state)
+ * return __pyx_result # <<<<<<<<<<<<<<
+ * cdef __pyx_unpickle__TryExceptContainerObj__set_state(_TryExceptContainerObj __pyx_result, tuple __pyx_state):
+ * __pyx_result.try_except_infos = __pyx_state[0]
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v___pyx_result);
+ __pyx_r = __pyx_v___pyx_result;
+ goto __pyx_L0;
+
+ /* "(tree fragment)":1
+ * def __pyx_unpickle__TryExceptContainerObj(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
+ * cdef object __pyx_PickleError
+ * cdef object __pyx_result
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.__pyx_unpickle__TryExceptContainerObj", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v___pyx_PickleError);
+ __Pyx_XDECREF(__pyx_v___pyx_result);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "(tree fragment)":11
+ * __pyx_unpickle__TryExceptContainerObj__set_state(<_TryExceptContainerObj> __pyx_result, __pyx_state)
+ * return __pyx_result
+ * cdef __pyx_unpickle__TryExceptContainerObj__set_state(_TryExceptContainerObj __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_result.try_except_infos = __pyx_state[0]
+ * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
+ */
+
+static PyObject *__pyx_f_29_pydevd_sys_monitoring_cython___pyx_unpickle__TryExceptContainerObj__set_state(struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_2;
+ Py_ssize_t __pyx_t_3;
+ int __pyx_t_4;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ unsigned int __pyx_t_8;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__pyx_unpickle__TryExceptContainerObj__set_state", 1);
+
+ /* "(tree fragment)":12
+ * return __pyx_result
+ * cdef __pyx_unpickle__TryExceptContainerObj__set_state(_TryExceptContainerObj __pyx_result, tuple __pyx_state):
+ * __pyx_result.try_except_infos = __pyx_state[0] # <<<<<<<<<<<<<<
+ * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
+ * __pyx_result.__dict__.update(__pyx_state[1])
+ */
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 12, __pyx_L1_error)
+ }
+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GIVEREF(__pyx_t_1);
+ __Pyx_GOTREF(__pyx_v___pyx_result->try_except_infos);
+ __Pyx_DECREF(__pyx_v___pyx_result->try_except_infos);
+ __pyx_v___pyx_result->try_except_infos = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "(tree fragment)":13
+ * cdef __pyx_unpickle__TryExceptContainerObj__set_state(_TryExceptContainerObj __pyx_result, tuple __pyx_state):
+ * __pyx_result.try_except_infos = __pyx_state[0]
+ * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<<
+ * __pyx_result.__dict__.update(__pyx_state[1])
+ */
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
+ __PYX_ERR(1, 13, __pyx_L1_error)
+ }
+ __pyx_t_3 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
+ __pyx_t_4 = (__pyx_t_3 > 1);
+ if (__pyx_t_4) {
+ } else {
+ __pyx_t_2 = __pyx_t_4;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
+ __pyx_t_2 = __pyx_t_4;
+ __pyx_L4_bool_binop_done:;
+ if (__pyx_t_2) {
+
+ /* "(tree fragment)":14
+ * __pyx_result.try_except_infos = __pyx_state[0]
+ * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
+ * __pyx_result.__dict__.update(__pyx_state[1]) # <<<<<<<<<<<<<<
+ */
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_update); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(__pyx_v___pyx_state == Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+ __PYX_ERR(1, 14, __pyx_L1_error)
+ }
+ __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = NULL;
+ __pyx_t_8 = 0;
+ #if CYTHON_UNPACK_METHODS
+ if (likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ __pyx_t_8 = 1;
+ }
+ }
+ #endif
+ {
+ PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5};
+ __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "(tree fragment)":13
+ * cdef __pyx_unpickle__TryExceptContainerObj__set_state(_TryExceptContainerObj __pyx_result, tuple __pyx_state):
+ * __pyx_result.try_except_infos = __pyx_state[0]
+ * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<<
+ * __pyx_result.__dict__.update(__pyx_state[1])
+ */
+ }
+
+ /* "(tree fragment)":11
+ * __pyx_unpickle__TryExceptContainerObj__set_state(<_TryExceptContainerObj> __pyx_result, __pyx_state)
+ * return __pyx_result
+ * cdef __pyx_unpickle__TryExceptContainerObj__set_state(_TryExceptContainerObj __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_result.try_except_infos = __pyx_state[0]
+ * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
+ */
+
+ /* function exit code */
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython.__pyx_unpickle__TryExceptContainerObj__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_tp_new_29_pydevd_sys_monitoring_cython_ThreadInfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *p;
+ PyObject *o;
+ #if CYTHON_COMPILING_IN_LIMITED_API
+ allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
+ o = alloc_func(t, 0);
+ #else
+ if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
+ o = (*t->tp_alloc)(t, 0);
+ } else {
+ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
+ }
+ if (unlikely(!o)) return 0;
+ #endif
+ p = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)o);
+ p->additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)Py_None); Py_INCREF(Py_None);
+ p->thread = Py_None; Py_INCREF(Py_None);
+ p->trace = Py_None; Py_INCREF(Py_None);
+ return o;
+}
+
+static void __pyx_tp_dealloc_29_pydevd_sys_monitoring_cython_ThreadInfo(PyObject *o) {
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *p = (struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)o;
+ #if CYTHON_USE_TP_FINALIZE
+ if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
+ if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_29_pydevd_sys_monitoring_cython_ThreadInfo) {
+ if (PyObject_CallFinalizerFromDealloc(o)) return;
+ }
+ }
+ #endif
+ PyObject_GC_UnTrack(o);
+ Py_CLEAR(p->additional_info);
+ Py_CLEAR(p->thread);
+ Py_CLEAR(p->trace);
+ #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
+ (*Py_TYPE(o)->tp_free)(o);
+ #else
+ {
+ freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
+ if (tp_free) tp_free(o);
+ }
+ #endif
+}
+
+static int __pyx_tp_traverse_29_pydevd_sys_monitoring_cython_ThreadInfo(PyObject *o, visitproc v, void *a) {
+ int e;
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *p = (struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)o;
+ if (p->additional_info) {
+ e = (*v)(((PyObject *)p->additional_info), a); if (e) return e;
+ }
+ if (p->thread) {
+ e = (*v)(p->thread, a); if (e) return e;
+ }
+ if (p->trace) {
+ e = (*v)(p->trace, a); if (e) return e;
+ }
+ return 0;
+}
+
+static int __pyx_tp_clear_29_pydevd_sys_monitoring_cython_ThreadInfo(PyObject *o) {
+ PyObject* tmp;
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *p = (struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo *)o;
+ tmp = ((PyObject*)p->additional_info);
+ p->additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)Py_None); Py_INCREF(Py_None);
+ Py_XDECREF(tmp);
+ tmp = ((PyObject*)p->thread);
+ p->thread = Py_None; Py_INCREF(Py_None);
+ Py_XDECREF(tmp);
+ tmp = ((PyObject*)p->trace);
+ p->trace = Py_None; Py_INCREF(Py_None);
+ Py_XDECREF(tmp);
+ return 0;
+}
+
+static PyMethodDef __pyx_methods_29_pydevd_sys_monitoring_cython_ThreadInfo[] = {
+ {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_10ThreadInfo_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+ {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_10ThreadInfo_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+ {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_29_pydevd_sys_monitoring_cython_ThreadInfo_slots[] = {
+ {Py_tp_dealloc, (void *)__pyx_tp_dealloc_29_pydevd_sys_monitoring_cython_ThreadInfo},
+ {Py_tp_traverse, (void *)__pyx_tp_traverse_29_pydevd_sys_monitoring_cython_ThreadInfo},
+ {Py_tp_clear, (void *)__pyx_tp_clear_29_pydevd_sys_monitoring_cython_ThreadInfo},
+ {Py_tp_methods, (void *)__pyx_methods_29_pydevd_sys_monitoring_cython_ThreadInfo},
+ {Py_tp_init, (void *)__pyx_pw_29_pydevd_sys_monitoring_cython_10ThreadInfo_1__init__},
+ {Py_tp_new, (void *)__pyx_tp_new_29_pydevd_sys_monitoring_cython_ThreadInfo},
+ {0, 0},
+};
+static PyType_Spec __pyx_type_29_pydevd_sys_monitoring_cython_ThreadInfo_spec = {
+ "_pydevd_sys_monitoring_cython.ThreadInfo",
+ sizeof(struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo),
+ 0,
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
+ __pyx_type_29_pydevd_sys_monitoring_cython_ThreadInfo_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_29_pydevd_sys_monitoring_cython_ThreadInfo = {
+ PyVarObject_HEAD_INIT(0, 0)
+ "_pydevd_sys_monitoring_cython.""ThreadInfo", /*tp_name*/
+ sizeof(struct __pyx_obj_29_pydevd_sys_monitoring_cython_ThreadInfo), /*tp_basicsize*/
+ 0, /*tp_itemsize*/
+ __pyx_tp_dealloc_29_pydevd_sys_monitoring_cython_ThreadInfo, /*tp_dealloc*/
+ #if PY_VERSION_HEX < 0x030800b4
+ 0, /*tp_print*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4
+ 0, /*tp_vectorcall_offset*/
+ #endif
+ 0, /*tp_getattr*/
+ 0, /*tp_setattr*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*tp_compare*/
+ #endif
+ #if PY_MAJOR_VERSION >= 3
+ 0, /*tp_as_async*/
+ #endif
+ 0, /*tp_repr*/
+ 0, /*tp_as_number*/
+ 0, /*tp_as_sequence*/
+ 0, /*tp_as_mapping*/
+ 0, /*tp_hash*/
+ 0, /*tp_call*/
+ 0, /*tp_str*/
+ 0, /*tp_getattro*/
+ 0, /*tp_setattro*/
+ 0, /*tp_as_buffer*/
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+ 0, /*tp_doc*/
+ __pyx_tp_traverse_29_pydevd_sys_monitoring_cython_ThreadInfo, /*tp_traverse*/
+ __pyx_tp_clear_29_pydevd_sys_monitoring_cython_ThreadInfo, /*tp_clear*/
+ 0, /*tp_richcompare*/
+ 0, /*tp_weaklistoffset*/
+ 0, /*tp_iter*/
+ 0, /*tp_iternext*/
+ __pyx_methods_29_pydevd_sys_monitoring_cython_ThreadInfo, /*tp_methods*/
+ 0, /*tp_members*/
+ 0, /*tp_getset*/
+ 0, /*tp_base*/
+ 0, /*tp_dict*/
+ 0, /*tp_descr_get*/
+ 0, /*tp_descr_set*/
+ #if !CYTHON_USE_TYPE_SPECS
+ 0, /*tp_dictoffset*/
+ #endif
+ __pyx_pw_29_pydevd_sys_monitoring_cython_10ThreadInfo_1__init__, /*tp_init*/
+ 0, /*tp_alloc*/
+ __pyx_tp_new_29_pydevd_sys_monitoring_cython_ThreadInfo, /*tp_new*/
+ 0, /*tp_free*/
+ 0, /*tp_is_gc*/
+ 0, /*tp_bases*/
+ 0, /*tp_mro*/
+ 0, /*tp_cache*/
+ 0, /*tp_subclasses*/
+ 0, /*tp_weaklist*/
+ 0, /*tp_del*/
+ 0, /*tp_version_tag*/
+ #if PY_VERSION_HEX >= 0x030400a1
+ #if CYTHON_USE_TP_FINALIZE
+ 0, /*tp_finalize*/
+ #else
+ NULL, /*tp_finalize*/
+ #endif
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if __PYX_NEED_TP_PRINT_SLOT == 1
+ 0, /*tp_print*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030C0000
+ 0, /*tp_watched*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030d00A4
+ 0, /*tp_versions_used*/
+ #endif
+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
+ 0, /*tp_pypy_flags*/
+ #endif
+};
+#endif
+
+static PyObject *__pyx_tp_new_29_pydevd_sys_monitoring_cython_FuncCodeInfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *p;
+ PyObject *o;
+ #if CYTHON_COMPILING_IN_LIMITED_API
+ allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
+ o = alloc_func(t, 0);
+ #else
+ if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
+ o = (*t->tp_alloc)(t, 0);
+ } else {
+ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
+ }
+ if (unlikely(!o)) return 0;
+ #endif
+ p = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)o);
+ p->co_filename = ((PyObject*)Py_None); Py_INCREF(Py_None);
+ p->canonical_normalized_filename = ((PyObject*)Py_None); Py_INCREF(Py_None);
+ p->abs_path_filename = ((PyObject*)Py_None); Py_INCREF(Py_None);
+ p->bp_line_to_breakpoint = ((PyObject*)Py_None); Py_INCREF(Py_None);
+ p->function_breakpoint = Py_None; Py_INCREF(Py_None);
+ p->try_except_container_obj = Py_None; Py_INCREF(Py_None);
+ p->code_obj = Py_None; Py_INCREF(Py_None);
+ p->co_name = ((PyObject*)Py_None); Py_INCREF(Py_None);
+ return o;
+}
+
+static void __pyx_tp_dealloc_29_pydevd_sys_monitoring_cython_FuncCodeInfo(PyObject *o) {
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *p = (struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)o;
+ #if CYTHON_USE_TP_FINALIZE
+ if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
+ if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_29_pydevd_sys_monitoring_cython_FuncCodeInfo) {
+ if (PyObject_CallFinalizerFromDealloc(o)) return;
+ }
+ }
+ #endif
+ PyObject_GC_UnTrack(o);
+ Py_CLEAR(p->co_filename);
+ Py_CLEAR(p->canonical_normalized_filename);
+ Py_CLEAR(p->abs_path_filename);
+ Py_CLEAR(p->bp_line_to_breakpoint);
+ Py_CLEAR(p->function_breakpoint);
+ Py_CLEAR(p->try_except_container_obj);
+ Py_CLEAR(p->code_obj);
+ Py_CLEAR(p->co_name);
+ #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
+ (*Py_TYPE(o)->tp_free)(o);
+ #else
+ {
+ freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
+ if (tp_free) tp_free(o);
+ }
+ #endif
+}
+
+static int __pyx_tp_traverse_29_pydevd_sys_monitoring_cython_FuncCodeInfo(PyObject *o, visitproc v, void *a) {
+ int e;
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *p = (struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)o;
+ if (p->bp_line_to_breakpoint) {
+ e = (*v)(p->bp_line_to_breakpoint, a); if (e) return e;
+ }
+ if (p->function_breakpoint) {
+ e = (*v)(p->function_breakpoint, a); if (e) return e;
+ }
+ if (p->try_except_container_obj) {
+ e = (*v)(p->try_except_container_obj, a); if (e) return e;
+ }
+ if (p->code_obj) {
+ e = (*v)(p->code_obj, a); if (e) return e;
+ }
+ return 0;
+}
+
+static int __pyx_tp_clear_29_pydevd_sys_monitoring_cython_FuncCodeInfo(PyObject *o) {
+ PyObject* tmp;
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *p = (struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo *)o;
+ tmp = ((PyObject*)p->bp_line_to_breakpoint);
+ p->bp_line_to_breakpoint = ((PyObject*)Py_None); Py_INCREF(Py_None);
+ Py_XDECREF(tmp);
+ tmp = ((PyObject*)p->function_breakpoint);
+ p->function_breakpoint = Py_None; Py_INCREF(Py_None);
+ Py_XDECREF(tmp);
+ tmp = ((PyObject*)p->try_except_container_obj);
+ p->try_except_container_obj = Py_None; Py_INCREF(Py_None);
+ Py_XDECREF(tmp);
+ tmp = ((PyObject*)p->code_obj);
+ p->code_obj = Py_None; Py_INCREF(Py_None);
+ Py_XDECREF(tmp);
+ return 0;
+}
+
+static PyMethodDef __pyx_methods_29_pydevd_sys_monitoring_cython_FuncCodeInfo[] = {
+ {"get_line_of_offset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_3get_line_of_offset, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+ {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+ {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+ {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_29_pydevd_sys_monitoring_cython_FuncCodeInfo_slots[] = {
+ {Py_tp_dealloc, (void *)__pyx_tp_dealloc_29_pydevd_sys_monitoring_cython_FuncCodeInfo},
+ {Py_tp_traverse, (void *)__pyx_tp_traverse_29_pydevd_sys_monitoring_cython_FuncCodeInfo},
+ {Py_tp_clear, (void *)__pyx_tp_clear_29_pydevd_sys_monitoring_cython_FuncCodeInfo},
+ {Py_tp_methods, (void *)__pyx_methods_29_pydevd_sys_monitoring_cython_FuncCodeInfo},
+ {Py_tp_init, (void *)__pyx_pw_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_1__init__},
+ {Py_tp_new, (void *)__pyx_tp_new_29_pydevd_sys_monitoring_cython_FuncCodeInfo},
+ {0, 0},
+};
+static PyType_Spec __pyx_type_29_pydevd_sys_monitoring_cython_FuncCodeInfo_spec = {
+ "_pydevd_sys_monitoring_cython.FuncCodeInfo",
+ sizeof(struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo),
+ 0,
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
+ __pyx_type_29_pydevd_sys_monitoring_cython_FuncCodeInfo_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_29_pydevd_sys_monitoring_cython_FuncCodeInfo = {
+ PyVarObject_HEAD_INIT(0, 0)
+ "_pydevd_sys_monitoring_cython.""FuncCodeInfo", /*tp_name*/
+ sizeof(struct __pyx_obj_29_pydevd_sys_monitoring_cython_FuncCodeInfo), /*tp_basicsize*/
+ 0, /*tp_itemsize*/
+ __pyx_tp_dealloc_29_pydevd_sys_monitoring_cython_FuncCodeInfo, /*tp_dealloc*/
+ #if PY_VERSION_HEX < 0x030800b4
+ 0, /*tp_print*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4
+ 0, /*tp_vectorcall_offset*/
+ #endif
+ 0, /*tp_getattr*/
+ 0, /*tp_setattr*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*tp_compare*/
+ #endif
+ #if PY_MAJOR_VERSION >= 3
+ 0, /*tp_as_async*/
+ #endif
+ 0, /*tp_repr*/
+ 0, /*tp_as_number*/
+ 0, /*tp_as_sequence*/
+ 0, /*tp_as_mapping*/
+ 0, /*tp_hash*/
+ 0, /*tp_call*/
+ 0, /*tp_str*/
+ 0, /*tp_getattro*/
+ 0, /*tp_setattro*/
+ 0, /*tp_as_buffer*/
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+ 0, /*tp_doc*/
+ __pyx_tp_traverse_29_pydevd_sys_monitoring_cython_FuncCodeInfo, /*tp_traverse*/
+ __pyx_tp_clear_29_pydevd_sys_monitoring_cython_FuncCodeInfo, /*tp_clear*/
+ 0, /*tp_richcompare*/
+ 0, /*tp_weaklistoffset*/
+ 0, /*tp_iter*/
+ 0, /*tp_iternext*/
+ __pyx_methods_29_pydevd_sys_monitoring_cython_FuncCodeInfo, /*tp_methods*/
+ 0, /*tp_members*/
+ 0, /*tp_getset*/
+ 0, /*tp_base*/
+ 0, /*tp_dict*/
+ 0, /*tp_descr_get*/
+ 0, /*tp_descr_set*/
+ #if !CYTHON_USE_TYPE_SPECS
+ 0, /*tp_dictoffset*/
+ #endif
+ __pyx_pw_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_1__init__, /*tp_init*/
+ 0, /*tp_alloc*/
+ __pyx_tp_new_29_pydevd_sys_monitoring_cython_FuncCodeInfo, /*tp_new*/
+ 0, /*tp_free*/
+ 0, /*tp_is_gc*/
+ 0, /*tp_bases*/
+ 0, /*tp_mro*/
+ 0, /*tp_cache*/
+ 0, /*tp_subclasses*/
+ 0, /*tp_weaklist*/
+ 0, /*tp_del*/
+ 0, /*tp_version_tag*/
+ #if PY_VERSION_HEX >= 0x030400a1
+ #if CYTHON_USE_TP_FINALIZE
+ 0, /*tp_finalize*/
+ #else
+ NULL, /*tp_finalize*/
+ #endif
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if __PYX_NEED_TP_PRINT_SLOT == 1
+ 0, /*tp_print*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030C0000
+ 0, /*tp_watched*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030d00A4
+ 0, /*tp_versions_used*/
+ #endif
+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
+ 0, /*tp_pypy_flags*/
+ #endif
+};
+#endif
+
+static PyObject *__pyx_tp_new_29_pydevd_sys_monitoring_cython__TryExceptContainerObj(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *p;
+ PyObject *o;
+ #if CYTHON_COMPILING_IN_LIMITED_API
+ allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
+ o = alloc_func(t, 0);
+ #else
+ if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
+ o = (*t->tp_alloc)(t, 0);
+ } else {
+ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
+ }
+ if (unlikely(!o)) return 0;
+ #endif
+ p = ((struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *)o);
+ p->try_except_infos = ((PyObject*)Py_None); Py_INCREF(Py_None);
+ return o;
+}
+
+static void __pyx_tp_dealloc_29_pydevd_sys_monitoring_cython__TryExceptContainerObj(PyObject *o) {
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *p = (struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *)o;
+ #if CYTHON_USE_TP_FINALIZE
+ if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
+ if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_29_pydevd_sys_monitoring_cython__TryExceptContainerObj) {
+ if (PyObject_CallFinalizerFromDealloc(o)) return;
+ }
+ }
+ #endif
+ PyObject_GC_UnTrack(o);
+ Py_CLEAR(p->try_except_infos);
+ #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
+ (*Py_TYPE(o)->tp_free)(o);
+ #else
+ {
+ freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
+ if (tp_free) tp_free(o);
+ }
+ #endif
+}
+
+static int __pyx_tp_traverse_29_pydevd_sys_monitoring_cython__TryExceptContainerObj(PyObject *o, visitproc v, void *a) {
+ int e;
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *p = (struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *)o;
+ if (p->try_except_infos) {
+ e = (*v)(p->try_except_infos, a); if (e) return e;
+ }
+ return 0;
+}
+
+static int __pyx_tp_clear_29_pydevd_sys_monitoring_cython__TryExceptContainerObj(PyObject *o) {
+ PyObject* tmp;
+ struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *p = (struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj *)o;
+ tmp = ((PyObject*)p->try_except_infos);
+ p->try_except_infos = ((PyObject*)Py_None); Py_INCREF(Py_None);
+ Py_XDECREF(tmp);
+ return 0;
+}
+
+static PyMethodDef __pyx_methods_29_pydevd_sys_monitoring_cython__TryExceptContainerObj[] = {
+ {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+ {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+ {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_29_pydevd_sys_monitoring_cython__TryExceptContainerObj_slots[] = {
+ {Py_tp_dealloc, (void *)__pyx_tp_dealloc_29_pydevd_sys_monitoring_cython__TryExceptContainerObj},
+ {Py_tp_traverse, (void *)__pyx_tp_traverse_29_pydevd_sys_monitoring_cython__TryExceptContainerObj},
+ {Py_tp_clear, (void *)__pyx_tp_clear_29_pydevd_sys_monitoring_cython__TryExceptContainerObj},
+ {Py_tp_methods, (void *)__pyx_methods_29_pydevd_sys_monitoring_cython__TryExceptContainerObj},
+ {Py_tp_init, (void *)__pyx_pw_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_1__init__},
+ {Py_tp_new, (void *)__pyx_tp_new_29_pydevd_sys_monitoring_cython__TryExceptContainerObj},
+ {0, 0},
+};
+static PyType_Spec __pyx_type_29_pydevd_sys_monitoring_cython__TryExceptContainerObj_spec = {
+ "_pydevd_sys_monitoring_cython._TryExceptContainerObj",
+ sizeof(struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj),
+ 0,
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
+ __pyx_type_29_pydevd_sys_monitoring_cython__TryExceptContainerObj_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_29_pydevd_sys_monitoring_cython__TryExceptContainerObj = {
+ PyVarObject_HEAD_INIT(0, 0)
+ "_pydevd_sys_monitoring_cython.""_TryExceptContainerObj", /*tp_name*/
+ sizeof(struct __pyx_obj_29_pydevd_sys_monitoring_cython__TryExceptContainerObj), /*tp_basicsize*/
+ 0, /*tp_itemsize*/
+ __pyx_tp_dealloc_29_pydevd_sys_monitoring_cython__TryExceptContainerObj, /*tp_dealloc*/
+ #if PY_VERSION_HEX < 0x030800b4
+ 0, /*tp_print*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4
+ 0, /*tp_vectorcall_offset*/
+ #endif
+ 0, /*tp_getattr*/
+ 0, /*tp_setattr*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*tp_compare*/
+ #endif
+ #if PY_MAJOR_VERSION >= 3
+ 0, /*tp_as_async*/
+ #endif
+ 0, /*tp_repr*/
+ 0, /*tp_as_number*/
+ 0, /*tp_as_sequence*/
+ 0, /*tp_as_mapping*/
+ 0, /*tp_hash*/
+ 0, /*tp_call*/
+ 0, /*tp_str*/
+ 0, /*tp_getattro*/
+ 0, /*tp_setattro*/
+ 0, /*tp_as_buffer*/
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+ 0, /*tp_doc*/
+ __pyx_tp_traverse_29_pydevd_sys_monitoring_cython__TryExceptContainerObj, /*tp_traverse*/
+ __pyx_tp_clear_29_pydevd_sys_monitoring_cython__TryExceptContainerObj, /*tp_clear*/
+ 0, /*tp_richcompare*/
+ 0, /*tp_weaklistoffset*/
+ 0, /*tp_iter*/
+ 0, /*tp_iternext*/
+ __pyx_methods_29_pydevd_sys_monitoring_cython__TryExceptContainerObj, /*tp_methods*/
+ 0, /*tp_members*/
+ 0, /*tp_getset*/
+ 0, /*tp_base*/
+ 0, /*tp_dict*/
+ 0, /*tp_descr_get*/
+ 0, /*tp_descr_set*/
+ #if !CYTHON_USE_TYPE_SPECS
+ 0, /*tp_dictoffset*/
+ #endif
+ __pyx_pw_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_1__init__, /*tp_init*/
+ 0, /*tp_alloc*/
+ __pyx_tp_new_29_pydevd_sys_monitoring_cython__TryExceptContainerObj, /*tp_new*/
+ 0, /*tp_free*/
+ 0, /*tp_is_gc*/
+ 0, /*tp_bases*/
+ 0, /*tp_mro*/
+ 0, /*tp_cache*/
+ 0, /*tp_subclasses*/
+ 0, /*tp_weaklist*/
+ 0, /*tp_del*/
+ 0, /*tp_version_tag*/
+ #if PY_VERSION_HEX >= 0x030400a1
+ #if CYTHON_USE_TP_FINALIZE
+ 0, /*tp_finalize*/
+ #else
+ NULL, /*tp_finalize*/
+ #endif
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if __PYX_NEED_TP_PRINT_SLOT == 1
+ 0, /*tp_print*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030C0000
+ 0, /*tp_watched*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030d00A4
+ 0, /*tp_versions_used*/
+ #endif
+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
+ 0, /*tp_pypy_flags*/
+ #endif
+};
+#endif
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc *__pyx_freelist___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc[8];
+static int __pyx_freecount___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc = 0;
+#endif
+
+static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+ PyObject *o;
+ #if CYTHON_COMPILING_IN_LIMITED_API
+ allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
+ o = alloc_func(t, 0);
+ #else
+ #if CYTHON_USE_FREELISTS
+ if (likely((int)(__pyx_freecount___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc)))) {
+ o = (PyObject*)__pyx_freelist___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc[--__pyx_freecount___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc];
+ memset(o, 0, sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc));
+ (void) PyObject_INIT(o, t);
+ } else
+ #endif
+ {
+ o = (*t->tp_alloc)(t, 0);
+ if (unlikely(!o)) return 0;
+ }
+ #endif
+ return o;
+}
+
+static void __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc(PyObject *o) {
+ #if CYTHON_USE_TP_FINALIZE
+ if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
+ if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc) {
+ if (PyObject_CallFinalizerFromDealloc(o)) return;
+ }
+ }
+ #endif
+ #if CYTHON_USE_FREELISTS
+ if (((int)(__pyx_freecount___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc)))) {
+ __pyx_freelist___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc[__pyx_freecount___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc++] = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc *)o);
+ } else
+ #endif
+ {
+ #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
+ (*Py_TYPE(o)->tp_free)(o);
+ #else
+ {
+ freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
+ if (tp_free) tp_free(o);
+ }
+ #endif
+ }
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc_slots[] = {
+ {Py_tp_dealloc, (void *)__pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc},
+ {Py_tp_new, (void *)__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc},
+ {0, 0},
+};
+static PyType_Spec __pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc_spec = {
+ "_pydevd_sys_monitoring_cython.__pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc",
+ sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc),
+ 0,
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE,
+ __pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc_slots,
+};
+#else
+
+static PyTypeObject __pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc = {
+ PyVarObject_HEAD_INIT(0, 0)
+ "_pydevd_sys_monitoring_cython.""__pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc", /*tp_name*/
+ sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc), /*tp_basicsize*/
+ 0, /*tp_itemsize*/
+ __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc, /*tp_dealloc*/
+ #if PY_VERSION_HEX < 0x030800b4
+ 0, /*tp_print*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4
+ 0, /*tp_vectorcall_offset*/
+ #endif
+ 0, /*tp_getattr*/
+ 0, /*tp_setattr*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*tp_compare*/
+ #endif
+ #if PY_MAJOR_VERSION >= 3
+ 0, /*tp_as_async*/
+ #endif
+ 0, /*tp_repr*/
+ 0, /*tp_as_number*/
+ 0, /*tp_as_sequence*/
+ 0, /*tp_as_mapping*/
+ 0, /*tp_hash*/
+ 0, /*tp_call*/
+ 0, /*tp_str*/
+ 0, /*tp_getattro*/
+ 0, /*tp_setattro*/
+ 0, /*tp_as_buffer*/
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+ 0, /*tp_doc*/
+ 0, /*tp_traverse*/
+ 0, /*tp_clear*/
+ 0, /*tp_richcompare*/
+ 0, /*tp_weaklistoffset*/
+ 0, /*tp_iter*/
+ 0, /*tp_iternext*/
+ 0, /*tp_methods*/
+ 0, /*tp_members*/
+ 0, /*tp_getset*/
+ 0, /*tp_base*/
+ 0, /*tp_dict*/
+ 0, /*tp_descr_get*/
+ 0, /*tp_descr_set*/
+ #if !CYTHON_USE_TYPE_SPECS
+ 0, /*tp_dictoffset*/
+ #endif
+ 0, /*tp_init*/
+ 0, /*tp_alloc*/
+ __pyx_tp_new___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc, /*tp_new*/
+ 0, /*tp_free*/
+ 0, /*tp_is_gc*/
+ 0, /*tp_bases*/
+ 0, /*tp_mro*/
+ 0, /*tp_cache*/
+ 0, /*tp_subclasses*/
+ 0, /*tp_weaklist*/
+ 0, /*tp_del*/
+ 0, /*tp_version_tag*/
+ #if PY_VERSION_HEX >= 0x030400a1
+ #if CYTHON_USE_TP_FINALIZE
+ 0, /*tp_finalize*/
+ #else
+ NULL, /*tp_finalize*/
+ #endif
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if __PYX_NEED_TP_PRINT_SLOT == 1
+ 0, /*tp_print*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030C0000
+ 0, /*tp_watched*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030d00A4
+ 0, /*tp_versions_used*/
+ #endif
+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
+ 0, /*tp_pypy_flags*/
+ #endif
+};
+#endif
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset *__pyx_freelist___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset[8];
+static int __pyx_freecount___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset = 0;
+#endif
+
+static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+ PyObject *o;
+ #if CYTHON_COMPILING_IN_LIMITED_API
+ allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
+ o = alloc_func(t, 0);
+ #else
+ #if CYTHON_USE_FREELISTS
+ if (likely((int)(__pyx_freecount___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset)))) {
+ o = (PyObject*)__pyx_freelist___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset[--__pyx_freecount___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset];
+ memset(o, 0, sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset));
+ (void) PyObject_INIT(o, t);
+ } else
+ #endif
+ {
+ o = (*t->tp_alloc)(t, 0);
+ if (unlikely(!o)) return 0;
+ }
+ #endif
+ return o;
+}
+
+static void __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset(PyObject *o) {
+ #if CYTHON_USE_TP_FINALIZE
+ if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
+ if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset) {
+ if (PyObject_CallFinalizerFromDealloc(o)) return;
+ }
+ }
+ #endif
+ #if CYTHON_USE_FREELISTS
+ if (((int)(__pyx_freecount___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset)))) {
+ __pyx_freelist___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset[__pyx_freecount___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset++] = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset *)o);
+ } else
+ #endif
+ {
+ #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
+ (*Py_TYPE(o)->tp_free)(o);
+ #else
+ {
+ freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
+ if (tp_free) tp_free(o);
+ }
+ #endif
+ }
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset_slots[] = {
+ {Py_tp_dealloc, (void *)__pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset},
+ {Py_tp_new, (void *)__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset},
+ {0, 0},
+};
+static PyType_Spec __pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset_spec = {
+ "_pydevd_sys_monitoring_cython.__pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset",
+ sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset),
+ 0,
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE,
+ __pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset_slots,
+};
+#else
+
+static PyTypeObject __pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset = {
+ PyVarObject_HEAD_INIT(0, 0)
+ "_pydevd_sys_monitoring_cython.""__pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset", /*tp_name*/
+ sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset), /*tp_basicsize*/
+ 0, /*tp_itemsize*/
+ __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset, /*tp_dealloc*/
+ #if PY_VERSION_HEX < 0x030800b4
+ 0, /*tp_print*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4
+ 0, /*tp_vectorcall_offset*/
+ #endif
+ 0, /*tp_getattr*/
+ 0, /*tp_setattr*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*tp_compare*/
+ #endif
+ #if PY_MAJOR_VERSION >= 3
+ 0, /*tp_as_async*/
+ #endif
+ 0, /*tp_repr*/
+ 0, /*tp_as_number*/
+ 0, /*tp_as_sequence*/
+ 0, /*tp_as_mapping*/
+ 0, /*tp_hash*/
+ 0, /*tp_call*/
+ 0, /*tp_str*/
+ 0, /*tp_getattro*/
+ 0, /*tp_setattro*/
+ 0, /*tp_as_buffer*/
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+ 0, /*tp_doc*/
+ 0, /*tp_traverse*/
+ 0, /*tp_clear*/
+ 0, /*tp_richcompare*/
+ 0, /*tp_weaklistoffset*/
+ 0, /*tp_iter*/
+ 0, /*tp_iternext*/
+ 0, /*tp_methods*/
+ 0, /*tp_members*/
+ 0, /*tp_getset*/
+ 0, /*tp_base*/
+ 0, /*tp_dict*/
+ 0, /*tp_descr_get*/
+ 0, /*tp_descr_set*/
+ #if !CYTHON_USE_TYPE_SPECS
+ 0, /*tp_dictoffset*/
+ #endif
+ 0, /*tp_init*/
+ 0, /*tp_alloc*/
+ __pyx_tp_new___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset, /*tp_new*/
+ 0, /*tp_free*/
+ 0, /*tp_is_gc*/
+ 0, /*tp_bases*/
+ 0, /*tp_mro*/
+ 0, /*tp_cache*/
+ 0, /*tp_subclasses*/
+ 0, /*tp_weaklist*/
+ 0, /*tp_del*/
+ 0, /*tp_version_tag*/
+ #if PY_VERSION_HEX >= 0x030400a1
+ #if CYTHON_USE_TP_FINALIZE
+ 0, /*tp_finalize*/
+ #else
+ NULL, /*tp_finalize*/
+ #endif
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if __PYX_NEED_TP_PRINT_SLOT == 1
+ 0, /*tp_print*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030C0000
+ 0, /*tp_watched*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030d00A4
+ 0, /*tp_versions_used*/
+ #endif
+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
+ 0, /*tp_pypy_flags*/
+ #endif
+};
+#endif
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line *__pyx_freelist___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line[8];
+static int __pyx_freecount___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line = 0;
+#endif
+
+static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+ PyObject *o;
+ #if CYTHON_COMPILING_IN_LIMITED_API
+ allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
+ o = alloc_func(t, 0);
+ #else
+ #if CYTHON_USE_FREELISTS
+ if (likely((int)(__pyx_freecount___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line)))) {
+ o = (PyObject*)__pyx_freelist___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line[--__pyx_freecount___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line];
+ memset(o, 0, sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line));
+ (void) PyObject_INIT(o, t);
+ } else
+ #endif
+ {
+ o = (*t->tp_alloc)(t, 0);
+ if (unlikely(!o)) return 0;
+ }
+ #endif
+ return o;
+}
+
+static void __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line(PyObject *o) {
+ #if CYTHON_USE_TP_FINALIZE
+ if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
+ if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line) {
+ if (PyObject_CallFinalizerFromDealloc(o)) return;
+ }
+ }
+ #endif
+ #if CYTHON_USE_FREELISTS
+ if (((int)(__pyx_freecount___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line)))) {
+ __pyx_freelist___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line[__pyx_freecount___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line++] = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line *)o);
+ } else
+ #endif
+ {
+ #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
+ (*Py_TYPE(o)->tp_free)(o);
+ #else
+ {
+ freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
+ if (tp_free) tp_free(o);
+ }
+ #endif
+ }
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line_slots[] = {
+ {Py_tp_dealloc, (void *)__pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line},
+ {Py_tp_new, (void *)__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line},
+ {0, 0},
+};
+static PyType_Spec __pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line_spec = {
+ "_pydevd_sys_monitoring_cython.__pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line",
+ sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line),
+ 0,
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE,
+ __pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line_slots,
+};
+#else
+
+static PyTypeObject __pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line = {
+ PyVarObject_HEAD_INIT(0, 0)
+ "_pydevd_sys_monitoring_cython.""__pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line", /*tp_name*/
+ sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line), /*tp_basicsize*/
+ 0, /*tp_itemsize*/
+ __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line, /*tp_dealloc*/
+ #if PY_VERSION_HEX < 0x030800b4
+ 0, /*tp_print*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4
+ 0, /*tp_vectorcall_offset*/
+ #endif
+ 0, /*tp_getattr*/
+ 0, /*tp_setattr*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*tp_compare*/
+ #endif
+ #if PY_MAJOR_VERSION >= 3
+ 0, /*tp_as_async*/
+ #endif
+ 0, /*tp_repr*/
+ 0, /*tp_as_number*/
+ 0, /*tp_as_sequence*/
+ 0, /*tp_as_mapping*/
+ 0, /*tp_hash*/
+ 0, /*tp_call*/
+ 0, /*tp_str*/
+ 0, /*tp_getattro*/
+ 0, /*tp_setattro*/
+ 0, /*tp_as_buffer*/
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+ 0, /*tp_doc*/
+ 0, /*tp_traverse*/
+ 0, /*tp_clear*/
+ 0, /*tp_richcompare*/
+ 0, /*tp_weaklistoffset*/
+ 0, /*tp_iter*/
+ 0, /*tp_iternext*/
+ 0, /*tp_methods*/
+ 0, /*tp_members*/
+ 0, /*tp_getset*/
+ 0, /*tp_base*/
+ 0, /*tp_dict*/
+ 0, /*tp_descr_get*/
+ 0, /*tp_descr_set*/
+ #if !CYTHON_USE_TYPE_SPECS
+ 0, /*tp_dictoffset*/
+ #endif
+ 0, /*tp_init*/
+ 0, /*tp_alloc*/
+ __pyx_tp_new___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line, /*tp_new*/
+ 0, /*tp_free*/
+ 0, /*tp_is_gc*/
+ 0, /*tp_bases*/
+ 0, /*tp_mro*/
+ 0, /*tp_cache*/
+ 0, /*tp_subclasses*/
+ 0, /*tp_weaklist*/
+ 0, /*tp_del*/
+ 0, /*tp_version_tag*/
+ #if PY_VERSION_HEX >= 0x030400a1
+ #if CYTHON_USE_TP_FINALIZE
+ 0, /*tp_finalize*/
+ #else
+ NULL, /*tp_finalize*/
+ #endif
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if __PYX_NEED_TP_PRINT_SLOT == 1
+ 0, /*tp_print*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030C0000
+ 0, /*tp_watched*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030d00A4
+ 0, /*tp_versions_used*/
+ #endif
+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
+ 0, /*tp_pypy_flags*/
+ #endif
+};
+#endif
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset *__pyx_freelist___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset[8];
+static int __pyx_freecount___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset = 0;
+#endif
+
+static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+ PyObject *o;
+ #if CYTHON_COMPILING_IN_LIMITED_API
+ allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
+ o = alloc_func(t, 0);
+ #else
+ #if CYTHON_USE_FREELISTS
+ if (likely((int)(__pyx_freecount___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset)))) {
+ o = (PyObject*)__pyx_freelist___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset[--__pyx_freecount___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset];
+ memset(o, 0, sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset));
+ (void) PyObject_INIT(o, t);
+ } else
+ #endif
+ {
+ o = (*t->tp_alloc)(t, 0);
+ if (unlikely(!o)) return 0;
+ }
+ #endif
+ return o;
+}
+
+static void __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset(PyObject *o) {
+ #if CYTHON_USE_TP_FINALIZE
+ if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
+ if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset) {
+ if (PyObject_CallFinalizerFromDealloc(o)) return;
+ }
+ }
+ #endif
+ #if CYTHON_USE_FREELISTS
+ if (((int)(__pyx_freecount___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset)))) {
+ __pyx_freelist___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset[__pyx_freecount___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset++] = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset *)o);
+ } else
+ #endif
+ {
+ #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
+ (*Py_TYPE(o)->tp_free)(o);
+ #else
+ {
+ freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
+ if (tp_free) tp_free(o);
+ }
+ #endif
+ }
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset_slots[] = {
+ {Py_tp_dealloc, (void *)__pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset},
+ {Py_tp_new, (void *)__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset},
+ {0, 0},
+};
+static PyType_Spec __pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset_spec = {
+ "_pydevd_sys_monitoring_cython.__pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset",
+ sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset),
+ 0,
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE,
+ __pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset_slots,
+};
+#else
+
+static PyTypeObject __pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset = {
+ PyVarObject_HEAD_INIT(0, 0)
+ "_pydevd_sys_monitoring_cython.""__pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset", /*tp_name*/
+ sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset), /*tp_basicsize*/
+ 0, /*tp_itemsize*/
+ __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset, /*tp_dealloc*/
+ #if PY_VERSION_HEX < 0x030800b4
+ 0, /*tp_print*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4
+ 0, /*tp_vectorcall_offset*/
+ #endif
+ 0, /*tp_getattr*/
+ 0, /*tp_setattr*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*tp_compare*/
+ #endif
+ #if PY_MAJOR_VERSION >= 3
+ 0, /*tp_as_async*/
+ #endif
+ 0, /*tp_repr*/
+ 0, /*tp_as_number*/
+ 0, /*tp_as_sequence*/
+ 0, /*tp_as_mapping*/
+ 0, /*tp_hash*/
+ 0, /*tp_call*/
+ 0, /*tp_str*/
+ 0, /*tp_getattro*/
+ 0, /*tp_setattro*/
+ 0, /*tp_as_buffer*/
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+ 0, /*tp_doc*/
+ 0, /*tp_traverse*/
+ 0, /*tp_clear*/
+ 0, /*tp_richcompare*/
+ 0, /*tp_weaklistoffset*/
+ 0, /*tp_iter*/
+ 0, /*tp_iternext*/
+ 0, /*tp_methods*/
+ 0, /*tp_members*/
+ 0, /*tp_getset*/
+ 0, /*tp_base*/
+ 0, /*tp_dict*/
+ 0, /*tp_descr_get*/
+ 0, /*tp_descr_set*/
+ #if !CYTHON_USE_TYPE_SPECS
+ 0, /*tp_dictoffset*/
+ #endif
+ 0, /*tp_init*/
+ 0, /*tp_alloc*/
+ __pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset, /*tp_new*/
+ 0, /*tp_free*/
+ 0, /*tp_is_gc*/
+ 0, /*tp_bases*/
+ 0, /*tp_mro*/
+ 0, /*tp_cache*/
+ 0, /*tp_subclasses*/
+ 0, /*tp_weaklist*/
+ 0, /*tp_del*/
+ 0, /*tp_version_tag*/
+ #if PY_VERSION_HEX >= 0x030400a1
+ #if CYTHON_USE_TP_FINALIZE
+ 0, /*tp_finalize*/
+ #else
+ NULL, /*tp_finalize*/
+ #endif
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if __PYX_NEED_TP_PRINT_SLOT == 1
+ 0, /*tp_print*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030C0000
+ 0, /*tp_watched*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030d00A4
+ 0, /*tp_versions_used*/
+ #endif
+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
+ 0, /*tp_pypy_flags*/
+ #endif
+};
+#endif
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval *__pyx_freelist___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval[8];
+static int __pyx_freecount___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval = 0;
+#endif
+
+static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+ PyObject *o;
+ #if CYTHON_COMPILING_IN_LIMITED_API
+ allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
+ o = alloc_func(t, 0);
+ #else
+ #if CYTHON_USE_FREELISTS
+ if (likely((int)(__pyx_freecount___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval)))) {
+ o = (PyObject*)__pyx_freelist___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval[--__pyx_freecount___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval];
+ memset(o, 0, sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval));
+ (void) PyObject_INIT(o, t);
+ } else
+ #endif
+ {
+ o = (*t->tp_alloc)(t, 0);
+ if (unlikely(!o)) return 0;
+ }
+ #endif
+ return o;
+}
+
+static void __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval(PyObject *o) {
+ #if CYTHON_USE_TP_FINALIZE
+ if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
+ if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval) {
+ if (PyObject_CallFinalizerFromDealloc(o)) return;
+ }
+ }
+ #endif
+ #if CYTHON_USE_FREELISTS
+ if (((int)(__pyx_freecount___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval)))) {
+ __pyx_freelist___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval[__pyx_freecount___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval++] = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval *)o);
+ } else
+ #endif
+ {
+ #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
+ (*Py_TYPE(o)->tp_free)(o);
+ #else
+ {
+ freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
+ if (tp_free) tp_free(o);
+ }
+ #endif
+ }
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval_slots[] = {
+ {Py_tp_dealloc, (void *)__pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval},
+ {Py_tp_new, (void *)__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval},
+ {0, 0},
+};
+static PyType_Spec __pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval_spec = {
+ "_pydevd_sys_monitoring_cython.__pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval",
+ sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval),
+ 0,
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE,
+ __pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval_slots,
+};
+#else
+
+static PyTypeObject __pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval = {
+ PyVarObject_HEAD_INIT(0, 0)
+ "_pydevd_sys_monitoring_cython.""__pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval", /*tp_name*/
+ sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval), /*tp_basicsize*/
+ 0, /*tp_itemsize*/
+ __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval, /*tp_dealloc*/
+ #if PY_VERSION_HEX < 0x030800b4
+ 0, /*tp_print*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4
+ 0, /*tp_vectorcall_offset*/
+ #endif
+ 0, /*tp_getattr*/
+ 0, /*tp_setattr*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*tp_compare*/
+ #endif
+ #if PY_MAJOR_VERSION >= 3
+ 0, /*tp_as_async*/
+ #endif
+ 0, /*tp_repr*/
+ 0, /*tp_as_number*/
+ 0, /*tp_as_sequence*/
+ 0, /*tp_as_mapping*/
+ 0, /*tp_hash*/
+ 0, /*tp_call*/
+ 0, /*tp_str*/
+ 0, /*tp_getattro*/
+ 0, /*tp_setattro*/
+ 0, /*tp_as_buffer*/
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+ 0, /*tp_doc*/
+ 0, /*tp_traverse*/
+ 0, /*tp_clear*/
+ 0, /*tp_richcompare*/
+ 0, /*tp_weaklistoffset*/
+ 0, /*tp_iter*/
+ 0, /*tp_iternext*/
+ 0, /*tp_methods*/
+ 0, /*tp_members*/
+ 0, /*tp_getset*/
+ 0, /*tp_base*/
+ 0, /*tp_dict*/
+ 0, /*tp_descr_get*/
+ 0, /*tp_descr_set*/
+ #if !CYTHON_USE_TYPE_SPECS
+ 0, /*tp_dictoffset*/
+ #endif
+ 0, /*tp_init*/
+ 0, /*tp_alloc*/
+ __pyx_tp_new___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval, /*tp_new*/
+ 0, /*tp_free*/
+ 0, /*tp_is_gc*/
+ 0, /*tp_bases*/
+ 0, /*tp_mro*/
+ 0, /*tp_cache*/
+ 0, /*tp_subclasses*/
+ 0, /*tp_weaklist*/
+ 0, /*tp_del*/
+ 0, /*tp_version_tag*/
+ #if PY_VERSION_HEX >= 0x030400a1
+ #if CYTHON_USE_TP_FINALIZE
+ 0, /*tp_finalize*/
+ #else
+ NULL, /*tp_finalize*/
+ #endif
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if __PYX_NEED_TP_PRINT_SLOT == 1
+ 0, /*tp_print*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030C0000
+ 0, /*tp_watched*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030d00A4
+ 0, /*tp_versions_used*/
+ #endif
+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
+ 0, /*tp_pypy_flags*/
+ #endif
+};
+#endif
+
+static PyMethodDef __pyx_methods[] = {
+ {0, 0, 0, 0}
+};
+#ifndef CYTHON_SMALL_CODE
+#if defined(__clang__)
+ #define CYTHON_SMALL_CODE
+#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
+ #define CYTHON_SMALL_CODE __attribute__((cold))
+#else
+ #define CYTHON_SMALL_CODE
+#endif
+#endif
+/* #### Code section: pystring_table ### */
+
+static int __Pyx_CreateStringTabAndInitStrings(void) {
+ __Pyx_StringTabEntry __pyx_string_tab[] = {
+ {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0},
+ {&__pyx_n_s_ALL, __pyx_k_ALL, sizeof(__pyx_k_ALL), 0, 0, 1, 1},
+ {&__pyx_n_s_Any, __pyx_k_Any, sizeof(__pyx_k_Any), 0, 0, 1, 1},
+ {&__pyx_n_s_AssertionError, __pyx_k_AssertionError, sizeof(__pyx_k_AssertionError), 0, 0, 1, 1},
+ {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, sizeof(__pyx_k_AttributeError), 0, 0, 1, 1},
+ {&__pyx_n_s_CMD_SET_BREAK, __pyx_k_CMD_SET_BREAK, sizeof(__pyx_k_CMD_SET_BREAK), 0, 0, 1, 1},
+ {&__pyx_n_s_CMD_SET_FUNCTION_BREAK, __pyx_k_CMD_SET_FUNCTION_BREAK, sizeof(__pyx_k_CMD_SET_FUNCTION_BREAK), 0, 0, 1, 1},
+ {&__pyx_n_s_CMD_SMART_STEP_INTO, __pyx_k_CMD_SMART_STEP_INTO, sizeof(__pyx_k_CMD_SMART_STEP_INTO), 0, 0, 1, 1},
+ {&__pyx_n_s_CMD_STEP_INTO, __pyx_k_CMD_STEP_INTO, sizeof(__pyx_k_CMD_STEP_INTO), 0, 0, 1, 1},
+ {&__pyx_n_s_CMD_STEP_INTO_COROUTINE, __pyx_k_CMD_STEP_INTO_COROUTINE, sizeof(__pyx_k_CMD_STEP_INTO_COROUTINE), 0, 0, 1, 1},
+ {&__pyx_n_s_CMD_STEP_INTO_MY_CODE, __pyx_k_CMD_STEP_INTO_MY_CODE, sizeof(__pyx_k_CMD_STEP_INTO_MY_CODE), 0, 0, 1, 1},
+ {&__pyx_n_s_CMD_STEP_OVER, __pyx_k_CMD_STEP_OVER, sizeof(__pyx_k_CMD_STEP_OVER), 0, 0, 1, 1},
+ {&__pyx_n_s_CMD_STEP_OVER_MY_CODE, __pyx_k_CMD_STEP_OVER_MY_CODE, sizeof(__pyx_k_CMD_STEP_OVER_MY_CODE), 0, 0, 1, 1},
+ {&__pyx_n_s_CMD_STEP_RETURN, __pyx_k_CMD_STEP_RETURN, sizeof(__pyx_k_CMD_STEP_RETURN), 0, 0, 1, 1},
+ {&__pyx_n_s_CMD_STEP_RETURN_MY_CODE, __pyx_k_CMD_STEP_RETURN_MY_CODE, sizeof(__pyx_k_CMD_STEP_RETURN_MY_CODE), 0, 0, 1, 1},
+ {&__pyx_n_s_CodeLineInfo, __pyx_k_CodeLineInfo, sizeof(__pyx_k_CodeLineInfo), 0, 0, 1, 1},
+ {&__pyx_n_s_CodeType, __pyx_k_CodeType, sizeof(__pyx_k_CodeType), 0, 0, 1, 1},
+ {&__pyx_n_s_DEBUGGER_ID, __pyx_k_DEBUGGER_ID, sizeof(__pyx_k_DEBUGGER_ID), 0, 0, 1, 1},
+ {&__pyx_n_s_DEBUG_START, __pyx_k_DEBUG_START, sizeof(__pyx_k_DEBUG_START), 0, 0, 1, 1},
+ {&__pyx_n_s_DEBUG_START_PY3K, __pyx_k_DEBUG_START_PY3K, sizeof(__pyx_k_DEBUG_START_PY3K), 0, 0, 1, 1},
+ {&__pyx_n_s_DISABLE, __pyx_k_DISABLE, sizeof(__pyx_k_DISABLE), 0, 0, 1, 1},
+ {&__pyx_n_s_DeleteDummyThreadOnDel, __pyx_k_DeleteDummyThreadOnDel, sizeof(__pyx_k_DeleteDummyThreadOnDel), 0, 0, 1, 1},
+ {&__pyx_n_s_DeleteDummyThreadOnDel___del, __pyx_k_DeleteDummyThreadOnDel___del, sizeof(__pyx_k_DeleteDummyThreadOnDel___del), 0, 0, 1, 1},
+ {&__pyx_n_s_DeleteDummyThreadOnDel___init, __pyx_k_DeleteDummyThreadOnDel___init, sizeof(__pyx_k_DeleteDummyThreadOnDel___init), 0, 0, 1, 1},
+ {&__pyx_n_s_Dict, __pyx_k_Dict, sizeof(__pyx_k_Dict), 0, 0, 1, 1},
+ {&__pyx_n_s_DummyThread, __pyx_k_DummyThread, sizeof(__pyx_k_DummyThread), 0, 0, 1, 1},
+ {&__pyx_n_s_EXCEPTION_TYPE_HANDLED, __pyx_k_EXCEPTION_TYPE_HANDLED, sizeof(__pyx_k_EXCEPTION_TYPE_HANDLED), 0, 0, 1, 1},
+ {&__pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED, __pyx_k_EXCEPTION_TYPE_USER_UNHANDLED, sizeof(__pyx_k_EXCEPTION_TYPE_USER_UNHANDLED), 0, 0, 1, 1},
+ {&__pyx_n_s_ForkSafeLock, __pyx_k_ForkSafeLock, sizeof(__pyx_k_ForkSafeLock), 0, 0, 1, 1},
+ {&__pyx_n_s_FrameType, __pyx_k_FrameType, sizeof(__pyx_k_FrameType), 0, 0, 1, 1},
+ {&__pyx_n_s_FuncCodeInfo, __pyx_k_FuncCodeInfo, sizeof(__pyx_k_FuncCodeInfo), 0, 0, 1, 1},
+ {&__pyx_n_s_FuncCodeInfo___reduce_cython, __pyx_k_FuncCodeInfo___reduce_cython, sizeof(__pyx_k_FuncCodeInfo___reduce_cython), 0, 0, 1, 1},
+ {&__pyx_n_s_FuncCodeInfo___setstate_cython, __pyx_k_FuncCodeInfo___setstate_cython, sizeof(__pyx_k_FuncCodeInfo___setstate_cython), 0, 0, 1, 1},
+ {&__pyx_n_s_FuncCodeInfo_get_line_of_offset, __pyx_k_FuncCodeInfo_get_line_of_offset, sizeof(__pyx_k_FuncCodeInfo_get_line_of_offset), 0, 0, 1, 1},
+ {&__pyx_n_s_GlobalDebuggerHolder, __pyx_k_GlobalDebuggerHolder, sizeof(__pyx_k_GlobalDebuggerHolder), 0, 0, 1, 1},
+ {&__pyx_kp_s_Helper_class_to_remove_a_dummy, __pyx_k_Helper_class_to_remove_a_dummy, sizeof(__pyx_k_Helper_class_to_remove_a_dummy), 0, 0, 1, 0},
+ {&__pyx_n_s_IGNORE_EXCEPTION_TAG, __pyx_k_IGNORE_EXCEPTION_TAG, sizeof(__pyx_k_IGNORE_EXCEPTION_TAG), 0, 0, 1, 1},
+ {&__pyx_kp_s_IgnoreException, __pyx_k_IgnoreException, sizeof(__pyx_k_IgnoreException), 0, 0, 1, 0},
+ {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1},
+ {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_k_Incompatible_checksums_0x_x_vs_0, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0), 0, 0, 1, 0},
+ {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2, __pyx_k_Incompatible_checksums_0x_x_vs_0_2, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_2), 0, 0, 1, 0},
+ {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3, __pyx_k_Incompatible_checksums_0x_x_vs_0_3, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_3), 0, 0, 1, 0},
+ {&__pyx_n_s_JUMP, __pyx_k_JUMP, sizeof(__pyx_k_JUMP), 0, 0, 1, 1},
+ {&__pyx_n_s_LINE, __pyx_k_LINE, sizeof(__pyx_k_LINE), 0, 0, 1, 1},
+ {&__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER, __pyx_k_NORM_PATHS_AND_BASE_CONTAINER, sizeof(__pyx_k_NORM_PATHS_AND_BASE_CONTAINER), 0, 0, 1, 1},
+ {&__pyx_n_s_None, __pyx_k_None, sizeof(__pyx_k_None), 0, 0, 1, 1},
+ {&__pyx_n_s_Optional, __pyx_k_Optional, sizeof(__pyx_k_Optional), 0, 0, 1, 1},
+ {&__pyx_kp_s_Optional_bool, __pyx_k_Optional_bool, sizeof(__pyx_k_Optional_bool), 0, 0, 1, 0},
+ {&__pyx_n_s_PYDEVD_IPYTHON_CONTEXT, __pyx_k_PYDEVD_IPYTHON_CONTEXT, sizeof(__pyx_k_PYDEVD_IPYTHON_CONTEXT), 0, 0, 1, 1},
+ {&__pyx_n_s_PYTHON_SUSPEND, __pyx_k_PYTHON_SUSPEND, sizeof(__pyx_k_PYTHON_SUSPEND), 0, 0, 1, 1},
+ {&__pyx_n_s_PY_RESUME, __pyx_k_PY_RESUME, sizeof(__pyx_k_PY_RESUME), 0, 0, 1, 1},
+ {&__pyx_n_s_PY_RETURN, __pyx_k_PY_RETURN, sizeof(__pyx_k_PY_RETURN), 0, 0, 1, 1},
+ {&__pyx_n_s_PY_START, __pyx_k_PY_START, sizeof(__pyx_k_PY_START), 0, 0, 1, 1},
+ {&__pyx_n_s_PY_UNWIND, __pyx_k_PY_UNWIND, sizeof(__pyx_k_PY_UNWIND), 0, 0, 1, 1},
+ {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1},
+ {&__pyx_n_s_Pyx_CFunc_4904d5__29_pydevd_sy, __pyx_k_Pyx_CFunc_4904d5__29_pydevd_sy, sizeof(__pyx_k_Pyx_CFunc_4904d5__29_pydevd_sy), 0, 0, 1, 1},
+ {&__pyx_n_s_Pyx_CFunc_4904d5__29_pydevd_sy_2, __pyx_k_Pyx_CFunc_4904d5__29_pydevd_sy_2, sizeof(__pyx_k_Pyx_CFunc_4904d5__29_pydevd_sy_2), 0, 0, 1, 1},
+ {&__pyx_n_s_Pyx_CFunc_7f6725__29_pydevd_sy, __pyx_k_Pyx_CFunc_7f6725__29_pydevd_sy, sizeof(__pyx_k_Pyx_CFunc_7f6725__29_pydevd_sy), 0, 0, 1, 1},
+ {&__pyx_n_s_Pyx_CFunc_893235__29_pydevd_sy, __pyx_k_Pyx_CFunc_893235__29_pydevd_sy, sizeof(__pyx_k_Pyx_CFunc_893235__29_pydevd_sy), 0, 0, 1, 1},
+ {&__pyx_n_s_Pyx_CFunc_b0409f__29_pydevd_sy, __pyx_k_Pyx_CFunc_b0409f__29_pydevd_sy, sizeof(__pyx_k_Pyx_CFunc_b0409f__29_pydevd_sy), 0, 0, 1, 1},
+ {&__pyx_n_s_RAISE, __pyx_k_RAISE, sizeof(__pyx_k_RAISE), 0, 0, 1, 1},
+ {&__pyx_n_s_RETURN_VALUES_DICT, __pyx_k_RETURN_VALUES_DICT, sizeof(__pyx_k_RETURN_VALUES_DICT), 0, 0, 1, 1},
+ {&__pyx_n_s_STATE_RUN, __pyx_k_STATE_RUN, sizeof(__pyx_k_STATE_RUN), 0, 0, 1, 1},
+ {&__pyx_n_s_STATE_SUSPEND, __pyx_k_STATE_SUSPEND, sizeof(__pyx_k_STATE_SUSPEND), 0, 0, 1, 1},
+ {&__pyx_kp_s_Stop_inside_ipython_call, __pyx_k_Stop_inside_ipython_call, sizeof(__pyx_k_Stop_inside_ipython_call), 0, 0, 1, 0},
+ {&__pyx_n_s_TRACE_PROPERTY, __pyx_k_TRACE_PROPERTY, sizeof(__pyx_k_TRACE_PROPERTY), 0, 0, 1, 1},
+ {&__pyx_n_s_Thread, __pyx_k_Thread, sizeof(__pyx_k_Thread), 0, 0, 1, 1},
+ {&__pyx_n_s_ThreadInfo, __pyx_k_ThreadInfo, sizeof(__pyx_k_ThreadInfo), 0, 0, 1, 1},
+ {&__pyx_n_s_ThreadInfo___reduce_cython, __pyx_k_ThreadInfo___reduce_cython, sizeof(__pyx_k_ThreadInfo___reduce_cython), 0, 0, 1, 1},
+ {&__pyx_n_s_ThreadInfo___setstate_cython, __pyx_k_ThreadInfo___setstate_cython, sizeof(__pyx_k_ThreadInfo___setstate_cython), 0, 0, 1, 1},
+ {&__pyx_n_s_TryExceptContainerObj, __pyx_k_TryExceptContainerObj, sizeof(__pyx_k_TryExceptContainerObj), 0, 0, 1, 1},
+ {&__pyx_n_s_TryExceptContainerObj___reduce, __pyx_k_TryExceptContainerObj___reduce, sizeof(__pyx_k_TryExceptContainerObj___reduce), 0, 0, 1, 1},
+ {&__pyx_n_s_TryExceptContainerObj___setstat, __pyx_k_TryExceptContainerObj___setstat, sizeof(__pyx_k_TryExceptContainerObj___setstat), 0, 0, 1, 1},
+ {&__pyx_n_s_Tuple, __pyx_k_Tuple, sizeof(__pyx_k_Tuple), 0, 0, 1, 1},
+ {&__pyx_kp_s__14, __pyx_k__14, sizeof(__pyx_k__14), 0, 0, 1, 0},
+ {&__pyx_kp_s__17, __pyx_k__17, sizeof(__pyx_k__17), 0, 0, 1, 0},
+ {&__pyx_kp_u__19, __pyx_k__19, sizeof(__pyx_k__19), 0, 1, 0, 0},
+ {&__pyx_n_s__22, __pyx_k__22, sizeof(__pyx_k__22), 0, 0, 1, 1},
+ {&__pyx_n_s_active, __pyx_k_active, sizeof(__pyx_k_active), 0, 0, 1, 1},
+ {&__pyx_n_s_active_limbo_lock, __pyx_k_active_limbo_lock, sizeof(__pyx_k_active_limbo_lock), 0, 0, 1, 1},
+ {&__pyx_n_s_add_command, __pyx_k_add_command, sizeof(__pyx_k_add_command), 0, 0, 1, 1},
+ {&__pyx_n_s_additional_info, __pyx_k_additional_info, sizeof(__pyx_k_additional_info), 0, 0, 1, 1},
+ {&__pyx_n_s_all_threads, __pyx_k_all_threads, sizeof(__pyx_k_all_threads), 0, 0, 1, 1},
+ {&__pyx_n_s_apply_files_filter, __pyx_k_apply_files_filter, sizeof(__pyx_k_apply_files_filter), 0, 0, 1, 1},
+ {&__pyx_n_s_arg, __pyx_k_arg, sizeof(__pyx_k_arg), 0, 0, 1, 1},
+ {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1},
+ {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1},
+ {&__pyx_n_s_basename, __pyx_k_basename, sizeof(__pyx_k_basename), 0, 0, 1, 1},
+ {&__pyx_n_s_bootstrap, __pyx_k_bootstrap, sizeof(__pyx_k_bootstrap), 0, 0, 1, 1},
+ {&__pyx_n_s_bootstrap_2, __pyx_k_bootstrap_2, sizeof(__pyx_k_bootstrap_2), 0, 0, 1, 1},
+ {&__pyx_n_s_bootstrap_inner, __pyx_k_bootstrap_inner, sizeof(__pyx_k_bootstrap_inner), 0, 0, 1, 1},
+ {&__pyx_n_s_bootstrap_inner_2, __pyx_k_bootstrap_inner_2, sizeof(__pyx_k_bootstrap_inner_2), 0, 0, 1, 1},
+ {&__pyx_n_s_break_on_caught_exceptions, __pyx_k_break_on_caught_exceptions, sizeof(__pyx_k_break_on_caught_exceptions), 0, 0, 1, 1},
+ {&__pyx_n_s_break_on_uncaught_exceptions, __pyx_k_break_on_uncaught_exceptions, sizeof(__pyx_k_break_on_uncaught_exceptions), 0, 0, 1, 1},
+ {&__pyx_n_s_break_on_user_uncaught_exception, __pyx_k_break_on_user_uncaught_exception, sizeof(__pyx_k_break_on_user_uncaught_exception), 0, 0, 1, 1},
+ {&__pyx_n_s_breakpoints, __pyx_k_breakpoints, sizeof(__pyx_k_breakpoints), 0, 0, 1, 1},
+ {&__pyx_n_s_call, __pyx_k_call, sizeof(__pyx_k_call), 0, 0, 1, 1},
+ {&__pyx_n_s_call_2, __pyx_k_call_2, sizeof(__pyx_k_call_2), 0, 0, 1, 1},
+ {&__pyx_n_s_can_skip, __pyx_k_can_skip, sizeof(__pyx_k_can_skip), 0, 0, 1, 1},
+ {&__pyx_n_s_cfunc_to_py, __pyx_k_cfunc_to_py, sizeof(__pyx_k_cfunc_to_py), 0, 0, 1, 1},
+ {&__pyx_n_s_children_variants, __pyx_k_children_variants, sizeof(__pyx_k_children_variants), 0, 0, 1, 1},
+ {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1},
+ {&__pyx_n_s_class_getitem, __pyx_k_class_getitem, sizeof(__pyx_k_class_getitem), 0, 0, 1, 1},
+ {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
+ {&__pyx_n_s_cmd_factory, __pyx_k_cmd_factory, sizeof(__pyx_k_cmd_factory), 0, 0, 1, 1},
+ {&__pyx_n_s_cmd_step_into, __pyx_k_cmd_step_into, sizeof(__pyx_k_cmd_step_into), 0, 0, 1, 1},
+ {&__pyx_n_s_cmd_step_over, __pyx_k_cmd_step_over, sizeof(__pyx_k_cmd_step_over), 0, 0, 1, 1},
+ {&__pyx_n_s_co_filename, __pyx_k_co_filename, sizeof(__pyx_k_co_filename), 0, 0, 1, 1},
+ {&__pyx_n_s_co_lines, __pyx_k_co_lines, sizeof(__pyx_k_co_lines), 0, 0, 1, 1},
+ {&__pyx_n_s_co_name, __pyx_k_co_name, sizeof(__pyx_k_co_name), 0, 0, 1, 1},
+ {&__pyx_n_s_code, __pyx_k_code, sizeof(__pyx_k_code), 0, 0, 1, 1},
+ {&__pyx_n_s_code_obj, __pyx_k_code_obj, sizeof(__pyx_k_code_obj), 0, 0, 1, 1},
+ {&__pyx_n_s_code_to_func_code_info_cache, __pyx_k_code_to_func_code_info_cache, sizeof(__pyx_k_code_to_func_code_info_cache), 0, 0, 1, 1},
+ {&__pyx_n_s_collect_try_except_info, __pyx_k_collect_try_except_info, sizeof(__pyx_k_collect_try_except_info), 0, 0, 1, 1},
+ {&__pyx_n_s_collections, __pyx_k_collections, sizeof(__pyx_k_collections), 0, 0, 1, 1},
+ {&__pyx_n_s_compile, __pyx_k_compile, sizeof(__pyx_k_compile), 0, 0, 1, 1},
+ {&__pyx_n_s_current_thread, __pyx_k_current_thread, sizeof(__pyx_k_current_thread), 0, 0, 1, 1},
+ {&__pyx_n_s_debug, __pyx_k_debug, sizeof(__pyx_k_debug), 0, 0, 1, 1},
+ {&__pyx_n_s_del, __pyx_k_del, sizeof(__pyx_k_del), 0, 0, 1, 1},
+ {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1},
+ {&__pyx_n_s_dict_2, __pyx_k_dict_2, sizeof(__pyx_k_dict_2), 0, 0, 1, 1},
+ {&__pyx_n_s_dis, __pyx_k_dis, sizeof(__pyx_k_dis), 0, 0, 1, 1},
+ {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0},
+ {&__pyx_n_s_disable_code_tracing, __pyx_k_disable_code_tracing, sizeof(__pyx_k_disable_code_tracing), 0, 0, 1, 1},
+ {&__pyx_n_s_do_wait_suspend, __pyx_k_do_wait_suspend, sizeof(__pyx_k_do_wait_suspend), 0, 0, 1, 1},
+ {&__pyx_n_s_do_wait_suspend_2, __pyx_k_do_wait_suspend_2, sizeof(__pyx_k_do_wait_suspend_2), 0, 0, 1, 1},
+ {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1},
+ {&__pyx_n_s_dummy_thread, __pyx_k_dummy_thread, sizeof(__pyx_k_dummy_thread), 0, 0, 1, 1},
+ {&__pyx_n_s_dummy_thread_2, __pyx_k_dummy_thread_2, sizeof(__pyx_k_dummy_thread_2), 0, 0, 1, 1},
+ {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0},
+ {&__pyx_n_s_enable_code_tracing, __pyx_k_enable_code_tracing, sizeof(__pyx_k_enable_code_tracing), 0, 0, 1, 1},
+ {&__pyx_n_s_end, __pyx_k_end, sizeof(__pyx_k_end), 0, 0, 1, 1},
+ {&__pyx_n_s_endswith, __pyx_k_endswith, sizeof(__pyx_k_endswith), 0, 0, 1, 1},
+ {&__pyx_n_s_ensure_monitoring, __pyx_k_ensure_monitoring, sizeof(__pyx_k_ensure_monitoring), 0, 0, 1, 1},
+ {&__pyx_n_s_enter, __pyx_k_enter, sizeof(__pyx_k_enter), 0, 0, 1, 1},
+ {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1},
+ {&__pyx_n_s_event, __pyx_k_event, sizeof(__pyx_k_event), 0, 0, 1, 1},
+ {&__pyx_n_s_events, __pyx_k_events, sizeof(__pyx_k_events), 0, 0, 1, 1},
+ {&__pyx_n_s_exc, __pyx_k_exc, sizeof(__pyx_k_exc), 0, 0, 1, 1},
+ {&__pyx_n_s_exception, __pyx_k_exception, sizeof(__pyx_k_exception), 0, 0, 1, 1},
+ {&__pyx_n_s_exec, __pyx_k_exec, sizeof(__pyx_k_exec), 0, 0, 1, 1},
+ {&__pyx_n_s_execfile, __pyx_k_execfile, sizeof(__pyx_k_execfile), 0, 0, 1, 1},
+ {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1},
+ {&__pyx_n_s_expression, __pyx_k_expression, sizeof(__pyx_k_expression), 0, 0, 1, 1},
+ {&__pyx_n_s_f_back, __pyx_k_f_back, sizeof(__pyx_k_f_back), 0, 0, 1, 1},
+ {&__pyx_n_s_f_bootstrap, __pyx_k_f_bootstrap, sizeof(__pyx_k_f_bootstrap), 0, 0, 1, 1},
+ {&__pyx_n_s_f_code, __pyx_k_f_code, sizeof(__pyx_k_f_code), 0, 0, 1, 1},
+ {&__pyx_n_s_f_disable_next_line_if_match, __pyx_k_f_disable_next_line_if_match, sizeof(__pyx_k_f_disable_next_line_if_match), 0, 0, 1, 1},
+ {&__pyx_n_s_f_lasti, __pyx_k_f_lasti, sizeof(__pyx_k_f_lasti), 0, 0, 1, 1},
+ {&__pyx_n_s_f_lineno, __pyx_k_f_lineno, sizeof(__pyx_k_f_lineno), 0, 0, 1, 1},
+ {&__pyx_n_s_f_locals, __pyx_k_f_locals, sizeof(__pyx_k_f_locals), 0, 0, 1, 1},
+ {&__pyx_n_s_file_to_line_to_breakpoints, __pyx_k_file_to_line_to_breakpoints, sizeof(__pyx_k_file_to_line_to_breakpoints), 0, 0, 1, 1},
+ {&__pyx_n_s_findlinestarts, __pyx_k_findlinestarts, sizeof(__pyx_k_findlinestarts), 0, 0, 1, 1},
+ {&__pyx_n_s_flag_as_unwinding, __pyx_k_flag_as_unwinding, sizeof(__pyx_k_flag_as_unwinding), 0, 0, 1, 1},
+ {&__pyx_n_s_frame, __pyx_k_frame, sizeof(__pyx_k_frame), 0, 0, 1, 1},
+ {&__pyx_n_s_frame_or_depth, __pyx_k_frame_or_depth, sizeof(__pyx_k_frame_or_depth), 0, 0, 1, 1},
+ {&__pyx_n_s_free_tool_id, __pyx_k_free_tool_id, sizeof(__pyx_k_free_tool_id), 0, 0, 1, 1},
+ {&__pyx_n_s_from_offset, __pyx_k_from_offset, sizeof(__pyx_k_from_offset), 0, 0, 1, 1},
+ {&__pyx_kp_s_frozen_runpy, __pyx_k_frozen_runpy, sizeof(__pyx_k_frozen_runpy), 0, 0, 1, 0},
+ {&__pyx_n_s_function_breakpoint_name_to_brea, __pyx_k_function_breakpoint_name_to_brea, sizeof(__pyx_k_function_breakpoint_name_to_brea), 0, 0, 1, 1},
+ {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0},
+ {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1},
+ {&__pyx_n_s_get_abs_path_real_path_and_base, __pyx_k_get_abs_path_real_path_and_base, sizeof(__pyx_k_get_abs_path_real_path_and_base), 0, 0, 1, 1},
+ {&__pyx_n_s_get_abs_path_real_path_and_base_2, __pyx_k_get_abs_path_real_path_and_base_2, sizeof(__pyx_k_get_abs_path_real_path_and_base_2), 0, 0, 1, 1},
+ {&__pyx_n_s_get_breakpoint, __pyx_k_get_breakpoint, sizeof(__pyx_k_get_breakpoint), 0, 0, 1, 1},
+ {&__pyx_n_s_get_cache_file_type, __pyx_k_get_cache_file_type, sizeof(__pyx_k_get_cache_file_type), 0, 0, 1, 1},
+ {&__pyx_n_s_get_clsname_for_code, __pyx_k_get_clsname_for_code, sizeof(__pyx_k_get_clsname_for_code), 0, 0, 1, 1},
+ {&__pyx_n_s_get_file_type, __pyx_k_get_file_type, sizeof(__pyx_k_get_file_type), 0, 0, 1, 1},
+ {&__pyx_n_s_get_func_code_info, __pyx_k_get_func_code_info, sizeof(__pyx_k_get_func_code_info), 0, 0, 1, 1},
+ {&__pyx_n_s_get_ident, __pyx_k_get_ident, sizeof(__pyx_k_get_ident), 0, 0, 1, 1},
+ {&__pyx_n_s_get_ident_2, __pyx_k_get_ident_2, sizeof(__pyx_k_get_ident_2), 0, 0, 1, 1},
+ {&__pyx_n_s_get_line_of_offset, __pyx_k_get_line_of_offset, sizeof(__pyx_k_get_line_of_offset), 0, 0, 1, 1},
+ {&__pyx_n_s_get_local_events, __pyx_k_get_local_events, sizeof(__pyx_k_get_local_events), 0, 0, 1, 1},
+ {&__pyx_n_s_get_smart_step_into_variant_from, __pyx_k_get_smart_step_into_variant_from, sizeof(__pyx_k_get_smart_step_into_variant_from), 0, 0, 1, 1},
+ {&__pyx_n_s_get_tool, __pyx_k_get_tool, sizeof(__pyx_k_get_tool), 0, 0, 1, 1},
+ {&__pyx_n_s_getframe, __pyx_k_getframe, sizeof(__pyx_k_getframe), 0, 0, 1, 1},
+ {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1},
+ {&__pyx_n_s_global_dbg, __pyx_k_global_dbg, sizeof(__pyx_k_global_dbg), 0, 0, 1, 1},
+ {&__pyx_n_s_global_notify_skipped_step_in, __pyx_k_global_notify_skipped_step_in, sizeof(__pyx_k_global_notify_skipped_step_in), 0, 0, 1, 1},
+ {&__pyx_n_s_global_notify_skipped_step_in_l, __pyx_k_global_notify_skipped_step_in_l, sizeof(__pyx_k_global_notify_skipped_step_in_l), 0, 0, 1, 1},
+ {&__pyx_n_s_handle_breakpoint_condition, __pyx_k_handle_breakpoint_condition, sizeof(__pyx_k_handle_breakpoint_condition), 0, 0, 1, 1},
+ {&__pyx_n_s_handle_breakpoint_expression, __pyx_k_handle_breakpoint_expression, sizeof(__pyx_k_handle_breakpoint_expression), 0, 0, 1, 1},
+ {&__pyx_n_s_handle_exception, __pyx_k_handle_exception, sizeof(__pyx_k_handle_exception), 0, 0, 1, 1},
+ {&__pyx_n_s_has_breaks, __pyx_k_has_breaks, sizeof(__pyx_k_has_breaks), 0, 0, 1, 1},
+ {&__pyx_n_s_has_caught_exception_breakpoint, __pyx_k_has_caught_exception_breakpoint, sizeof(__pyx_k_has_caught_exception_breakpoint), 0, 0, 1, 1},
+ {&__pyx_n_s_has_condition, __pyx_k_has_condition, sizeof(__pyx_k_has_condition), 0, 0, 1, 1},
+ {&__pyx_n_s_has_plugin_exception_breaks, __pyx_k_has_plugin_exception_breaks, sizeof(__pyx_k_has_plugin_exception_breaks), 0, 0, 1, 1},
+ {&__pyx_n_s_has_plugin_line_breaks, __pyx_k_has_plugin_line_breaks, sizeof(__pyx_k_has_plugin_line_breaks), 0, 0, 1, 1},
+ {&__pyx_n_s_ident, __pyx_k_ident, sizeof(__pyx_k_ident), 0, 0, 1, 1},
+ {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
+ {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1},
+ {&__pyx_n_s_init_subclass, __pyx_k_init_subclass, sizeof(__pyx_k_init_subclass), 0, 0, 1, 1},
+ {&__pyx_n_s_initializing, __pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 0, 1, 1},
+ {&__pyx_n_s_instruction, __pyx_k_instruction, sizeof(__pyx_k_instruction), 0, 0, 1, 1},
+ {&__pyx_n_s_instruction_offset, __pyx_k_instruction_offset, sizeof(__pyx_k_instruction_offset), 0, 0, 1, 1},
+ {&__pyx_n_s_is_alive, __pyx_k_is_alive, sizeof(__pyx_k_is_alive), 0, 0, 1, 1},
+ {&__pyx_n_s_is_bootstrap_frame_internal, __pyx_k_is_bootstrap_frame_internal, sizeof(__pyx_k_is_bootstrap_frame_internal), 0, 0, 1, 1},
+ {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1},
+ {&__pyx_n_s_is_files_filter_enabled, __pyx_k_is_files_filter_enabled, sizeof(__pyx_k_is_files_filter_enabled), 0, 0, 1, 1},
+ {&__pyx_n_s_is_logpoint, __pyx_k_is_logpoint, sizeof(__pyx_k_is_logpoint), 0, 0, 1, 1},
+ {&__pyx_n_s_is_pydev_daemon_thread, __pyx_k_is_pydev_daemon_thread, sizeof(__pyx_k_is_pydev_daemon_thread), 0, 0, 1, 1},
+ {&__pyx_n_s_is_stopped, __pyx_k_is_stopped, sizeof(__pyx_k_is_stopped), 0, 0, 1, 1},
+ {&__pyx_n_s_is_tracked_frame, __pyx_k_is_tracked_frame, sizeof(__pyx_k_is_tracked_frame), 0, 0, 1, 1},
+ {&__pyx_n_s_is_unhandled_exception, __pyx_k_is_unhandled_exception, sizeof(__pyx_k_is_unhandled_exception), 0, 0, 1, 1},
+ {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0},
+ {&__pyx_n_s_items, __pyx_k_items, sizeof(__pyx_k_items), 0, 0, 1, 1},
+ {&__pyx_n_s_kwargs, __pyx_k_kwargs, sizeof(__pyx_k_kwargs), 0, 0, 1, 1},
+ {&__pyx_n_s_line, __pyx_k_line, sizeof(__pyx_k_line), 0, 0, 1, 1},
+ {&__pyx_n_s_line_to_breakpoints, __pyx_k_line_to_breakpoints, sizeof(__pyx_k_line_to_breakpoints), 0, 0, 1, 1},
+ {&__pyx_n_s_line_to_offset, __pyx_k_line_to_offset, sizeof(__pyx_k_line_to_offset), 0, 0, 1, 1},
+ {&__pyx_kp_s_line_to_offset_first_line_last_l, __pyx_k_line_to_offset_first_line_last_l, sizeof(__pyx_k_line_to_offset_first_line_last_l), 0, 0, 1, 0},
+ {&__pyx_n_s_linesep, __pyx_k_linesep, sizeof(__pyx_k_linesep), 0, 0, 1, 1},
+ {&__pyx_n_s_local, __pyx_k_local, sizeof(__pyx_k_local), 0, 0, 1, 1},
+ {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
+ {&__pyx_n_s_main_2, __pyx_k_main_2, sizeof(__pyx_k_main_2), 0, 0, 1, 1},
+ {&__pyx_n_s_make_io_message, __pyx_k_make_io_message, sizeof(__pyx_k_make_io_message), 0, 0, 1, 1},
+ {&__pyx_n_s_max, __pyx_k_max, sizeof(__pyx_k_max), 0, 0, 1, 1},
+ {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1},
+ {&__pyx_n_s_min, __pyx_k_min, sizeof(__pyx_k_min), 0, 0, 1, 1},
+ {&__pyx_kp_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 0},
+ {&__pyx_n_s_module_2, __pyx_k_module_2, sizeof(__pyx_k_module_2), 0, 0, 1, 1},
+ {&__pyx_n_s_monitor, __pyx_k_monitor, sizeof(__pyx_k_monitor), 0, 0, 1, 1},
+ {&__pyx_n_s_monitoring, __pyx_k_monitoring, sizeof(__pyx_k_monitoring), 0, 0, 1, 1},
+ {&__pyx_n_s_mtime, __pyx_k_mtime, sizeof(__pyx_k_mtime), 0, 0, 1, 1},
+ {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
+ {&__pyx_n_s_namedtuple, __pyx_k_namedtuple, sizeof(__pyx_k_namedtuple), 0, 0, 1, 1},
+ {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1},
+ {&__pyx_n_s_notify_skipped_step_in_because_o, __pyx_k_notify_skipped_step_in_because_o, sizeof(__pyx_k_notify_skipped_step_in_because_o), 0, 0, 1, 1},
+ {&__pyx_n_s_offset, __pyx_k_offset, sizeof(__pyx_k_offset), 0, 0, 1, 1},
+ {&__pyx_n_s_original_step_cmd, __pyx_k_original_step_cmd, sizeof(__pyx_k_original_step_cmd), 0, 0, 1, 1},
+ {&__pyx_n_s_os, __pyx_k_os, sizeof(__pyx_k_os), 0, 0, 1, 1},
+ {&__pyx_n_s_os_path, __pyx_k_os_path, sizeof(__pyx_k_os_path), 0, 0, 1, 1},
+ {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1},
+ {&__pyx_n_s_plugin, __pyx_k_plugin, sizeof(__pyx_k_plugin), 0, 0, 1, 1},
+ {&__pyx_n_s_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 0, 0, 1, 1},
+ {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1},
+ {&__pyx_n_s_py_db, __pyx_k_py_db, sizeof(__pyx_k_py_db), 0, 0, 1, 1},
+ {&__pyx_kp_s_pyc, __pyx_k_pyc, sizeof(__pyx_k_pyc), 0, 0, 1, 0},
+ {&__pyx_n_s_pydb_disposed, __pyx_k_pydb_disposed, sizeof(__pyx_k_pydb_disposed), 0, 0, 1, 1},
+ {&__pyx_n_s_pydev_bundle, __pyx_k_pydev_bundle, sizeof(__pyx_k_pydev_bundle), 0, 0, 1, 1},
+ {&__pyx_n_s_pydev_bundle__pydev_saved_modul, __pyx_k_pydev_bundle__pydev_saved_modul, sizeof(__pyx_k_pydev_bundle__pydev_saved_modul), 0, 0, 1, 1},
+ {&__pyx_n_s_pydev_do_not_trace, __pyx_k_pydev_do_not_trace, sizeof(__pyx_k_pydev_do_not_trace), 0, 0, 1, 1},
+ {&__pyx_kp_s_pydev_execfile_py, __pyx_k_pydev_execfile_py, sizeof(__pyx_k_pydev_execfile_py), 0, 0, 1, 0},
+ {&__pyx_n_s_pydev_log, __pyx_k_pydev_log, sizeof(__pyx_k_pydev_log), 0, 0, 1, 1},
+ {&__pyx_n_s_pydev_monkey, __pyx_k_pydev_monkey, sizeof(__pyx_k_pydev_monkey), 0, 0, 1, 1},
+ {&__pyx_n_s_pydev_state, __pyx_k_pydev_state, sizeof(__pyx_k_pydev_state), 0, 0, 1, 1},
+ {&__pyx_n_s_pydev_step_cmd, __pyx_k_pydev_step_cmd, sizeof(__pyx_k_pydev_step_cmd), 0, 0, 1, 1},
+ {&__pyx_n_s_pydevd, __pyx_k_pydevd, sizeof(__pyx_k_pydevd), 0, 0, 1, 1},
+ {&__pyx_n_s_pydevd_bundle, __pyx_k_pydevd_bundle, sizeof(__pyx_k_pydevd_bundle), 0, 0, 1, 1},
+ {&__pyx_n_s_pydevd_bundle_pydevd_breakpoint, __pyx_k_pydevd_bundle_pydevd_breakpoint, sizeof(__pyx_k_pydevd_bundle_pydevd_breakpoint), 0, 0, 1, 1},
+ {&__pyx_n_s_pydevd_bundle_pydevd_bytecode_u, __pyx_k_pydevd_bundle_pydevd_bytecode_u, sizeof(__pyx_k_pydevd_bundle_pydevd_bytecode_u), 0, 0, 1, 1},
+ {&__pyx_n_s_pydevd_bundle_pydevd_constants, __pyx_k_pydevd_bundle_pydevd_constants, sizeof(__pyx_k_pydevd_bundle_pydevd_constants), 0, 0, 1, 1},
+ {&__pyx_n_s_pydevd_bundle_pydevd_frame_util, __pyx_k_pydevd_bundle_pydevd_frame_util, sizeof(__pyx_k_pydevd_bundle_pydevd_frame_util), 0, 0, 1, 1},
+ {&__pyx_n_s_pydevd_bundle_pydevd_trace_disp, __pyx_k_pydevd_bundle_pydevd_trace_disp, sizeof(__pyx_k_pydevd_bundle_pydevd_trace_disp), 0, 0, 1, 1},
+ {&__pyx_n_s_pydevd_bundle_pydevd_utils, __pyx_k_pydevd_bundle_pydevd_utils, sizeof(__pyx_k_pydevd_bundle_pydevd_utils), 0, 0, 1, 1},
+ {&__pyx_n_s_pydevd_dont_trace, __pyx_k_pydevd_dont_trace, sizeof(__pyx_k_pydevd_dont_trace), 0, 0, 1, 1},
+ {&__pyx_n_s_pydevd_file_utils, __pyx_k_pydevd_file_utils, sizeof(__pyx_k_pydevd_file_utils), 0, 0, 1, 1},
+ {&__pyx_kp_s_pydevd_py, __pyx_k_pydevd_py, sizeof(__pyx_k_pydevd_py), 0, 0, 1, 0},
+ {&__pyx_n_s_pydevd_runpy, __pyx_k_pydevd_runpy, sizeof(__pyx_k_pydevd_runpy), 0, 0, 1, 1},
+ {&__pyx_kp_s_pydevd_sys_monitoring__pydevd_s, __pyx_k_pydevd_sys_monitoring__pydevd_s, sizeof(__pyx_k_pydevd_sys_monitoring__pydevd_s), 0, 0, 1, 0},
+ {&__pyx_n_s_pydevd_sys_monitoring_cython, __pyx_k_pydevd_sys_monitoring_cython, sizeof(__pyx_k_pydevd_sys_monitoring_cython), 0, 0, 1, 1},
+ {&__pyx_kp_s_pydevd_traceproperty_py, __pyx_k_pydevd_traceproperty_py, sizeof(__pyx_k_pydevd_traceproperty_py), 0, 0, 1, 0},
+ {&__pyx_kp_s_python_function, __pyx_k_python_function, sizeof(__pyx_k_python_function), 0, 0, 1, 0},
+ {&__pyx_kp_s_python_line, __pyx_k_python_line, sizeof(__pyx_k_python_line), 0, 0, 1, 0},
+ {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1},
+ {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1},
+ {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1},
+ {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1},
+ {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1},
+ {&__pyx_n_s_pyx_unpickle_FuncCodeInfo, __pyx_k_pyx_unpickle_FuncCodeInfo, sizeof(__pyx_k_pyx_unpickle_FuncCodeInfo), 0, 0, 1, 1},
+ {&__pyx_n_s_pyx_unpickle_ThreadInfo, __pyx_k_pyx_unpickle_ThreadInfo, sizeof(__pyx_k_pyx_unpickle_ThreadInfo), 0, 0, 1, 1},
+ {&__pyx_n_s_pyx_unpickle__TryExceptContain, __pyx_k_pyx_unpickle__TryExceptContain, sizeof(__pyx_k_pyx_unpickle__TryExceptContain), 0, 0, 1, 1},
+ {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
+ {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1},
+ {&__pyx_n_s_re, __pyx_k_re, sizeof(__pyx_k_re), 0, 0, 1, 1},
+ {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1},
+ {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1},
+ {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1},
+ {&__pyx_n_s_ref, __pyx_k_ref, sizeof(__pyx_k_ref), 0, 0, 1, 1},
+ {&__pyx_n_s_register_callback, __pyx_k_register_callback, sizeof(__pyx_k_register_callback), 0, 0, 1, 1},
+ {&__pyx_n_s_required_events, __pyx_k_required_events, sizeof(__pyx_k_required_events), 0, 0, 1, 1},
+ {&__pyx_n_s_required_events_breakpoint, __pyx_k_required_events_breakpoint, sizeof(__pyx_k_required_events_breakpoint), 0, 0, 1, 1},
+ {&__pyx_n_s_required_events_stepping, __pyx_k_required_events_stepping, sizeof(__pyx_k_required_events_stepping), 0, 0, 1, 1},
+ {&__pyx_n_s_restart_events, __pyx_k_restart_events, sizeof(__pyx_k_restart_events), 0, 0, 1, 1},
+ {&__pyx_n_s_return, __pyx_k_return, sizeof(__pyx_k_return), 0, 0, 1, 1},
+ {&__pyx_n_s_retval, __pyx_k_retval, sizeof(__pyx_k_retval), 0, 0, 1, 1},
+ {&__pyx_n_s_run, __pyx_k_run, sizeof(__pyx_k_run), 0, 0, 1, 1},
+ {&__pyx_n_s_run_2, __pyx_k_run_2, sizeof(__pyx_k_run_2), 0, 0, 1, 1},
+ {&__pyx_n_s_runpy, __pyx_k_runpy, sizeof(__pyx_k_runpy), 0, 0, 1, 1},
+ {&__pyx_kp_s_s_s, __pyx_k_s_s, sizeof(__pyx_k_s_s), 0, 0, 1, 0},
+ {&__pyx_kp_s_s_s_2, __pyx_k_s_s_2, sizeof(__pyx_k_s_s_2), 0, 0, 1, 0},
+ {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1},
+ {&__pyx_n_s_set_events, __pyx_k_set_events, sizeof(__pyx_k_set_events), 0, 0, 1, 1},
+ {&__pyx_n_s_set_local_events, __pyx_k_set_local_events, sizeof(__pyx_k_set_local_events), 0, 0, 1, 1},
+ {&__pyx_n_s_set_name, __pyx_k_set_name, sizeof(__pyx_k_set_name), 0, 0, 1, 1},
+ {&__pyx_n_s_set_suspend, __pyx_k_set_suspend, sizeof(__pyx_k_set_suspend), 0, 0, 1, 1},
+ {&__pyx_n_s_set_trace_for_frame_and_parents, __pyx_k_set_trace_for_frame_and_parents, sizeof(__pyx_k_set_trace_for_frame_and_parents), 0, 0, 1, 1},
+ {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1},
+ {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1},
+ {&__pyx_n_s_short_frame, __pyx_k_short_frame, sizeof(__pyx_k_short_frame), 0, 0, 1, 1},
+ {&__pyx_n_s_short_tb, __pyx_k_short_tb, sizeof(__pyx_k_short_tb), 0, 0, 1, 1},
+ {&__pyx_n_s_should_stop_on_exception, __pyx_k_should_stop_on_exception, sizeof(__pyx_k_should_stop_on_exception), 0, 0, 1, 1},
+ {&__pyx_n_s_should_trace_hook, __pyx_k_should_trace_hook, sizeof(__pyx_k_should_trace_hook), 0, 0, 1, 1},
+ {&__pyx_n_s_show_return_values, __pyx_k_show_return_values, sizeof(__pyx_k_show_return_values), 0, 0, 1, 1},
+ {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1},
+ {&__pyx_n_s_splitext, __pyx_k_splitext, sizeof(__pyx_k_splitext), 0, 0, 1, 1},
+ {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1},
+ {&__pyx_n_s_start_monitoring, __pyx_k_start_monitoring, sizeof(__pyx_k_start_monitoring), 0, 0, 1, 1},
+ {&__pyx_n_s_startswith, __pyx_k_startswith, sizeof(__pyx_k_startswith), 0, 0, 1, 1},
+ {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1},
+ {&__pyx_n_s_stop, __pyx_k_stop, sizeof(__pyx_k_stop), 0, 0, 1, 1},
+ {&__pyx_n_s_stop_monitoring, __pyx_k_stop_monitoring, sizeof(__pyx_k_stop_monitoring), 0, 0, 1, 1},
+ {&__pyx_n_s_stop_on_unhandled_exception, __pyx_k_stop_on_unhandled_exception, sizeof(__pyx_k_stop_on_unhandled_exception), 0, 0, 1, 1},
+ {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0},
+ {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1},
+ {&__pyx_n_s_suspend, __pyx_k_suspend, sizeof(__pyx_k_suspend), 0, 0, 1, 1},
+ {&__pyx_n_s_suspend_other_threads, __pyx_k_suspend_other_threads, sizeof(__pyx_k_suspend_other_threads), 0, 0, 1, 1},
+ {&__pyx_n_s_suspend_policy, __pyx_k_suspend_policy, sizeof(__pyx_k_suspend_policy), 0, 0, 1, 1},
+ {&__pyx_n_s_suspend_requested, __pyx_k_suspend_requested, sizeof(__pyx_k_suspend_requested), 0, 0, 1, 1},
+ {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1},
+ {&__pyx_n_s_sys_monitor, __pyx_k_sys_monitor, sizeof(__pyx_k_sys_monitor), 0, 0, 1, 1},
+ {&__pyx_n_s_t, __pyx_k_t, sizeof(__pyx_k_t), 0, 0, 1, 1},
+ {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
+ {&__pyx_n_s_thread, __pyx_k_thread, sizeof(__pyx_k_thread), 0, 0, 1, 1},
+ {&__pyx_n_s_thread_active, __pyx_k_thread_active, sizeof(__pyx_k_thread_active), 0, 0, 1, 1},
+ {&__pyx_n_s_thread_ident, __pyx_k_thread_ident, sizeof(__pyx_k_thread_ident), 0, 0, 1, 1},
+ {&__pyx_n_s_thread_info, __pyx_k_thread_info, sizeof(__pyx_k_thread_info), 0, 0, 1, 1},
+ {&__pyx_n_s_thread_local_info, __pyx_k_thread_local_info, sizeof(__pyx_k_thread_local_info), 0, 0, 1, 1},
+ {&__pyx_n_s_threading, __pyx_k_threading, sizeof(__pyx_k_threading), 0, 0, 1, 1},
+ {&__pyx_n_s_tident, __pyx_k_tident, sizeof(__pyx_k_tident), 0, 0, 1, 1},
+ {&__pyx_n_s_to_offset, __pyx_k_to_offset, sizeof(__pyx_k_to_offset), 0, 0, 1, 1},
+ {&__pyx_n_s_trace, __pyx_k_trace, sizeof(__pyx_k_trace), 0, 0, 1, 1},
+ {&__pyx_n_s_traceback, __pyx_k_traceback, sizeof(__pyx_k_traceback), 0, 0, 1, 1},
+ {&__pyx_n_s_track_dummy_thread_ref, __pyx_k_track_dummy_thread_ref, sizeof(__pyx_k_track_dummy_thread_ref), 0, 0, 1, 1},
+ {&__pyx_n_s_try_except_infos, __pyx_k_try_except_infos, sizeof(__pyx_k_try_except_infos), 0, 0, 1, 1},
+ {&__pyx_n_s_types, __pyx_k_types, sizeof(__pyx_k_types), 0, 0, 1, 1},
+ {&__pyx_n_s_typing, __pyx_k_typing, sizeof(__pyx_k_typing), 0, 0, 1, 1},
+ {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1},
+ {&__pyx_n_s_update_monitor_events, __pyx_k_update_monitor_events, sizeof(__pyx_k_update_monitor_events), 0, 0, 1, 1},
+ {&__pyx_n_s_use_setstate, __pyx_k_use_setstate, sizeof(__pyx_k_use_setstate), 0, 0, 1, 1},
+ {&__pyx_n_s_use_tool_id, __pyx_k_use_tool_id, sizeof(__pyx_k_use_tool_id), 0, 0, 1, 1},
+ {&__pyx_n_s_user_uncaught_exc_info, __pyx_k_user_uncaught_exc_info, sizeof(__pyx_k_user_uncaught_exc_info), 0, 0, 1, 1},
+ {&__pyx_n_s_values, __pyx_k_values, sizeof(__pyx_k_values), 0, 0, 1, 1},
+ {&__pyx_n_s_wrap, __pyx_k_wrap, sizeof(__pyx_k_wrap), 0, 0, 1, 1},
+ {&__pyx_n_s_writer, __pyx_k_writer, sizeof(__pyx_k_writer), 0, 0, 1, 1},
+ {0, 0, 0, 0, 0, 0, 0}
+ };
+ return __Pyx_InitStrings(__pyx_string_tab);
+}
+/* #### Code section: cached_builtins ### */
+static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
+ __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(0, 55, __pyx_L1_error)
+ __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(0, 343, __pyx_L1_error)
+ __pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_n_s_min); if (!__pyx_builtin_min) __PYX_ERR(0, 472, __pyx_L1_error)
+ __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s_max); if (!__pyx_builtin_max) __PYX_ERR(0, 473, __pyx_L1_error)
+ __pyx_builtin_AssertionError = __Pyx_GetBuiltinName(__pyx_n_s_AssertionError); if (!__pyx_builtin_AssertionError) __PYX_ERR(0, 561, __pyx_L1_error)
+ return 0;
+ __pyx_L1_error:;
+ return -1;
+}
+/* #### Code section: cached_constants ### */
+
+static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+ /* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc")
+ * cdef object __Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc(object (*f)(object, object, object) ):
+ * def wrap(object code, object instruction, object exc): # <<<<<<<<<<<<<<
+ * """wrap(code, instruction, exc)"""
+ * return f(code, instruction, exc)
+ */
+ __pyx_tuple_ = PyTuple_Pack(3, __pyx_n_s_code, __pyx_n_s_instruction, __pyx_n_s_exc); if (unlikely(!__pyx_tuple_)) __PYX_ERR(1, 67, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple_);
+ __Pyx_GIVEREF(__pyx_tuple_);
+ __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple_, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_wrap, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(1, 67, __pyx_L1_error)
+ __pyx_tuple__3 = PyTuple_Pack(2, __pyx_n_s_code, __pyx_n_s_instruction_offset); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(1, 67, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
+ __pyx_codeobj__4 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__3, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_wrap, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__4)) __PYX_ERR(1, 67, __pyx_L1_error)
+ __pyx_tuple__5 = PyTuple_Pack(2, __pyx_n_s_code, __pyx_n_s_line); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(1, 67, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_codeobj__6 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__5, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_wrap, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__6)) __PYX_ERR(1, 67, __pyx_L1_error)
+ __pyx_tuple__7 = PyTuple_Pack(3, __pyx_n_s_code, __pyx_n_s_from_offset, __pyx_n_s_to_offset); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(1, 67, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__7);
+ __Pyx_GIVEREF(__pyx_tuple__7);
+ __pyx_codeobj__8 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__7, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_wrap, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__8)) __PYX_ERR(1, 67, __pyx_L1_error)
+ __pyx_tuple__9 = PyTuple_Pack(3, __pyx_n_s_code, __pyx_n_s_instruction, __pyx_n_s_retval); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 67, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__9);
+ __Pyx_GIVEREF(__pyx_tuple__9);
+ __pyx_codeobj__10 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__9, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_wrap, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__10)) __PYX_ERR(1, 67, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":103
+ * global _global_notify_skipped_step_in
+ *
+ * with _global_notify_skipped_step_in_lock: # <<<<<<<<<<<<<<
+ * if _global_notify_skipped_step_in:
+ * # Check with lock in place (callers should actually have checked
+ */
+ __pyx_tuple__11 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 103, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__11);
+ __Pyx_GIVEREF(__pyx_tuple__11);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":146
+ * if f_bootstrap.f_code.co_name in ("__bootstrap", "_bootstrap"):
+ * # We need __bootstrap_inner, not __bootstrap.
+ * return None, False # <<<<<<<<<<<<<<
+ *
+ * elif f_bootstrap.f_code.co_name in ("__bootstrap_inner", "_bootstrap_inner", "is_alive"):
+ */
+ __pyx_tuple__12 = PyTuple_Pack(2, Py_None, Py_False); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 146, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__12);
+ __Pyx_GIVEREF(__pyx_tuple__12);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":206
+ *
+ * elif name == "pydevd_runpy":
+ * if frame.f_code.co_name.startswith(("run", "_run")): # <<<<<<<<<<<<<<
+ * return False
+ *
+ */
+ __pyx_tuple__13 = PyTuple_Pack(2, __pyx_n_s_run, __pyx_n_s_run_2); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 206, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__13);
+ __Pyx_GIVEREF(__pyx_tuple__13);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1522
+ * filename = frame.f_code.co_filename
+ * if filename.endswith(".pyc"):
+ * filename = filename[:-1] # <<<<<<<<<<<<<<
+ *
+ * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]):
+ */
+ __pyx_slice__16 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__16)) __PYX_ERR(0, 1522, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__16);
+ __Pyx_GIVEREF(__pyx_slice__16);
+
+ /* "(tree fragment)":4
+ * cdef object __pyx_PickleError
+ * cdef object __pyx_result
+ * if __pyx_checksum not in (0xd625bfa, 0xfdc1f18, 0x57c379d): # <<<<<<<<<<<<<<
+ * from pickle import PickleError as __pyx_PickleError
+ * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd625bfa, 0xfdc1f18, 0x57c379d) = (additional_info, thread, thread_ident, trace))" % __pyx_checksum
+ */
+ __pyx_tuple__18 = PyTuple_Pack(3, __pyx_int_224549882, __pyx_int_266084120, __pyx_int_92026781); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__18);
+ __Pyx_GIVEREF(__pyx_tuple__18);
+ __pyx_tuple__20 = PyTuple_Pack(3, __pyx_int_66323410, __pyx_int_99967855, __pyx_int_189049472); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__20);
+ __Pyx_GIVEREF(__pyx_tuple__20);
+ __pyx_tuple__21 = PyTuple_Pack(3, __pyx_int_230645316, __pyx_int_232881363, __pyx_int_210464433); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__21);
+ __Pyx_GIVEREF(__pyx_tuple__21);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":57
+ * except ImportError:
+ *
+ * def get_smart_step_into_variant_from_frame_offset(*args, **kwargs): # <<<<<<<<<<<<<<
+ * return None
+ *
+ */
+ __pyx_tuple__23 = PyTuple_Pack(2, __pyx_n_s_args, __pyx_n_s_kwargs); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 57, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__23);
+ __Pyx_GIVEREF(__pyx_tuple__23);
+ __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_sys_monitoring__pydevd_s, __pyx_n_s_get_smart_step_into_variant_from, 57, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 57, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":85
+ * STATE_SUSPEND: int = 2
+ *
+ * IGNORE_EXCEPTION_TAG = re.compile("[^#]*#.*@IgnoreException") # <<<<<<<<<<<<<<
+ * DEBUG_START = ("pydevd.py", "run")
+ * DEBUG_START_PY3K = ("_pydev_execfile.py", "execfile")
+ */
+ __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_IgnoreException); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 85, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__25);
+ __Pyx_GIVEREF(__pyx_tuple__25);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":86
+ *
+ * IGNORE_EXCEPTION_TAG = re.compile("[^#]*#.*@IgnoreException")
+ * DEBUG_START = ("pydevd.py", "run") # <<<<<<<<<<<<<<
+ * DEBUG_START_PY3K = ("_pydev_execfile.py", "execfile")
+ * TRACE_PROPERTY = "pydevd_traceproperty.py"
+ */
+ __pyx_tuple__26 = PyTuple_Pack(2, __pyx_kp_s_pydevd_py, __pyx_n_s_run); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 86, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__26);
+ __Pyx_GIVEREF(__pyx_tuple__26);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":87
+ * IGNORE_EXCEPTION_TAG = re.compile("[^#]*#.*@IgnoreException")
+ * DEBUG_START = ("pydevd.py", "run")
+ * DEBUG_START_PY3K = ("_pydev_execfile.py", "execfile") # <<<<<<<<<<<<<<
+ * TRACE_PROPERTY = "pydevd_traceproperty.py"
+ *
+ */
+ __pyx_tuple__27 = PyTuple_Pack(2, __pyx_kp_s_pydev_execfile_py, __pyx_n_s_execfile); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 87, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__27);
+ __Pyx_GIVEREF(__pyx_tuple__27);
+
+ /* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+ __pyx_tuple__28 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_state, __pyx_n_s_dict_2, __pyx_n_s_use_setstate); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__28);
+ __Pyx_GIVEREF(__pyx_tuple__28);
+ __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(1, 1, __pyx_L1_error)
+
+ /* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xd625bfa, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle_ThreadInfo__set_state(self, __pyx_state)
+ */
+ __pyx_tuple__30 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(1, 16, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__30);
+ __Pyx_GIVEREF(__pyx_tuple__30);
+ __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(1, 16, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":275
+ * """
+ *
+ * def __init__(self, dummy_thread): # <<<<<<<<<<<<<<
+ * self._dummy_thread = dummy_thread
+ * self._tident = dummy_thread.ident
+ */
+ __pyx_tuple__32 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_dummy_thread); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 275, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__32);
+ __Pyx_GIVEREF(__pyx_tuple__32);
+ __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_sys_monitoring__pydevd_s, __pyx_n_s_init, 275, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 275, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":286
+ * _thread_local_info._track_dummy_thread_ref = self
+ *
+ * def __del__(self): # <<<<<<<<<<<<<<
+ * with threading._active_limbo_lock:
+ * if _thread_active.get(self._tident) is self._dummy_thread:
+ */
+ __pyx_tuple__34 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 286, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__34);
+ __Pyx_GIVEREF(__pyx_tuple__34);
+ __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_sys_monitoring__pydevd_s, __pyx_n_s_del, 286, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 286, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":416
+ * self.co_name: str = ""
+ *
+ * def get_line_of_offset(self, offset): # <<<<<<<<<<<<<<
+ * for start, end, line in self.code_obj.co_lines():
+ * if offset >= start and offset <= end:
+ */
+ __pyx_tuple__36 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_offset, __pyx_n_s_start, __pyx_n_s_end, __pyx_n_s_line); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 416, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__36);
+ __Pyx_GIVEREF(__pyx_tuple__36);
+ __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_sys_monitoring__pydevd_s, __pyx_n_s_get_line_of_offset, 416, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 416, __pyx_L1_error)
+
+ /* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+ __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(1, 1, __pyx_L1_error)
+
+ /* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x3f403d2, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle_FuncCodeInfo__set_state(self, __pyx_state)
+ */
+ __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(1, 16, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":450
+ *
+ *
+ * _CodeLineInfo = namedtuple("_CodeLineInfo", "line_to_offset, first_line, last_line") # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __pyx_tuple__40 = PyTuple_Pack(2, __pyx_n_s_CodeLineInfo, __pyx_kp_s_line_to_offset_first_line_last_l); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 450, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__40);
+ __Pyx_GIVEREF(__pyx_tuple__40);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":484
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef FuncCodeInfo _get_func_code_info(code_obj, frame_or_depth): # <<<<<<<<<<<<<<
+ * cdef FuncCodeInfo func_code_info
+ * # ELSE
+ */
+ __pyx_tuple__41 = PyTuple_Pack(2, __pyx_n_s_code_obj, __pyx_n_s_frame_or_depth); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 484, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__41);
+ __Pyx_GIVEREF(__pyx_tuple__41);
+ __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_sys_monitoring__pydevd_s, __pyx_n_s_get_func_code_info, 484, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 484, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":678
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef disable_code_tracing(code): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def disable_code_tracing(code):
+ */
+ __pyx_tuple__43 = PyTuple_Pack(1, __pyx_n_s_code); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 678, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__43);
+ __Pyx_GIVEREF(__pyx_tuple__43);
+ __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_sys_monitoring__pydevd_s, __pyx_n_s_disable_code_tracing, 678, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 678, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":689
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef enable_code_tracing(unsigned long thread_ident, code, frame): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def enable_code_tracing(thread_ident: Optional[int], code, frame) -> bool:
+ */
+ __pyx_tuple__45 = PyTuple_Pack(3, __pyx_n_s_thread_ident, __pyx_n_s_code, __pyx_n_s_frame); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 689, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__45);
+ __Pyx_GIVEREF(__pyx_tuple__45);
+ __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_sys_monitoring__pydevd_s, __pyx_n_s_enable_code_tracing, 689, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 689, __pyx_L1_error)
+
+ /* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+ __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(1, 1, __pyx_L1_error)
+
+ /* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle__TryExceptContainerObj__set_state(self, __pyx_state)
+ */
+ __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(1, 16, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1709
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef _ensure_monitoring(): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _ensure_monitoring():
+ */
+ __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_sys_monitoring__pydevd_s, __pyx_n_s_ensure_monitoring, 1709, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(0, 1709, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1723
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef start_monitoring(bint all_threads=False): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * # ELSE
+ */
+ __pyx_tuple__50 = PyTuple_Pack(1, __pyx_n_s_all_threads); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(0, 1723, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__50);
+ __Pyx_GIVEREF(__pyx_tuple__50);
+ __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__50, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_sys_monitoring__pydevd_s, __pyx_n_s_start_monitoring, 1723, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(0, 1723, __pyx_L1_error)
+ __pyx_tuple__52 = PyTuple_Pack(1, Py_False); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(0, 1723, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__52);
+ __Pyx_GIVEREF(__pyx_tuple__52);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1751
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef stop_monitoring(all_threads=False): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * # ELSE
+ */
+ __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__50, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_sys_monitoring__pydevd_s, __pyx_n_s_stop_monitoring, 1751, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(0, 1751, __pyx_L1_error)
+ __pyx_tuple__54 = PyTuple_Pack(1, Py_False); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(0, 1751, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__54);
+ __Pyx_GIVEREF(__pyx_tuple__54);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1779
+ *
+ *
+ * def update_monitor_events(suspend_requested: Optional[bool] = None) -> None: # <<<<<<<<<<<<<<
+ * """
+ * This should be called when breakpoints change.
+ */
+ __pyx_tuple__55 = PyTuple_Pack(10, __pyx_n_s_suspend_requested, __pyx_n_s_py_db, __pyx_n_s_t, __pyx_n_s_additional_info, __pyx_n_s_required_events, __pyx_n_s_has_caught_exception_breakpoint, __pyx_n_s_break_on_uncaught_exceptions, __pyx_n_s_has_breaks, __pyx_n_s_file_to_line_to_breakpoints, __pyx_n_s_line_to_breakpoints); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(0, 1779, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__55);
+ __Pyx_GIVEREF(__pyx_tuple__55);
+ __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__55, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_sys_monitoring__pydevd_s, __pyx_n_s_update_monitor_events, 1779, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(0, 1779, __pyx_L1_error)
+ __pyx_tuple__57 = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 1779, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__57);
+ __Pyx_GIVEREF(__pyx_tuple__57);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1864
+ *
+ *
+ * def restart_events() -> None: # <<<<<<<<<<<<<<
+ * # Note: if breakpoints change, update_monitor_events usually needs to be
+ * # called first, then the line event tracing must be set for existing frames
+ */
+ __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_sys_monitoring__pydevd_s, __pyx_n_s_restart_events, 1864, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(0, 1864, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1899
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * def _do_wait_suspend(py_db, ThreadInfo thread_info, frame, event, arg): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _do_wait_suspend(py_db, thread_info, frame, event, arg):
+ */
+ __pyx_tuple__59 = PyTuple_Pack(5, __pyx_n_s_py_db, __pyx_n_s_thread_info, __pyx_n_s_frame, __pyx_n_s_event, __pyx_n_s_arg); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 1899, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__59);
+ __Pyx_GIVEREF(__pyx_tuple__59);
+ __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_sys_monitoring__pydevd_s, __pyx_n_s_do_wait_suspend, 1899, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(0, 1899, __pyx_L1_error)
+
+ /* "(tree fragment)":1
+ * def __pyx_unpickle_ThreadInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
+ * cdef object __pyx_PickleError
+ * cdef object __pyx_result
+ */
+ __pyx_tuple__61 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__61);
+ __Pyx_GIVEREF(__pyx_tuple__61);
+ __pyx_codeobj__62 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ThreadInfo, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__62)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_FuncCodeInfo, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __pyx_codeobj__64 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle__TryExceptContain, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__64)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_RefNannyFinishContext();
+ return 0;
+ __pyx_L1_error:;
+ __Pyx_RefNannyFinishContext();
+ return -1;
+}
+/* #### Code section: init_constants ### */
+
+static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) {
+ __pyx_umethod_PyDict_Type_get.type = (PyObject*)&PyDict_Type;
+ __pyx_umethod_PyDict_Type_get.method_name = &__pyx_n_s_get;
+ if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(0, 1, __pyx_L1_error);
+ __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_107 = PyInt_FromLong(107); if (unlikely(!__pyx_int_107)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_108 = PyInt_FromLong(108); if (unlikely(!__pyx_int_108)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_109 = PyInt_FromLong(109); if (unlikely(!__pyx_int_109)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_111 = PyInt_FromLong(111); if (unlikely(!__pyx_int_111)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_128 = PyInt_FromLong(128); if (unlikely(!__pyx_int_128)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_144 = PyInt_FromLong(144); if (unlikely(!__pyx_int_144)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_159 = PyInt_FromLong(159); if (unlikely(!__pyx_int_159)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_160 = PyInt_FromLong(160); if (unlikely(!__pyx_int_160)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_206 = PyInt_FromLong(206); if (unlikely(!__pyx_int_206)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_208 = PyInt_FromLong(208); if (unlikely(!__pyx_int_208)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_66323410 = PyInt_FromLong(66323410L); if (unlikely(!__pyx_int_66323410)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_92026781 = PyInt_FromLong(92026781L); if (unlikely(!__pyx_int_92026781)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_99967855 = PyInt_FromLong(99967855L); if (unlikely(!__pyx_int_99967855)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_189049472 = PyInt_FromLong(189049472L); if (unlikely(!__pyx_int_189049472)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_210464433 = PyInt_FromLong(210464433L); if (unlikely(!__pyx_int_210464433)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_224549882 = PyInt_FromLong(224549882L); if (unlikely(!__pyx_int_224549882)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_230645316 = PyInt_FromLong(230645316L); if (unlikely(!__pyx_int_230645316)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_232881363 = PyInt_FromLong(232881363L); if (unlikely(!__pyx_int_232881363)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_266084120 = PyInt_FromLong(266084120L); if (unlikely(!__pyx_int_266084120)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error)
+ return 0;
+ __pyx_L1_error:;
+ return -1;
+}
+/* #### Code section: init_globals ### */
+
+static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
+ /* AssertionsEnabled.init */
+ if (likely(__Pyx_init_assertions_enabled() == 0)); else
+
+if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)
+
+ return 0;
+ __pyx_L1_error:;
+ return -1;
+}
+/* #### Code section: init_module ### */
+
+static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
+
+static int __Pyx_modinit_global_init_code(void) {
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0);
+ /*--- Global init code ---*/
+ __Pyx_RefNannyFinishContext();
+ return 0;
+}
+
+static int __Pyx_modinit_variable_export_code(void) {
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0);
+ /*--- Variable export code ---*/
+ __Pyx_RefNannyFinishContext();
+ return 0;
+}
+
+static int __Pyx_modinit_function_export_code(void) {
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
+ /*--- Function export code ---*/
+ __Pyx_RefNannyFinishContext();
+ return 0;
+}
+
+static int __Pyx_modinit_type_init_code(void) {
+ __Pyx_RefNannyDeclarations
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
+ /*--- Type init code ---*/
+ #if CYTHON_USE_TYPE_SPECS
+ __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_29_pydevd_sys_monitoring_cython_ThreadInfo_spec, NULL); if (unlikely(!__pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo)) __PYX_ERR(0, 243, __pyx_L1_error)
+ if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_29_pydevd_sys_monitoring_cython_ThreadInfo_spec, __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo) < 0) __PYX_ERR(0, 243, __pyx_L1_error)
+ #else
+ __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo = &__pyx_type_29_pydevd_sys_monitoring_cython_ThreadInfo;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ #endif
+ #if !CYTHON_USE_TYPE_SPECS
+ if (__Pyx_PyType_Ready(__pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo) < 0) __PYX_ERR(0, 243, __pyx_L1_error)
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo->tp_print = 0;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo->tp_dictoffset && __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo->tp_getattro == PyObject_GenericGetAttr)) {
+ __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+ }
+ #endif
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ThreadInfo, (PyObject *) __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo) < 0) __PYX_ERR(0, 243, __pyx_L1_error)
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo) < 0) __PYX_ERR(0, 243, __pyx_L1_error)
+ #endif
+ #if CYTHON_USE_TYPE_SPECS
+ __pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_29_pydevd_sys_monitoring_cython_FuncCodeInfo_spec, NULL); if (unlikely(!__pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo)) __PYX_ERR(0, 351, __pyx_L1_error)
+ if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_29_pydevd_sys_monitoring_cython_FuncCodeInfo_spec, __pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo) < 0) __PYX_ERR(0, 351, __pyx_L1_error)
+ #else
+ __pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo = &__pyx_type_29_pydevd_sys_monitoring_cython_FuncCodeInfo;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ #endif
+ #if !CYTHON_USE_TYPE_SPECS
+ if (__Pyx_PyType_Ready(__pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo) < 0) __PYX_ERR(0, 351, __pyx_L1_error)
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ __pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo->tp_print = 0;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo->tp_dictoffset && __pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo->tp_getattro == PyObject_GenericGetAttr)) {
+ __pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+ }
+ #endif
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_FuncCodeInfo, (PyObject *) __pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo) < 0) __PYX_ERR(0, 351, __pyx_L1_error)
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo) < 0) __PYX_ERR(0, 351, __pyx_L1_error)
+ #endif
+ #if CYTHON_USE_TYPE_SPECS
+ __pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_29_pydevd_sys_monitoring_cython__TryExceptContainerObj_spec, NULL); if (unlikely(!__pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj)) __PYX_ERR(0, 801, __pyx_L1_error)
+ if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_29_pydevd_sys_monitoring_cython__TryExceptContainerObj_spec, __pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj) < 0) __PYX_ERR(0, 801, __pyx_L1_error)
+ #else
+ __pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj = &__pyx_type_29_pydevd_sys_monitoring_cython__TryExceptContainerObj;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ #endif
+ #if !CYTHON_USE_TYPE_SPECS
+ if (__Pyx_PyType_Ready(__pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj) < 0) __PYX_ERR(0, 801, __pyx_L1_error)
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ __pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj->tp_print = 0;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj->tp_dictoffset && __pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj->tp_getattro == PyObject_GenericGetAttr)) {
+ __pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+ }
+ #endif
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_TryExceptContainerObj, (PyObject *) __pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj) < 0) __PYX_ERR(0, 801, __pyx_L1_error)
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj) < 0) __PYX_ERR(0, 801, __pyx_L1_error)
+ #endif
+ #if CYTHON_USE_TYPE_SPECS
+ __pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc_spec, NULL); if (unlikely(!__pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc)) __PYX_ERR(1, 66, __pyx_L1_error)
+ if (__Pyx_fix_up_extension_type_from_spec(&__pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc_spec, __pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc) < 0) __PYX_ERR(1, 66, __pyx_L1_error)
+ #else
+ __pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc = &__pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ #endif
+ #if !CYTHON_USE_TYPE_SPECS
+ if (__Pyx_PyType_Ready(__pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc) < 0) __PYX_ERR(1, 66, __pyx_L1_error)
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ __pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc->tp_print = 0;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc->tp_dictoffset && __pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc->tp_getattro == PyObject_GenericGetAttr)) {
+ __pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_3exc->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+ }
+ #endif
+ #if CYTHON_USE_TYPE_SPECS
+ __pyx_ptype___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset_spec, NULL); if (unlikely(!__pyx_ptype___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset)) __PYX_ERR(1, 66, __pyx_L1_error)
+ if (__Pyx_fix_up_extension_type_from_spec(&__pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset_spec, __pyx_ptype___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset) < 0) __PYX_ERR(1, 66, __pyx_L1_error)
+ #else
+ __pyx_ptype___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset = &__pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ #endif
+ #if !CYTHON_USE_TYPE_SPECS
+ if (__Pyx_PyType_Ready(__pyx_ptype___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset) < 0) __PYX_ERR(1, 66, __pyx_L1_error)
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ __pyx_ptype___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset->tp_print = 0;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset->tp_dictoffset && __pyx_ptype___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset->tp_getattro == PyObject_GenericGetAttr)) {
+ __pyx_ptype___pyx_scope_struct____Pyx_CFunc_893235__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_18instruction_offset->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+ }
+ #endif
+ #if CYTHON_USE_TYPE_SPECS
+ __pyx_ptype___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line_spec, NULL); if (unlikely(!__pyx_ptype___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line)) __PYX_ERR(1, 66, __pyx_L1_error)
+ if (__Pyx_fix_up_extension_type_from_spec(&__pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line_spec, __pyx_ptype___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line) < 0) __PYX_ERR(1, 66, __pyx_L1_error)
+ #else
+ __pyx_ptype___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line = &__pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ #endif
+ #if !CYTHON_USE_TYPE_SPECS
+ if (__Pyx_PyType_Ready(__pyx_ptype___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line) < 0) __PYX_ERR(1, 66, __pyx_L1_error)
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ __pyx_ptype___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line->tp_print = 0;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line->tp_dictoffset && __pyx_ptype___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line->tp_getattro == PyObject_GenericGetAttr)) {
+ __pyx_ptype___pyx_scope_struct____Pyx_CFunc_b0409f__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_4line->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+ }
+ #endif
+ #if CYTHON_USE_TYPE_SPECS
+ __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset_spec, NULL); if (unlikely(!__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset)) __PYX_ERR(1, 66, __pyx_L1_error)
+ if (__Pyx_fix_up_extension_type_from_spec(&__pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset_spec, __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset) < 0) __PYX_ERR(1, 66, __pyx_L1_error)
+ #else
+ __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset = &__pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ #endif
+ #if !CYTHON_USE_TYPE_SPECS
+ if (__Pyx_PyType_Ready(__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset) < 0) __PYX_ERR(1, 66, __pyx_L1_error)
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset->tp_print = 0;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset->tp_dictoffset && __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset->tp_getattro == PyObject_GenericGetAttr)) {
+ __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7f6725__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11from_offset_9to_offset->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+ }
+ #endif
+ #if CYTHON_USE_TYPE_SPECS
+ __pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval_spec, NULL); if (unlikely(!__pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval)) __PYX_ERR(1, 66, __pyx_L1_error)
+ if (__Pyx_fix_up_extension_type_from_spec(&__pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval_spec, __pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval) < 0) __PYX_ERR(1, 66, __pyx_L1_error)
+ #else
+ __pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval = &__pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ #endif
+ #if !CYTHON_USE_TYPE_SPECS
+ if (__Pyx_PyType_Ready(__pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval) < 0) __PYX_ERR(1, 66, __pyx_L1_error)
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ __pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval->tp_print = 0;
+ #endif
+ #if !CYTHON_COMPILING_IN_LIMITED_API
+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval->tp_dictoffset && __pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval->tp_getattro == PyObject_GenericGetAttr)) {
+ __pyx_ptype___pyx_scope_struct____Pyx_CFunc_4904d5__29_pydevd_sys_monitoring_cython_object__lParen__etc_to_py_4code_11instruction_6retval->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+ }
+ #endif
+ __Pyx_RefNannyFinishContext();
+ return 0;
+ __pyx_L1_error:;
+ __Pyx_RefNannyFinishContext();
+ return -1;
+}
+
+static int __Pyx_modinit_type_import_code(void) {
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
+ /*--- Type import code ---*/
+ __pyx_t_1 = PyImport_ImportModule("_pydevd_bundle.pydevd_cython"); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo = __Pyx_ImportType_3_0_11(__pyx_t_1, "_pydevd_bundle.pydevd_cython", "PyDBAdditionalThreadInfo", sizeof(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo) __PYX_ERR(2, 1, __pyx_L1_error)
+ __pyx_vtabptr_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo = (struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo*)__Pyx_GetVtable(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo); if (unlikely(!__pyx_vtabptr_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo)) __PYX_ERR(2, 1, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_RefNannyFinishContext();
+ return 0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_RefNannyFinishContext();
+ return -1;
+}
+
+static int __Pyx_modinit_variable_import_code(void) {
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0);
+ /*--- Variable import code ---*/
+ __Pyx_RefNannyFinishContext();
+ return 0;
+}
+
+static int __Pyx_modinit_function_import_code(void) {
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0);
+ /*--- Function import code ---*/
+ __pyx_t_1 = PyImport_ImportModule("_pydevd_bundle.pydevd_cython"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (__Pyx_ImportFunction_3_0_11(__pyx_t_1, "set_additional_thread_info", (void (**)(void))&__pyx_f_14_pydevd_bundle_13pydevd_cython_set_additional_thread_info, "PyObject *(PyObject *, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (__Pyx_ImportFunction_3_0_11(__pyx_t_1, "any_thread_stepping", (void (**)(void))&__pyx_f_14_pydevd_bundle_13pydevd_cython_any_thread_stepping, "int (int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_RefNannyFinishContext();
+ return 0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_RefNannyFinishContext();
+ return -1;
+}
+
+
+#if PY_MAJOR_VERSION >= 3
+#if CYTHON_PEP489_MULTI_PHASE_INIT
+static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
+static int __pyx_pymod_exec__pydevd_sys_monitoring_cython(PyObject* module); /*proto*/
+static PyModuleDef_Slot __pyx_moduledef_slots[] = {
+ {Py_mod_create, (void*)__pyx_pymod_create},
+ {Py_mod_exec, (void*)__pyx_pymod_exec__pydevd_sys_monitoring_cython},
+ {0, NULL}
+};
+#endif
+
+#ifdef __cplusplus
+namespace {
+ struct PyModuleDef __pyx_moduledef =
+ #else
+ static struct PyModuleDef __pyx_moduledef =
+ #endif
+ {
+ PyModuleDef_HEAD_INIT,
+ "_pydevd_sys_monitoring_cython",
+ 0, /* m_doc */
+ #if CYTHON_PEP489_MULTI_PHASE_INIT
+ 0, /* m_size */
+ #elif CYTHON_USE_MODULE_STATE
+ sizeof(__pyx_mstate), /* m_size */
+ #else
+ -1, /* m_size */
+ #endif
+ __pyx_methods /* m_methods */,
+ #if CYTHON_PEP489_MULTI_PHASE_INIT
+ __pyx_moduledef_slots, /* m_slots */
+ #else
+ NULL, /* m_reload */
+ #endif
+ #if CYTHON_USE_MODULE_STATE
+ __pyx_m_traverse, /* m_traverse */
+ __pyx_m_clear, /* m_clear */
+ NULL /* m_free */
+ #else
+ NULL, /* m_traverse */
+ NULL, /* m_clear */
+ NULL /* m_free */
+ #endif
+ };
+ #ifdef __cplusplus
+} /* anonymous namespace */
+#endif
+#endif
+
+#ifndef CYTHON_NO_PYINIT_EXPORT
+#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
+#elif PY_MAJOR_VERSION < 3
+#ifdef __cplusplus
+#define __Pyx_PyMODINIT_FUNC extern "C" void
+#else
+#define __Pyx_PyMODINIT_FUNC void
+#endif
+#else
+#ifdef __cplusplus
+#define __Pyx_PyMODINIT_FUNC extern "C" PyObject *
+#else
+#define __Pyx_PyMODINIT_FUNC PyObject *
+#endif
+#endif
+
+
+#if PY_MAJOR_VERSION < 3
+__Pyx_PyMODINIT_FUNC init_pydevd_sys_monitoring_cython(void) CYTHON_SMALL_CODE; /*proto*/
+__Pyx_PyMODINIT_FUNC init_pydevd_sys_monitoring_cython(void)
+#else
+__Pyx_PyMODINIT_FUNC PyInit__pydevd_sys_monitoring_cython(void) CYTHON_SMALL_CODE; /*proto*/
+__Pyx_PyMODINIT_FUNC PyInit__pydevd_sys_monitoring_cython(void)
+#if CYTHON_PEP489_MULTI_PHASE_INIT
+{
+ return PyModuleDef_Init(&__pyx_moduledef);
+}
+static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
+ #if PY_VERSION_HEX >= 0x030700A1
+ static PY_INT64_T main_interpreter_id = -1;
+ PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
+ if (main_interpreter_id == -1) {
+ main_interpreter_id = current_id;
+ return (unlikely(current_id == -1)) ? -1 : 0;
+ } else if (unlikely(main_interpreter_id != current_id))
+ #else
+ static PyInterpreterState *main_interpreter = NULL;
+ PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
+ if (!main_interpreter) {
+ main_interpreter = current_interpreter;
+ } else if (unlikely(main_interpreter != current_interpreter))
+ #endif
+ {
+ PyErr_SetString(
+ PyExc_ImportError,
+ "Interpreter change detected - this module can only be loaded into one interpreter per process.");
+ return -1;
+ }
+ return 0;
+}
+#if CYTHON_COMPILING_IN_LIMITED_API
+static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none)
+#else
+static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none)
+#endif
+{
+ PyObject *value = PyObject_GetAttrString(spec, from_name);
+ int result = 0;
+ if (likely(value)) {
+ if (allow_none || value != Py_None) {
+#if CYTHON_COMPILING_IN_LIMITED_API
+ result = PyModule_AddObject(module, to_name, value);
+#else
+ result = PyDict_SetItemString(moddict, to_name, value);
+#endif
+ }
+ Py_DECREF(value);
+ } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
+ PyErr_Clear();
+ } else {
+ result = -1;
+ }
+ return result;
+}
+static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) {
+ PyObject *module = NULL, *moddict, *modname;
+ CYTHON_UNUSED_VAR(def);
+ if (__Pyx_check_single_interpreter())
+ return NULL;
+ if (__pyx_m)
+ return __Pyx_NewRef(__pyx_m);
+ modname = PyObject_GetAttrString(spec, "name");
+ if (unlikely(!modname)) goto bad;
+ module = PyModule_NewObject(modname);
+ Py_DECREF(modname);
+ if (unlikely(!module)) goto bad;
+#if CYTHON_COMPILING_IN_LIMITED_API
+ moddict = module;
+#else
+ moddict = PyModule_GetDict(module);
+ if (unlikely(!moddict)) goto bad;
+#endif
+ if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad;
+ if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad;
+ if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad;
+ if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad;
+ return module;
+bad:
+ Py_XDECREF(module);
+ return NULL;
+}
+
+
+static CYTHON_SMALL_CODE int __pyx_pymod_exec__pydevd_sys_monitoring_cython(PyObject *__pyx_pyinit_module)
+#endif
+#endif
+{
+ int stringtab_initialized = 0;
+ #if CYTHON_USE_MODULE_STATE
+ int pystate_addmodule_run = 0;
+ #endif
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ int __pyx_t_6;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ int __pyx_t_9;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannyDeclarations
+ #if CYTHON_PEP489_MULTI_PHASE_INIT
+ if (__pyx_m) {
+ if (__pyx_m == __pyx_pyinit_module) return 0;
+ PyErr_SetString(PyExc_RuntimeError, "Module '_pydevd_sys_monitoring_cython' has already been imported. Re-initialisation is not supported.");
+ return -1;
+ }
+ #elif PY_MAJOR_VERSION >= 3
+ if (__pyx_m) return __Pyx_NewRef(__pyx_m);
+ #endif
+ /*--- Module creation code ---*/
+ #if CYTHON_PEP489_MULTI_PHASE_INIT
+ __pyx_m = __pyx_pyinit_module;
+ Py_INCREF(__pyx_m);
+ #else
+ #if PY_MAJOR_VERSION < 3
+ __pyx_m = Py_InitModule4("_pydevd_sys_monitoring_cython", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+ if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
+ #elif CYTHON_USE_MODULE_STATE
+ __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
+ {
+ int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef);
+ __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "_pydevd_sys_monitoring_cython" pseudovariable */
+ if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
+ pystate_addmodule_run = 1;
+ }
+ #else
+ __pyx_m = PyModule_Create(&__pyx_moduledef);
+ if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
+ #endif
+ #endif
+ CYTHON_UNUSED_VAR(__pyx_t_1);
+ __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
+ Py_INCREF(__pyx_d);
+ __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #if CYTHON_REFNANNY
+__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+if (!__Pyx_RefNanny) {
+ PyErr_Clear();
+ __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+ if (!__Pyx_RefNanny)
+ Py_FatalError("failed to import 'refnanny' module");
+}
+#endif
+ __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit__pydevd_sys_monitoring_cython(void)", 0);
+ if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #ifdef __Pxy_PyFrame_Initialize_Offsets
+ __Pxy_PyFrame_Initialize_Offsets();
+ #endif
+ __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
+ #ifdef __Pyx_CyFunction_USED
+ if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #endif
+ #ifdef __Pyx_FusedFunction_USED
+ if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #endif
+ #ifdef __Pyx_Coroutine_USED
+ if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #endif
+ #ifdef __Pyx_Generator_USED
+ if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #endif
+ #ifdef __Pyx_AsyncGen_USED
+ if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #endif
+ #ifdef __Pyx_StopAsyncIteration_USED
+ if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #endif
+ /*--- Library function declarations ---*/
+ /*--- Threads initialization code ---*/
+ #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+ PyEval_InitThreads();
+ #endif
+ /*--- Initialize various global constants etc. ---*/
+ if (__Pyx_InitConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ stringtab_initialized = 1;
+ if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
+ if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #endif
+ if (__pyx_module_is_main__pydevd_sys_monitoring_cython) {
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ }
+ #if PY_MAJOR_VERSION >= 3
+ {
+ PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (!PyDict_GetItemString(modules, "_pydevd_sys_monitoring_cython")) {
+ if (unlikely((PyDict_SetItemString(modules, "_pydevd_sys_monitoring_cython", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
+ }
+ }
+ #endif
+ /*--- Builtin init code ---*/
+ if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ /*--- Constants init code ---*/
+ if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ /*--- Global type/function init code ---*/
+ (void)__Pyx_modinit_global_init_code();
+ (void)__Pyx_modinit_variable_export_code();
+ (void)__Pyx_modinit_function_export_code();
+ if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (unlikely((__Pyx_modinit_type_import_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
+ (void)__Pyx_modinit_variable_import_code();
+ if (unlikely((__Pyx_modinit_function_import_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
+ /*--- Execution code ---*/
+ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
+ if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #endif
+
+ /* "_pydevd_sys_monitoring_cython.pyx":11
+ * # License: EPL
+ *
+ * from collections import namedtuple # <<<<<<<<<<<<<<
+ * import dis
+ * import os
+ */
+ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_INCREF(__pyx_n_s_namedtuple);
+ __Pyx_GIVEREF(__pyx_n_s_namedtuple);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_namedtuple)) __PYX_ERR(0, 11, __pyx_L1_error);
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_collections, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_namedtuple); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_namedtuple, __pyx_t_2) < 0) __PYX_ERR(0, 11, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":12
+ *
+ * from collections import namedtuple
+ * import dis # <<<<<<<<<<<<<<
+ * import os
+ * import re
+ */
+ __pyx_t_3 = __Pyx_ImportDottedModule(__pyx_n_s_dis, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_dis, __pyx_t_3) < 0) __PYX_ERR(0, 12, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":13
+ * from collections import namedtuple
+ * import dis
+ * import os # <<<<<<<<<<<<<<
+ * import re
+ * import sys
+ */
+ __pyx_t_3 = __Pyx_ImportDottedModule(__pyx_n_s_os, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 13, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_3) < 0) __PYX_ERR(0, 13, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":14
+ * import dis
+ * import os
+ * import re # <<<<<<<<<<<<<<
+ * import sys
+ *
+ */
+ __pyx_t_3 = __Pyx_ImportDottedModule(__pyx_n_s_re, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 14, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_re, __pyx_t_3) < 0) __PYX_ERR(0, 14, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":15
+ * import os
+ * import re
+ * import sys # <<<<<<<<<<<<<<
+ *
+ * from _pydev_bundle._pydev_saved_modules import threading
+ */
+ __pyx_t_3 = __Pyx_ImportDottedModule(__pyx_n_s_sys, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 15, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_3) < 0) __PYX_ERR(0, 15, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":17
+ * import sys
+ *
+ * from _pydev_bundle._pydev_saved_modules import threading # <<<<<<<<<<<<<<
+ * from types import CodeType, FrameType
+ * from typing import Dict, Optional, Tuple, Any
+ */
+ __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 17, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_n_s_threading);
+ __Pyx_GIVEREF(__pyx_n_s_threading);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_threading)) __PYX_ERR(0, 17, __pyx_L1_error);
+ __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydev_bundle__pydev_saved_modul, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_threading); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 17, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_threading, __pyx_t_3) < 0) __PYX_ERR(0, 17, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":18
+ *
+ * from _pydev_bundle._pydev_saved_modules import threading
+ * from types import CodeType, FrameType # <<<<<<<<<<<<<<
+ * from typing import Dict, Optional, Tuple, Any
+ * from os.path import basename, splitext
+ */
+ __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_INCREF(__pyx_n_s_CodeType);
+ __Pyx_GIVEREF(__pyx_n_s_CodeType);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_CodeType)) __PYX_ERR(0, 18, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_n_s_FrameType);
+ __Pyx_GIVEREF(__pyx_n_s_FrameType);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_FrameType)) __PYX_ERR(0, 18, __pyx_L1_error);
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_types, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 18, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_CodeType); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CodeType, __pyx_t_2) < 0) __PYX_ERR(0, 18, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_FrameType); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_FrameType, __pyx_t_2) < 0) __PYX_ERR(0, 18, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":19
+ * from _pydev_bundle._pydev_saved_modules import threading
+ * from types import CodeType, FrameType
+ * from typing import Dict, Optional, Tuple, Any # <<<<<<<<<<<<<<
+ * from os.path import basename, splitext
+ *
+ */
+ __pyx_t_3 = PyList_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_n_s_Dict);
+ __Pyx_GIVEREF(__pyx_n_s_Dict);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_Dict)) __PYX_ERR(0, 19, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_n_s_Optional);
+ __Pyx_GIVEREF(__pyx_n_s_Optional);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_Optional)) __PYX_ERR(0, 19, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_n_s_Tuple);
+ __Pyx_GIVEREF(__pyx_n_s_Tuple);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 2, __pyx_n_s_Tuple)) __PYX_ERR(0, 19, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_n_s_Any);
+ __Pyx_GIVEREF(__pyx_n_s_Any);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 3, __pyx_n_s_Any)) __PYX_ERR(0, 19, __pyx_L1_error);
+ __pyx_t_2 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Dict); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_Dict, __pyx_t_3) < 0) __PYX_ERR(0, 19, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Optional); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_Optional, __pyx_t_3) < 0) __PYX_ERR(0, 19, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_Tuple, __pyx_t_3) < 0) __PYX_ERR(0, 19, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Any); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_Any, __pyx_t_3) < 0) __PYX_ERR(0, 19, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":20
+ * from types import CodeType, FrameType
+ * from typing import Dict, Optional, Tuple, Any
+ * from os.path import basename, splitext # <<<<<<<<<<<<<<
+ *
+ * from _pydev_bundle import pydev_log
+ */
+ __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_INCREF(__pyx_n_s_basename);
+ __Pyx_GIVEREF(__pyx_n_s_basename);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_basename)) __PYX_ERR(0, 20, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_n_s_splitext);
+ __Pyx_GIVEREF(__pyx_n_s_splitext);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_splitext)) __PYX_ERR(0, 20, __pyx_L1_error);
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_os_path, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 20, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_basename); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_basename, __pyx_t_2) < 0) __PYX_ERR(0, 20, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_splitext); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_splitext, __pyx_t_2) < 0) __PYX_ERR(0, 20, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":22
+ * from os.path import basename, splitext
+ *
+ * from _pydev_bundle import pydev_log # <<<<<<<<<<<<<<
+ * from _pydevd_bundle import pydevd_dont_trace
+ * from _pydevd_bundle.pydevd_constants import (
+ */
+ __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 22, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_n_s_pydev_log);
+ __Pyx_GIVEREF(__pyx_n_s_pydev_log);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_pydev_log)) __PYX_ERR(0, 22, __pyx_L1_error);
+ __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydev_bundle, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 22, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 22, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pydev_log, __pyx_t_3) < 0) __PYX_ERR(0, 22, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":23
+ *
+ * from _pydev_bundle import pydev_log
+ * from _pydevd_bundle import pydevd_dont_trace # <<<<<<<<<<<<<<
+ * from _pydevd_bundle.pydevd_constants import (
+ * GlobalDebuggerHolder,
+ */
+ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_INCREF(__pyx_n_s_pydevd_dont_trace);
+ __Pyx_GIVEREF(__pyx_n_s_pydevd_dont_trace);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_pydevd_dont_trace)) __PYX_ERR(0, 23, __pyx_L1_error);
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydevd_bundle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 23, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_pydevd_dont_trace); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pydevd_dont_trace, __pyx_t_2) < 0) __PYX_ERR(0, 23, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":25
+ * from _pydevd_bundle import pydevd_dont_trace
+ * from _pydevd_bundle.pydevd_constants import (
+ * GlobalDebuggerHolder, # <<<<<<<<<<<<<<
+ * ForkSafeLock,
+ * PYDEVD_IPYTHON_CONTEXT,
+ */
+ __pyx_t_3 = PyList_New(6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 25, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_n_s_GlobalDebuggerHolder);
+ __Pyx_GIVEREF(__pyx_n_s_GlobalDebuggerHolder);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_GlobalDebuggerHolder)) __PYX_ERR(0, 25, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_n_s_ForkSafeLock);
+ __Pyx_GIVEREF(__pyx_n_s_ForkSafeLock);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_ForkSafeLock)) __PYX_ERR(0, 25, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_n_s_PYDEVD_IPYTHON_CONTEXT);
+ __Pyx_GIVEREF(__pyx_n_s_PYDEVD_IPYTHON_CONTEXT);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 2, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT)) __PYX_ERR(0, 25, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED);
+ __Pyx_GIVEREF(__pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 3, __pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED)) __PYX_ERR(0, 25, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_n_s_RETURN_VALUES_DICT);
+ __Pyx_GIVEREF(__pyx_n_s_RETURN_VALUES_DICT);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 4, __pyx_n_s_RETURN_VALUES_DICT)) __PYX_ERR(0, 25, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_n_s_PYTHON_SUSPEND);
+ __Pyx_GIVEREF(__pyx_n_s_PYTHON_SUSPEND);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 5, __pyx_n_s_PYTHON_SUSPEND)) __PYX_ERR(0, 25, __pyx_L1_error);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":24
+ * from _pydev_bundle import pydev_log
+ * from _pydevd_bundle import pydevd_dont_trace
+ * from _pydevd_bundle.pydevd_constants import ( # <<<<<<<<<<<<<<
+ * GlobalDebuggerHolder,
+ * ForkSafeLock,
+ */
+ __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_constants, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 24, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_GlobalDebuggerHolder, __pyx_t_3) < 0) __PYX_ERR(0, 25, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_ForkSafeLock); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 24, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_ForkSafeLock, __pyx_t_3) < 0) __PYX_ERR(0, 26, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 24, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT, __pyx_t_3) < 0) __PYX_ERR(0, 27, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 24, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED, __pyx_t_3) < 0) __PYX_ERR(0, 28, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_RETURN_VALUES_DICT); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 24, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_RETURN_VALUES_DICT, __pyx_t_3) < 0) __PYX_ERR(0, 29, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_PYTHON_SUSPEND); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 24, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_PYTHON_SUSPEND, __pyx_t_3) < 0) __PYX_ERR(0, 30, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":32
+ * PYTHON_SUSPEND,
+ * )
+ * from _pydevd_bundle.pydevd_frame_utils import short_tb, flag_as_unwinding, short_frame # <<<<<<<<<<<<<<
+ * from pydevd_file_utils import (
+ * NORM_PATHS_AND_BASE_CONTAINER,
+ */
+ __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_INCREF(__pyx_n_s_short_tb);
+ __Pyx_GIVEREF(__pyx_n_s_short_tb);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_short_tb)) __PYX_ERR(0, 32, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_n_s_flag_as_unwinding);
+ __Pyx_GIVEREF(__pyx_n_s_flag_as_unwinding);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_flag_as_unwinding)) __PYX_ERR(0, 32, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_n_s_short_frame);
+ __Pyx_GIVEREF(__pyx_n_s_short_frame);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_short_frame)) __PYX_ERR(0, 32, __pyx_L1_error);
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_frame_util, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_short_tb); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_short_tb, __pyx_t_2) < 0) __PYX_ERR(0, 32, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_flag_as_unwinding); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_flag_as_unwinding, __pyx_t_2) < 0) __PYX_ERR(0, 32, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_short_frame); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_short_frame, __pyx_t_2) < 0) __PYX_ERR(0, 32, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":34
+ * from _pydevd_bundle.pydevd_frame_utils import short_tb, flag_as_unwinding, short_frame
+ * from pydevd_file_utils import (
+ * NORM_PATHS_AND_BASE_CONTAINER, # <<<<<<<<<<<<<<
+ * get_abs_path_real_path_and_base_from_file,
+ * get_abs_path_real_path_and_base_from_frame,
+ */
+ __pyx_t_3 = PyList_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 34, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER);
+ __Pyx_GIVEREF(__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER)) __PYX_ERR(0, 34, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_n_s_get_abs_path_real_path_and_base);
+ __Pyx_GIVEREF(__pyx_n_s_get_abs_path_real_path_and_base);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_get_abs_path_real_path_and_base)) __PYX_ERR(0, 34, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_n_s_get_abs_path_real_path_and_base_2);
+ __Pyx_GIVEREF(__pyx_n_s_get_abs_path_real_path_and_base_2);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 2, __pyx_n_s_get_abs_path_real_path_and_base_2)) __PYX_ERR(0, 34, __pyx_L1_error);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":33
+ * )
+ * from _pydevd_bundle.pydevd_frame_utils import short_tb, flag_as_unwinding, short_frame
+ * from pydevd_file_utils import ( # <<<<<<<<<<<<<<
+ * NORM_PATHS_AND_BASE_CONTAINER,
+ * get_abs_path_real_path_and_base_from_file,
+ */
+ __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_file_utils, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 33, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 33, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER, __pyx_t_3) < 0) __PYX_ERR(0, 34, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_get_abs_path_real_path_and_base); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 33, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_abs_path_real_path_and_base, __pyx_t_3) < 0) __PYX_ERR(0, 35, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_get_abs_path_real_path_and_base_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 33, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_abs_path_real_path_and_base_2, __pyx_t_3) < 0) __PYX_ERR(0, 36, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":38
+ * get_abs_path_real_path_and_base_from_frame,
+ * )
+ * from _pydevd_bundle.pydevd_trace_dispatch import should_stop_on_exception, handle_exception # <<<<<<<<<<<<<<
+ * from _pydevd_bundle.pydevd_constants import EXCEPTION_TYPE_HANDLED
+ * from _pydevd_bundle.pydevd_trace_dispatch import is_unhandled_exception
+ */
+ __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 38, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_INCREF(__pyx_n_s_should_stop_on_exception);
+ __Pyx_GIVEREF(__pyx_n_s_should_stop_on_exception);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_should_stop_on_exception)) __PYX_ERR(0, 38, __pyx_L1_error);
+ __Pyx_INCREF(__pyx_n_s_handle_exception);
+ __Pyx_GIVEREF(__pyx_n_s_handle_exception);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_handle_exception)) __PYX_ERR(0, 38, __pyx_L1_error);
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_trace_disp, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 38, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_should_stop_on_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 38, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_should_stop_on_exception, __pyx_t_2) < 0) __PYX_ERR(0, 38, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_handle_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 38, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_handle_exception, __pyx_t_2) < 0) __PYX_ERR(0, 38, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":39
+ * )
+ * from _pydevd_bundle.pydevd_trace_dispatch import should_stop_on_exception, handle_exception
+ * from _pydevd_bundle.pydevd_constants import EXCEPTION_TYPE_HANDLED # <<<<<<<<<<<<<<
+ * from _pydevd_bundle.pydevd_trace_dispatch import is_unhandled_exception
+ * from _pydevd_bundle.pydevd_breakpoints import stop_on_unhandled_exception
+ */
+ __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 39, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_n_s_EXCEPTION_TYPE_HANDLED);
+ __Pyx_GIVEREF(__pyx_n_s_EXCEPTION_TYPE_HANDLED);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_EXCEPTION_TYPE_HANDLED)) __PYX_ERR(0, 39, __pyx_L1_error);
+ __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_constants, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 39, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_EXCEPTION_TYPE_HANDLED); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 39, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_EXCEPTION_TYPE_HANDLED, __pyx_t_3) < 0) __PYX_ERR(0, 39, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":40
+ * from _pydevd_bundle.pydevd_trace_dispatch import should_stop_on_exception, handle_exception
+ * from _pydevd_bundle.pydevd_constants import EXCEPTION_TYPE_HANDLED
+ * from _pydevd_bundle.pydevd_trace_dispatch import is_unhandled_exception # <<<<<<<<<<<<<<
+ * from _pydevd_bundle.pydevd_breakpoints import stop_on_unhandled_exception
+ * from _pydevd_bundle.pydevd_utils import get_clsname_for_code
+ */
+ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 40, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_INCREF(__pyx_n_s_is_unhandled_exception);
+ __Pyx_GIVEREF(__pyx_n_s_is_unhandled_exception);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_is_unhandled_exception)) __PYX_ERR(0, 40, __pyx_L1_error);
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_trace_disp, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 40, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_is_unhandled_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 40, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_unhandled_exception, __pyx_t_2) < 0) __PYX_ERR(0, 40, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":41
+ * from _pydevd_bundle.pydevd_constants import EXCEPTION_TYPE_HANDLED
+ * from _pydevd_bundle.pydevd_trace_dispatch import is_unhandled_exception
+ * from _pydevd_bundle.pydevd_breakpoints import stop_on_unhandled_exception # <<<<<<<<<<<<<<
+ * from _pydevd_bundle.pydevd_utils import get_clsname_for_code
+ *
+ */
+ __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 41, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_n_s_stop_on_unhandled_exception);
+ __Pyx_GIVEREF(__pyx_n_s_stop_on_unhandled_exception);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_stop_on_unhandled_exception)) __PYX_ERR(0, 41, __pyx_L1_error);
+ __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_breakpoint, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 41, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_stop_on_unhandled_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 41, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_stop_on_unhandled_exception, __pyx_t_3) < 0) __PYX_ERR(0, 41, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":42
+ * from _pydevd_bundle.pydevd_trace_dispatch import is_unhandled_exception
+ * from _pydevd_bundle.pydevd_breakpoints import stop_on_unhandled_exception
+ * from _pydevd_bundle.pydevd_utils import get_clsname_for_code # <<<<<<<<<<<<<<
+ *
+ * # fmt: off
+ */
+ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 42, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_INCREF(__pyx_n_s_get_clsname_for_code);
+ __Pyx_GIVEREF(__pyx_n_s_get_clsname_for_code);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_get_clsname_for_code)) __PYX_ERR(0, 42, __pyx_L1_error);
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_utils, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 42, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_get_clsname_for_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 42, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_clsname_for_code, __pyx_t_2) < 0) __PYX_ERR(0, 42, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":53
+ * # fmt: on
+ *
+ * try: # <<<<<<<<<<<<<<
+ * from _pydevd_bundle.pydevd_bytecode_utils import get_smart_step_into_variant_from_frame_offset
+ * except ImportError:
+ */
+ {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_4, &__pyx_t_5);
+ __Pyx_XGOTREF(__pyx_t_1);
+ __Pyx_XGOTREF(__pyx_t_4);
+ __Pyx_XGOTREF(__pyx_t_5);
+ /*try:*/ {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":54
+ *
+ * try:
+ * from _pydevd_bundle.pydevd_bytecode_utils import get_smart_step_into_variant_from_frame_offset # <<<<<<<<<<<<<<
+ * except ImportError:
+ *
+ */
+ __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 54, __pyx_L2_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_n_s_get_smart_step_into_variant_from);
+ __Pyx_GIVEREF(__pyx_n_s_get_smart_step_into_variant_from);
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_get_smart_step_into_variant_from)) __PYX_ERR(0, 54, __pyx_L2_error);
+ __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_bytecode_u, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 54, __pyx_L2_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 54, __pyx_L2_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_smart_step_into_variant_from, __pyx_t_3) < 0) __PYX_ERR(0, 54, __pyx_L2_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":53
+ * # fmt: on
+ *
+ * try: # <<<<<<<<<<<<<<
+ * from _pydevd_bundle.pydevd_bytecode_utils import get_smart_step_into_variant_from_frame_offset
+ * except ImportError:
+ */
+ }
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ goto __pyx_L7_try_end;
+ __pyx_L2_error:;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":55
+ * try:
+ * from _pydevd_bundle.pydevd_bytecode_utils import get_smart_step_into_variant_from_frame_offset
+ * except ImportError: # <<<<<<<<<<<<<<
+ *
+ * def get_smart_step_into_variant_from_frame_offset(*args, **kwargs):
+ */
+ __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
+ if (__pyx_t_6) {
+ __Pyx_AddTraceback("_pydevd_sys_monitoring_cython", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_7) < 0) __PYX_ERR(0, 55, __pyx_L4_except_error)
+ __Pyx_XGOTREF(__pyx_t_2);
+ __Pyx_XGOTREF(__pyx_t_3);
+ __Pyx_XGOTREF(__pyx_t_7);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":57
+ * except ImportError:
+ *
+ * def get_smart_step_into_variant_from_frame_offset(*args, **kwargs): # <<<<<<<<<<<<<<
+ * return None
+ *
+ */
+ __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_1get_smart_step_into_variant_from_frame_offset, 0, __pyx_n_s_get_smart_step_into_variant_from, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 57, __pyx_L4_except_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_smart_step_into_variant_from, __pyx_t_8) < 0) __PYX_ERR(0, 57, __pyx_L4_except_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ goto __pyx_L3_exception_handled;
+ }
+ goto __pyx_L4_except_error;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":53
+ * # fmt: on
+ *
+ * try: # <<<<<<<<<<<<<<
+ * from _pydevd_bundle.pydevd_bytecode_utils import get_smart_step_into_variant_from_frame_offset
+ * except ImportError:
+ */
+ __pyx_L4_except_error:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_4);
+ __Pyx_XGIVEREF(__pyx_t_5);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_4, __pyx_t_5);
+ goto __pyx_L1_error;
+ __pyx_L3_exception_handled:;
+ __Pyx_XGIVEREF(__pyx_t_1);
+ __Pyx_XGIVEREF(__pyx_t_4);
+ __Pyx_XGIVEREF(__pyx_t_5);
+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_4, __pyx_t_5);
+ __pyx_L7_try_end:;
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":61
+ *
+ *
+ * if hasattr(sys, "monitoring"): # <<<<<<<<<<<<<<
+ * DEBUGGER_ID = sys.monitoring.DEBUGGER_ID
+ * monitor = sys.monitoring
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_sys); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 61, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_9 = __Pyx_HasAttr(__pyx_t_7, __pyx_n_s_monitoring); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 61, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (__pyx_t_9) {
+
+ /* "_pydevd_sys_monitoring_cython.pyx":62
+ *
+ * if hasattr(sys, "monitoring"):
+ * DEBUGGER_ID = sys.monitoring.DEBUGGER_ID # <<<<<<<<<<<<<<
+ * monitor = sys.monitoring
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_sys); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 62, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_monitoring); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 62, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_DEBUGGER_ID); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 62, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_DEBUGGER_ID, __pyx_t_7) < 0) __PYX_ERR(0, 62, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":63
+ * if hasattr(sys, "monitoring"):
+ * DEBUGGER_ID = sys.monitoring.DEBUGGER_ID
+ * monitor = sys.monitoring # <<<<<<<<<<<<<<
+ *
+ * _thread_local_info = threading.local()
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_sys); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 63, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_monitoring); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 63, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_monitor, __pyx_t_3) < 0) __PYX_ERR(0, 63, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":61
+ *
+ *
+ * if hasattr(sys, "monitoring"): # <<<<<<<<<<<<<<
+ * DEBUGGER_ID = sys.monitoring.DEBUGGER_ID
+ * monitor = sys.monitoring
+ */
+ }
+
+ /* "_pydevd_sys_monitoring_cython.pyx":65
+ * monitor = sys.monitoring
+ *
+ * _thread_local_info = threading.local() # <<<<<<<<<<<<<<
+ * _get_ident = threading.get_ident
+ * _thread_active = threading._active # noqa
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_threading); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 65, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_local); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 65, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 65, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_thread_local_info, __pyx_t_3) < 0) __PYX_ERR(0, 65, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":66
+ *
+ * _thread_local_info = threading.local()
+ * _get_ident = threading.get_ident # <<<<<<<<<<<<<<
+ * _thread_active = threading._active # noqa
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_threading); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 66, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_get_ident_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 66, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_ident, __pyx_t_7) < 0) __PYX_ERR(0, 66, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":67
+ * _thread_local_info = threading.local()
+ * _get_ident = threading.get_ident
+ * _thread_active = threading._active # noqa # <<<<<<<<<<<<<<
+ *
+ * STATE_SUSPEND: int = 2
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_threading); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 67, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_active); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 67, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_thread_active, __pyx_t_3) < 0) __PYX_ERR(0, 67, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":69
+ * _thread_active = threading._active # noqa
+ *
+ * STATE_SUSPEND: int = 2 # <<<<<<<<<<<<<<
+ * CMD_STEP_INTO: int = 107
+ * CMD_STEP_OVER: int = 108
+ */
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_STATE_SUSPEND, __pyx_int_2) < 0) __PYX_ERR(0, 69, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":70
+ *
+ * STATE_SUSPEND: int = 2
+ * CMD_STEP_INTO: int = 107 # <<<<<<<<<<<<<<
+ * CMD_STEP_OVER: int = 108
+ * CMD_STEP_OVER_MY_CODE: int = 159
+ */
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CMD_STEP_INTO, __pyx_int_107) < 0) __PYX_ERR(0, 70, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":71
+ * STATE_SUSPEND: int = 2
+ * CMD_STEP_INTO: int = 107
+ * CMD_STEP_OVER: int = 108 # <<<<<<<<<<<<<<
+ * CMD_STEP_OVER_MY_CODE: int = 159
+ * CMD_STEP_INTO_MY_CODE: int = 144
+ */
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CMD_STEP_OVER, __pyx_int_108) < 0) __PYX_ERR(0, 71, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":72
+ * CMD_STEP_INTO: int = 107
+ * CMD_STEP_OVER: int = 108
+ * CMD_STEP_OVER_MY_CODE: int = 159 # <<<<<<<<<<<<<<
+ * CMD_STEP_INTO_MY_CODE: int = 144
+ * CMD_STEP_INTO_COROUTINE: int = 206
+ */
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CMD_STEP_OVER_MY_CODE, __pyx_int_159) < 0) __PYX_ERR(0, 72, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":73
+ * CMD_STEP_OVER: int = 108
+ * CMD_STEP_OVER_MY_CODE: int = 159
+ * CMD_STEP_INTO_MY_CODE: int = 144 # <<<<<<<<<<<<<<
+ * CMD_STEP_INTO_COROUTINE: int = 206
+ * CMD_SMART_STEP_INTO: int = 128
+ */
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CMD_STEP_INTO_MY_CODE, __pyx_int_144) < 0) __PYX_ERR(0, 73, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":74
+ * CMD_STEP_OVER_MY_CODE: int = 159
+ * CMD_STEP_INTO_MY_CODE: int = 144
+ * CMD_STEP_INTO_COROUTINE: int = 206 # <<<<<<<<<<<<<<
+ * CMD_SMART_STEP_INTO: int = 128
+ * can_skip: bool = True
+ */
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CMD_STEP_INTO_COROUTINE, __pyx_int_206) < 0) __PYX_ERR(0, 74, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":75
+ * CMD_STEP_INTO_MY_CODE: int = 144
+ * CMD_STEP_INTO_COROUTINE: int = 206
+ * CMD_SMART_STEP_INTO: int = 128 # <<<<<<<<<<<<<<
+ * can_skip: bool = True
+ * CMD_STEP_RETURN: int = 109
+ */
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CMD_SMART_STEP_INTO, __pyx_int_128) < 0) __PYX_ERR(0, 75, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":76
+ * CMD_STEP_INTO_COROUTINE: int = 206
+ * CMD_SMART_STEP_INTO: int = 128
+ * can_skip: bool = True # <<<<<<<<<<<<<<
+ * CMD_STEP_RETURN: int = 109
+ * CMD_STEP_OVER_MY_CODE: int = 159
+ */
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_can_skip, Py_True) < 0) __PYX_ERR(0, 76, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":77
+ * CMD_SMART_STEP_INTO: int = 128
+ * can_skip: bool = True
+ * CMD_STEP_RETURN: int = 109 # <<<<<<<<<<<<<<
+ * CMD_STEP_OVER_MY_CODE: int = 159
+ * CMD_STEP_RETURN_MY_CODE: int = 160
+ */
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CMD_STEP_RETURN, __pyx_int_109) < 0) __PYX_ERR(0, 77, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":78
+ * can_skip: bool = True
+ * CMD_STEP_RETURN: int = 109
+ * CMD_STEP_OVER_MY_CODE: int = 159 # <<<<<<<<<<<<<<
+ * CMD_STEP_RETURN_MY_CODE: int = 160
+ * CMD_SET_BREAK: int = 111
+ */
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CMD_STEP_OVER_MY_CODE, __pyx_int_159) < 0) __PYX_ERR(0, 78, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":79
+ * CMD_STEP_RETURN: int = 109
+ * CMD_STEP_OVER_MY_CODE: int = 159
+ * CMD_STEP_RETURN_MY_CODE: int = 160 # <<<<<<<<<<<<<<
+ * CMD_SET_BREAK: int = 111
+ * CMD_SET_FUNCTION_BREAK: int = 208
+ */
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CMD_STEP_RETURN_MY_CODE, __pyx_int_160) < 0) __PYX_ERR(0, 79, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":80
+ * CMD_STEP_OVER_MY_CODE: int = 159
+ * CMD_STEP_RETURN_MY_CODE: int = 160
+ * CMD_SET_BREAK: int = 111 # <<<<<<<<<<<<<<
+ * CMD_SET_FUNCTION_BREAK: int = 208
+ * STATE_RUN: int = 1
+ */
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CMD_SET_BREAK, __pyx_int_111) < 0) __PYX_ERR(0, 80, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":81
+ * CMD_STEP_RETURN_MY_CODE: int = 160
+ * CMD_SET_BREAK: int = 111
+ * CMD_SET_FUNCTION_BREAK: int = 208 # <<<<<<<<<<<<<<
+ * STATE_RUN: int = 1
+ * STATE_SUSPEND: int = 2
+ */
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CMD_SET_FUNCTION_BREAK, __pyx_int_208) < 0) __PYX_ERR(0, 81, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":82
+ * CMD_SET_BREAK: int = 111
+ * CMD_SET_FUNCTION_BREAK: int = 208
+ * STATE_RUN: int = 1 # <<<<<<<<<<<<<<
+ * STATE_SUSPEND: int = 2
+ *
+ */
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_STATE_RUN, __pyx_int_1) < 0) __PYX_ERR(0, 82, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":83
+ * CMD_SET_FUNCTION_BREAK: int = 208
+ * STATE_RUN: int = 1
+ * STATE_SUSPEND: int = 2 # <<<<<<<<<<<<<<
+ *
+ * IGNORE_EXCEPTION_TAG = re.compile("[^#]*#.*@IgnoreException")
+ */
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_STATE_SUSPEND, __pyx_int_2) < 0) __PYX_ERR(0, 83, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":85
+ * STATE_SUSPEND: int = 2
+ *
+ * IGNORE_EXCEPTION_TAG = re.compile("[^#]*#.*@IgnoreException") # <<<<<<<<<<<<<<
+ * DEBUG_START = ("pydevd.py", "run")
+ * DEBUG_START_PY3K = ("_pydev_execfile.py", "execfile")
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_re); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 85, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_compile); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 85, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 85, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_IGNORE_EXCEPTION_TAG, __pyx_t_3) < 0) __PYX_ERR(0, 85, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":86
+ *
+ * IGNORE_EXCEPTION_TAG = re.compile("[^#]*#.*@IgnoreException")
+ * DEBUG_START = ("pydevd.py", "run") # <<<<<<<<<<<<<<
+ * DEBUG_START_PY3K = ("_pydev_execfile.py", "execfile")
+ * TRACE_PROPERTY = "pydevd_traceproperty.py"
+ */
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_DEBUG_START, __pyx_tuple__26) < 0) __PYX_ERR(0, 86, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":87
+ * IGNORE_EXCEPTION_TAG = re.compile("[^#]*#.*@IgnoreException")
+ * DEBUG_START = ("pydevd.py", "run")
+ * DEBUG_START_PY3K = ("_pydev_execfile.py", "execfile") # <<<<<<<<<<<<<<
+ * TRACE_PROPERTY = "pydevd_traceproperty.py"
+ *
+ */
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_DEBUG_START_PY3K, __pyx_tuple__27) < 0) __PYX_ERR(0, 87, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":88
+ * DEBUG_START = ("pydevd.py", "run")
+ * DEBUG_START_PY3K = ("_pydev_execfile.py", "execfile")
+ * TRACE_PROPERTY = "pydevd_traceproperty.py" # <<<<<<<<<<<<<<
+ *
+ * _global_notify_skipped_step_in = False
+ */
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_TRACE_PROPERTY, __pyx_kp_s_pydevd_traceproperty_py) < 0) __PYX_ERR(0, 88, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":90
+ * TRACE_PROPERTY = "pydevd_traceproperty.py"
+ *
+ * _global_notify_skipped_step_in = False # <<<<<<<<<<<<<<
+ * _global_notify_skipped_step_in_lock = ForkSafeLock()
+ *
+ */
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_global_notify_skipped_step_in, Py_False) < 0) __PYX_ERR(0, 90, __pyx_L1_error)
+
+ /* "_pydevd_sys_monitoring_cython.pyx":91
+ *
+ * _global_notify_skipped_step_in = False
+ * _global_notify_skipped_step_in_lock = ForkSafeLock() # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ForkSafeLock); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 91, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 91, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_global_notify_skipped_step_in_l, __pyx_t_7) < 0) __PYX_ERR(0, 91, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+ /* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_10ThreadInfo_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ThreadInfo___reduce_cython, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo, __pyx_n_s_reduce_cython, __pyx_t_7) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ PyType_Modified(__pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo);
+
+ /* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle_ThreadInfo, (type(self), 0xd625bfa, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle_ThreadInfo__set_state(self, __pyx_state)
+ */
+ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_10ThreadInfo_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ThreadInfo___setstate_cython, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 16, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo, __pyx_n_s_setstate_cython, __pyx_t_7) < 0) __PYX_ERR(1, 16, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ PyType_Modified(__pyx_ptype_29_pydevd_sys_monitoring_cython_ThreadInfo);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":270
+ *
+ *
+ * class _DeleteDummyThreadOnDel: # <<<<<<<<<<<<<<
+ * """
+ * Helper class to remove a dummy thread from threading._active on __del__.
+ */
+ __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_DeleteDummyThreadOnDel, __pyx_n_s_DeleteDummyThreadOnDel, (PyObject *) NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_kp_s_Helper_class_to_remove_a_dummy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 270, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":275
+ * """
+ *
+ * def __init__(self, dummy_thread): # <<<<<<<<<<<<<<
+ * self._dummy_thread = dummy_thread
+ * self._tident = dummy_thread.ident
+ */
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_23_DeleteDummyThreadOnDel_1__init__, 0, __pyx_n_s_DeleteDummyThreadOnDel___init, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 275, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_init, __pyx_t_3) < 0) __PYX_ERR(0, 275, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":286
+ * _thread_local_info._track_dummy_thread_ref = self
+ *
+ * def __del__(self): # <<<<<<<<<<<<<<
+ * with threading._active_limbo_lock:
+ * if _thread_active.get(self._tident) is self._dummy_thread:
+ */
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_23_DeleteDummyThreadOnDel_3__del__, 0, __pyx_n_s_DeleteDummyThreadOnDel___del, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 286, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_del, __pyx_t_3) < 0) __PYX_ERR(0, 286, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":270
+ *
+ *
+ * class _DeleteDummyThreadOnDel: # <<<<<<<<<<<<<<
+ * """
+ * Helper class to remove a dummy thread from threading._active on __del__.
+ */
+ __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_n_s_DeleteDummyThreadOnDel, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 270, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_DeleteDummyThreadOnDel, __pyx_t_3) < 0) __PYX_ERR(0, 270, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":416
+ * self.co_name: str = ""
+ *
+ * def get_line_of_offset(self, offset): # <<<<<<<<<<<<<<
+ * for start, end, line in self.code_obj.co_lines():
+ * if offset >= start and offset <= end:
+ */
+ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_3get_line_of_offset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FuncCodeInfo_get_line_of_offset, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 416, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo, __pyx_n_s_get_line_of_offset, __pyx_t_7) < 0) __PYX_ERR(0, 416, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ PyType_Modified(__pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo);
+
+ /* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FuncCodeInfo___reduce_cython, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo, __pyx_n_s_reduce_cython, __pyx_t_7) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ PyType_Modified(__pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo);
+
+ /* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x3f403d2, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle_FuncCodeInfo__set_state(self, __pyx_state)
+ */
+ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_12FuncCodeInfo_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FuncCodeInfo___setstate_cython, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 16, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo, __pyx_n_s_setstate_cython, __pyx_t_7) < 0) __PYX_ERR(1, 16, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ PyType_Modified(__pyx_ptype_29_pydevd_sys_monitoring_cython_FuncCodeInfo);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":450
+ *
+ *
+ * _CodeLineInfo = namedtuple("_CodeLineInfo", "line_to_offset, first_line, last_line") # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_namedtuple); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 450, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 450, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CodeLineInfo, __pyx_t_3) < 0) __PYX_ERR(0, 450, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":456
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cdef _get_code_line_info(code_obj, _cache={}): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _get_code_line_info(code_obj, _cache={}):
+ */
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 456, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_k__15 = __pyx_t_3;
+ __Pyx_GIVEREF(__pyx_t_3);
+ __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":479
+ *
+ *
+ * _code_to_func_code_info_cache: Dict[CodeType, "FuncCodeInfo"] = {} # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 479, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_code_to_func_code_info_cache, __pyx_t_3) < 0) __PYX_ERR(0, 479, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":484
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef FuncCodeInfo _get_func_code_info(code_obj, frame_or_depth): # <<<<<<<<<<<<<<
+ * cdef FuncCodeInfo func_code_info
+ * # ELSE
+ */
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_3_get_func_code_info, 0, __pyx_n_s_get_func_code_info, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 484, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_func_code_info, __pyx_t_3) < 0) __PYX_ERR(0, 484, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":678
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef disable_code_tracing(code): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def disable_code_tracing(code):
+ */
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_5disable_code_tracing, 0, __pyx_n_s_disable_code_tracing, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 678, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_disable_code_tracing, __pyx_t_3) < 0) __PYX_ERR(0, 678, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":689
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef enable_code_tracing(unsigned long thread_ident, code, frame): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def enable_code_tracing(thread_ident: Optional[int], code, frame) -> bool:
+ */
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_7enable_code_tracing, 0, __pyx_n_s_enable_code_tracing, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 689, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_enable_code_tracing, __pyx_t_3) < 0) __PYX_ERR(0, 689, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "(tree fragment)":1
+ * def __reduce_cython__(self): # <<<<<<<<<<<<<<
+ * cdef tuple state
+ * cdef object _dict
+ */
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TryExceptContainerObj___reduce, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ PyType_Modified(__pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj);
+
+ /* "(tree fragment)":16
+ * else:
+ * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, state)
+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_unpickle__TryExceptContainerObj__set_state(self, __pyx_state)
+ */
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_22_TryExceptContainerObj_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TryExceptContainerObj___setstat, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 16, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 16, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ PyType_Modified(__pyx_ptype_29_pydevd_sys_monitoring_cython__TryExceptContainerObj);
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1709
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef _ensure_monitoring(): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _ensure_monitoring():
+ */
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_9_ensure_monitoring, 0, __pyx_n_s_ensure_monitoring, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__49)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1709, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_ensure_monitoring, __pyx_t_3) < 0) __PYX_ERR(0, 1709, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1723
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef start_monitoring(bint all_threads=False): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * # ELSE
+ */
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_11start_monitoring, 0, __pyx_n_s_start_monitoring, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__51)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1723, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__52);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_start_monitoring, __pyx_t_3) < 0) __PYX_ERR(0, 1723, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1751
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * cpdef stop_monitoring(all_threads=False): # <<<<<<<<<<<<<<
+ * cdef ThreadInfo thread_info
+ * # ELSE
+ */
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_13stop_monitoring, 0, __pyx_n_s_stop_monitoring, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__53)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1751, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__54);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_stop_monitoring, __pyx_t_3) < 0) __PYX_ERR(0, 1751, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1779
+ *
+ *
+ * def update_monitor_events(suspend_requested: Optional[bool] = None) -> None: # <<<<<<<<<<<<<<
+ * """
+ * This should be called when breakpoints change.
+ */
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1779, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_suspend_requested, __pyx_kp_s_Optional_bool) < 0) __PYX_ERR(0, 1779, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(0, 1779, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_15update_monitor_events, 0, __pyx_n_s_update_monitor_events, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__56)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1779, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_tuple__57);
+ __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_3);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_update_monitor_events, __pyx_t_7) < 0) __PYX_ERR(0, 1779, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1864
+ *
+ *
+ * def restart_events() -> None: # <<<<<<<<<<<<<<
+ * # Note: if breakpoints change, update_monitor_events usually needs to be
+ * # called first, then the line event tracing must be set for existing frames
+ */
+ __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1864, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(0, 1864, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_17restart_events, 0, __pyx_n_s_restart_events, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__58)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1864, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_7);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_restart_events, __pyx_t_3) < 0) __PYX_ERR(0, 1864, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1899
+ * # fmt: off
+ * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
+ * def _do_wait_suspend(py_db, ThreadInfo thread_info, frame, event, arg): # <<<<<<<<<<<<<<
+ * # ELSE
+ * # def _do_wait_suspend(py_db, thread_info, frame, event, arg):
+ */
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_19_do_wait_suspend, 0, __pyx_n_s_do_wait_suspend, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__60)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1899, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_do_wait_suspend, __pyx_t_3) < 0) __PYX_ERR(0, 1899, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "(tree fragment)":1
+ * def __pyx_unpickle_ThreadInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
+ * cdef object __pyx_PickleError
+ * cdef object __pyx_result
+ */
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_21__pyx_unpickle_ThreadInfo, 0, __pyx_n_s_pyx_unpickle_ThreadInfo, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__62)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ThreadInfo, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "(tree fragment)":11
+ * __pyx_unpickle_ThreadInfo__set_state( __pyx_result, __pyx_state)
+ * return __pyx_result
+ * cdef __pyx_unpickle_ThreadInfo__set_state(ThreadInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<<
+ * __pyx_result.additional_info = __pyx_state[0]; __pyx_result.thread = __pyx_state[1]; __pyx_result.thread_ident = __pyx_state[2]; __pyx_result.trace = __pyx_state[3]
+ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
+ */
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_23__pyx_unpickle_FuncCodeInfo, 0, __pyx_n_s_pyx_unpickle_FuncCodeInfo, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__63)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_FuncCodeInfo, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "(tree fragment)":1
+ * def __pyx_unpickle__TryExceptContainerObj(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
+ * cdef object __pyx_PickleError
+ * cdef object __pyx_result
+ */
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_29_pydevd_sys_monitoring_cython_25__pyx_unpickle__TryExceptContainerObj, 0, __pyx_n_s_pyx_unpickle__TryExceptContain, NULL, __pyx_n_s_pydevd_sys_monitoring_cython, __pyx_d, ((PyObject *)__pyx_codeobj__64)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle__TryExceptContain, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "_pydevd_sys_monitoring_cython.pyx":1
+ * from __future__ import print_function # <<<<<<<<<<<<<<
+ *
+ * # Important: Autogenerated file.
+ */
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /*--- Wrapped vars code ---*/
+
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_8);
+ if (__pyx_m) {
+ if (__pyx_d && stringtab_initialized) {
+ __Pyx_AddTraceback("init _pydevd_sys_monitoring_cython", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ }
+ #if !CYTHON_USE_MODULE_STATE
+ Py_CLEAR(__pyx_m);
+ #else
+ Py_DECREF(__pyx_m);
+ if (pystate_addmodule_run) {
+ PyObject *tp, *value, *tb;
+ PyErr_Fetch(&tp, &value, &tb);
+ PyState_RemoveModule(&__pyx_moduledef);
+ PyErr_Restore(tp, value, tb);
+ }
+ #endif
+ } else if (!PyErr_Occurred()) {
+ PyErr_SetString(PyExc_ImportError, "init _pydevd_sys_monitoring_cython");
+ }
+ __pyx_L0:;
+ __Pyx_RefNannyFinishContext();
+ #if CYTHON_PEP489_MULTI_PHASE_INIT
+ return (__pyx_m != NULL) ? 0 : -1;
+ #elif PY_MAJOR_VERSION >= 3
+ return __pyx_m;
+ #else
+ return;
+ #endif
+}
+/* #### Code section: cleanup_globals ### */
+/* #### Code section: cleanup_module ### */
+/* #### Code section: main_method ### */
+/* #### Code section: utility_code_pragmas ### */
+#ifdef _MSC_VER
+#pragma warning( push )
+/* Warning 4127: conditional expression is constant
+ * Cython uses constant conditional expressions to allow in inline functions to be optimized at
+ * compile-time, so this warning is not useful
+ */
+#pragma warning( disable : 4127 )
+#endif
+
+
+
+/* #### Code section: utility_code_def ### */
+
+/* --- Runtime support code --- */
+/* Refnanny */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+ PyObject *m = NULL, *p = NULL;
+ void *r = NULL;
+ m = PyImport_ImportModule(modname);
+ if (!m) goto end;
+ p = PyObject_GetAttrString(m, "RefNannyAPI");
+ if (!p) goto end;
+ r = PyLong_AsVoidPtr(p);
+end:
+ Py_XDECREF(p);
+ Py_XDECREF(m);
+ return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif
+
+/* PyErrExceptionMatches */
+#if CYTHON_FAST_THREAD_STATE
+static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
+ Py_ssize_t i, n;
+ n = PyTuple_GET_SIZE(tuple);
+#if PY_MAJOR_VERSION >= 3
+ for (i=0; i= 0x030C00A6
+ PyObject *current_exception = tstate->current_exception;
+ if (unlikely(!current_exception)) return 0;
+ exc_type = (PyObject*) Py_TYPE(current_exception);
+ if (exc_type == err) return 1;
+#else
+ exc_type = tstate->curexc_type;
+ if (exc_type == err) return 1;
+ if (unlikely(!exc_type)) return 0;
+#endif
+ #if CYTHON_AVOID_BORROWED_REFS
+ Py_INCREF(exc_type);
+ #endif
+ if (unlikely(PyTuple_Check(err))) {
+ result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
+ } else {
+ result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
+ }
+ #if CYTHON_AVOID_BORROWED_REFS
+ Py_DECREF(exc_type);
+ #endif
+ return result;
+}
+#endif
+
+/* PyErrFetchRestore */
+#if CYTHON_FAST_THREAD_STATE
+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
+#if PY_VERSION_HEX >= 0x030C00A6
+ PyObject *tmp_value;
+ assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value)));
+ if (value) {
+ #if CYTHON_COMPILING_IN_CPYTHON
+ if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb))
+ #endif
+ PyException_SetTraceback(value, tb);
+ }
+ tmp_value = tstate->current_exception;
+ tstate->current_exception = value;
+ Py_XDECREF(tmp_value);
+ Py_XDECREF(type);
+ Py_XDECREF(tb);
+#else
+ PyObject *tmp_type, *tmp_value, *tmp_tb;
+ tmp_type = tstate->curexc_type;
+ tmp_value = tstate->curexc_value;
+ tmp_tb = tstate->curexc_traceback;
+ tstate->curexc_type = type;
+ tstate->curexc_value = value;
+ tstate->curexc_traceback = tb;
+ Py_XDECREF(tmp_type);
+ Py_XDECREF(tmp_value);
+ Py_XDECREF(tmp_tb);
+#endif
+}
+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+#if PY_VERSION_HEX >= 0x030C00A6
+ PyObject* exc_value;
+ exc_value = tstate->current_exception;
+ tstate->current_exception = 0;
+ *value = exc_value;
+ *type = NULL;
+ *tb = NULL;
+ if (exc_value) {
+ *type = (PyObject*) Py_TYPE(exc_value);
+ Py_INCREF(*type);
+ #if CYTHON_COMPILING_IN_CPYTHON
+ *tb = ((PyBaseExceptionObject*) exc_value)->traceback;
+ Py_XINCREF(*tb);
+ #else
+ *tb = PyException_GetTraceback(exc_value);
+ #endif
+ }
+#else
+ *type = tstate->curexc_type;
+ *value = tstate->curexc_value;
+ *tb = tstate->curexc_traceback;
+ tstate->curexc_type = 0;
+ tstate->curexc_value = 0;
+ tstate->curexc_traceback = 0;
+#endif
+}
+#endif
+
+/* PyObjectGetAttrStr */
+#if CYTHON_USE_TYPE_SLOTS
+static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
+ PyTypeObject* tp = Py_TYPE(obj);
+ if (likely(tp->tp_getattro))
+ return tp->tp_getattro(obj, attr_name);
+#if PY_MAJOR_VERSION < 3
+ if (likely(tp->tp_getattr))
+ return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
+#endif
+ return PyObject_GetAttr(obj, attr_name);
+}
+#endif
+
+/* PyObjectGetAttrStrNoError */
+#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1
+static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) {
+ __Pyx_PyThreadState_declare
+ __Pyx_PyThreadState_assign
+ if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
+ __Pyx_PyErr_Clear();
+}
+#endif
+static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) {
+ PyObject *result;
+#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
+ (void) PyObject_GetOptionalAttr(obj, attr_name, &result);
+ return result;
+#else
+#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1
+ PyTypeObject* tp = Py_TYPE(obj);
+ if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) {
+ return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1);
+ }
+#endif
+ result = __Pyx_PyObject_GetAttrStr(obj, attr_name);
+ if (unlikely(!result)) {
+ __Pyx_PyObject_GetAttrStr_ClearAttributeError();
+ }
+ return result;
+#endif
+}
+
+/* GetBuiltinName */
+static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
+ PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name);
+ if (unlikely(!result) && !PyErr_Occurred()) {
+ PyErr_Format(PyExc_NameError,
+#if PY_MAJOR_VERSION >= 3
+ "name '%U' is not defined", name);
+#else
+ "name '%.200s' is not defined", PyString_AS_STRING(name));
+#endif
+ }
+ return result;
+}
+
+/* TupleAndListFromArray */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) {
+ PyObject *v;
+ Py_ssize_t i;
+ for (i = 0; i < length; i++) {
+ v = dest[i] = src[i];
+ Py_INCREF(v);
+ }
+}
+static CYTHON_INLINE PyObject *
+__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n)
+{
+ PyObject *res;
+ if (n <= 0) {
+ Py_INCREF(__pyx_empty_tuple);
+ return __pyx_empty_tuple;
+ }
+ res = PyTuple_New(n);
+ if (unlikely(res == NULL)) return NULL;
+ __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n);
+ return res;
+}
+static CYTHON_INLINE PyObject *
+__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n)
+{
+ PyObject *res;
+ if (n <= 0) {
+ return PyList_New(0);
+ }
+ res = PyList_New(n);
+ if (unlikely(res == NULL)) return NULL;
+ __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n);
+ return res;
+}
+#endif
+
+/* BytesEquals */
+static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
+#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API
+ return PyObject_RichCompareBool(s1, s2, equals);
+#else
+ if (s1 == s2) {
+ return (equals == Py_EQ);
+ } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
+ const char *ps1, *ps2;
+ Py_ssize_t length = PyBytes_GET_SIZE(s1);
+ if (length != PyBytes_GET_SIZE(s2))
+ return (equals == Py_NE);
+ ps1 = PyBytes_AS_STRING(s1);
+ ps2 = PyBytes_AS_STRING(s2);
+ if (ps1[0] != ps2[0]) {
+ return (equals == Py_NE);
+ } else if (length == 1) {
+ return (equals == Py_EQ);
+ } else {
+ int result;
+#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000)
+ Py_hash_t hash1, hash2;
+ hash1 = ((PyBytesObject*)s1)->ob_shash;
+ hash2 = ((PyBytesObject*)s2)->ob_shash;
+ if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
+ return (equals == Py_NE);
+ }
+#endif
+ result = memcmp(ps1, ps2, (size_t)length);
+ return (equals == Py_EQ) ? (result == 0) : (result != 0);
+ }
+ } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
+ return (equals == Py_NE);
+ } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
+ return (equals == Py_NE);
+ } else {
+ int result;
+ PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
+ if (!py_result)
+ return -1;
+ result = __Pyx_PyObject_IsTrue(py_result);
+ Py_DECREF(py_result);
+ return result;
+ }
+#endif
+}
+
+/* UnicodeEquals */
+static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
+#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API
+ return PyObject_RichCompareBool(s1, s2, equals);
+#else
+#if PY_MAJOR_VERSION < 3
+ PyObject* owned_ref = NULL;
+#endif
+ int s1_is_unicode, s2_is_unicode;
+ if (s1 == s2) {
+ goto return_eq;
+ }
+ s1_is_unicode = PyUnicode_CheckExact(s1);
+ s2_is_unicode = PyUnicode_CheckExact(s2);
+#if PY_MAJOR_VERSION < 3
+ if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) {
+ owned_ref = PyUnicode_FromObject(s2);
+ if (unlikely(!owned_ref))
+ return -1;
+ s2 = owned_ref;
+ s2_is_unicode = 1;
+ } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) {
+ owned_ref = PyUnicode_FromObject(s1);
+ if (unlikely(!owned_ref))
+ return -1;
+ s1 = owned_ref;
+ s1_is_unicode = 1;
+ } else if (((!s2_is_unicode) & (!s1_is_unicode))) {
+ return __Pyx_PyBytes_Equals(s1, s2, equals);
+ }
+#endif
+ if (s1_is_unicode & s2_is_unicode) {
+ Py_ssize_t length;
+ int kind;
+ void *data1, *data2;
+ if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
+ return -1;
+ length = __Pyx_PyUnicode_GET_LENGTH(s1);
+ if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) {
+ goto return_ne;
+ }
+#if CYTHON_USE_UNICODE_INTERNALS
+ {
+ Py_hash_t hash1, hash2;
+ #if CYTHON_PEP393_ENABLED
+ hash1 = ((PyASCIIObject*)s1)->hash;
+ hash2 = ((PyASCIIObject*)s2)->hash;
+ #else
+ hash1 = ((PyUnicodeObject*)s1)->hash;
+ hash2 = ((PyUnicodeObject*)s2)->hash;
+ #endif
+ if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
+ goto return_ne;
+ }
+ }
+#endif
+ kind = __Pyx_PyUnicode_KIND(s1);
+ if (kind != __Pyx_PyUnicode_KIND(s2)) {
+ goto return_ne;
+ }
+ data1 = __Pyx_PyUnicode_DATA(s1);
+ data2 = __Pyx_PyUnicode_DATA(s2);
+ if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
+ goto return_ne;
+ } else if (length == 1) {
+ goto return_eq;
+ } else {
+ int result = memcmp(data1, data2, (size_t)(length * kind));
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
+ return (equals == Py_EQ) ? (result == 0) : (result != 0);
+ }
+ } else if ((s1 == Py_None) & s2_is_unicode) {
+ goto return_ne;
+ } else if ((s2 == Py_None) & s1_is_unicode) {
+ goto return_ne;
+ } else {
+ int result;
+ PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
+ if (!py_result)
+ return -1;
+ result = __Pyx_PyObject_IsTrue(py_result);
+ Py_DECREF(py_result);
+ return result;
+ }
+return_eq:
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
+ return (equals == Py_EQ);
+return_ne:
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
+ return (equals == Py_NE);
+#endif
+}
+
+/* fastcall */
+#if CYTHON_METH_FASTCALL
+static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s)
+{
+ Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames);
+ for (i = 0; i < n; i++)
+ {
+ if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i];
+ }
+ for (i = 0; i < n; i++)
+ {
+ int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ);
+ if (unlikely(eq != 0)) {
+ if (unlikely(eq < 0)) return NULL;
+ return kwvalues[i];
+ }
+ }
+ return NULL;
+}
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
+CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) {
+ Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames);
+ PyObject *dict;
+ dict = PyDict_New();
+ if (unlikely(!dict))
+ return NULL;
+ for (i=0; i= 3
+ "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
+ #else
+ "%s() got multiple values for keyword argument '%s'", func_name,
+ PyString_AsString(kw_name));
+ #endif
+}
+
+/* ParseKeywords */
+static int __Pyx_ParseOptionalKeywords(
+ PyObject *kwds,
+ PyObject *const *kwvalues,
+ PyObject **argnames[],
+ PyObject *kwds2,
+ PyObject *values[],
+ Py_ssize_t num_pos_args,
+ const char* function_name)
+{
+ PyObject *key = 0, *value = 0;
+ Py_ssize_t pos = 0;
+ PyObject*** name;
+ PyObject*** first_kw_arg = argnames + num_pos_args;
+ int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds));
+ while (1) {
+ Py_XDECREF(key); key = NULL;
+ Py_XDECREF(value); value = NULL;
+ if (kwds_is_tuple) {
+ Py_ssize_t size;
+#if CYTHON_ASSUME_SAFE_MACROS
+ size = PyTuple_GET_SIZE(kwds);
+#else
+ size = PyTuple_Size(kwds);
+ if (size < 0) goto bad;
+#endif
+ if (pos >= size) break;
+#if CYTHON_AVOID_BORROWED_REFS
+ key = __Pyx_PySequence_ITEM(kwds, pos);
+ if (!key) goto bad;
+#elif CYTHON_ASSUME_SAFE_MACROS
+ key = PyTuple_GET_ITEM(kwds, pos);
+#else
+ key = PyTuple_GetItem(kwds, pos);
+ if (!key) goto bad;
+#endif
+ value = kwvalues[pos];
+ pos++;
+ }
+ else
+ {
+ if (!PyDict_Next(kwds, &pos, &key, &value)) break;
+#if CYTHON_AVOID_BORROWED_REFS
+ Py_INCREF(key);
+#endif
+ }
+ name = first_kw_arg;
+ while (*name && (**name != key)) name++;
+ if (*name) {
+ values[name-argnames] = value;
+#if CYTHON_AVOID_BORROWED_REFS
+ Py_INCREF(value);
+ Py_DECREF(key);
+#endif
+ key = NULL;
+ value = NULL;
+ continue;
+ }
+#if !CYTHON_AVOID_BORROWED_REFS
+ Py_INCREF(key);
+#endif
+ Py_INCREF(value);
+ name = first_kw_arg;
+ #if PY_MAJOR_VERSION < 3
+ if (likely(PyString_Check(key))) {
+ while (*name) {
+ if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
+ && _PyString_Eq(**name, key)) {
+ values[name-argnames] = value;
+#if CYTHON_AVOID_BORROWED_REFS
+ value = NULL;
+#endif
+ break;
+ }
+ name++;
+ }
+ if (*name) continue;
+ else {
+ PyObject*** argname = argnames;
+ while (argname != first_kw_arg) {
+ if ((**argname == key) || (
+ (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
+ && _PyString_Eq(**argname, key))) {
+ goto arg_passed_twice;
+ }
+ argname++;
+ }
+ }
+ } else
+ #endif
+ if (likely(PyUnicode_Check(key))) {
+ while (*name) {
+ int cmp = (
+ #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+ (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
+ #endif
+ PyUnicode_Compare(**name, key)
+ );
+ if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+ if (cmp == 0) {
+ values[name-argnames] = value;
+#if CYTHON_AVOID_BORROWED_REFS
+ value = NULL;
+#endif
+ break;
+ }
+ name++;
+ }
+ if (*name) continue;
+ else {
+ PyObject*** argname = argnames;
+ while (argname != first_kw_arg) {
+ int cmp = (**argname == key) ? 0 :
+ #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+ (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
+ #endif
+ PyUnicode_Compare(**argname, key);
+ if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+ if (cmp == 0) goto arg_passed_twice;
+ argname++;
+ }
+ }
+ } else
+ goto invalid_keyword_type;
+ if (kwds2) {
+ if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
+ } else {
+ goto invalid_keyword;
+ }
+ }
+ Py_XDECREF(key);
+ Py_XDECREF(value);
+ return 0;
+arg_passed_twice:
+ __Pyx_RaiseDoubleKeywordsError(function_name, key);
+ goto bad;
+invalid_keyword_type:
+ PyErr_Format(PyExc_TypeError,
+ "%.200s() keywords must be strings", function_name);
+ goto bad;
+invalid_keyword:
+ #if PY_MAJOR_VERSION < 3
+ PyErr_Format(PyExc_TypeError,
+ "%.200s() got an unexpected keyword argument '%.200s'",
+ function_name, PyString_AsString(key));
+ #else
+ PyErr_Format(PyExc_TypeError,
+ "%s() got an unexpected keyword argument '%U'",
+ function_name, key);
+ #endif
+bad:
+ Py_XDECREF(key);
+ Py_XDECREF(value);
+ return -1;
+}
+
+/* FixUpExtensionType */
+#if CYTHON_USE_TYPE_SPECS
+static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) {
+#if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
+ CYTHON_UNUSED_VAR(spec);
+ CYTHON_UNUSED_VAR(type);
+#else
+ const PyType_Slot *slot = spec->slots;
+ while (slot && slot->slot && slot->slot != Py_tp_members)
+ slot++;
+ if (slot && slot->slot == Py_tp_members) {
+ int changed = 0;
+#if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON)
+ const
+#endif
+ PyMemberDef *memb = (PyMemberDef*) slot->pfunc;
+ while (memb && memb->name) {
+ if (memb->name[0] == '_' && memb->name[1] == '_') {
+#if PY_VERSION_HEX < 0x030900b1
+ if (strcmp(memb->name, "__weaklistoffset__") == 0) {
+ assert(memb->type == T_PYSSIZET);
+ assert(memb->flags == READONLY);
+ type->tp_weaklistoffset = memb->offset;
+ changed = 1;
+ }
+ else if (strcmp(memb->name, "__dictoffset__") == 0) {
+ assert(memb->type == T_PYSSIZET);
+ assert(memb->flags == READONLY);
+ type->tp_dictoffset = memb->offset;
+ changed = 1;
+ }
+#if CYTHON_METH_FASTCALL
+ else if (strcmp(memb->name, "__vectorcalloffset__") == 0) {
+ assert(memb->type == T_PYSSIZET);
+ assert(memb->flags == READONLY);
+#if PY_VERSION_HEX >= 0x030800b4
+ type->tp_vectorcall_offset = memb->offset;
+#else
+ type->tp_print = (printfunc) memb->offset;
+#endif
+ changed = 1;
+ }
+#endif
+#else
+ if ((0));
+#endif
+#if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON
+ else if (strcmp(memb->name, "__module__") == 0) {
+ PyObject *descr;
+ assert(memb->type == T_OBJECT);
+ assert(memb->flags == 0 || memb->flags == READONLY);
+ descr = PyDescr_NewMember(type, memb);
+ if (unlikely(!descr))
+ return -1;
+ if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) {
+ Py_DECREF(descr);
+ return -1;
+ }
+ Py_DECREF(descr);
+ changed = 1;
+ }
+#endif
+ }
+ memb++;
+ }
+ if (changed)
+ PyType_Modified(type);
+ }
+#endif
+ return 0;
+}
+#endif
+
+/* FetchSharedCythonModule */
+static PyObject *__Pyx_FetchSharedCythonABIModule(void) {
+ return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME);
+}
+
+/* FetchCommonType */
+static int __Pyx_VerifyCachedType(PyObject *cached_type,
+ const char *name,
+ Py_ssize_t basicsize,
+ Py_ssize_t expected_basicsize) {
+ if (!PyType_Check(cached_type)) {
+ PyErr_Format(PyExc_TypeError,
+ "Shared Cython type %.200s is not a type object", name);
+ return -1;
+ }
+ if (basicsize != expected_basicsize) {
+ PyErr_Format(PyExc_TypeError,
+ "Shared Cython type %.200s has the wrong size, try recompiling",
+ name);
+ return -1;
+ }
+ return 0;
+}
+#if !CYTHON_USE_TYPE_SPECS
+static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
+ PyObject* abi_module;
+ const char* object_name;
+ PyTypeObject *cached_type = NULL;
+ abi_module = __Pyx_FetchSharedCythonABIModule();
+ if (!abi_module) return NULL;
+ object_name = strrchr(type->tp_name, '.');
+ object_name = object_name ? object_name+1 : type->tp_name;
+ cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name);
+ if (cached_type) {
+ if (__Pyx_VerifyCachedType(
+ (PyObject *)cached_type,
+ object_name,
+ cached_type->tp_basicsize,
+ type->tp_basicsize) < 0) {
+ goto bad;
+ }
+ goto done;
+ }
+ if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
+ PyErr_Clear();
+ if (PyType_Ready(type) < 0) goto bad;
+ if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0)
+ goto bad;
+ Py_INCREF(type);
+ cached_type = type;
+done:
+ Py_DECREF(abi_module);
+ return cached_type;
+bad:
+ Py_XDECREF(cached_type);
+ cached_type = NULL;
+ goto done;
+}
+#else
+static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) {
+ PyObject *abi_module, *cached_type = NULL;
+ const char* object_name = strrchr(spec->name, '.');
+ object_name = object_name ? object_name+1 : spec->name;
+ abi_module = __Pyx_FetchSharedCythonABIModule();
+ if (!abi_module) return NULL;
+ cached_type = PyObject_GetAttrString(abi_module, object_name);
+ if (cached_type) {
+ Py_ssize_t basicsize;
+#if CYTHON_COMPILING_IN_LIMITED_API
+ PyObject *py_basicsize;
+ py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__");
+ if (unlikely(!py_basicsize)) goto bad;
+ basicsize = PyLong_AsSsize_t(py_basicsize);
+ Py_DECREF(py_basicsize);
+ py_basicsize = 0;
+ if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
+#else
+ basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1;
+#endif
+ if (__Pyx_VerifyCachedType(
+ cached_type,
+ object_name,
+ basicsize,
+ spec->basicsize) < 0) {
+ goto bad;
+ }
+ goto done;
+ }
+ if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
+ PyErr_Clear();
+ CYTHON_UNUSED_VAR(module);
+ cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases);
+ if (unlikely(!cached_type)) goto bad;
+ if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad;
+ if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad;
+done:
+ Py_DECREF(abi_module);
+ assert(cached_type == NULL || PyType_Check(cached_type));
+ return (PyTypeObject *) cached_type;
+bad:
+ Py_XDECREF(cached_type);
+ cached_type = NULL;
+ goto done;
+}
+#endif
+
+/* PyVectorcallFastCallDict */
+#if CYTHON_METH_FASTCALL
+static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
+{
+ PyObject *res = NULL;
+ PyObject *kwnames;
+ PyObject **newargs;
+ PyObject **kwvalues;
+ Py_ssize_t i, pos;
+ size_t j;
+ PyObject *key, *value;
+ unsigned long keys_are_strings;
+ Py_ssize_t nkw = PyDict_GET_SIZE(kw);
+ newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0]));
+ if (unlikely(newargs == NULL)) {
+ PyErr_NoMemory();
+ return NULL;
+ }
+ for (j = 0; j < nargs; j++) newargs[j] = args[j];
+ kwnames = PyTuple_New(nkw);
+ if (unlikely(kwnames == NULL)) {
+ PyMem_Free(newargs);
+ return NULL;
+ }
+ kwvalues = newargs + nargs;
+ pos = i = 0;
+ keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS;
+ while (PyDict_Next(kw, &pos, &key, &value)) {
+ keys_are_strings &= Py_TYPE(key)->tp_flags;
+ Py_INCREF(key);
+ Py_INCREF(value);
+ PyTuple_SET_ITEM(kwnames, i, key);
+ kwvalues[i] = value;
+ i++;
+ }
+ if (unlikely(!keys_are_strings)) {
+ PyErr_SetString(PyExc_TypeError, "keywords must be strings");
+ goto cleanup;
+ }
+ res = vc(func, newargs, nargs, kwnames);
+cleanup:
+ Py_DECREF(kwnames);
+ for (i = 0; i < nkw; i++)
+ Py_DECREF(kwvalues[i]);
+ PyMem_Free(newargs);
+ return res;
+}
+static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
+{
+ if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) {
+ return vc(func, args, nargs, NULL);
+ }
+ return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw);
+}
+#endif
+
+/* CythonFunctionShared */
+#if CYTHON_COMPILING_IN_LIMITED_API
+static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) {
+ if (__Pyx_CyFunction_Check(func)) {
+ return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc;
+ } else if (PyCFunction_Check(func)) {
+ return PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
+ }
+ return 0;
+}
+#else
+static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) {
+ return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
+}
+#endif
+static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) {
+#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
+ __Pyx_Py_XDECREF_SET(
+ __Pyx_CyFunction_GetClassObj(f),
+ ((classobj) ? __Pyx_NewRef(classobj) : NULL));
+#else
+ __Pyx_Py_XDECREF_SET(
+ ((PyCMethodObject *) (f))->mm_class,
+ (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL));
+#endif
+}
+static PyObject *
+__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure)
+{
+ CYTHON_UNUSED_VAR(closure);
+ if (unlikely(op->func_doc == NULL)) {
+#if CYTHON_COMPILING_IN_LIMITED_API
+ op->func_doc = PyObject_GetAttrString(op->func, "__doc__");
+ if (unlikely(!op->func_doc)) return NULL;
+#else
+ if (((PyCFunctionObject*)op)->m_ml->ml_doc) {
+#if PY_MAJOR_VERSION >= 3
+ op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc);
+#else
+ op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc);
+#endif
+ if (unlikely(op->func_doc == NULL))
+ return NULL;
+ } else {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+#endif
+ }
+ Py_INCREF(op->func_doc);
+ return op->func_doc;
+}
+static int
+__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context)
+{
+ CYTHON_UNUSED_VAR(context);
+ if (value == NULL) {
+ value = Py_None;
+ }
+ Py_INCREF(value);
+ __Pyx_Py_XDECREF_SET(op->func_doc, value);
+ return 0;
+}
+static PyObject *
+__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context)
+{
+ CYTHON_UNUSED_VAR(context);
+ if (unlikely(op->func_name == NULL)) {
+#if CYTHON_COMPILING_IN_LIMITED_API
+ op->func_name = PyObject_GetAttrString(op->func, "__name__");
+#elif PY_MAJOR_VERSION >= 3
+ op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name);
+#else
+ op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name);
+#endif
+ if (unlikely(op->func_name == NULL))
+ return NULL;
+ }
+ Py_INCREF(op->func_name);
+ return op->func_name;
+}
+static int
+__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context)
+{
+ CYTHON_UNUSED_VAR(context);
+#if PY_MAJOR_VERSION >= 3
+ if (unlikely(value == NULL || !PyUnicode_Check(value)))
+#else
+ if (unlikely(value == NULL || !PyString_Check(value)))
+#endif
+ {
+ PyErr_SetString(PyExc_TypeError,
+ "__name__ must be set to a string object");
+ return -1;
+ }
+ Py_INCREF(value);
+ __Pyx_Py_XDECREF_SET(op->func_name, value);
+ return 0;
+}
+static PyObject *
+__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context)
+{
+ CYTHON_UNUSED_VAR(context);
+ Py_INCREF(op->func_qualname);
+ return op->func_qualname;
+}
+static int
+__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context)
+{
+ CYTHON_UNUSED_VAR(context);
+#if PY_MAJOR_VERSION >= 3
+ if (unlikely(value == NULL || !PyUnicode_Check(value)))
+#else
+ if (unlikely(value == NULL || !PyString_Check(value)))
+#endif
+ {
+ PyErr_SetString(PyExc_TypeError,
+ "__qualname__ must be set to a string object");
+ return -1;
+ }
+ Py_INCREF(value);
+ __Pyx_Py_XDECREF_SET(op->func_qualname, value);
+ return 0;
+}
+static PyObject *
+__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context)
+{
+ CYTHON_UNUSED_VAR(context);
+ if (unlikely(op->func_dict == NULL)) {
+ op->func_dict = PyDict_New();
+ if (unlikely(op->func_dict == NULL))
+ return NULL;
+ }
+ Py_INCREF(op->func_dict);
+ return op->func_dict;
+}
+static int
+__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context)
+{
+ CYTHON_UNUSED_VAR(context);
+ if (unlikely(value == NULL)) {
+ PyErr_SetString(PyExc_TypeError,
+ "function's dictionary may not be deleted");
+ return -1;
+ }
+ if (unlikely(!PyDict_Check(value))) {
+ PyErr_SetString(PyExc_TypeError,
+ "setting function's dictionary to a non-dict");
+ return -1;
+ }
+ Py_INCREF(value);
+ __Pyx_Py_XDECREF_SET(op->func_dict, value);
+ return 0;
+}
+static PyObject *
+__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context)
+{
+ CYTHON_UNUSED_VAR(context);
+ Py_INCREF(op->func_globals);
+ return op->func_globals;
+}
+static PyObject *
+__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context)
+{
+ CYTHON_UNUSED_VAR(op);
+ CYTHON_UNUSED_VAR(context);
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+static PyObject *
+__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context)
+{
+ PyObject* result = (op->func_code) ? op->func_code : Py_None;
+ CYTHON_UNUSED_VAR(context);
+ Py_INCREF(result);
+ return result;
+}
+static int
+__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
+ int result = 0;
+ PyObject *res = op->defaults_getter((PyObject *) op);
+ if (unlikely(!res))
+ return -1;
+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+ op->defaults_tuple = PyTuple_GET_ITEM(res, 0);
+ Py_INCREF(op->defaults_tuple);
+ op->defaults_kwdict = PyTuple_GET_ITEM(res, 1);
+ Py_INCREF(op->defaults_kwdict);
+ #else
+ op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0);
+ if (unlikely(!op->defaults_tuple)) result = -1;
+ else {
+ op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1);
+ if (unlikely(!op->defaults_kwdict)) result = -1;
+ }
+ #endif
+ Py_DECREF(res);
+ return result;
+}
+static int
+__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
+ CYTHON_UNUSED_VAR(context);
+ if (!value) {
+ value = Py_None;
+ } else if (unlikely(value != Py_None && !PyTuple_Check(value))) {
+ PyErr_SetString(PyExc_TypeError,
+ "__defaults__ must be set to a tuple object");
+ return -1;
+ }
+ PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not "
+ "currently affect the values used in function calls", 1);
+ Py_INCREF(value);
+ __Pyx_Py_XDECREF_SET(op->defaults_tuple, value);
+ return 0;
+}
+static PyObject *
+__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) {
+ PyObject* result = op->defaults_tuple;
+ CYTHON_UNUSED_VAR(context);
+ if (unlikely(!result)) {
+ if (op->defaults_getter) {
+ if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL;
+ result = op->defaults_tuple;
+ } else {
+ result = Py_None;
+ }
+ }
+ Py_INCREF(result);
+ return result;
+}
+static int
+__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
+ CYTHON_UNUSED_VAR(context);
+ if (!value) {
+ value = Py_None;
+ } else if (unlikely(value != Py_None && !PyDict_Check(value))) {
+ PyErr_SetString(PyExc_TypeError,
+ "__kwdefaults__ must be set to a dict object");
+ return -1;
+ }
+ PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not "
+ "currently affect the values used in function calls", 1);
+ Py_INCREF(value);
+ __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value);
+ return 0;
+}
+static PyObject *
+__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) {
+ PyObject* result = op->defaults_kwdict;
+ CYTHON_UNUSED_VAR(context);
+ if (unlikely(!result)) {
+ if (op->defaults_getter) {
+ if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL;
+ result = op->defaults_kwdict;
+ } else {
+ result = Py_None;
+ }
+ }
+ Py_INCREF(result);
+ return result;
+}
+static int
+__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
+ CYTHON_UNUSED_VAR(context);
+ if (!value || value == Py_None) {
+ value = NULL;
+ } else if (unlikely(!PyDict_Check(value))) {
+ PyErr_SetString(PyExc_TypeError,
+ "__annotations__ must be set to a dict object");
+ return -1;
+ }
+ Py_XINCREF(value);
+ __Pyx_Py_XDECREF_SET(op->func_annotations, value);
+ return 0;
+}
+static PyObject *
+__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) {
+ PyObject* result = op->func_annotations;
+ CYTHON_UNUSED_VAR(context);
+ if (unlikely(!result)) {
+ result = PyDict_New();
+ if (unlikely(!result)) return NULL;
+ op->func_annotations = result;
+ }
+ Py_INCREF(result);
+ return result;
+}
+static PyObject *
+__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) {
+ int is_coroutine;
+ CYTHON_UNUSED_VAR(context);
+ if (op->func_is_coroutine) {
+ return __Pyx_NewRef(op->func_is_coroutine);
+ }
+ is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE;
+#if PY_VERSION_HEX >= 0x03050000
+ if (is_coroutine) {
+ PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine;
+ fromlist = PyList_New(1);
+ if (unlikely(!fromlist)) return NULL;
+ Py_INCREF(marker);
+#if CYTHON_ASSUME_SAFE_MACROS
+ PyList_SET_ITEM(fromlist, 0, marker);
+#else
+ if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) {
+ Py_DECREF(marker);
+ Py_DECREF(fromlist);
+ return NULL;
+ }
+#endif
+ module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0);
+ Py_DECREF(fromlist);
+ if (unlikely(!module)) goto ignore;
+ op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker);
+ Py_DECREF(module);
+ if (likely(op->func_is_coroutine)) {
+ return __Pyx_NewRef(op->func_is_coroutine);
+ }
+ignore:
+ PyErr_Clear();
+ }
+#endif
+ op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine);
+ return __Pyx_NewRef(op->func_is_coroutine);
+}
+#if CYTHON_COMPILING_IN_LIMITED_API
+static PyObject *
+__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) {
+ CYTHON_UNUSED_VAR(context);
+ return PyObject_GetAttrString(op->func, "__module__");
+}
+static int
+__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
+ CYTHON_UNUSED_VAR(context);
+ return PyObject_SetAttrString(op->func, "__module__", value);
+}
+#endif
+static PyGetSetDef __pyx_CyFunction_getsets[] = {
+ {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
+ {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
+ {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
+ {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
+ {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
+ {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
+ {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
+ {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
+ {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
+ {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
+ {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
+ {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
+ {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
+ {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
+ {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
+ {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
+ {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
+ {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0},
+#if CYTHON_COMPILING_IN_LIMITED_API
+ {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0},
+#endif
+ {0, 0, 0, 0, 0}
+};
+static PyMemberDef __pyx_CyFunction_members[] = {
+#if !CYTHON_COMPILING_IN_LIMITED_API
+ {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0},
+#endif
+#if CYTHON_USE_TYPE_SPECS
+ {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0},
+#if CYTHON_METH_FASTCALL
+#if CYTHON_BACKPORT_VECTORCALL
+ {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0},
+#else
+#if !CYTHON_COMPILING_IN_LIMITED_API
+ {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0},
+#endif
+#endif
+#endif
+#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
+ {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0},
+#else
+ {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0},
+#endif
+#endif
+ {0, 0, 0, 0, 0}
+};
+static PyObject *
+__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args)
+{
+ CYTHON_UNUSED_VAR(args);
+#if PY_MAJOR_VERSION >= 3
+ Py_INCREF(m->func_qualname);
+ return m->func_qualname;
+#else
+ return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name);
+#endif
+}
+static PyMethodDef __pyx_CyFunction_methods[] = {
+ {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},
+ {0, 0, 0, 0}
+};
+#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
+#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist)
+#else
+#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist)
+#endif
+static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname,
+ PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
+#if !CYTHON_COMPILING_IN_LIMITED_API
+ PyCFunctionObject *cf = (PyCFunctionObject*) op;
+#endif
+ if (unlikely(op == NULL))
+ return NULL;
+#if CYTHON_COMPILING_IN_LIMITED_API
+ op->func = PyCFunction_NewEx(ml, (PyObject*)op, module);
+ if (unlikely(!op->func)) return NULL;
+#endif
+ op->flags = flags;
+ __Pyx_CyFunction_weakreflist(op) = NULL;
+#if !CYTHON_COMPILING_IN_LIMITED_API
+ cf->m_ml = ml;
+ cf->m_self = (PyObject *) op;
+#endif
+ Py_XINCREF(closure);
+ op->func_closure = closure;
+#if !CYTHON_COMPILING_IN_LIMITED_API
+ Py_XINCREF(module);
+ cf->m_module = module;
+#endif
+ op->func_dict = NULL;
+ op->func_name = NULL;
+ Py_INCREF(qualname);
+ op->func_qualname = qualname;
+ op->func_doc = NULL;
+#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
+ op->func_classobj = NULL;
+#else
+ ((PyCMethodObject*)op)->mm_class = NULL;
+#endif
+ op->func_globals = globals;
+ Py_INCREF(op->func_globals);
+ Py_XINCREF(code);
+ op->func_code = code;
+ op->defaults_pyobjects = 0;
+ op->defaults_size = 0;
+ op->defaults = NULL;
+ op->defaults_tuple = NULL;
+ op->defaults_kwdict = NULL;
+ op->defaults_getter = NULL;
+ op->func_annotations = NULL;
+ op->func_is_coroutine = NULL;
+#if CYTHON_METH_FASTCALL
+ switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) {
+ case METH_NOARGS:
+ __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS;
+ break;
+ case METH_O:
+ __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O;
+ break;
+ case METH_METHOD | METH_FASTCALL | METH_KEYWORDS:
+ __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD;
+ break;
+ case METH_FASTCALL | METH_KEYWORDS:
+ __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS;
+ break;
+ case METH_VARARGS | METH_KEYWORDS:
+ __Pyx_CyFunction_func_vectorcall(op) = NULL;
+ break;
+ default:
+ PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
+ Py_DECREF(op);
+ return NULL;
+ }
+#endif
+ return (PyObject *) op;
+}
+static int
+__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
+{
+ Py_CLEAR(m->func_closure);
+#if CYTHON_COMPILING_IN_LIMITED_API
+ Py_CLEAR(m->func);
+#else
+ Py_CLEAR(((PyCFunctionObject*)m)->m_module);
+#endif
+ Py_CLEAR(m->func_dict);
+ Py_CLEAR(m->func_name);
+ Py_CLEAR(m->func_qualname);
+ Py_CLEAR(m->func_doc);
+ Py_CLEAR(m->func_globals);
+ Py_CLEAR(m->func_code);
+#if !CYTHON_COMPILING_IN_LIMITED_API
+#if PY_VERSION_HEX < 0x030900B1
+ Py_CLEAR(__Pyx_CyFunction_GetClassObj(m));
+#else
+ {
+ PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class;
+ ((PyCMethodObject *) (m))->mm_class = NULL;
+ Py_XDECREF(cls);
+ }
+#endif
+#endif
+ Py_CLEAR(m->defaults_tuple);
+ Py_CLEAR(m->defaults_kwdict);
+ Py_CLEAR(m->func_annotations);
+ Py_CLEAR(m->func_is_coroutine);
+ if (m->defaults) {
+ PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
+ int i;
+ for (i = 0; i < m->defaults_pyobjects; i++)
+ Py_XDECREF(pydefaults[i]);
+ PyObject_Free(m->defaults);
+ m->defaults = NULL;
+ }
+ return 0;
+}
+static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m)
+{
+ if (__Pyx_CyFunction_weakreflist(m) != NULL)
+ PyObject_ClearWeakRefs((PyObject *) m);
+ __Pyx_CyFunction_clear(m);
+ __Pyx_PyHeapTypeObject_GC_Del(m);
+}
+static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
+{
+ PyObject_GC_UnTrack(m);
+ __Pyx__CyFunction_dealloc(m);
+}
+static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)
+{
+ Py_VISIT(m->func_closure);
+#if CYTHON_COMPILING_IN_LIMITED_API
+ Py_VISIT(m->func);
+#else
+ Py_VISIT(((PyCFunctionObject*)m)->m_module);
+#endif
+ Py_VISIT(m->func_dict);
+ Py_VISIT(m->func_name);
+ Py_VISIT(m->func_qualname);
+ Py_VISIT(m->func_doc);
+ Py_VISIT(m->func_globals);
+ Py_VISIT(m->func_code);
+#if !CYTHON_COMPILING_IN_LIMITED_API
+ Py_VISIT(__Pyx_CyFunction_GetClassObj(m));
+#endif
+ Py_VISIT(m->defaults_tuple);
+ Py_VISIT(m->defaults_kwdict);
+ Py_VISIT(m->func_is_coroutine);
+ if (m->defaults) {
+ PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
+ int i;
+ for (i = 0; i < m->defaults_pyobjects; i++)
+ Py_VISIT(pydefaults[i]);
+ }
+ return 0;
+}
+static PyObject*
+__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
+{
+#if PY_MAJOR_VERSION >= 3
+ return PyUnicode_FromFormat("",
+ op->func_qualname, (void *)op);
+#else
+ return PyString_FromFormat(" |